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.