Métodos de entrada-saída

Qualquer programa em lote executado por meio de um JCL requer entrada de dados, que é processada e uma saída é criada. Existem diferentes métodos de alimentação de entrada para o programa e gravação de saída recebida de um JCL. No modo em lote, não há necessidade de interação com o usuário, mas os dispositivos de entrada e saída e a organização necessária são definidos no JCL e enviados.

Entrada de dados em um JCL

Existem várias maneiras de alimentar os dados para um programa usando JCL e esses métodos foram explicados abaixo:

INSTREAM DADOS

Os dados in-stream para um programa podem ser especificados usando uma instrução SYSIN DD.

//CONCATEX JOB CLASS=6,NOTIFY=&SYSUID
//* Example 1:
//STEP10 EXEC PGM=MYPROG
//IN1    DD DSN=SAMPLE.INPUT1,DISP=SHR
//OUT1   DD DSN=SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//       LRECL=50,RECFM=FB
//SYSIN  DD *
//CUST1  1000
//CUST2  1001
/*
//*
//* Example 2:
//STEP20 EXEC PGM=MYPROG
//OUT1   DD DSN=SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
//       LRECL=50,RECFM=FB
//SYSIN  DD DSN=SAMPLE.SYSIN.DATA,DISP=SHR
//*

No Exemplo 1, a entrada para MYPROG é passada por SYSIN. Os dados são fornecidos no JCL. Dois registros de dados são passados ​​para o programa. Observe que / * marca o fim dos dados SYSIN instream.

"CUST1 1000" é o registro1 e "CUST2 1001" é o registro2. A condição de fim de dados é atendida quando o símbolo / * é encontrado durante a leitura dos dados.

No Exemplo 2, os dados SYSIN são mantidos em um conjunto de dados, em que SAMPLE.SYSIN.DATA é um arquivo PS, que pode conter um ou mais registros de dados.

Entrada de dados por meio de arquivos

Conforme mencionado na maioria dos exemplos nos capítulos anteriores, a entrada de dados para um programa pode ser fornecida por meio de arquivos PS, VSAM ou GDG, com nome DSN relevante e parâmetros DISP junto com instruções DD.

No Exemplo 1, SAMPLE.INPUT1 é o arquivo de entrada por meio do qual os dados são passados ​​para MYPROG. É referido como IN1 no programa.

Saída de dados em um JCL

A saída em um JCL pode ser catalogada em um conjunto de dados ou passada para o SYSOUT. Conforme mencionado no capítulo de declarações DD,SYSOUT=* redireciona a saída para a mesma classe mencionada no parâmetro MSGCLASS da instrução JOB.

Salvar registros de trabalho

Especificando MSGCLASS=Ysalva o registro de tarefas no JMR (Gerenciamento e recuperação de registros de tarefas). Todo o log de JOB pode ser redirecionado para o SPOOL e pode ser salvo em um conjunto de dados fornecendo o comando XDC em relação ao nome do trabalho no SPOOL. Quando o comando XDC é dado no SPOOL, uma tela de criação de dataset é aberta. O registro de trabalho pode então ser salvo fornecendo a definição apropriada de PS ou PDS.

Os logs de trabalho também podem ser salvos em um conjunto de dados, mencionando um conjunto de dados já criado para SYSOUT e SYSPRINT. Mas todo o log de tarefas não pode ser capturado dessa maneira (ou seja, JESMSG não será catalogado) como feito em JMR ou XDC.

//SAMPINST JOB 1,CLASS=6,MSGCLASS=Y,NOTIFY=&SYSUID
//*
//STEP1    EXEC PGM=MYPROG
//IN1      DD DSN=MYDATA.URMI.INPUT,DISP=SHR
//OUT1     DD SYSOUT=*
//SYSOUT   DD DSN=MYDATA.URMI.SYSOUT,DISP=SHR
//SYSPRINT DD DSN=MYDATA.URMI.SYSPRINT,DISP=SHR
//SYSIN    DD MYDATA.BASE.LIB1(DATA1),DISP=SHR
//*
//STEP2    EXEC PGM=SORT

No exemplo acima, SYSOUT está catalogado em MYDATA.URMI.SYSOUT e SYSPRINT em MYDATA.URMI.SYSPRINT.