JCL - Basisbibliothek

Base Libraryist das Partitioned Dataset (PDS), das die Lademodule des auszuführenden Programms in der JCL oder die katalogisierte Prozedur enthält, die im Programm aufgerufen wird. Basisbibliotheken können für die gesamte JCL in a angegeben werdenJOBLIB Bibliothek oder für einen bestimmten Jobschritt in a STEPLIB Erklärung.

JOBLIB-Erklärung

EIN JOBLIBDie Anweisung wird verwendet, um den Speicherort des auszuführenden Programms in einer JCL zu identifizieren. Die JOBLIB-Anweisung wird nach der JOB-Anweisung und vor der EXEC-Anweisung angegeben. Dies kann nur für die In-Stream-Prozeduren und -Programme verwendet werden.

Syntax

Es folgt die grundlegende Syntax einer JCL JOBLIB-Anweisung:

//JOBLIB DD DSN=dsnname,DISP=SHR

Die JOBLIB-Anweisung gilt für alle EXEC-Anweisungen innerhalb der JCL. Das in der EXEC-Anweisung angegebene Programm wird in der JOBLIB-Bibliothek gefolgt von der Systembibliothek durchsucht.

Wenn die EXEC-Anweisung beispielsweise ein COBOL-Programm ausführt, sollte das Lademodul des COBOL-Programms in der JOBLIB-Bibliothek platziert werden.

STEPLIB-Anweisung

EIN STEPLIBDie Anweisung wird verwendet, um den Speicherort des Programms zu identifizieren, das innerhalb eines Jobschritts ausgeführt werden soll. Die STEPLIB-Anweisung wird nach der EXEC-Anweisung und vor der DD-Anweisung des Jobschritts angegeben.

Syntax

Es folgt die grundlegende Syntax einer JCL STEPLIB-Anweisung:

//STEPLIB DD DSN=dsnname,DISP=SHR

Das in der EXEC-Anweisung angegebene Programm wird in der STEPLIB-Bibliothek gefolgt von der Systembibliothek durchsucht. In einem Jobschritt codierte STEPLIB überschreibt die JOBLIB-Anweisung.

Beispiel

Das folgende Beispiel zeigt die Verwendung von JOBLIB- und STEPLIB-Anweisungen:

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

Hier wird das Lademodul des Programms MYPROG1 (in STEP1) in MYPROC.SAMPLE.LIB1 durchsucht. Wird es nicht gefunden, wird es in der Systembibliothek gesucht. In STEP2 überschreibt STEPLIB JOBLIB und das Lademodul des Programms MYPROG2 wird in MYPROC.SAMPLE.LIB2 und dann in der Systembibliothek gesucht.

INCLUDE-Anweisung

Eine Reihe von JCL-Anweisungen, die in einem Mitglied einer PDS codiert sind, können mithilfe von a in eine JCL aufgenommen werden INCLUDEErklärung. Wenn das JES die JCL interpretiert, ersetzt der Satz von JCL-Anweisungen innerhalb des INCLUDE-Mitglieds die INCLUDE-Anweisung.

Syntax

Es folgt die grundlegende Syntax einer JCL INCLUDE-Anweisung:

//name INCLUDE MEMBER=member-name

Der Hauptzweck der INCLUDE-Anweisung ist die Wiederverwendbarkeit. Beispielsweise können allgemeine Dateien, die in vielen JCLs verwendet werden sollen, als DD-Anweisungen innerhalb des INCLUDE-Mitglieds codiert und in einer JCL verwendet werden.

Dummy-DD-Anweisungen, Datenkartenspezifikationen, PROCs, JOB- und PROC-Anweisungen können nicht in einem INCLUDE-Mitglied codiert werden. Eine INLCUDE-Anweisung kann innerhalb eines INCLUDE-Mitglieds codiert werden, und eine weitere Verschachtelung kann bis zu 15 Ebenen durchgeführt werden.

JCLLIB-Anweisung

EIN JCLLIBDie Anweisung wird verwendet, um die im Job verwendeten privaten Bibliotheken zu identifizieren. Es kann sowohl mit instream- als auch mit katalogisierten Prozeduren verwendet werden.

Syntax

Es folgt die grundlegende Syntax einer JCL-JCLLIB-Anweisung:

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

Die in der JCLLIB-Anweisung angegebenen Bibliotheken werden in der angegebenen Reihenfolge durchsucht, um die im Job verwendeten Programme, Prozeduren und INCLUDE-Mitglieder zu finden. Eine JCL kann nur eine JCLLIB-Anweisung enthalten. Wird nach einer JOB-Anweisung und vor der EXEC- und INCLUDE-Anweisung angegeben, kann jedoch nicht innerhalb eines INCLUDE-Mitglieds codiert werden.

Beispiel

Im folgenden Beispiel wird das Programm MYPROG3 und das INCLUDE-Mitglied MYINCL in der Reihenfolge MYPROC.BASE.LIB1, MYPROC.BASE.LIB2, Systembibliothek durchsucht.

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