Especifique DD DUMMY no JCL de substituição para aqueles que não são substituídos.
//STEP1.IN1 DD DUMMY
// DD DSN=MYDATA.URMI.IN2,DISP=SHR
// DD DUMMY
O código a seguir mostra a referência de cada versão do GDG -
Step1 input: (0)
Step1 output: (+1)
Step2 input: (+1)
Step2 output: (+2)
Quando o arquivo é usado como entrada em IDCAMS, o trabalho é concluído com um aviso (código de retorno 4) se o arquivo estiver vazio.
Especifique RESTART = STEP2 na instrução JOB. E inclua a construção IF-THEN-ELSE como abaixo−
//URMIIF JOB 1, CLASS=6, MSGCLASS=0, NOTIFY = &SYSUID,RESTART=STEP2
//*
//STEP1 EXEC
//STEP2 EXEC
//IF1 IF (STEP2.RC = 0 & STEP2.RC <> 0) THEN
//STEP3 EXEC
//STEP4 EXEC
//ENDIF
Os dados podem ser transmitidos a um programa COBOL por meio de arquivos, parâmetro PARM e instrução SYSIN DD.
A parte variável do JCL pode ser especificada usando parâmetros simbólicos no JOB e as partes estáticas podem ser especificadas no PROC. Por exemplo, se o nome do arquivo for alterado para cada JOB que usa o PROC, a parte variável do nome do arquivo pode ser codificada em JCL usando o parâmetro simbólico.
//IN1 DD DSN = &ID.URMI.IN1, DISP = SHR //*Coded in PROC
ID=MYDATA1 is coded in JOB1, ID = MYDATA2 is coded in JOB2 and so on
Use IEBGENER e passe o arquivo existente em SYSUT1. Passe o novo arquivo em SYSUT2 e mencione DCB = *. SYSUT1 para obter o mesmo DCB do conjunto de dados SYSUT1.
Usando os parâmetros seriais UNIT e VOL na instrução DD do conjunto de dados.
Instruções fictícias DD, especificações de cartão de dados, PROCs, JOB, instruções PROC não podem ser codificadas em um membro INCLUDE. Uma instrução INLCUDE pode ser codificada dentro de um membro INCLUDE e aninhamento adicional pode ser feito em até 15 níveis.
Código COND = SOMENTE no PASSO2.
Usando o parâmetro RD na instrução JOB / EXEC. Os códigos de abend para os quais RESTART precisa ser executado podem ser mencionados no membro SCHEDxx da biblioteca parmlib do sistema IBM.
Usando IEBEDIT em um JCL, etapas selecionadas de outro JCL podem ser executadas. No JCL acima, o JCL de entrada com 10 etapas está presente em MYDATA.URMI.JOBS (INPUTJOB). STEP3 e STEP7 é especificado em SYSIN de IEBEDIT, para que essas duas etapas sejam executadas.
//STEP001 EXEC PGM=IEBEDIT
//SYSUT1 DD DSN=MYDATA.URMI.JOBS(INPUTJOB),DISP=SHR
//SYSUT2 DD SYSOUT=(*,INTRDR)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
EDIT TYPE=INCLUDE,STEPNAME=(STEP3,STEP7)
/*
Quando é definido com DISP = (NEW, KEEP) no momento da criação. No caso de um GDG, a geração menos recente não é catalogada se a base GDG tiver sido definida com o parâmetro NOEMPTY quando o LIMITE for atingido. Todas as gerações não são catalogadas quando codificadas com EMPTY.
A base GDG pode ser criada usando o utilitário IDCAMS. EMPTY cancela o catálogo de todas as gerações quando o LIMITE é atingido. SCRATCH exclui fisicamente a geração, quando não está catalogada. (LIMIT especifica o número máximo de versões que a base GDG pode conter).
No programa SORT / ICETOOL, SKIPREC = n pode ser usado, o que pula os primeiros n registros e copia o restante para o arquivo de saída.
//JSTEP020 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT = *
//DFSMSG DD SYSOUT = *
//IN1 DD DSN = MYDATA.URMI.SKIPREC,DISP=SHR
//OUT1 DD SYSOUT = *
//TOOLIN DD *
COPY FROM(IN1) TO(OUT1) USING(CTL1)
/*
//CTL1CNTL DD *
SORT FIELDS = COPY
SKIPREC = 1000
/*
STARTREC e ENDREC restringem o READ do arquivo de entrada no número de registro especificado.
//URMISPLT EXEC PGM = SORT
//SORTIN DD DSN=MYDATA.URMI.FILEIN,DISP=SHR
//SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1,
// DISP = (NEW,CATLG,DELETE),
// RECFM = FB, LRECL = 50
//SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2,
// DISP = (NEW, CATLG, DELETE),
// RECFM = FB, LRECL = 50
//SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3,
// DISP = (NEW, CATLG, DELETE),
// RECFM = FB, LRECL = 50
//SYSPRINT DD SYSOUT = *
//SYSOUT DD SYSOUT = *
//SYSUDUMP DD SYSOUT = *
//SYSIN DD *
SORT FIELDS = COPY
OUTFIL FILES = 01,ENDREC=100 //*assuming input file has 300 records.
OUTFIL FILES = 02, STARTREC = 101, ENDREC = 200
OUTFIL FILES = 03, STARTREC = 201
//*
Um erro de tempo limite de trabalho pode ocorrer quando o programa leva mais tempo do que o limite de tempo para a classe especificada. Isso é chamado de abend S322. Este erro é encontrado quando há alguns erros de loop no programa e ele não é concluído.
Se os dados processados no programa são genuinamente grandes e precisam de mais tempo do que o limite da classe, então o parâmetro TIME pode ser codificado como TIME = 1440 para obter um tempo infinito até a conclusão do trabalho.
O parâmetro SPACE do conjunto de dados de cópia de imagem pode ser aumentado com base no volume da tabela e o trabalho pode ser reiniciado a partir da etapa 2.
NOTIFY = ID do usuário da pessoa (não do remetente) pode ser especificado na instrução JOB para que o usuário receba uma notificação com o código de retorno após a conclusão do trabalho. Mas o log de tarefas está presente no spool apenas com a ID de usuário do remetente.
A opção FTOV no SORT ajuda na conversão de arquivos FB para VB.
//URMIFTOV EXEC PGM = SORT
//SORTIN DD *
123*******
4560000000
123****123
789
//SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1,
// DISP = (NEW, CATLG, DELETE),
// RECFM = VB, LRECL = 54
//SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2,
// DISP = (NEW, CATLG, DELETE),
// RECFM = VB, LRECL = 54
//SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3,
// DISP = (NEW, CATLG, DELETE),
// RECFM = VB, LRECL = 54
//SYSPRINT DD SYSOUT = *
//SYSOUT DD SYSOUT = *
//SYSUDUMP DD SYSOUT = *
//SYSIN DD *
SORT FIELDS=COPY
OUTFIL FNAMES = SORTOF01, FTOV, VLTRIM = C'*' //*removes trailing '*'
OUTFIL FNAMES = SORTOF02, FTOV, VLTRIM = X'40'//*removes trailing space
OUTFIL FNAMES = SORTOF03, FTOV, VLTRIM = X'00'//*removes trailing zeros
//*
JCL significa Job Control Language, que fornece as especificações necessárias para processar um trabalho. É um conjunto de instruções de controle que fornecem as especificações necessárias para processar um trabalho. É uma interface entre programas e sistema operacional MVS.
MVS significa Multiple Virtual storage, que é o sistema operacional dos sistemas de mainframe IBM.
Os identificadores são duas barras (//) começando na coluna número 1. Todas as instruções JCL começam com identificadores, exceto para duas exceções - Para uma instrução delimitadora, / * começando na coluna 1 e para uma instrução de comentário, // * começando na coluna 1.
Entrada -> Conversão -> Execução -> Saída -> Cópia impressa -> Eliminar
O JCL junto com o PROC é convertido em um texto interpretado para ser entendido pelo JES e armazenado em um conjunto de dados, que chamamos de SPOOL.
Quando o trabalho atinge sua prioridade mais alta, ele é levado para execução da fila de trabalhos. O JCL é lido do SPOOL, o programa é executado e a saída é redirecionada para o destino de saída correspondente, conforme especificado no JCL.
Especifica as informações necessárias para o SPOOLing do trabalho, como id do trabalho, prioridade de execução, id do usuário a ser notificado na conclusão do trabalho.
JCL é encerrado por uma instrução nula que é opcional. Para um código de instrução nulo apenas // começando na coluna 1. Todas as linhas após isso não serão executadas.
Com base no tempo de duração e no número de recursos exigidos pelo trabalho, as empresas atribuem diferentes classes de trabalho. Eles podem ser visualizados como agendadores individuais usados pelo sistema operacional para receber os trabalhos. Colocar os trabalhos no escalonador certo ajudará na fácil execução dos trabalhos. Algumas empresas têm classes diferentes para empregos em ambiente de teste e produção. Os valores válidos para o parâmetro CLASS são de A a Z caracteres e 0 a 9 numéricos (de comprimento 1). A seguir está a sintaxe - CLASS = 0 a 9 | A a Z
O sistema envia a mensagem de sucesso ou falha (Código de condição máxima) para o usuário especificado neste parâmetro. Sintaxe - NOTIFY = "userid | & SYSUID"
TYPRUN = SCAN verifica os erros de sintaxe do JCL sem executá-lo.
O parâmetro DSN se refere ao nome do conjunto de dados físico de um conjunto de dados recém-criado ou existente. O valor DSN pode ser composto por subnomes, cada um com 1 a 8 caracteres, separados por pontos e com comprimento total de 44 caracteres (alfanuméricos).
O parâmetro DISP é usado para descrever o status do conjunto de dados, disposição no final da etapa do trabalho na conclusão normal e anormal. DISP não é necessário em uma instrução DD apenas quando o conjunto de dados é criado e excluído na mesma etapa do trabalho (como os conjuntos de dados temporários). Sintaxe - DISP = (status, disposição normal, disposição anormal)
O parâmetro SPACE especifica o espaço necessário para o conjunto de dados no DASD (Direct Access Storage Disk). Sintaxe - SPACE = (spcunits, (pri, sec, dir), RLSE)
O parâmetro Data Control Block (DCB) detalha as características físicas de um conjunto de dados. Este parâmetro é necessário para conjuntos de dados recém-criados na etapa do trabalho. LRECL é o comprimento de cada registro mantido no conjunto de dados. RECFM é o formato de registro do conjunto de dados.
Um conjunto de dados temporário é aquele que é criado e excluído em um trabalho e é declarado como DSN = && TEMP. Não mencione os parâmetros DSN com isso.
Código SYSOUT = *, então os dados serão direcionados para o spool.
IEFBR14 não é um utilitário de operação. Usado para devolver o controle ao usuário e encerrar. Geralmente é usado para criar um conjunto de dados vazio ou excluir um conjunto de dados existente.
DISP = (NOVO, APROVADO). PASS é válido apenas para descarte normal. Isso é usado quando o conjunto de dados deve ser passado e processado pela próxima etapa do trabalho em um JCL.
O utilitário IKJEFT01 é usado para executar um programa COBOL-DB2.
DSN (nome do conjunto de dados) é usado para declarar o nome do conjunto de dados em uma instrução DD.
A instrução PEND é usada para encerrar o procedimento in-stream.
Para nos referirmos à última geração de um GDG, usamos a referência como (+0).
COND = (12, LT, STEP1), ele irá ler a condição como 12 menor que 8, o que é falso, então este passo será executado.
Na etapa SORT, mencione o nome do conjunto de dados SYSIN & SYSOUT e no código do cartão de classificação SORT FIELDS = COPY para copiar os dados do arquivo de entrada para o arquivo de saída.
Esta afirmação é verdadeira.
O utilitário SORT é usado para classificar um arquivo em uma ordem específica com base no cartão de classificação.
IEBUPDTE é usado para atualizar o PDS.
O parâmetro SPACE especifica o espaço necessário para o conjunto de dados no DASD (Direct Access Storage Disk). Sintaxe - SPACE = (spcunits, (pri, sec, dir), RLSE)
Esta afirmação é verdadeira.