JCL - Bibliothèque de base

Base Libraryest le jeu de données partitionné (PDS), qui contient les modules de chargement du programme à exécuter dans le JCL ou la procédure cataloguée, qui est appelée dans le programme. Les bibliothèques de base peuvent être spécifiées pour l'ensemble du JCL dans unJOBLIB bibliothèque ou pour une étape de travail particulière dans un STEPLIB déclaration.

Déclaration JOBLIB

UNE JOBLIBl'instruction est utilisée pour identifier l'emplacement du programme à exécuter dans un JCL. L'instruction JOBLIB est spécifiée après l'instruction JOB et avant l'instruction EXEC. Cela ne peut être utilisé que pour les procédures et programmes in stream.

Syntaxe

Voici la syntaxe de base d'une instruction JCL JOBLIB:

//JOBLIB DD DSN=dsnname,DISP=SHR

L'instruction JOBLIB s'applique à toutes les instructions EXEC du JCL. Le programme spécifié dans l'instruction EXEC sera recherché dans la bibliothèque JOBLIB suivi de la bibliothèque système.

Par exemple, si l'instruction EXEC exécute un programme COBOL, le module de chargement du programme COBOL doit être placé dans la bibliothèque JOBLIB.

Déclaration STEPLIB

UNE STEPLIBL'instruction est utilisée pour identifier l'emplacement du programme à exécuter dans une étape de travail. L'instruction STEPLIB est spécifiée après l'instruction EXEC et avant l'instruction DD de l'étape de travail.

Syntaxe

Voici la syntaxe de base d'une instruction JCL STEPLIB:

//STEPLIB DD DSN=dsnname,DISP=SHR

Le programme spécifié dans l'instruction EXEC sera recherché dans la bibliothèque STEPLIB suivi de la bibliothèque système. STEPLIB codé dans une étape de travail remplace l'instruction JOBLIB.

Exemple

L'exemple suivant montre l'utilisation des instructions JOBLIB et 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

Ici, le module de chargement du programme MYPROG1 (dans STEP1) est recherché dans MYPROC.SAMPLE.LIB1. S'il n'est pas trouvé, il est recherché dans la bibliothèque système. Dans STEP2, STEPLIB remplace JOBLIB et le module de chargement du programme MYPROG2 est recherché dans MYPROC.SAMPLE.LIB2 puis dans la bibliothèque système.

Instruction INCLUDE

Un ensemble d'instructions JCL codées dans un membre d'un PDS peut être inclus dans un JCL à l'aide d'un INCLUDEdéclaration. Lorsque le JES interprète le JCL, l'ensemble d'instructions JCL du membre INCLUDE remplace l'instruction INCLUDE.

Syntaxe

Voici la syntaxe de base d'une instruction JCL INCLUDE:

//name INCLUDE MEMBER=member-name

Le but principal de l'instruction INCLUDE est la réutilisabilité. Par exemple, les fichiers communs à utiliser dans de nombreux JCL peuvent être codés comme des instructions DD dans le membre INCLUDE et utilisés dans un JCL.

Les instructions DD factices, les spécifications de la carte de données, les instructions PROC, JOB, PROC ne peuvent pas être codées dans un membre INCLUDE. Une instruction INLCUDE peut être codée dans un membre INCLUDE et une imbrication supplémentaire peut être effectuée jusqu'à 15 niveaux.

Déclaration JCLLIB

UNE JCLLIBL'instruction est utilisée pour identifier les bibliothèques privées utilisées dans le travail. Il peut être utilisé à la fois avec les procédures en cours d'eau et cataloguées.

Syntaxe

Voici la syntaxe de base d'une instruction JCL JCLLIB:

//name JCLLIB ORDER=(library1, library2....)

Les bibliothèques spécifiées dans l'instruction JCLLIB seront recherchées dans l'ordre indiqué pour localiser les programmes, les procédures et le membre INCLUDE utilisés dans le travail. Il ne peut y avoir qu'une seule instruction JCLLIB dans un JCL; spécifié après une instruction JOB et avant les instructions EXEC et INCLUDE mais il ne peut pas être codé dans un membre INCLUDE.

Exemple

Dans l'exemple suivant, le programme MYPROG3 et INCLUDE membre MYINCL est recherché dans l'ordre de MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, bibliothèque système.

//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
//*