Angel
Angel

Reputation: 11

Find the repeated occurrence in a field using sort

Input:

 ----+----1----+----2----+  
 0112 CHENNAI             
 0104 HARRISON            
 0105 HARINI KRISHNAN     

Output:

----+----1----+----2----+----3----+
0112 CHENNAI         N             
0104 HARRISON        R             
0105 HARINI KRISHNAN H A R I N     

I tried with IFTHEN with Overlay but it doesn't work.

Can anyone help me with this?

Upvotes: 0

Views: 63

Answers (1)

Kolusu
Kolusu

Reputation: 556

The following DFSORT/ICETOOL JCL will give you the desired results. The Repeating characters are shown at Position 81 on wards.

//STEP0100 EXEC PGM=ICETOOL                                        
//TOOLMSG  DD SYSOUT=*                                             
//DFSMSG   DD SYSOUT=*                                             
//INP      DD *                                                    
0112 CHENNAI                                                       
0104 HARRISON                                                      
0105 HARINI KRISHNAN                                               
0106 ABCDEFGHIJKLMNO                                               
//TMP      DD DSN=&&TMP,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE)        
//OUT      DD SYSOUT=*                                             
//TOOLIN   DD *                                                    
  RESIZE FROM(INP) TO(TMP) TOLEN(80) USING(CTL1)                   
  SORT FROM(TMP) TO(OUT) USING(CTL2)                               
/*                                                  
//CTL1CNTL DD *                                                  
  OPTION COPY                                                    
  INREC IFOUTLEN=1201,                                           
        IFTHEN=(WHEN=INIT,                                       
             OVERLAY=(1201:06,15,SQZ=(SHIFT=LEFT))),             
        IFTHEN=(WHEN=INIT,                                       
               BUILD=(001,080,                                   
                      001,005,1201,001,74X,                      
                      001,005,1202,001,74X,                      
                      001,005,1203,001,74X,                      
                      001,005,1204,001,74X,                      
                      001,005,1205,001,74X,                      
                      001,005,1206,001,74X,                      
                      001,005,1207,001,74X,                      
                      001,005,1208,001,74X,                      
                      001,005,1209,001,74X,                      
                      001,005,1210,001,74X,                      
                      001,005,1211,001,74X,                      
                      001,005,1212,001,74X,                      
                      001,005,1213,001,74X,                      
                      001,005,1214,001,74X,                      
                      001,005,1215,001,74X))                     
                                                                 
  OUTFIL OMIT=(006,01,CH,EQ,C' '),                               
  IFTHEN=(WHEN=GROUP,KEYBEGIN=(01,05),PUSH=(81:ID=8,90:SEQ=2)),  
  IFTHEN=(WHEN=INIT,OVERLAY=(93:C'00')),                         
  IFTHEN=(WHEN=(90,02,ZD,EQ,1),OVERLAY=(95:X'FF')),              
  IFTHEN=(WHEN=NONE,OVERLAY=(95:06,01,93:C'01'))                 
/*                                                               
//CTL2CNTL DD *                                                       
  SORT FIELDS=(81,08,CH,A,                                            
               95,01,CH,A),EQUALS                                     
                                                                      
   SUM FIELDS=(93,02,ZD)                                              
                                                                      
  OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,02,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(101:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,03,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(103:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,04,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(105:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,05,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(107:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,06,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(109:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,07,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(111:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,08,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(113:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,09,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(115:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,10,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(117:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,11,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(119:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,12,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(121:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,13,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(123:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,14,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(125:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,15,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(127:95,01)),                      
         IFTHEN=(WHEN=GROUP,BEGIN=(90,02,ZD,EQ,16,AND,93,02,ZD,GT,1), 
         END=(90,02,ZD,EQ,01),PUSH=(129:95,01))                       
                                                                      
  OUTFIL REMOVECC,NODETAIL,                                           
  SECTIONS=(81,08,                                                    
  TRAILER3=(01,80,101,29))                                            
/*                                      

The output of this is

0112 CHENNAI                                                                          N    
0104 HARRISON                                                                       R      
0105 HARINI KRISHNAN                                                            H A R I N  
0106 ABCDEFGHIJKLMNO                                                                       
                                         

Upvotes: 1

Related Questions