使用JCL中的Sort替换

问题描述 投票:0回答:1

祝大家有美好的一天, 我需要在 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

sorting replace overlay jcl
1个回答
0
投票

斯里尼瓦斯,

您展示的控制卡不会复制预告片记录,而且它们甚至不是正确的语法。您应该遇到语法错误。

假设预告片记录可以通过位置 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'))                    
/*                      
© www.soinside.com 2019 - 2024. All rights reserved.