我正在尝试运行一个将删除重复条目的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报告特性REMOVECC
、NODETAIL
和SECTIONS
与TRAILER3
一起使用。NEVER SORT数据只是为了允许您删除重复的SUM FIELDS=NONE
。