祝大家有美好的一天, 我需要在 15 到 17 位置用 CLR 替换 3 个空格,这仅适用于数据记录,不适用于预告片,我使用了下面的排序卡,它按预期工作,但预告片记录与指定位置后的数据重复。那么任何人都可以提出我错过或错误的正确逻辑吗?这里我使用VB作为输入。
//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=INIT,OVERLAY=(19:C'CLR')),
IFTHEN=(WHEN=(5,1,CH,EQ,C''),OVERLAY=(19:C' '))
OUTREC FIELDS=(1,30)
/*
输入文件
712339....@.%。 ABCEF 34
602099....@.%^ DCCEF 34
510332....@.#&ZBCEF 34
710001....@.@& BBCEF 34
940105....@.%&YBCEF 34
9999 99999..#
预期输出:
712339....@.%.CLR ABCEF 34
602099....@.%^CLR DCCEF 34
510332....@.#&CLR ZBCEF 34
710001....@.@&CLR BBCEF 34
940105....@.%&CLR YBCEF 34
9999 99999..#
我得到的输出为,可以看到预告片记录在 15-17 POSITION 之后有 940105 个数据
712339....@.%.CLR ABCEF 34
602099....@.%^CLR DCCEF 34
510332....@.#&CLR ZBCEF 34
710001....@.@&CLR BBCEF 34
940105....@.%&CLR YBCEF 34
9999 99999..# YBCEF 34
斯里尼瓦斯,
您展示的控制卡不会复制预告片记录,而且它们甚至不是正确的语法。您应该遇到语法错误。
假设预告片记录可以通过位置 5 中的 9999 进行识别,这里是未经测试的控制卡,将为您提供所需的结果。
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=Your.Input.VB.file
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC IFTHEN=(WHEN=(19,3,CH,EQ,C' ',AND,
05,4,CH,NE,C'9999'),
OVERLAY=(19:C'CLR'))
/*