我正在尝试运行一个将删除重复条目的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
任何帮助都会受到赞赏,因为我无法找到我的错误。
答案 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 进行检查。
可能的变化 -
以下排序基于输出记录排序:
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报告功能REMOVECC
,NODETAIL
和SECTIONS
与TRAILER3
一起使用。 从不 排序数据只是为了让您删除SUM FIELDS=NONE
的重复项。