Pergunta

Estou um pouco confuso sobre como criar uma variável simbólica no JCL para uma atribuição que eu estou fazendo na minha aula de COBOL.

Por exemplo, eu sou suposto "Especificar um parâmetro simbólico para a opção PARM e especificar TEST e Apost como padrão."

Como faço para designar a opção "PARM" para ser um parâmetro simbólico?

EDIT: Perdoe a supervisão; parece que eu esqueci de mencionar que OS eu estou correndo. Eu estou escrevendo este arquivo JCL em z / OS.

Agradecemos antecipadamente!

EDIT:

@avisser:

Então, o que você está dizendo é que eu posso chamá-lo de "& PARM = 'TEST, Apost'" e, se eu queria mudar esse parâmetro quando eu executar este proc com outra declaração JCL, os parms listados podem ser alterado a partir do JCL chamando?

EDIT:

@avisser:

Sim, desculpe, eu realmente preciso trabalhar em ser mais específico ... Na minha COBOL JCL, eu estou chamando o compilador COBOL (IGYCRCTL), o editor de ligação (HEWL) e um programa de fetch (EXEC PGM =).

EDIT:

Talvez ele iria ajudar a ver o que a minha saída é. Eu realmente aprecio todos aqueles que têm tentado ajuda até agora.

Output:

------ JES2 emprego Estatísticas ------

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!! FIM DO JES SPOOL ARQUIVO !! 1 // KC03CEFA TRABALHO, 'MATE R', MSGCLASS = H, TYPRUN = SCAN JOB07731 // *
2 // Step01 EXEC PGM = IGYCRCTL, & REGIÃO = 248K,
// & PARM = 'TEST, Apost'
3 // STEPLIB DD DSN = IGY340.SIGYCOMP, DISP = SHR
/ *
4 // syslin DD & DSN = && OBJSET, UNIT = DISK, ESPAÇO = (TRK, (3,3)),
// & DISP = (NOVO, PASS, DELETE)
5 // SYSPRINT DD SYSOUT = *
6 // SYSUT1 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
7 // SYSUT2 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
8 // SYSUT3 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
9 // SYSUT4 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
10 // SYSUT5 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
11 // SYSUT6 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
12 // SYSUT7 DD = UNIDADE DE DISCO, ESPAÇO = (CIL, (1,1))
// *
// *
13 // STEP02 EXEC PGM = HEWL, & COND =, & reagion = 2048K,
// & PARM =
14 // SYSLIB DD DSN = CEE.SCEELKED, DISP = SHR
15 // syslin DD & DSN = && OBJSET, e DISP = (OLD, DELETE)
16 // SYSLMOD DD DSN = && TEMPLIB (PGM6),
// ESPAÇO = (1024, (50,20,1)), UNIT = DISK,
// DISP = (NOVO, CATLG, DELETE)
17 // SYSPRINT DD SYSOUT = *
18 // IMPRESSORA DD SYSOUT = *
19 // SYSUT1 DD = UNIDADE DE DISCO, ESPAÇO = (TRK, (10,10))
// *
// *
20 // Step01 EXEC PGM = PGM6, & PARM = TERMTHDACT (DUMP)
21 // STEPLIB DD DSN = && TEMPLIB, DISP = SHR
22 // CEEDUMP
23 // SYSUDUMP
24 // IMPRESSORA DD SYSOUT = *
25 // PRODUTOS DD DSN = KC02322.CSCI465.SP09 (DATA1), DISP = SHR
26 // SYSIN DD *
!! FIM DO JES SPOOL ARQUIVO !! STMT NO. MENSAGEM 2 IEFC630I PALAVRA-CHAVE NÃO IDENTIFICADO & REGIÃO 2 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & PARM 4 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & DSN 4 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & DISP 13 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & COND 13 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & reagion 13 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & PARM 15 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & DSN 15 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & DISP 20 IEFC630I NÃO IDENTIFICADO PALAVRA-CHAVE & PARM 22 IEFC605I CAMPO FUNCIONAMENTO NÃO IDENTIFICADO 23 IEFC605I CAMPO FUNCIONAMENTO NÃO IDENTIFICADO !! FIM DO JES SPOOL ARQUIVO !!

