-1

私の要件は、JCL-Syncsortを使用して同じレコード数を取得することです。

MY入力ファイルには、58〜60の位置にパックされた10進値が含まれています。01から05の範囲の入力の場合、レコード数を取得する必要があります。

実際、PD値をZDに変換して、C'01'やC'05'と比較してみました。

結果が出ませんでした。

例:58-60の入力ファイルデータ(Comp-3形式の3バイト)

07.2

05.2

04.0

45.7

02.4

出力は次のようになります。

RF値| カウント

02.41

04.01

誰かがこれを達成する方法を教えてもらえますか?

4

2 に答える 2

2

仕様では、フィールドは 3 バイトの PD 形式であると記載されていますが、小数点を含むサンプル レコードを提供しています。PD データに小数点を含めることはできないため、小数点が含まれていると仮定します。値 07.2 に対応する 3 バイトのデータには、以下の目的で実際には x'00072C' が含まれます。

例を理解しやすくするために (レコード レイアウトの詳細を知らなくても)、3 バイトの PD フィールドを固定長データの位置 1 から始まるものとして扱っています。実際のデータ レイアウトに合わせて例を自由に変更してください。

//SYSIN  DD  *   
 SORT FIELDS=(1,3,PD,A)   
 INCLUDE COND=(1,3,PD,GT,10,AND,1,3,PD,LT,50)   
 OUTREC FIELDS=(1,3,PD,ZDF,75X) 
 OUTFIL FILES=OUT,NODETAIL,
              SECTIONS=(1,5,
                TRAILER3=(1:1,4,C'.',5,1,COUNT))
/*

さらにサポートが必要な場合は、カスタマー サービス、Syncsort Inc. zos_tech@syncsort.com にお問い合わせください。

于 2011-12-16T18:22:21.227 に答える
1

これを試して...

//SYSIN DD *
  INREC FIELDS=(1,4,C'00001')
  SORT FIELDS=(01,04,CH,A)
  SUM FIELDS=(05,05,ZD,A)
  OUTREC FIELDS=(01,04,05,05)
/*

簡単に言うと、各レコードに数値00001を追加し、それらを数値フィールドで並べ替え、そのようなすべてのレコードを合計すると、目的の出力が得られます。

于 2011-12-18T13:02:50.647 に答える