JCL Sort处理VB文件时尾记录数据重复问题求助
解决方案
问题根源
- 强制固定输出长度引发尾记录重复:原Sort卡中的
OUTREC FIELDS=(1,30)强制输出30字节,而VB文件的尾记录实际长度不足30,Sort会用缓冲区中前一条记录的剩余数据填充,造成重复内容。 - 尾记录识别条件错误:原条件
(5,1,CH,EQ,C'')无法匹配实际开头为9999的尾记录,导致尾记录被错误修改后又被补长。
正确Sort卡配置
//STP1 DD EXEC PGM=ICEMAN //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SORTIN DD DSN=INPUT.FILE //SORTOUT DD DSN=OUTPUT.FILE //SYSIN DD * INREC IFTHEN=(WHEN=(5,4,CH,NE,C'9999'),OVERLAY=(19:C'CLR')), IFTHEN=(WHEN=(5,4,CH,EQ,C'9999'),KEEP=COPY) /*
配置说明
- 尾记录精准识别:通过
(5,4,CH,EQ,C'9999')匹配开头为9999的尾记录,执行KEEP=COPY保留原内容不做任何修改。 - 数据记录定向修改:对非尾记录,使用
OVERLAY=(19:C'CLR')将整个记录的19-21位(对应数据内容的15-17位)替换为CLR。 - 保留原记录长度:移除
OUTREC FIELDS=(1,30),让Sort自动依据VB文件的RDW(前4字节记录长度)处理输出,避免强制补长导致的数据重复问题。
内容的提问来源于stack exchange,提问作者Srinivas
相关产品推荐
相关产品推荐

