【问题标题】:Mainframe JCL to concat the 4 files in column wise, all the files having different number of rows,大型机 JCL 按列连接 4 个文件,所有文件具有不同的行数,
【发布时间】:2020-03-17 19:42:21
【问题描述】:

有没有办法在 JCL 中使用 ICETOOL 或 syncsort 按列连接 4 个文件

例如:

【问题讨论】:

  • 见过this?
  • 您可以1在每个文件中引入一个序列号。 2 按照 jeff 的指示加入序列号。可能有更好的方法来做到这一点。见ibm.com/support/knowledgecenter/SSLTBW_2.1.0/…
  • 请使用剪切和粘贴 - 不要使用屏幕截图 JCL 无法做到这一点,但正如您正确推测的那样,分类产品可能能够做到,那么为什么不使用分类产品标签呢?

标签: mainframe dfsort syncsort


【解决方案1】:

下面的代码会做你想做的事。我的输入基于长度为 80 字节的文件。

我的输入如下:-

文件1:-

1RED
1WHITE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1BLUE
1PINK

文件2:-

21000
22000
23000
24000
25000

文件3:-

3X1
3X2
3X3
3X4
3X5

文件4:-

4R1
4R2
4R3
4R4
4R5
4R6
4R7
4R8
4R9
4R10
4R11
4R12
4R13
4R14
4R15

代码将根据需要将文件合并在一起,并处理不同数量记录的实例等。

//STEP1    EXEC PGM=ICETOOL                                                     
//SYSOUT   DD   SYSOUT=*                                                        
//DFSMSG   DD   SYSOUT=*                                                        
//TOOLMSG  DD   SYSOUT=*                                                        
//SYSPRINT DD   SYSOUT=*                                                        
//IN1      DD   DSN=JXB7884.FILE1,DISP=SHR                                      
//IN2      DD   DSN=JXB7884.FILE2,DISP=SHR                                      
//IN3      DD   DSN=JXB7884.FILE3,DISP=SHR                                      
//IN4      DD   DSN=JXB7884.FILE4,DISP=SHR                                      
//M1       DD   DSN=&&M1,                                                 
//         DISP=(MOD,PASS),                                                    
//         DCB=(RECFM=FB,LRECL=328,BLKSIZE=0,DSORG=PS),                         
//         UNIT=SYSDA,                                                          
//         SPACE=(TRK,1)                                                        
//REPORT   DD   DSN=JXB7884.REPORT,                                             
//         DISP=(NEW,CATLG,DELETE),                                             
//         DCB=(RECFM=FB,LRECL=320,BLKSIZE=0,DSORG=PS),                         
//         UNIT=SYSDA,                                                          
//         SPACE=(TRK,1)                                                        
//TOOLIN   DD   *                                                               
  COPY  FROM(IN1) TO(M1) USING(COP1)                                            
  COPY  FROM(IN2) TO(M1) USING(COP2)                                            
  COPY  FROM(IN3) TO(M1) USING(COP3)                                            
  COPY  FROM(IN4) TO(M1) USING(COP4)                                            
  SPLICE FROM(M1) TO(REPORT) ON(321,8,PD) WITHANY  -                            
         KEEPNODUPS                                -                            
         WITH(81,80) WITH(161,80) WITH(241,80)     -                            
         USING(SPL1)                                                            
/*                                                                              
//COP1CNTL DD   *                                                               
  OPTION COPY                                                                   
  OUTREC FIELDS=(1,80,240X,321:SEQNUM,8,PD)                                     
/*                                                                              
//COP2CNTL DD   *                                                               
  OPTION COPY                                                                   
  OUTREC FIELDS=(80X,81:1,80,160X,321:SEQNUM,8,PD)                              
/*                                                                              
//COP3CNTL DD   *                                                               
  OPTION COPY                                                                   
  OUTREC FIELDS=(160X,161:1,80,80X,321:SEQNUM,8,PD)                             
/*                                                                              
//COP4CNTL DD   *                                                               
  OPTION COPY                                                                   
  OUTREC FIELDS=(240X,241:1,80,321:SEQNUM,8,PD)                                 
/*                                                                              
//SPL1CNTL DD   *                                                               
  OUTFIL FNAMES=REPORT,OUTREC=(1,320)                                           
/*                                      

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2021-09-07
    • 2012-06-17
    • 2019-10-16
    • 2018-02-25
    • 2012-09-26
    相关资源
    最近更新 更多