Syncsort Sum Fields =无不删除重复项

时间:2016-08-08 21:19:27

标签: jcl syncsort

我正在尝试运行一个将删除重复条目的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

任何帮助都会受到赞赏,因为我无法找到我的错误。

2 个答案:

答案 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个字节中会有所不同。尝试删除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

答案 1 :(得分:1)

您对“排序”的不同阶段编码的顺序无关紧要,它们将按照SORT所需的顺序执行。

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

如果你想在SORT之前做一些事情你使用INREC,而不只是尝试在SORT语句之前找到OUTREC。在这里,由于您是SORTing,因此您只想包含所需的数据。您想要包含格式的间距。为什么要将文件加载到SORT,并在每条记录上添加相同的数据?

在INREC和OUTREC上,请不要使用FIELDS。在OUTFIL,请不要使用OUTREC。显而易见的是,FIELDS“过载”(查看您使用FIELDS的次数,并查看有多少次“相同”)并且OUTREC“过载”。十多年前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列进行成像,第1列和第2列之间的间距不正确。您想要更改所有列引用,只是为了添加一个额外的空间,或者您希望将7X更改为8X而其余部分自行运行?即使你喜欢乏味的变化,也要记住你的同事: - )

如果您的数据已按顺序,请不要使用SUM FIELDS = NONE 。将OUTFIL报告功能REMOVECCNODETAILSECTIONSTRAILER3一起使用。 从不 排序数据只是为了让您删除SUM FIELDS=NONE的重复项。