Foi útil?

Solução

parâmetros simbólicos são nomes precedidos por um e comercial. Quando usado em um comunicado JCL, em tempo de execução que são convertidos para o valor fornecido. Uma maneira de criá-los (em z / OS) está usando um

// SET name = value

declaração. Se você usar um PARM, você deve projetar seu programa de modo que ele possa trabalhar com um. Talvez a atribuição é sobre como fazer que (dica: a seção linkage). Ou é JCL uma parte de sua classe COBOL?

TEST e Apost olhar para mim como diretivas de compilador. Eu não sei se você pode especificá-los em seu programa, no meu trabalho, só fornecê-los ao chamar o compilador.

EDIT:

Ok este é um pouco incomum para mim, como tendemos a compilar e executar nossos programas em córregos JCL separadas. Mas mesmo assim.

Tendo sua segunda declaração:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

REGIÃO e PARM são chamados parâmetros posicionais e são palavras-chave, não é realmente significou para ser apresentado como nomes simbólicos, embora você está livre para fazê-lo (isto irá explicar as mensagens "Palavra-chave" NÃO IDENTIFICADO).
O uso comum - quando aplicável - é fornecer nomes simbólicos para o operandos de tais parâmetros. E, obviamente, você tem que definir um valor para eles em primeiro lugar, por exemplo:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS

Outras dicas

Ok, eu fiz alguma escavação, e, com a orientação que avisser me deu, eu era capaz de descobrir o que eu tinha que fazer. Então, para referência futura para qualquer um que pode ter esta questão (ou similar), aqui está o que eu descobri:

Passo 1:. Criar um "PROC" com as variáveis ??que você estará usando

ex. Eu queria usar variáveis ??para o "PARM" no meu compilador COBOL que tiveram os valores padrão de "teste" e "Apost", então eu escrevi algo como:

//PROC1  PROC  CPARM='TEST,APOST',

Passo 2: Use esses parâmetros simbólicas definidas recentemente em sua etapa atual JCL. Os "&" mostra o personagem que tudo o que se segue é um parâmetro simbólico.

ex. Eu usei o "CPARM" acima referidas, para minha etapa COBOL compilação:

//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

Passo 3:. Termine o seu "PROC" com uma declaração "PEND" após sua etapa actual

ex. Depois que eu listados todos os meus variáveis ??e listei todos os passos para a compilação (nome do compilador, onde o compilador podem ser encontrados, e, como pode ser visto logo antes da declaração PEND, as demonstrações SYSUT1-SYSUT7), coloque a palavra-chave PEND:

//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

Passo 4: Dê quaisquer medidas e / ou códigos adicionais JCL para o seu arquivo de origem e você está fora

Notas:

-Você pode ter mais de uma instrução PROC em um único arquivo JCL. Eu tinha três: um para a compilação COBOL, um para o editor de ligação e um para o programa buscar. Eu também tenho código COBOL no mesmo arquivo que minhas declarações PROC estão em.

-Este ocorreu em um mainframe IBM rodando z / OS.

-Acima, pode-se ver que a minha variável "CPARM" é definido como o padrão de 'TEST, Apost. É possível ter uma variável ser nulo por padrão, basta deixar o campo em branco (ex. CPARM =,).

-Você pode ter notado que após a definição CPARM, há uma vírgula; isso é porque eu tenho mais variáveis ??depois. Lembre-se que o último parâmetro simbólico que você cria para qualquer PROC deve ter nada que se lhe segue (ie. Sem vírgula). Você pode, é claro, colocar uma linha de comentário (// *), outro PROC ou código real depois, mas o último parâmetro simbólico deve ter nada que se lhe segue na mesma linha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top