JCL - Libreria di base
Base Libraryè il Partitioned Dataset (PDS), che contiene i moduli di caricamento del programma da eseguire nel JCL o la procedura catalogata, che viene richiamata nel programma. Le librerie di base possono essere specificate per l'intero JCL in un fileJOBLIB libreria o per un particolare passaggio di lavoro in un file STEPLIB dichiarazione.
Dichiarazione JOBLIB
UN JOBLIBviene utilizzata per identificare la posizione del programma da eseguire in un JCL. L'istruzione JOBLIB viene specificata dopo l'istruzione JOB e prima dell'istruzione EXEC. Può essere utilizzato solo per le procedure e i programmi in stream.
Sintassi
Di seguito è riportata la sintassi di base di un'istruzione JOBLIB JCL:
//JOBLIB DD DSN=dsnname,DISP=SHR
L'istruzione JOBLIB è applicabile a tutte le istruzioni EXEC all'interno del JCL. Il programma specificato nell'istruzione EXEC verrà cercato nella libreria JOBLIB seguita dalla libreria di sistema.
Ad esempio, se l'istruzione EXEC sta eseguendo un programma COBOL, il modulo di caricamento del programma COBOL dovrebbe essere inserito nella libreria JOBLIB.
Dichiarazione STEPLIB
UN STEPLIBviene utilizzata per identificare la posizione del programma da eseguire all'interno di una fase di lavoro. L'istruzione STEPLIB viene specificata dopo l'istruzione EXEC e prima dell'istruzione DD della fase di lavoro.
Sintassi
Di seguito è riportata la sintassi di base di un'istruzione JCL STEPLIB:
//STEPLIB DD DSN=dsnname,DISP=SHR
Il programma specificato nell'istruzione EXEC verrà cercato nella libreria STEPLIB seguita dalla libreria di sistema. STEPLIB codificato in una fase di lavoro sovrascrive l'istruzione JOBLIB.
Esempio
L'esempio seguente mostra l'utilizzo delle istruzioni 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
Qui, il modulo di caricamento del programma MYPROG1 (in STEP1) viene cercato in MYPROC.SAMPLE.LIB1. Se non viene trovato, viene cercato nella libreria di sistema. In STEP2, STEPLIB sovrascrive JOBLIB e carica il modulo del programma MYPROG2 viene cercato in MYPROC.SAMPLE.LIB2 e quindi nella libreria di sistema.
Dichiarazione INCLUDE
Un insieme di istruzioni JCL codificate all'interno di un membro di un PDS può essere incluso in un JCL utilizzando un file INCLUDEdichiarazione. Quando JES interpreta il JCL, l'insieme di istruzioni JCL all'interno del membro INCLUDE sostituisce l'istruzione INCLUDE.
Sintassi
Di seguito è riportata la sintassi di base di un'istruzione JCL INCLUDE:
//name INCLUDE MEMBER=member-name
Lo scopo principale dell'istruzione INCLUDE è la riusabilità. Ad esempio, i file comuni da utilizzare in molti JCL possono essere codificati come istruzioni DD all'interno del membro INCLUDE e utilizzati in un JCL.
Le istruzioni DD fittizie, le specifiche della scheda dati, le istruzioni PROC, JOB, PROC non possono essere codificate in un membro INCLUDE. Un'istruzione INLCUDE può essere codificata all'interno di un membro INCLUDE e l'ulteriore nidificazione può essere eseguita fino a 15 livelli.
Dichiarazione JCLLIB
UN JCLLIBviene utilizzata per identificare le librerie private utilizzate nel lavoro. Può essere utilizzato sia con procedure in-stream che catalogate.
Sintassi
Di seguito è riportata la sintassi di base di un'istruzione JCL JCLLIB:
//name JCLLIB ORDER=(library1, library2....)
Le librerie specificate nell'istruzione JCLLIB verranno ricercate nell'ordine indicato per individuare i programmi, le procedure e il membro INCLUDE utilizzati nel lavoro. Può esserci una sola istruzione JCLLIB in una JCL; specificato dopo un'istruzione JOB e prima dell'istruzione EXEC e INCLUDE ma non può essere codificato all'interno di un membro INCLUDE.
Esempio
Nell'esempio seguente, la ricerca del programma MYPROG3 e del membro INCLUDE MYINCL viene eseguita nell'ordine MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, libreria di 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
//*