Syncsort Sum Fields=None,不删除重复项



我正在尝试运行一个将删除重复条目的SYNCSORT作业,当我运行它时,我仍然得到重复项。以下是我使用的SYNCSORT代码:

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

我得到了大部分预期的输出,除了我仍然得到重复的。我得到的输出如下:

----+----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

我无法找到我的错误,请帮助我将不胜感激。

这是排序求和的内容:

< ------------ 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个字节中是不同的。尝试删除outrec检查。

可能的变化-

  • 将outrec更改为inrec
  • 用与输出相关的字段重新编码排序,参见以下内容:

下面的sort基于输出记录进行排序:

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

无论你对"排序"的不同阶段进行编码的顺序如何,它们都将按照sort所需的顺序执行。

在您的情况下,这将是INCLUDE,然后SORT,然后SUM,然后OUTREC。您可以通过完全反转控制卡来检查这种情况,您将得到相同的输出。

如果您想在SORT之前做一些事情,请使用INREC,而不仅仅是尝试在SORT语句之前找到OUTREC。在这里,由于是排序,所以只希望包含所需的数据。不希望包含用于格式化的空格。为什么要在每条记录上加载具有额外相同数据的文件进行SORT ?

在INREC和OUTREC请不要使用FIELDS。在OUTFIL上请不要使用OUTREC。很明显,FIELDS是"重载的"(看看你使用了多少次FIELDS,看看有多少是"相同的"),而OUTREC是"重载的"。十多年前,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只选择你想要的数据,并且按照你只需要指定一个SORT键的顺序。

OUTREC然后按照您想要的方式格式化数据。对于SORT中的每条记录,保存了15个字节(空白)。10X为10个空格,5X为5个空格。

请注意,如果使用列号包含"显式"空白而不是隐式空白,那么编码和理解要容易得多,因此也更易于维护。想象一份报告的10列,第一和第二列之间的间距不正确。您是否希望更改所有列引用,只是为了添加一个额外的空间,或者您希望将7X更改为8X,其余部分自行解决?即使你喜欢乏味的变化,也要记住你的同事:-)

如果你的数据已经是有序的不要使用SUM FIELDS=NONE。将OUTFIL报告特性REMOVECCNODETAILSECTIONSTRAILER3一起使用。NEVER SORT数据只是为了允许您删除重复的SUM FIELDS=NONE

相关内容

  • 没有找到相关文章

最新更新