这是一个查询,用于对已排序的大型机数据集进行重复数据删除,而无需对其进行重新排序。
输入顺序数据集具有以下结构。前 4 个字节中的"KEYn"表示键,每行的其余部分表示记录数据的其余部分。有些记录中重复相同的键,尽管每条记录中的其余数据不同。记录已按"KEYn"排序。
键1aaaaaa
KEY1bbbbbb
KEY2CCCCCC
密钥3xxxxxx
键3yyyyyy
KEY3zzzzzz
KEY3www
KEY4uuuuu
键5hhh
KEY5ffffff
我的要求是拿起每个键的第一条记录并删除剩余的"重复项"。 因此,上述输入的输出文件应如下所示:
键1aaaaaa
KEY2CCCCCC
密钥3xxxxxx
KEY4uuuuu
键5hhh
由于数据已经排序,我不想将 SORT 实用程序与 SUM FIELDS=NONE 或 ICETOOL 与 SELECT - FIRST 操作数一起使用,因为这两个操作数实际上最终都会对重复数据删除键 (KEYn( 上的数据进行重新排序。此外,我所指的实际数据集是巨大的(16 亿条记录,AVGRLEN 900 VB(,并且一项工作实际上耗尽了排序工作空间,试图一次性对其进行排序。
我的问题是:基于 JCL 的实用程序中是否有任何选项可以在不诉诸和使用排序工作空间的情况下执行此重复数据删除?我试图避免编写COBOL/汇编程序来执行此操作。
试试这个未经测试的。
OPTION COPY
INREC BUILD=(1,4,SEQNUM,3,ZD,RESTART=(5,4),5)
OUTFIL INCLUDE=(5,3,ZD,EQ,1),BUILD=(1,4,8)