1

いくつかのレコードを含むファイルがあり、最初と最後の 10 レコードだけを別のファイルにコピーしたいと考えています。

sort、icetoolなどを使用して、jclの書き方を教えてください。

4

2 に答える 2

1

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 アプリケーション プログラミング ガイドを参照してください。

于 2010-06-15T15:20:06.453 に答える
0

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 月が含まれています。

于 2013-04-08T22:06:27.513 に答える