icetool 读取带有日期的输入文件并覆盖到另一个文件中

icetool read an input file with a date and overlay into another file

我有一个输入文件(80 个字符),日期在位置 1 到 10,格式为 YYYY-MM-DD。我想隔离该日期,然后将其写入另一个现有文件(可能使用覆盖 ??)。在此现有文件中,我希望日期替换 YYYY-MM-DD。这个 yyyy-mm-dd 位于输出文件中的位置 59。

我不确定我们是否可以一步完成,还是需要两步。

输入文件(80 个字符): 2018-06-28,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

我想覆盖输出文件参数 YYYY-MM-DD。 输出文件(80 个字符): 文件=/DATA/EXT/RECEPTION/TEST01_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS

预期输出文件结果: 文件=/DATA/EXT/RECEPTION/TEST01_DTE/PASSING_DTE_PARAM_CTL.2018-06-28.QS

使用ICETOOL一步到位是可以达到预期效果的。

我做了以下假设:

  1. 两个输入数据集都是 LRECL 80。
  2. 两个输入数据集中的记录数相同。

输入文件1中的记录:

FILE=/DATA/EXT/RECEPTION/TEST01_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS
FILE=/DATA/EXT/RECEPTION/TEST02_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS
FILE=/DATA/EXT/RECEPTION/TEST03_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS
FILE=/DATA/EXT/RECEPTION/TEST04_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS
FILE=/DATA/EXT/RECEPTION/TEST05_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS
FILE=/DATA/EXT/RECEPTION/TEST06_DTE/PASSING_DTE_PARAM_CTL.YYYY-MM-DD.QS

输入文件2中的记录:

2018-06-28,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2018-06-29,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2018-06-30,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2018-07-01,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2018-07-02,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2018-07-03,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

工作:

//Z31084A  JOB 1,NOTIFY=&SYSUID            
//SRTJK EXEC PGM=ICETOOL                   
//TOOLMSG DD SYSOUT=*                      
//DFSMSG DD SYSOUT=*                       
//INA DD DSN=Z31084.DATASET.A,DISP=SHR     
//INB DD DSN=Z31084.DATASET.B,DISP=SHR     
//JNA DD DSN=&&JNA,DISP=(,DELETE),         
//       SPACE=(CYL,(1,0),RLSE),           
//       DCB=(LRECL=84,RECFM=FB,BLKSIZE=0) 
//JNB DD DSN=&&JNB,DISP=(,DELETE),         
//       SPACE=(CYL,(1,0),RLSE),           
//       DCB=(LRECL=84,RECFM=FB,BLKSIZE=0) 
//OUT DD SYSOUT=*                          
//TOOLIN DD *                              
 SORT FROM(INA) TO(JNA) USING(CTL1)        
 SORT FROM(INB) TO(JNB) USING(CTL1)        
 SORT JKFROM TO(OUT) USING(CTL3)           
/*                                         
//CTL1CNTL DD *                            
 SORT FIELDS=COPY                          
 OUTREC FIELDS=(1:1,80,81:SEQNUM,4,ZD)     
/*                                         
//CTL3CNTL DD *                            
 JOINKEYS F1=JNA,FIELDS=(81,4,A)           
 JOINKEYS F2=JNB,FIELDS=(81,4,A)           
 REFORMAT FIELDS=(F1:1,58,F2:1,10,F1:69,12)
 SORT FIELDS=COPY                          
/* 

输出:

FILE=/DATA/EXT/RECEPTION/TEST01_DTE/PASSING_DTE_PARAM_CTL.2018-06-28.QS
FILE=/DATA/EXT/RECEPTION/TEST02_DTE/PASSING_DTE_PARAM_CTL.2018-06-29.QS
FILE=/DATA/EXT/RECEPTION/TEST03_DTE/PASSING_DTE_PARAM_CTL.2018-06-30.QS
FILE=/DATA/EXT/RECEPTION/TEST04_DTE/PASSING_DTE_PARAM_CTL.2018-07-01.QS
FILE=/DATA/EXT/RECEPTION/TEST05_DTE/PASSING_DTE_PARAM_CTL.2018-07-02.QS
FILE=/DATA/EXT/RECEPTION/TEST06_DTE/PASSING_DTE_PARAM_CTL.2018-07-03.QS

按照我的方法,我在两个输入文件的记录末尾填充序列号,并且我使用序列号作为 JOINKEYS 应用程序中的键。

希望对您有所帮助!

这是我解决问题的方法:

//EXTRCT EXEC PGM=SORT                                            
//SYSOUT DD SYSOUT=*                                              
//SORTIN DD 
        DSN=INPUT.DATE.CTL.FILE,DISP=SHR 
//SORTOUT DD 
        DSN=OUTPUT.FILE.TEST,    
//      DISP=(,CATLG),UNIT=SYSDA,SPACE=(TRK,(10,10),RLSE)       
//SYSIN DD *                                                      
 OPTION COPY                                                      
 OUTFIL REMOVECC,                                                      
 OUTREC FIELDS= 
      (C'FILE=/DATA/EXT/TEST01_DTE/PASSING_DTE_PARAM_CTL.',59:1,10,         
       C'.QS         ')
/*                                                                
//                                                                

输出文件结果将是:

FILE=/DATA/EXT/TEST01_DTE/PASSING_DTE_PARAM_CTL.2019-02-20.QS

我不想使用连接密钥。

谢谢