2016-08-08 31 views
0

重複したエントリを削除するSYNCSORTジョブを実行しようとしていますが、実行するとまだ重複しています。Syncsort Sumフィールド=重複を削除しないでください

INCLUDE COND=(((61,1,CH,EQ,C'P'),OR, 
       (61,1,CH,EQ,C'V')),AND, 
       (8,2,CH,EQ,C'FL'))  
OUTREC FIELDS=(1:12,20,    
       30:36,20,    
       55:61,1)    
SORT FIELDS=(30,20,CH,A,    
      01,20,CH,A)    
SUM FIELDS=NONE      

入力は以下のとおりである:私はまだ重複を得ていることを除いて

----+----1----+----2----+----3----+----4----+----5----+----6 
     FL       AMELIA CITY    
32034 FL NASSAU     FERNANDINA BEACH   P 
32034 FL NASSAU     AMELIA CITY    V 
32034 FL NASSAU     AMELIA ISLAND   S 
32034 FL NASSAU     FERNANDINA    S 

私は、期待される出力の大半を取得しています以下は、私が使用しているSYNCSORTコードです。私が持っている出力は次の通りです:

----+----1----+----2----+----3----+----4----+----5----+ 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADENTON    P 
MANATEE      BRADINGTON    V 
POLK       BRADLEY     P 
HILLSBOROUGH     BRANDON     P 
SUWANNEE      BRANFORD     P 
MIAMI-DADE     BRICKELL     V 

私のエラーを見つけることができないので、助けてください。

+0

最初に、ソートは入力レコードに適用されます。ここで、出力レコードのソートがコーディングされています。 –

答えて

3

これは、ソートに合算されているものです。

< ------------ Sort Field -----------------------> 
----+----1----+----2----+----3----+----4----+----5----+----6 
     FL       AMELIA CITY    
32034 FL NASSAU     FERNANDINA BEACH   P 
32034 FL NASSAU     AMELIA CITY    V 
32034 FL NASSAU     AMELIA ISLAND   S 
32034 FL NASSAU     FERNANDINA    S 

重複レコードはあなたがを見ることができない最初の11バイトに異なるものになります。確認するにはを削除してを試してください。

変化の可能性 -

  • 変更INREC
  • 再コード出力に関連する分野でのソートにOUTREC、以下を参照してください。

に基づいて、次の並べ替え並べ替え出力レコード:

INCLUDE COND=(((61,1,CH,EQ,C'P'),OR, 
       (61,1,CH,EQ,C'V')),AND, 
       (8,2,CH,EQ,C'FL'))  
OUTREC FIELDS=(1:12,20,    
       30:36,20,    
       55:61,1)    
SORT FIELDS=(42,20,CH,A,    
      12,20,CH,A)    
SUM FIELDS=NONE 
+0

私はoutrecをinrecに変更してからソートを変更しました。 –

1

あなたがコードする順序は関係ありません「ソート」のさまざまなステージは、ソートが望む順序で実行されます。

この場合、INCLUDE、次にSORT、次にSUM、次にOUTRECとなります。これが完全にコントロールカードを反転することによって、これが同じであることを確認できます。同じ出力が得られます。

SORTの前に何かしたい場合は、INRECを使用してください。ただ、SORT文の前にOUTRECの場所を探してみてください。ここでは、ソートしているので、必要なデータだけを含めることができます。 には書式設定の間隔を含めないでください。なぜあなたは、各レコードの余分な同一のデータを使ってSORTにファイルをロードしたいのですか?

INRECおよびOUTRECでは、FIELDSを使用しないでください。 OUTFILにはOUTRECを使用しないでください。 FIELDSは「過負荷」(FIELDSを何回使用したかを見て、どれが「同じ」か)、OUTRECは「過負荷」であることが明らかです。 10年以上前、BUILDが導入され、物事をはっきりさせることができました。それは何をしているのかを記述し、BUILDを見るたびにBUILDだけを意味します。

INCLUDE COND=(((61,1,CH,EQ,C'P'), 
       OR, 
       (61,1,CH,EQ,C'V')), 
       AND, 
       (8,2,CH,EQ,C'FL')) 
INREC BUILD=(36,20, 
       12,20, 
       61,1) 
SORT FIELDS=(1,40,CH,A) 
OUTREC BUILD=(21,10, 
       10X, 
       1,20, 
       5X, 
       41,1) 

INRECは、必要なデータのみを選択し、必要な順序で1つのSORTキーを指定します。

OUTRECはデータのフォーマットを行います。 SORTの各レコードに対して、15バイトが保存されました(空白)。10Xは10空白、5Xは5空白です。

列番号を使用した暗黙的な空白ではなく「明示的な」空白を含めると、コード化し理解しやすくなり、保守性が向上することに注意してください。 10列のレポートをイメージ化し、1列目と2列目の間隔が正しくありません。 すべて列の参照を変更したいだけですか?余分なスペースを1つ追加するか、または7Xを8Xに変更して残りの部分を削除したいですか?面倒な変更を楽しんだとしても、同僚を覚えておいてください。

データが既に整理されている場合は、はSUM FIELDS = NONEを使用しないでください。 OUTFILレポート機能、REMOVECCNODETAILおよびSECTIONSTRAILER3を使用してください。 NEVERSUM FIELDS=NONEで重複を削除できるようにするためのSORTデータです。

関連する問題