Jcl-base-library
JCL-ベースライブラリ
ベースライブラリ*は、JCLまたはプログラムで呼び出されるカタログ式プロシージャで実行されるプログラムのロードモジュールを保持するパーティションデータセット(PDS)です。 ベースライブラリは、 *JOBLIB ライブラリのJCL全体または STEPLIB ステートメントの特定のジョブステップに指定できます。
JOBLIBステートメント
*JOBLIB* ステートメントは、JCLで実行されるプログラムの場所を識別するために使用されます。 JOBLIBステートメントは、JOBステートメントの後、EXECステートメントの前に指定されます。 これは、ストリーム内のプロシージャとプログラムでのみ使用できます。
構文
JCL JOBLIBステートメントの基本構文は次のとおりです。
//JOBLIB DD DSN=dsnname,DISP=SHR
JOBLIBステートメントは、JCL内のすべてのEXECステートメントに適用できます。 EXECステートメントで指定されたプログラムは、JOBLIBライブラリで検索され、続いてシステムライブラリで検索されます。
たとえば、EXECステートメントがCOBOLプログラムを実行している場合、COBOLプログラムのロードモジュールはJOBLIBライブラリ内に配置する必要があります。
STEPLIBステートメント
ジョブステップ内で実行されるプログラムの場所を識別するために、 STEPLIB ステートメントが使用されます。 STEPLIBステートメントは、EXECステートメントの後、ジョブステップのDDステートメントの前に指定されます。
構文
JCL STEPLIBステートメントの基本構文は次のとおりです。
//STEPLIB DD DSN=dsnname,DISP=SHR
EXECステートメントで指定されたプログラムは、STEPLIBライブラリで検索され、続いてシステムライブラリで検索されます。 ジョブステップでコーディングされたSTEPLIBは、JOBLIBステートメントをオーバーライドします。
例
次の例は、JOBLIBおよび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
ここでは、プログラムMYPROG1(STEP1)のロードモジュールがMYPROC.SAMPLE.LIB1で検索されます。 見つからない場合は、システムライブラリで検索されます。 STEP2では、STEPLIBがJOBLIBをオーバーライドし、プログラムMYPROG2のロードモジュールがMYPROC.SAMPLE.LIB2で検索され、次にシステムライブラリで検索されます。
INCLUDEステートメント
PDSのメンバー内でコーディングされたJCLステートメントのセットは、 INCLUDE ステートメントを使用してJCLに含めることができます。 JESがJCLを解釈すると、INCLUDEメンバー内のJCLステートメントのセットがINCLUDEステートメントを置き換えます。
構文
JCL INCLUDEステートメントの基本構文は次のとおりです。
//name INCLUDE MEMBER=member-name
INCLUDEステートメントの主な目的は再利用性です。 例えば、多くのJCLで使用される共通ファイルは、INCLUDEメンバー内のDDステートメントとしてコーディングし、JCLで使用できます。
ダミーDDステートメント、データカード仕様、PROC、JOB、PROCステートメントは、INCLUDEメンバー内にコーディングできません。 INLCUDEステートメントは、INCLUDEメンバー内でコーディングでき、さらに15レベルまでネストできます。
JCLLIBステートメント
*JCLLIB* ステートメントは、ジョブで使用されるプライベートライブラリを識別するために使用されます。 インストリームプロシージャとカタログ化プロシージャの両方で使用できます。
構文
JCL JCLLIBステートメントの基本的な構文は次のとおりです。
//name JCLLIB ORDER=(library1, library2....)
JCLLIBステートメントで指定されたライブラリーは、ジョブで使用されるプログラム、プロシージャー、およびINCLUDEメンバーを見つけるために、指定された順序で検索されます。 JCLにはJCLLIBステートメントが1つしかありません。 JOBステートメントの後、EXECおよびINCLUDEステートメントの前に指定されますが、INCLUDEメンバー内でコーディングすることはできません。
例
次の例では、プログラムMYPROG3およびINCLUDEメンバーMYINCLが、MYPROC.BASE.LIB1、MYPROC.BASE.LIB2、システムライブラリの順に検索されます。
//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
//*