JCL - Mainframes - Part 2

1. IEFBR14
·        IEFBR14 is called a dummy utility, mainly used for creation of non-vsam data sets
·        We can also delete the non-vsam data sets using this utility

EX1. Creation of PS file using IEFBR14
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEFBR14                                               
//SYSPRINT DD SYSOUT=*                                                  
//DD1 DD DSN=MATE05.GRP.PS,DISP=(NEW,CATLG,DELETE),                   
//         SPACE=(TRK,(10,10),RLSE),                                       
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                             
//         VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                  
//SYSIN DD *                                                           
/*                                                                    
EX2. Creation of PDS file using IEFBR14
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEFBR14                                               
//SYSPRINT DD SYSOUT=*                                                  
//DD1 DD DSN=MATE05.GRP.PDS,DISP=(NEW,CATLG,DELETE),                  
//        SPACE=(TRK,(10,10,1),RLSE),                                     
//        DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                             
//        VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                   
//SYSIN DD *                                                           
/*       
EX3. Deletion of PDS file using IEFBR14
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEFBR14                                               
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=(OLD,DELETE,DELETE),                  
//        SPACE=(TRK,(10,10,1),RLSE),                                     
//        DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                            
//        VOL=SER=DEVMA0,UNIT=3390                                         
//SYSOUT DD SYSOUT=*                                                   
//SYSIN DD *                                                           
/*                      
EX4. Deletion of PS file using IEFBR14
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEFBR14                                               
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PS,DISP=(NEW,CATLG,DELETE),                    
//         SPACE=(TRK,(10,10),RLSE),                                       
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                            
//         VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                  
//SYSIN DD *                                                           
/*             

2. IDCAMS
          IDCAMS is a VSAM utility it also creates non-vsam files
EX1. Creation of PS file using IDCAMS
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IDCAMS                                              
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PS,DISP=(NEW,CATLG,DELETE),                   
//         SPACE=(TRK,(10,10),RLSE),                                       
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                            
//         VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                  
//SYSIN DD *                                                           
/*                                                                   
EX. Creation of PDS file using IDCAMS
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IDCAMS                                              
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=(NEW,CATLG,DELETE),                  
//        SPACE=(TRK,(10,10,1),RLSE),                                     
//        DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                            
//        VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                   
//SYSIN DD *                                                           
/*       

3. IEBCOPY
Ø IEBCOPY works on the PDS file
Ø By using IEBCOPY we can copy the members from one PDS to another PDS
Ø Using IEBCOBY we can also bypass or exclude the members from copy and also we can rename the existing members
Text Box: M1
M2
M3
M4
M5

Text Box: M1
M2
M3
M4
M5
EX1. Copy all members from PDS to PDS
//MATE05AB JOB NOTIFY=&SYSUID                                         
//STEP1 EXEC PGM=IEBCOPY                                               
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                  
//DD2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                                  
//SYSIN DD *                                                           
      COPY INDD=DD1,OUTDD=DD2                                          
Text Box: M1
M2
M3
M4
M5
//SYSOUT DD SYSOUT=*                                                  
Text Box: M1
M2




/*
EX2. Copying selected members
//MATE05AB JOB NOTIFY=&SYSUID                                         
//STEP1 EXEC PGM=IEBCOPY                                              
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                   
//DD2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                                 
//SYSIN DD *                                                           
      COPY INDD=DD1,OUTDD=DD2  
      SELECT MEMBER=(M1,M2)                                        
//SYSOUT DD SYSOUT=*                                                  
/*
Text Box: A1
A2
X1
X2
EX3. Renaming members while copying
Text Box: M1
M2
M3
M4
M5
//MATE05AB JOB NOTIFY=&SYSUID                                         
//STEP1 EXEC PGM=IEBCOPY                                               
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                  
//DD2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                                 
//SYSIN DD *                                                            
      COPY INDD=DD1,OUTDD=DD2 
      SELECT MEMBER=((M1,A1,R),(M2,A2,R))                                         
//SYSOUT DD SYSOUT=*                                                  
/*
Text Box: M3
M4
M5
Text Box: M1
M2
M3
M4
M5
EX4. Exclude the members
//MATE05AB JOB NOTIFY=&SYSUID                                         
//STEP1 EXEC PGM=IEBCOPY                                              
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                  
//DD2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                                 
//SYSIN DD *                                                           
      COPY INDD=DD1,OUTDD=DD2 
      EXCLUDE MEMBER=(M1,M2)                                         
//SYSOUT DD SYSOUT=*                                                  
/*



EX5. Compressing a PDS file
//MATE05AB JOB NOTIFY=&SYSUID                                         
//STEP1 EXEC PGM=IEBCOPY                                               
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                  
//SYSIN DD *                                                            
      COPY INDD=DD1,OUTDD=DD1                                          
//SYSOUT DD SYSOUT=*                                                  
/*
4. IEBCOMPR
Ø By using IEBCOMPR utility we can compare the data in two PS files and any two PDS files
Ø We cant compare PS with PDS and PDS with PS
Ø Organization for PDS is PO
Ø Organization of PS is PS
Ø Syntax: COMPARE TYPORG =PS
Or
PO
Ø If two comparing files data is equal then MAXCC = 0 if not it gives more than ‘4’
EX1. Comparing PS files
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBCOMPR                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                 
//SYSUT2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                               
//SYSIN DD *                                                           
      COMPARE TYPORG=PS                                               
//SYSOUT DD SYSOUT=*                                                   
/*
EX2. Comparing PDS files
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBCOMPR                                              
//SYSPRINT DD SYSOUT=*                                                  
//SYSUT1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                
//SYSUT2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                               
//SYSIN DD *                                                           
      COMPARE TYPORG=PO                                               
//SYSOUT DD SYSOUT=*                                                  
/*
5. IEBGENER
Ø Mainly used for taking the backup of data
Ø IEBGENER works only on PS files
Ø The possibilities in IEBGENER are as follows
PS               –        PS
PS               –        PDS (MEMBER)
PDS (MEMBER) –        PS
PDS (MEMBER) –        PDS (MEMBER)
EX1. PS – PS
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PS1,DISP=SHR                            
//SYSUT2 DD DSN=MATE05.GRP.PS2,DISP=SHR                           
//SYSIN DD *                                                            
//SYSOUT DD SYSOUT=*                                                   
/* 
EX2. PS – PDS (MEMBER)
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PS,DISP=SHR                            
//SYSUT2 DD DSN=MATE05.GRP.PDS(M1),DISP=SHR                           
//SYSIN DD *                                                            
//SYSOUT DD SYSOUT=*                                                   
/* 
EX3. PDS (MEMBER) – PS
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS(M1),DISP=SHR                            
//SYSUT2 DD DSN=MATE05.GRP.PS2,DISP=SHR                           
//SYSIN DD *                                                           
//SYSOUT DD SYSOUT=*                                                   
/* 
EX4. PDS (MEMBER) - PDS (MEMBER)
//MATE05AB JOB NOTIFY=&SYSUID                                           
//STEP1 EXEC PGM=IEBGENER                                             
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS(M1),DISP=SHR                            
//SYSUT2 DD DSN=MATE05.GRP.PDS(M2),DISP=SHR                           
//SYSIN DD *                                                           
//SYSOUT DD SYSOUT=*                                                   
M3


M4
 
/*
EX5. Copying Data
//MATE05AB JOB NOTIFY=&SYSUID                                           
//STEP1 EXEC PGM=IEBGENER                                             
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PS1,DISP=SHR                                 
//SYSUT2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                               
//SYSIN DD *                                                           
        GENERATE MAXNAME=2                                             
        MEMBER NAME=(M3,M4)                                         
//SYSOUT DD SYSOUT=*                                                   
/*
Ø Using ‘GENERATE’ we can copy data from one PS to any no of members in a PDS
Ø ‘MAXNAME’ specifies max no of members require in a PDS you may use less than that also
Ø Using IEBGENER utility we can copy the required columns data from the input file by using ‘RECORD FIELD’
Ø SYNTAX: RECORD FIELD = (LENGTH,LOCATION INPUT,FORMAT,LOCATION OUTPUT)
Ø Using ‘MAXFLDS’ we can write any no of required fields into an output file
EX6.
//MATE05AB JOB NOTIFY=&SYSUID                             
//STEP1 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                               
//SYSUT1 DD DSN=MATE05.GRP.PDS1(M2),DISP=SHR                           
//SYSUT2 DD DSN=MATE05.GRP.PS2,DISP=SHR                                
//SYSIN DD *                                                           
        GENERATE MAXFLDS=2                                              
        RECORD FIELD=(4,1,,1),FIELD=(5,6,,6)
//SYSOUT DD SYSOUT=*                                                   
/*
INPUT:
1001
RAMU
25000
0010
1002
KUMAR
32000
0100
1003
RAVI
42000
1000

OUTPUT:
1001 RAMU
1002 KUMAR
1003 RAVI
EX7. Inserting literals using MAXLITS – MAX LITERALS
Ø Using MAXLITS we can insert any no of literals in output file
EX6.
//MATE05AB JOB NOTIFY=&SYSUID                             
//STEP1 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                               
//SYSUT1 DD DSN=MATE05.GRP.PDS1(M2),DISP=SHR                           
//SYSUT2 DD DSN=MATE05.GRP.PS2,DISP=SHR                                
//SYSIN DD *                                                            
        GENERATE MAXFLDS=3,MAXLITS=1                                             
        RECORD FIELD=(4,1,,1),FIELD=(1,*,,5), FIELD=(5,6,,6)
//SYSOUT DD SYSOUT=*                                                   
PS3
 
/*
EX8. Concatenation of data sets
PS2
 
PS1
 
//MATE05AB JOB NOTIFY=&SYSUID                                         
//STEP1 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PS1,DISP=SHR                                
//                DD DSN=MATE05.GRP.PS2,DISP=SHR                                
//SYSUT2 DD DSN=MATE05.GRP.PS3,DISP=SHR                           
//SYSIN DD *                                                            
//SYSOUT DD SYSOUT=*                                                   
/* 
6. IEBEDIT
Ø Using IEBEDIT utility we can process any steps existed in a job
Ø In IEBEDIT we have two possibilities. They are….
1.     INCLUDE
2.     EXCLUDE
Ø By using INTRDR – Internal Reader, we can process any required steps in a job
EX1.
In one PDS member
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEFBR14                                               
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PS,DISP=(NEW,CATLG,DELETE),                   
//         SPACE=(TRK,(10,10),RLSE),                                       
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                             
//         VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                  
//SYSIN DD * 
//STEP2 EXEC PGM=IDCAMS                                              
//SYSPRINT DD SYSOUT=*                                                 
//DD1 DD DSN=MATE05.GRP.PS,DISP=(NEW,CATLG,DELETE),                   
//         SPACE=(TRK,(10,10),RLSE),                                       
//         DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),                            
//         VOL=SER=DEVMA0,UNIT=3390                                        
//SYSOUT DD SYSOUT=*                                                  
//SYSIN DD *   
//STEP3 EXEC PGM=IEBGENER                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS(M1),DISP=SHR                            
//SYSUT2 DD DSN=MATE05.GRP.PS2,DISP=SHR                           
//SYSIN DD *                                                            
//SYSOUT DD SYSOUT=*   
//STEP4 EXEC PGM=IEBCOMPR                                              
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS,DISP=SHR                                 
//SYSUT2 DD DSN=MATE05.GRP.PDS1,DISP=SHR                               
//SYSIN DD *                                                           
      COMPARE TYPORG=PS                                               
//SYSOUT DD SYSOUT=*                                                  
Now in a member of your JCL
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBEDIT                                               
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS(M2),DISP=SHR                            
//SYSUT2 DD SYSOUT=(*,INTRDR)                                          
//SYSIN DD *                                                            
     EDIT TYPE=EXCLUDE,STEPNAME=(STEP1,STEP3)                          
//SYSOUT DD SYSOUT=*                                                  
/*                                                  
EX2.
//MATE05AB JOB NOTIFY=&SYSUID                                           
//STEP1 EXEC PGM=IEBEDIT                                               
//SYSPRINT DD SYSOUT=*                                                 
//SYSUT1 DD DSN=MATE05.GRP.PDS(M2),DISP=SHR                            
//SYSUT2 DD SYSOUT=(*,INTRDR)                                          
//SYSIN DD *                                                           
     EDIT TYPE=INCLUDE,STEPNAME=(STEP1,STEP3)                          
//SYSOUT DD SYSOUT=*                                                   
/*   
7. IEBUPDTE
Ø By using IEBUPDTE we can change any record data existed in a member of PDS by copying the address of the particular record
Ø SYNTAX: ./ CHANGE NAME = MEMBER NAME,UPDATE = INPLACE
    ./ ENDUP
Ø Inplace will update the existing data by new data
EX
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBUPDTE                                             
//SYSPRINT DD SYSOUT=*                                                  
//SYSUT1 DD DSN=MATE05.GRP.PDS1,DISP=SHR                               
//SYSUT2 DD SYSOUT=*                                                  
//SYSIN DD *                                                           
    ./ CHANGE NAME=M2,UPDATE=INPLACE                                   
      THIS IS MY LAST PROGRAM FOR TODAY                                
    ./ END UP                                                          
//SYSOUT DD SYSOUT=*                                                    
/*                                                                    
EXECUTION PROCEDURE:
STEP1:
          Open input PDS member. Copy the required record address by using the command ‘NUM ON’. Press F11 and copy the required record address
STEP2:
          Open currently running JCL and type the command ‘NUM OFF’ and press F11 and paste the copied address on the input record address
STEP3:
          Submit the JCL and verify the updations in output file
8. IEBPTPCH
Ø By using IEBPTPCH – IEBPUNCH utility we can add max two title itemsto the output fields
Ø Using record field we can select any column data from the input file
Ø SYNTAX:
PRINT TYPORG = PS, MAXFLDS = VALUE
TITLE ITEM = (‘INPUT TEXT’,LOCATION IN OUTPUT)
TITLE ITEM = (‘INPUT TEXT’,LOCATION IN OUTPUT)
EX
CASE1. Printing the output on to the spool
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBPTPCH                                             
//SYSPRINT DD SYSOUT=*                                                
//SYSUT1 DD DSN=MATE05.GRP.PS1,DISP=SHR                                
//SYSUT2 DD SYSOUT=*
//SYSIN DD *                                                          
      PRINT TYPORG=PS,MAXFLDS=2                                        
      TITLE ITEM=('EMPLOYEE DETAILS',30)                               
      TITLE ITEM=('ENUM ENAME ',1)                                 
      RECORD FIELD=(4,1,,25),FIELD=(5,6,,30)            
//SYSOUT DD SYSOUT=*                                                  
/*                                                                      
CASE2. Printing data into an output file
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=IEBPTPCH                                             
//SYSPRINT DD SYSOUT=*                                                
//SYSUT1 DD DSN=MATE05.GRP.PS1,DISP=SHR                                
//SYSUT2 DD DSN=MATE05.GRP.PS2,DISP=SHR                                
//SYSIN DD *                                                           
      PRINT TYPORG=PS,MAXFLDS=2                                        
      TITLE ITEM=('EMPLOYEE DETAILS',30)                               
      TITLE ITEM=('ENUM ENAME ',1)                                 
      RECORD FIELD=(4,1,,25),FIELD=(5,6,,30)            
//SYSOUT DD SYSOUT=*                                                  
/*
SORT AND ICEMAN
Ø By using ‘SORT’ we can perform only sort operation but by using ‘ICEMAN’ we can perform sort and merge
Ø SYNTAX:
SORTFIELDS=(LOCATIONINPUT,LENGTH,FORMAT,SORTSE                QUENCE)
Ø Sort sequence = A – Ascending
 D – Descending
EX1. SIMPLE SORT
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=SORT                                                   
//SYSPRINT DD SYSOUT=*                                                
//SORTIN DD DSN=MATE05.GRP.PS1,DISP=SHR                                
//SORTOUT DD DSN=MATE05.GRP.PS2,DISP=SHR                               
//SYSIN DD *                                                            
      SORT FIELDS=(1,5,CH,D)                                           
//SYSOUT DD SYSOUT=*                                                   
/* 
EX2. Eliminating the duplications existing in SORT field
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=SORT                                                  
//SYSPRINT DD SYSOUT=*                                                
//SORTIN DD DSN=MATE05.GRP.PS1,DISP=SHR                                 
//SORTOUT DD DSN=MATE05.GRP.PS2,DISP=SHR                               
//SYSIN DD *                                                           
      SORT FIELDS=(1,5,CH,D) 
      SUM FIELDS=NONE                                        
//SYSOUT DD SYSOUT=*                                                   
/* 
EX. SKIPREC, STOPAFT
Ø By using ‘SKIPREC’ we can bypass any no of records from the beginning
Ø Using ‘STOPAFT’ we can stop the process of sort operation
//MATE05AB JOB NOTIFY=&SYSUID                                          
//STEP1 EXEC PGM=SORT                                                  
//SYSPRINT DD SYSOUT=*                                                
//SORTIN DD DSN=MATE05.GRP.PS1,DISP=SHR                                 
//SORTOUT DD DSN=MATE05.GRP.PS2,DISP=SHR                               
//SYSIN DD *                                                           
      SORT FIELDS=(1,5,CH,D) 
      SKIPREC = 4,STOPAFT = 4                                      
//SYSOUT DD SYSOUT=*                                                   
/*
EX4. INREC, OUTREC
Ø By using ‘INREC’ fields we can bypass any no of columns from sort field
Ø Using ‘OUTREC’ after successful sort we can print any required field data from the output file
Ø SYNTAX1.
INREC FIELDS = (LOCATION OUTPUT:LOCATIONINPUT,LENGTH)
Ø SYNTAX2.

OUTREC FIELDS = (LOCATION OUTPUT:LOCATIONINPUT,LENGTH)

No comments:

Post a Comment