2.10.1 - Exemplo 1
vamos executar o JOB CBL00001 com algumas modificações, as modificações incluem :
um "override" no step LKED no DD SYSLMOD indicando que o carga gerado nesse step seja enviado para nosso arquivo em USER.BUGA.CARGAS(HELLO000), estando o USER.BUGA.CARGAS previamente alocado com caracteristicasde biblioteca com formato u e tamanho 0.
alterado o comando display do programa HELLO000 para que a mensagem seja emitida no console
inserido um override para não executar o step GO da procedure, carinhosamente chamada de "PROC", isto é, não executar o carga gerado no step LKED.
//CBL00001 JOB 'COMPILA E LOAD DE PROGRAMA COBOL',
// NOTIFY=&SYSUID //STEP1 EXEC PROC=IGYWCPLG
//LKED.SYSLMOD DD DSN=USER.BUGA.CARGAS(HELLO000),DISP=SHR
//COBOL.STEPLIB DD DSN=IGY340.SIGYCOMP,DISP=SHR
//SYSIN DD *
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO000.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY 'Hello World em COBOL !' UPON CONSOLE.
STOP RUN.
//GO.SYSLMOD DD DSN=AQUI.ABENDA,DISP=SHR *** AQUI 'FLUXA' ***
//*Um flush não necessariamente indica um erro, pode ser algo "planejado" como visto acima.
Vamos executar novamente o JOB JOB00000 do inicio desse capitulo para ilustrar um abend S806, ao submeter o job o sistema emite uma mensagem de erro (solicitada no job atraves do parametro NOTIFY)mais ou menos assim
Na listagem observada no SDSF, mais especificamente no file JESYSMSG, esta o erro que causou o abend, é ele :
além do erro acima existem outras causas do abend S806, analise de abend's sempre faz bem, mesmo parecido o sistema pode ter para o mesmo abend causas diversas !
No file JESYSMSG existe também uma listagem da PSW (Program-Status Word) no momento do abend que ainda não sei (no momento que escrevo) se explicarei nesse livro, acho que pro escopo dessa publicação, não caberia, mas para entendimento de erros seria necessário, enfim, se aparecer mudo esse paragrafo e escrevo um capitulo sobre.
Esse erro ocorreu pois o carga do programa HELLO000 não esta nas bibliotecas padrao do sistema, basicamente o sistema tentou executar o programa mas não o encontrou.
Para sanar esse problema alteramos o JOB0000 para ficar assim:
Aproveitei e retirei a SYSOUT pois o display esta para o operador (UPON CONSOLE) no programa HELLO000, tornado desnecessaria a alocacao do file sysout.
O DD JOBLIB indica para o sistema operacional onde procurar o carga, que no nosso caso esta no "arquivo" USER.BUGA.CARGAS, o cartao JOBLIB é praticamente identico em funcionamento ao STEPLIB PARA jobs com apenas 1 step exec executando um programa. o JOBLIB indica uma biblioteca para todo o job o STEP para apenas aquele step.
O JOBLIB se existir deve vir imediatamente após o cartão JOB e a STEPLIB após um cartão EXEC.
No uso concomitante de STEPLIB e JOBLIB o sistema procura em STEPLIB antes das bibliotecas padrão e ignora o JOBLIB para aquele step.
Após a execucao temos algo bem parecido com a execucao do hello world em assembler:
O primeiro file JESMSGLG segue abaixo
Last updated