我需要包括这个条件:
1) Total no.of records per combination of field1 and field3 (INCLUDE=(1,2,8,3,CH,A)
输入文件:如果您在下面的示例中看到,则FIELD1和FIELD3有5种组合
field1 field2 field3 field4
AA 00000 123 ABC
AA 00000 123 ABC
AA 00000 456 ABC
BB 00000 123 ABC
BB 00000 123 ABC
BB 00000 789 ABC
AA 00000 567 ABC
输出文件:获得5行,每个组合一个,为它提供no.of
FIELD1 FIELD3 COUNT-OF-COMBINATION
AA 123 2
AA 456 1
AA 567 1
BB 123 2
AA 789 1
My method is:
//SYSIN DD *
SORT FIELDS=COPY
OPTION COPY
OUTFIL REMOVECC,NODETAIL,
TRAILER1=(1,2,'ON',8,3,'=',COUNT=(M11,LENGTH=10)))
/ *
我得到的答案是:
AA ON 123 = 7
哪个错了: 它应该是
AA ON 123 = 2
AA ON 456 = 1
AA ON 567 = 1
BB ON 123 = 2
AA ON 789 = 1
答案 0 :(得分:1)
你有:
SORT FIELDS=COPY
OPTION COPY
OUTFIL REMOVECC,NODETAIL,
TRAILER1=(1,2,'ON',8,3,'=',COUNT=(M11,LENGTH=10)))
第一个问题是你有SORT FIELDS=COPY
和OPTION COPY
。这些意味着同样的事情。删除其中一个(我倾向于使用OPTION COPY)。
接下来,你有一个备用右括号。
然后你正在使用TRAILER1。 TRAILERn有三种类型:1是“在报告的末尾”; 2是在页面的末尾; 3是控制中断。
您使用TRAILER1,因此在文件末尾您会收到一条包含文件总数的记录。
之后,TRAILER1的位置与输出匹配,而不是输入文件。
这让我们知道您没有使用该数据运行那些排序控制卡。控制卡有语法错误,这意味着它们不运行。更正卡并保留TRAILER1将获得AAON567=0000000007
。
这将我们带到控制中断,这是你缺少的。
使用SECTIONS定义控制中断。 TRAILER3是SECTIONS的一部分。
修复输出格式以外的所有内容:
OPTION COPY
OUTFIL REMOVECC,NODETAIL,
SECTIONS=(1,2,
15,3,
TRAILER3=(1,2,
'ON',
15,3,
'=',
COUNT=(M11,
LENGTH=10)))
这给了你:
AAON123=0000000002
AAON456=0000000001
BBON123=0000000002
BBON789=0000000001
AAON567=0000000001
如果您想要列标题,请查看如何使用HEADER3(HEADER1和HEADER2也适用于这种简单的情况)。如果你想要“页面总数”,请查看TRAILER2。如果您想要文件总数,请使用TRAILER1。