我需要包含以下条件:
1) Total no.of records per combination of field1 and field3 (INCLUDE=(1,2,8,3,CH,A)
输入文件:字段 1 和字段 3 有 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 行,每个组合一行,给出它的出现次数
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
你有:
SORT FIELDS=COPY
OPTION COPY
OUTFIL REMOVECC,NODETAIL,
TRAILER1=(1,2,'ON',8,3,'=',COUNT=(M11,LENGTH=10)))
第一个问题是你有SORT FIELDS=COPY
和OPTION COPY
。这些意味着同样的事情。删除一个或另一个(我倾向于使用选项复制)。
接下来,您有一个备用的右括号。
然后你正在使用TRAILER1。有三种类型的预告片:1 是"在报告的末尾";2 在页面末尾;3 处于控制中断状态。
您使用TRAILER1,因此在文件末尾,您将获得一条记录,其中包含文件总计。
之后,TRAILER1的位置与输出匹配,而不是输入文件。
这使我们认识到这样一个事实,即您没有使用该数据运行那些排序控制卡。控制卡存在语法错误,这意味着它们不会运行。更正卡片并保留TRAILER1会AAON567=0000000007
。
这将我们带到控制中断,这就是您缺少的。
您可以使用 SECTIONS 定义控制中断。TRAILER3是部分的一部分。
修复除输出格式以外的所有内容:
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。