使用 JCL 更新预告片计数

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

我有一个具有不同类型记录的输入文件。不同类型的记录由第 1 列标识。例如,对于标题记录,column1 的值为 0,对于尾部记录,column1 的值为 9。对于其他记录,column1 的值为 1 到 5。文件尾部的计数为每种类型的记录。预告片如下: column1 的值为 9,以便将其识别为预告片记录 Coulmn2-10 具有记录类型 1 的计数 第 11-19 列包含记录类型 2 的计数 Cilumn20-28 具有记录类型 3 的计数 Coulmn29-37 有记录类型 4 的计数 第 38-46 列有记录类型 5 的计数 因此,在进行某种排序后,包含数据已在输出文件中更新。那么如何使用JCL更新预告片记录的计数。

mainframe jcl dfsort
1个回答
0
投票

爱资哈尔,

假设您的输入有 RECFM=FB 且 LRECL=80,以下 DFSORT JCL 将为您提供所需的结果。

//STEP0100 EXEC PGM=SORT                                
//SYSOUT   DD SYSOUT=*                                  
//SORTIN   DD *                                         
0 HEADER                                                
1 AAA 101 PICK                                          
1 AAA 101 PICK                                          
1 AAA 101 DROP                                          
1 AAA 101 PICK                                          
2 ABC 101 PICK                                          
2 ABC 201 PICK                                          
2 ABC 301 DROP                                          
3 DEF 101 PICK                                          
3 DEF 201 350                                           
4 XQW 201 PICK                                          
5 REW 201 PICK                                          
5 REW 201 PICK                                          
5 REW 201 DROP                                          
5 REW 201 PICK                                          
5 REW 201 PICK                                          
9000000004000000003000000002000000001000000006          
//SORTOUT  DD SYSOUT=*                                  
//SYSIN    DD *                                         
  OMIT COND=(11,4,CH,EQ,C'DROP')                        
  OPTION COPY                                           
  INREC OVERLAY=(81:C'00000',                           
                 81:01,01,CHANGE=(5,C'1',C'10000',      
                                    C'2',C'01000',      
                                    C'3',C'00100',      
                                    C'4',C'00010',      
                                    C'5',C'00001'),     
                         NOMATCH=(81,5))                
                                                        
  OUTFIL BUILD=(1,80),                                  
         IFTRAIL=(TRLID=(1,1,CH,EQ,C'9'),               
          TRLUPD=(02:TOT=(81,1,ZD,M11,LENGTH=9),        
                  11:TOT=(82,1,ZD,M11,LENGTH=9),        
                  20:TOT=(83,1,ZD,M11,LENGTH=9),        
                  29:TOT=(84,1,ZD,M11,LENGTH=9),        
                  38:TOT=(85,1,ZD,M11,LENGTH=9)))       
/*                                                  

这个的输出是

0 HEADER                                               
1 AAA 101 PICK                                         
1 AAA 101 PICK                                         
1 AAA 101 PICK                                         
2 ABC 101 PICK                                         
2 ABC 201 PICK                                         
3 DEF 101 PICK                                         
3 DEF 201 350                                          
4 XQW 201 PICK                                         
5 REW 201 PICK                                         
5 REW 201 PICK                                         
5 REW 201 PICK                                         
5 REW 201 PICK                                         
9000000003000000002000000002000000001000000004         
© www.soinside.com 2019 - 2024. All rights reserved.