这是有关对已排序的大型机数据集进行重复数据删除而不重新排序的查询。
输入顺序数据集具有以下结构。前4个字节中的“ KEYn”代表键,每行的其余部分代表记录的其余数据。有些记录中重复相同的键,尽管每个记录中的剩余数据都不同。记录已在“ KEYn”上排序。
KEY1aaaaaa
KEY1bbbbbb
KEY2cccccc
KEY3xxxxxx
KEY3yyyyyy
KEY3zzzzzz
KEY3wwwwww
KEY4uuuuuu
KEY5hhhhhh
KEY5ffffff
我的要求是获取每个键的第一条记录,并删除其余的“重复项”。因此上述输入的输出文件应如下所示:
KEY1aaaaaa
KEY2cccccc
KEY3xxxxxx
KEY4uuuuuu
KEY5hhhhhh
由于数据已被排序,所以我不希望将SORT实用程序与SUM FIELDS = NONE或ICETOOL与SELECT-FIRST操作数一起使用,因为这两个操作实际上最终都会对重复数据删除键(KEYn)上的数据进行重新排序。另外,我指的是实际的数据集非常大(16亿条记录,AVGRLEN 900 VB),并且一项工作实际上用尽了工作空间,试图一次性对其进行排序。
我的查询是:在基于JCL的实用程序中,是否有任何选项可以执行此重复数据删除操作而无需重新使用和使用排序工作空间?我试图避免编写COBOL / Assembler程序来做到这一点。
尝试此未经测试。
OPTION COPY
INREC BUILD=(1,4,SEQNUM,3,ZD,RESTART=(5,4),5)
OUTFIL INCLUDE=(5,3,ZD,EQ,1),BUILD=(1,4,8)