Syncsort Sum Fields=None 不删除重复项

Syncsort Sum Fields=None not removing duplicates

我正在尝试 运行 一个将删除重复条目的 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
  • 使用与输出关联的字段重新编码排序,请参阅以下内容:

以下排序根据输出记录进行排序:

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" 的不同阶段进行编码的顺序如何,它们都将按照 SORT 想要的顺序执行。

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

如果您想在 SORT 之前执行某些操作,请使用 INREC,而不仅仅是尝试在 SORT 语句之前定位 OUTREC。在这里,由于您正在排序,所以您只想包括您需要的数据。您不想包含格式间距。为什么要将文件加载到每条记录上具有额外相同数据的 SORT?

在 INREC 和 OUTREC 上请不要使用 FIELDS。在 OUTFIL 上,请不要使用 OUTREC。应该很明显,FIELDS是"overloaded"(看你用了多少次FIELDS,有多少次是"the same"),OUTREC是"overloaded"。 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 只选择您想要的数据,并且在您只需要指定一个 SORT 键的顺序中。

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

请注意,如果包含 "explicit" 空格而不是使用列号的隐式空格,编码和理解会更容易,因此更易于维护。对报告的 10 列进行成像,第一列和第二列之间的间距不正确。您想要更改 所有 列引用,只是为了添加一个额外的 space,还是您更愿意将 7X 更改为 8X,其余的自行解决?即使您喜欢繁琐的更改,也请记住您的同事:-)

如果您的数据已经有序 请不要使用 SUM FIELDS=NONE。使用 OUTFIL 报告功能,REMOVECCNODETAILSECTIONS 以及 TRAILER3从不 对数据进行排序只是为了让您使用 SUM FIELDS=NONE.

删除重复项