2017-11-29 26 views
0

この問題をsyncsortで管理する方法はマニュアルでは分かりません(dfsortで解決できなかった解決策が見つかりました)。 ファイル(FB/LRECL 250)に重複したレコードがあります。z/OS Syncsort:ソートなしで重複を省略します。

  • ヘッダ行は
  • トレーラーは、データラインを含む(一部のレコードの論理的関係を義務付けによる)
  • 後続の重複データを省略しなければならないラインが、1本のユニーク
  • データラインをソートすることはできませんが存在しますカウント。

サイズ(> 2 mioレコード)のため、ファイルを手動で編集することはできません。

例INFILE:OUTFILE期待

HEADER xxxx 
cccc 
bbbb 123 
bbbb 123 
bbbb 123 
dddd 
aaaa 123 
aaaa 123 
aaaa 
TRAILER COUNT: 8 

:だからOUTFILEが全くソートされていない

HEADER xxxx 
cccc 
bbbb 123   
dddd 
aaaa 123 
aaaa 
TRAILER COUNT: 5 

、省略したレコード

bbbb 123   (omitted) 
bbbb 123   (omitted) 
aaaa 123   (omitted) 

がすべてと5月で必要とされていませんニルヴァーナに直進してください。

(私も、私は簡単に後続のジョブでは、手動で生成された行を連結可能性があるので、ヘッダー/トレーラーを省略溶液で幸せになる。)あなたの助けを

ありがとう!

答えて

0

2つのSYNCSORTの手順を使用して、期待した結果を達成することができました。

ステップ1:

INREC FIELDS=(1:SEQNUM,4,ZD,5:1,8) 
SORT FIELDS=(5,8,CH,A),SKIPREC=1 
SUM FIELDS=NONE 

INRECを使用し、私は実際のデータ記録に続く最初の4バイトのシーケンス番号を添付しました。次に、最初の8バイトをキーとしてファイルをソートしました。 SKIPRECを使用してヘッダーレコードをスキップしています。

ステップ2:ステップ2で

SORT FIELDS=(1,4,CH,A)            
OUTFIL FNAMES=SORTOF01,REMOVECC,          
OUTREC=(1:5,8,80:X),TRAILER1=('TRAILER COUNT:',COUNT=(M11,LENGTH=8)) 

、工程1からの出力ファイルは、入力として読み取られます。データラインがソートされないことを期待しているので、シーケンス番号をキーとして入力をソートしました。 OUTRECを使用して、最終出力ファイルにシーケンス番号を書き込むことを控えています。私はTRAILER1を使って最後のレコード数を表示しました。

これが役に立ちます。より効率的に働く選択肢があれば教えてください。

0

私の下記のソートカードを参照してください。上記のサンプルデータ用に作成されています。

//SORTOUT DD SYSOUT=*             
//SYSIN DD *               
OPTION COPY               
INREC FIELDS=(1,50,SEQNUM,7,ZD,RESTART=(1,8))       
OUTFIL REMOVECC,OMIT=(51,7,ZD,GT,01,|,1,7,CH,EQ,C'TRAILER'),   
     OUTREC=(1,50),TRAILER1=(C'TRAILER COUNT:',COUNT-1=(M11,LENGTH=8)) 
/*    
関連する問題