Jcl-input-output

提供:Dev Guides
移動先:案内検索

入出力メソッド

JCLを介して実行されるバッチプログラムには、データ入力が必要です。データ入力は処理され、出力が作成されます。 プログラムに入力を送り、JCLから受け取った出力を書き込む方法はいくつかあります。 バッチモードでは、ユーザーとの対話は必要ありませんが、入力デバイスと出力デバイス、および必要な組織はJCLで定義され、送信されます。

JCLでのデータ入力

JCLを使用してプログラムにデータをフィードするにはさまざまな方法があり、これらの方法は以下で説明されています。

INSTREAM DATA

プログラムへのインストリームデータは、SYSIN DDステートメントを使用して指定できます。

//CONCATEX JOB CLASS=6,NOTIFY=&SYSUID
//*Example 1:
//STEP10 EXEC PGM=MYPROG
//IN1    DD DSN=SAMPLE.INPUT1,DISP=SHR
//OUT1   DD DSN=SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//      LRECL=50,RECFM=FB
//SYSIN  DD*
//CUST1  1000
//CUST2  1001
/*
//*
//* Example 2:
//STEP20 EXEC PGM=MYPROG
//OUT1   DD DSN=SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
//      LRECL=50,RECFM=FB
//SYSIN  DD DSN=SAMPLE.SYSIN.DATA,DISP=SHR
//*

例1では、MYPROGへの入力はSYSINを介して渡されます。 データはJCL内で提供されます。 データの2つのレコードがプログラムに渡されます。/*はインストリームSYSINデータの終わりを示すことに注意してください。

「CUST1 1000」はrecord1、「CUST2 1001」はrecord2です。 データの読み取り中にシンボル/*が検出されると、データの終わり条件が満たされます。

例2では、​​SYSINデータはデータセット内に保持されます。SAMPLE.SYSIN.DATAはPSファイルであり、データの1つ以上のレコードを保持できます。

ファイルを介したデータ入力

前の章のほとんどの例で述べたように、プログラムへのデータ入力は、PS、VSAM、またはGDGファイルを介して、関連するDSN名とDISPパラメーターとともにDDステートメントで提供できます。

例1では、SAMPLE.INPUT1はデータがMYPROGに渡される入力ファイルです。 プログラム内ではIN1と呼ばれます。

JCLでのデータ出力

JCLの出力は、データセットにカタログ化するか、SYSOUTに渡すことができます。 DDステートメントの章で述べたように、 SYSOUT = *は、JOBステートメントのMSGCLASSパラメーターで言及されたものと同じクラスに出力をリダイレクトします。

ジョブログを保存する

*MSGCLASS = Y* を指定すると、ジョブログがJMR(Joblog Management and Retrieval)に保存されます。 JOBログ全体をSPOOLにリダイレクトし、SPOOLのジョブ名に対してXDCコマンドを実行することにより、データセットに保存できます。 XDCコマンドがSPOOLで指定されると、データセット作成画面が開きます。 その後、適切なPSまたはPDS定義を指定して、ジョブログを保存できます。

SYSOUTおよびSYSPRINT用に作成済みのデータセットを指定することにより、ジョブログをデータセットに保存することもできます。 ただし、JMRまたはXDCで行われるように、ジョブログ全体をこの方法でキャプチャすることはできません(つまり、JESMSGはカタログ化されません)。

//SAMPINST JOB 1,CLASS=6,MSGCLASS=Y,NOTIFY=&SYSUID
//*
//STEP1    EXEC PGM=MYPROG
//IN1      DD DSN=MYDATA.URMI.INPUT,DISP=SHR
//OUT1     DD SYSOUT=*
//SYSOUT   DD DSN=MYDATA.URMI.SYSOUT,DISP=SHR
//SYSPRINT DD DSN=MYDATA.URMI.SYSPRINT,DISP=SHR
//SYSIN    DD MYDATA.BASE.LIB1(DATA1),DISP=SHR
//*
//STEP2    EXEC PGM=SORT

上記の例では、SYSOUTはMYDATA.URMI.SYSOUTにカタログされ、SYSPRINTはMYDATA.URMI.SYSPRINTにカタログされています。