对记录进行重复数据删除,而无需在具有已排序数据的大型机顺序数据集中进行排序



这是一个查询,用于对已排序的大型机数据集进行重复数据删除,而无需对其进行重新排序。

输入顺序数据集具有以下结构。前 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)

最新更新