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 报告功能,REMOVECC
、NODETAIL
和 SECTIONS
以及 TRAILER3
。 从不 对数据进行排序只是为了让您使用 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
- 使用与输出关联的字段重新编码排序,请参阅以下内容:
以下排序根据输出记录进行排序:
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 报告功能,REMOVECC
、NODETAIL
和 SECTIONS
以及 TRAILER3
。 从不 对数据进行排序只是为了让您使用 SUM FIELDS=NONE
.