JCL - Biblioteca Base
Base Libraryé o Partitioned Dataset (PDS), que contém os módulos de carregamento do programa a serem executados no JCL ou o procedimento catalogado, que é chamado no programa. Bibliotecas básicas podem ser especificadas para todo o JCL em umJOBLIB biblioteca ou para uma determinada etapa do trabalho em um STEPLIB declaração.
Declaração JOBLIB
UMA JOBLIBinstrução é usada para identificar a localização do programa a ser executado em um JCL. A instrução JOBLIB é especificada após a instrução JOB e antes da instrução EXEC. Isso pode ser usado apenas para os procedimentos e programas in stream.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL JOBLIB:
//JOBLIB DD DSN=dsnname,DISP=SHR
A instrução JOBLIB é aplicável a todas as instruções EXEC dentro da JCL. O programa especificado na instrução EXEC será pesquisado na biblioteca JOBLIB seguido pela biblioteca do sistema.
Por exemplo, se a instrução EXEC estiver executando um programa COBOL, o módulo de carregamento do programa COBOL deve ser colocado na biblioteca JOBLIB.
Declaração STEPLIB
UMA STEPLIBinstrução é usada para identificar a localização do programa a ser executado em uma etapa do trabalho. A instrução STEPLIB é especificada após a instrução EXEC e antes da instrução DD da etapa do trabalho.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL STEPLIB:
//STEPLIB DD DSN=dsnname,DISP=SHR
O programa especificado na instrução EXEC será pesquisado na biblioteca STEPLIB seguido pela biblioteca do sistema. STEPLIB codificado em uma etapa de trabalho substitui a instrução JOBLIB.
Exemplo
O exemplo a seguir mostra o uso das instruções JOBLIB e STEPLIB:
//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//JOBLIB DD DSN=MYPROC.BASE.LIB1,DISP=SHR
//*
//STEP1 EXEC PGM=MYPROG1
//INPUT1 DD DSN=MYFILE.SAMPLE.INPUT1,DISP=SHR
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
// RECFM=FB,LRECL=80
//*
//STEP2 EXEC PGM=MYPROG2
//STEPLIB DD DSN=MYPROC.BASE.LIB2,DISP=SHR
//INPUT2 DD DSN=MYFILE.SAMPLE.INPUT2,DISP=SHR
//OUTPUT2 DD DSN=MYFILES.SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
// RECFM=FB,LRECL=80
Aqui, o módulo de carregamento do programa MYPROG1 (no STEP1) é pesquisado no MYPROC.SAMPLE.LIB1. Se não for encontrado, é pesquisado na biblioteca do sistema. Em STEP2, STEPLIB substitui JOBLIB e o módulo de carregamento do programa MYPROG2 é pesquisado em MYPROC.SAMPLE.LIB2 e, em seguida, na biblioteca do sistema.
Declaração INCLUDE
Um conjunto de instruções JCL codificadas em um membro de um PDS pode ser incluído em uma JCL usando um INCLUDEdeclaração. Quando o JES interpreta o JCL, o conjunto de instruções JCL no membro INCLUDE substitui a instrução INCLUDE.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL INCLUDE:
//name INCLUDE MEMBER=member-name
O principal objetivo da instrução INCLUDE é a capacidade de reutilização. Por exemplo, arquivos comuns a serem usados em muitos JCLs podem ser codificados como instruções DD no membro INCLUDE e usados em um JCL.
Instruções DD fictícias, especificações de cartão de dados, instruções PROCs, JOB, 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.
Declaração JCLLIB
UMA JCLLIBinstrução é usada para identificar as bibliotecas privadas usadas no trabalho. Ele pode ser usado com procedimentos instream e catalogados.
Sintaxe
A seguir está a sintaxe básica de uma instrução JCL JCLLIB:
//name JCLLIB ORDER=(library1, library2....)
As bibliotecas especificadas na instrução JCLLIB serão pesquisadas na ordem fornecida para localizar os programas, procedimentos e membro INCLUDE usados no trabalho. Pode haver apenas uma instrução JCLLIB em uma JCL; especificado após uma instrução JOB e antes das instruções EXEC e INCLUDE, mas não pode ser codificado em um membro INCLUDE.
Exemplo
No exemplo a seguir, o programa MYPROG3 e o membro INCLUDE MYINCL são pesquisados na ordem de MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, biblioteca do sistema.
//MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//MYLIB JCLLIB ORDER=(MYPROC.BASE.LIB1,MYPROC.BASE.LIB2)
//*
//STEP1 EXEC PGM=MYPROG3
//INC INCLUDE MEMBER=MYINCL
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
// RECFM=FB,LRECL=80
//*