いくつかのレコードを含むファイルがあり、最初と最後の 10 レコードだけを別のファイルにコピーしたいと考えています。
sort、icetoolなどを使用して、jclの書き方を教えてください。
いくつかのレコードを含むファイルがあり、最初と最後の 10 レコードだけを別のファイルにコピーしたいと考えています。
sort、icetoolなどを使用して、jclの書き方を教えてください。
ICETOOL を使用して、入力ファイルのサブセットをコピーできます。
最初と最後の 10 レコードを別のファイルにコピーする JCL を次に示します。それぞれ 80 バイトの固定長レコードを想定しています。
また、メインフレーム ショップの要件に合わせて JOB カードを変更する必要があります。
//EXAMP JOB A400,PROGRAMMER
//STEP1 EXEC PGM=ICETOOL
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=INPUT,DISP=SHR
//T1 DD DSN=&&T1,DISP=(,PASS),UNIT=VIO
//T2 DD DSN=&&T2,DISP=(,PASS),UNIT=VIO
//T3 DD DSN=&&T3,DISP=(,PASS),UNIT=VIO
//SORTOUT DD DSN=OUTPUT,DISP=(NEW,CATLG),UNIT=SYSDA,
// SPACE=(CYL,(5,1))
//SYSIN DD *
COPY FROM(IN) USING(CTL1)
COPY FROM(T1) USING(CTL2)
COPY FROM(T1) USING(CTL3)
COPY FROM(T2,T3) USING(CTL4)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=T1,OUTREC=(1,80,SEQNUM,8,ZD)
/*
//CTL2CNTL DD *
OUTFIL FNAMES=T2,ENDREC=10
/*
//CTL3CNTL DD *
SORT FIELDS=(81,8,BI,D)
OUTFIL FNAMES=T3,ENDREC=10
/*
//CTL4CNTL DD *
SORT FIELDS=(81,8,BI,A)
OUTFIL FNAMES=SORTOUT,OUTREC=(1,80)
//
制御カードの最初のセット ( CTL1CNTL
) は、入力レコードにシーケンス番号を追加します。
コントロール カードの 2 番目のセット ( CTL2CNTL
) は、最初の 10 個の入力レコードを取得します。
コントロール カードの 3 番目のセット ( CTL3CNTL
) は、入力レコードを逆順に並べ替え、最初の 10 (最後の 10) レコードを取得します。
コントロール カードの 4 番目のセット ( CTL4CNTL
) は、抽出されたレコードを正しい順序で並べ替え、最初のコントロール カードのセットによって追加されたシーケンス番号を削除します。
詳細については、 IBM のDFSORT アプリケーション プログラミング ガイドを参照してください。
2008 年 7 月から、ICETOOL に SUBSET が追加されました。
//STEP1 EXEC PGM=ICETOOL
//SYSOUT DD SYSOUT=*
//IN DD DSN=your input
//OUT DD DSN=your output
//SYSIN DD *
SUBSET FROM(IN) TO(OUT) KEEP INPUT FIRST(10) LAST(10)
2008 年 7 月が利用可能かどうかを知るには、任意のソート・ステップで ICE201I メッセージを調べてください。
ICE201I F RECORD TYPE ...
メッセージ番号の直後の文字が F 以上の場合、2008 年 7 月が含まれています。