JCL мэйнфрейма для объединения 4 файлов по столбцам, все файлы имеют разное количество строк,

Есть ли способ объединить 4 файла в столбцах с помощью ICETOOL или syncsort в JCL

Например:

введите здесь описание изображения

введите здесь описание изображения


person Prabhu G    schedule 17.03.2020    source источник
comment
Видел это ?   -  person Jeff Holt    schedule 17.03.2020
comment
Вы можете 1 ввести порядковый номер в каждый файл. 2 соединяются с порядковыми номерами, как указал jeff. Там могут быть лучшие способы сделать это. См. ibm.com/support /knowledgecenter/SSLTBW_2.1.0/   -  person Bruce Martin    schedule 18.03.2020
comment
Пожалуйста, используйте вырезание и вставку - не используйте снимки экрана JCL не может этого сделать, но, как вы правильно предположили, продукт сортировки может это сделать, так почему бы не использовать теги продукта сортировки?.   -  person NicC    schedule 18.03.2020


Ответы (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)                                           
/*                                      
person John Bradley    schedule 30.03.2020