Tuesday, March 8, 2011

Fileaid - To copy records baced on condition

//STEP020  EXEC  PGM=FILEAID                              
//DD01     DD  DSN=&TYPE1.CCUL.UL139.CONSERVE.EXTRACT,    
//             DISP=SHR                                   
//USXTRCT  DD  DSN=&TYPE1.CCCN.CN2300WP.EXTRACT(+1),      
//             DISP=(,CATLG,DELETE),                      
//             UNIT=SYSDA,                                
//             SPACE=(CYL,(1,1)),                         
//             DCB=RECFM=FB                               
//*                                                       
//CANXTRCT DD  DSN=&TYPE1.CCCN.CN2300WP.EXTRACT.CAN(+1),  
//             DISP=(,CATLG,DELETE),                      
//             UNIT=SYSDA,                                
//             SPACE=(CYL,(1,1)),                         
//             DCB=RECFM=FB                               
//*                                                       
//SYSIN    DD  DSN=PAWPC.CICA.PARMLIB(CN230002),                                                                      

//             DISP=SHR                                   
//SYSOUT   DD  SYSOUT=*                                   
//*                                                       


PAWPC.CICA.PARMLIB(CN230002)

$$DD01 USER  IF=(1,EQ,C'E'),             
           ORIF=(1,EQ,C'N'),WRITE=USXTRCT,
             IF=(1,EQ,C'W'),WRITE=CANXTRCT

Sunday, February 6, 2011

IDCAMS - job to verify online vsam file

//VERIFY   EXEC PGM=IDCAMS,REGION=1M                                   
//VIOCTL   DD DSN=ACTIVATE,DISP=SHR,AMP='AMORG',VOL=REF=SYS1.LINKLIB   
//SYS014   DD DSN=PCCPU.IOBSC.MASTER,DISP=OLD                          
//AMSDUMP  DD SYSOUT=*                                                 
//SYSPRINT DD SYSOUT=*                                                 
//SYSIN    DD *                                                        
   VERIFY FILE(SYS014)                                                 
//*                                                                    

Syncsort - Copy reocrds from Variable (VB) to Fixed (FB) file

//STEP001  EXEC  PGM=SYNCSORT                                        
//*SORTIN   DD  DSN=PCCAR.AR4050WP.SORTED.REGIONS.BKUP.G0005V00,     
//SORTIN   DD  DSN=PCCPU.PU0400DP.INPUT.TRACRECS(0),                 
//             DISP=SHR                                              
//SORTOUT  DD  DSN=TCCPU.PU0400DP.INPUT.TRACRECS.VBTOFB,             
//             DISP=(,CATLG,DELETE),                                 
//             UNIT=SYSDA,                                           
//             SPACE=(CYL,(550,150),RLSE),                           
//             DCB=(RECFM=FB,BLKSIZE=0)                              
//SYSOUT   DD  SYSOUT=*                                              
//SYSIN    DD  *                                                     
  SORT FIELDS=COPY                                                   
  OUTREC FIELDS=(1:5,10000),CONVERT                                  
//
                                                                   

Copying from VSAM to Flatfile

//STEP005   EXEC PGM=IDCAMS                                   
//SYSPRINT DD  SYSOUT=*                                       
//BTCHIN   DD  DSN=OCCUL.IDPI991.POLMASTR,                    
//*BTCHIN   DD  DSN=TCCPU.IOBSC.MASTER,                       
//             DISP=SHR                                       
//*                                                           
//*BTCHSQ   DD  DSN=TCCPU.IOBSC.MASTER.ALLDB,                 
//BTCHSQ   DD  DSN=TCCPU.OCCUL.IDPI991.POLMASTR,              
//             DISP=(NEW,CATLG,DELETE),                       
//             UNIT=CART,                                     
//             DCB=RECFM=VB                                   
//*            UNIT=SYSDA,                                    
//*            SPACE=(CYL,(800,800),RLSE),                    
//*            DCB=RECFM=FB                                   
//*            DCB=(RECFM=VB,LRECL=2000)                      
//SYSIN    DD  *                                              
  REPRO INFILE(BTCHIN) OUTFILE(BTCHSQ)                        
/*                                                            

Copy from VSAM to Sequential

//******************************************************************** 
//***     VSAM TO SEQUENTIAL                                           
//***                                                                  
//******************************************************************** 
//*
                                                                    
//STEP005   EXEC PGM=IDCAMS                                            
//SYSPRINT DD  SYSOUT=*                                                
//*YSPRINT DD SYSOUT=A                                                 
//OLD  DD DSN=OCCUL.IDPI991.POLMASTR,DISP=SHR                          
//NEW  DD DSN=TCCPU.DLPXV1.POLMASTR,DISP=OLD                           
//SYSIN DD *                                                           
   REPRO -                                                             
       INFILE(OLD) -                                                   
       OUTFILE(NEW) -                                                  
       SKIP(40) -                                                      
       COUNT(50)                                                       
/*
                                                                     

EZACFSM1 - to add date in date/dilename by unsing instream procedure

//DLPXV1A  JOB (SULM2G20),                 
//             CLASS=0,                    
//             MSGCLASS=T,                 
//             NOTIFY=DLPXV1,              
//             USER=DLPXV1                 
//*                                        
//STEP040  EXEC  PGM=EZACFSM1              
//SYSOUT   DD SYSOUT=(*,INTRDR)            
//SYSIN    DD  DATA,DLM=@@                 
//DLPXV1B  JOB (SULM2G20),                 
//*            FTPFTP,                     
//             CLASS=0,                    
//             MSGCLASS=T,                 
//             NOTIFY=DLPXV1,              
//             USER=DLPXV1                 
//*                                        
//STEP050  EXEC PGM=IEBGENER               
//SYSPRINT DD  SYSOUT=*                    
//SYSUT1   DD  DSN=TCCPU.PU0704DP.CLRFY.TES2,DISP=SHR                 
//SYSUT2   DD  DSN=TCCPU.PU0704DP.CLRFY.TES2.D&LYYMMDD,               
//             DISP=(,CATLG,DELETE),                                  
//             UNIT=SYSDA,                                            
//             SPACE=(CYL,(1,1),RLSE),                                
//             DCB=RECFM=FB                                           
//SYSIN    DD  DUMMY                                                  
@@                                                                    
//                                                                    

EZACFSM1 - To add date in the dataset/text file during the job run.

//STEP040  EXEC  PGM=EZACFSM1                              
//SYSPRINT DD  *                                           
//SYSIN    DD  DSN=TCCPU.DLPXV2.PARMLIB(BKBBFLE),                                                                   

//             DISP=SHR                                    
//SYSOUT   DD  DSN=TCCPU.DLPXV2.FTPOUT6,                   
//             DISP=(NEW,CATLG,DELETE),                    
//             UNIT=SYSDA,                                 
//             SPACE=(CYL,(1,1),RLSE),                     
//             DCB=RECFM=FB                                
//                                                         
TCCPU.DLPXV2.PARMLIB(BKBBFLE):

PUT 'TCUAC.DB175.TNT.COUNT.UKSI' CBI02_CTRL_FILE_&DAY&MON&LYR4..TXT  
QUIT                                                                 


//STEP050  EXEC  PGM=FTP,                                   
//             PARM='(EXIT=16'                              
//SYSPRINT DD  SYSOUT=*                                     
//OUTPUT   DD  SYSOUT=*                                     
//*                                                         
//INPUT    DD  DSN=TCCPU.DLPXV2.PARMLIB(CLRLOGON),          
//             DISP=SHR                                     
//         DD  DSN=TCCPU.DLPXV2.FTPOUT6,                    
//             DISP=SHR                                     


TCCPU.DLPXV2.PARMLIB(CLRLOGON) - will have the login details of the server and TCCPU.DLPXV2.FTPOUT6 will have the file name with date as per the previous EZ' utility.



(For my information:


Hi Team,
1. We got a requirement to send a file from mainframe to (any) server (txt file format or any format). Txt file name should have rundate (eg:   OB_FILE_29012009.TXT).
Thought to write a program to obtain this naming convention. But, we have identified a Utility program (EZACFSM1) - a translation utility,  where we can get the rundate value to the file name like our &symbolic parameter.
This utility program is very useful to get the Current Date,Current month, Current Year, Sequence Number , so on...
Test job : TCCPU.DLPXV2.FTP(FTPDATE).
2. This utility can also be used with JCL to create the dataset with current date & time, Sequence number. etc  at the time of creation.
)

Wednesday, February 2, 2011

Fileaid - to take a copy of a deleted tape dataset

//STEP020  EXEC  PGM=FILEAID                                         
//SYSPRINT DD  SYSOUT=*                                              
//SYSOUT   DD  SYSOUT=*                                              
//*                                                                  
//DD01     DD  DSN=PCNCN.CN0060MN.UPLOAD.POL.SORT,                   
//             DISP=OLD,UNIT=CART,                                   
//             VOL=SER=520361                                                                                                         

//DD01O    DD  DSN=TCCPU.CN0060MN.UPLOAD.POLICY.BKUP,                
//             DISP=(NEW,CATLG,DELETE),                              
//             UNIT=CART,                                            
//             DCB=RECFM=FB                                          
//*            LABEL=RETPD=30                                        
//*
                    

This takes a backup of the tape dataset which is been deleted. With the tape's volume serial given backup can be taken.                                             

Sort - Copy records from input to output based on certain condition from input

//STEP010  EXEC PGM=SORT                                               
//SYSPRINT DD  SYSOUT=*                                                
//SYSOUT   DD  SYSOUT=*                                                
//SORTIN   DD  DSN=PCCCD.CD0041DP.CHGO.BENCHEK.IMAGE(0),               
//             DISP=SHR                                                
//SORTOUT  DD  DSN=TCCPU.PU0700DP.CHGO.BENCHEK.IMAGE.TEST.TDY16,       
//             DISP=(,CATLG,DELETE),                                   
//             UNIT=SYSDA,                                             
//             SPACE=(CYL,(1,1),RLSE),                                 
//             DCB=RECFM=FB                                            
//SYSIN    DD  *                                                       
  SORT FIELDS=COPY                                                     
  INCLUDE COND=(1,1,CH,EQ,C'1',AND,2,6,CH,EQ,C'      ',OR,             
               (9,8,CH,NE,C'        ',                                 
               AND,17,6,CH,EQ,C'      ',AND,23,7,CH,NE,C'       ',     
               AND,28,7,CH,EQ,C'       ',AND,35,1,CH,NE,C' '))         
/*
                                                                     

Tuesday, February 1, 2011

Sort - To eliminate duplicates and copy only unique records and copy the eliminated records into another output file

//STEP010  EXEC PGM=SORT                                        
//SYSPRINT DD  SYSOUT=*                                         
//SYSOUT   DD  SYSOUT=*                                         
//SORTIN   DD  DSN=TCCCN.CN2330WP.PREV.WEEK.CALLTBL.OCT20,      
//             DISP=SHR                                         
//         DD  DSN=TCCCN.CN2330WP.SENT.DIALER,                  
//             DISP=SHR                                         
//SORTOUT  DD  DSN=TCCCN.CN2330WP.SENT.DIALER.SORT,             
//             DISP=(,CATLG,DELETE),                            
//             UNIT=SYSDA,                                      
//             SPACE=(CYL,(750,400),RLSE),                      
//             DCB=RECFM=FB                                     
//SORTXSUM DD  DSN=TCCCN.CN2330WP.SENT.DIALER.XSUM,             
//             DISP=(,CATLG,DELETE),                            
//             UNIT=SYSDA,                                      
//             SPACE=(CYL,(400,400),RLSE),                      
//             DCB=RECFM=FB                                     
//SYSIN    DD  *                                                
  SORT FIELDS=(1,15,CH,A)                                       
  SUM FIELDS=NONE,XSUM                                          
/*


SUM FIELDS=NONE - will eliminate duplicates
SUM FIELDS=NONE,XSUM - will eliminate duplicates and eliminated records are captured in SORTXUM dataset                                

Sort - To count the number of records in input file

//STEP2    EXEC PGM=SORT                                               
//SYSPRINT DD SYSOUT=*                                                 
//SYSOUT   DD SYSOUT=*                                                 
//SORTIN   DD DISP=SHR,DSN=TCCPU.DLAKS1.CANPHLBD.BC                    
//SORTOF2  DD DISP=MOD,DSN=TCCPU.DLAKS1.CANPHLBD.COUNT                 
//SYSIN    DD *                                                        
  SORT FIELDS=(1,1,CH,A)                                               
  OUTFIL FILES=1,NODETAIL,                                             
  REMOVECC,TRAILER1=(C'NUMBER OF RECORDS IN BC: ',COUNT)               
/*                                                                     

NODETAIL - will copy all the records from input and the count is displayed in the last row

Note: If only count has to be displayed in output without the actual records, the need not give NODETAIL

Sort - Copy records from two different files to single fileusinf Join Key

//STEP001  EXEC  PGM=SORT                                              
//SORTJNF1 DD  DSN=TCTCN.CN2030WT.DISPTBL.APR15,                       
//             DISP=SHR                                                
//SORTJNF2 DD  DSN=TCCCN.CN2030WP.CALLTBL.APR15,                       
//             DISP=SHR                                                
//SORTOUT  DD  DSN=TCCCN.CN2030WP.PREVWEEK.CALLTBL.JOIN.APR08,         
//             DISP=(,CATLG,DELETE),                                   
//             UNIT=SYSDA,                                             
//             SPACE=(CYL,(100,50),RLSE)                               
//SYSOUT   DD  SYSOUT=*                                                
//SYSIN    DD  *                                                       
  SORT FIELDS=(1,10,CH,A)                                              
  JOINKEYS FILE=F1,FIELDS=(7,4,A)                                      
  JOINKEYS FILE=F2,FIELDS=(7,4,A)                                      
  REFORMAT FIELDS=(F2:1,1182,F1:1183,1084)
                             
//*******************************************************************  

Join fields of different files into a single file
1. Sort the file, if it has to be in any specific order   SORT FIELDS=(1,10,CH,A) 
2. Have a field in common in both files in same position. If the file has some position in common or create a field with common values in both files. Here in this two files, position 7 has 4 chars in common in both files. JOINKEYS FILE=F2,FIELDS=(7,4,A)  
3. REFORMAT - will join both files. Here from input file F2, characters from 1 upto length 1182 is copied to output' s 1 - 1182 position. then from input file F1, characters from 1183 upto length 1084 characters is copied to output files position 1183.

ADRDSSU - Copy all versions of one GDG to another GDG

//STEP1    EXEC PGM=ADRDSSU                                    
//SYSPRINT  DD   SYSOUT=*                                      
//SYSIN     DD   *                                             
 COPY  -                                                       
   DATASET(                                         -             
   INCLUDE(                                          -             
   PCCAC.L04.DUDMAILO.**                   -             
   )                                                      -             
   )                                                      -             
   RENUNC(PCCAC.L04.DUDMAILO.**,    -             
   TCCAC.L04.DUDMAILO.**)                 -             
   CATALOG TGTGDS(ACTIVE)                                      
/*                                     



Before copying to another gdg, new gdg base has to be created                         

Fileaid - Copy only 'n' records from input to output

//DLPXV1Z  JOB  (SULM2G20,0000,0000000000000000),PREETHA,              
 //  CLASS=0,MSGCLASS=T,NOTIFY=DLPXV1,USER=DLPXV1                       
 //*                                                                    
 //FILEAID1 EXEC  PGM=FILEAID                                           
 //SYSPRINT DD  SYSOUT=*                                                
 //SYSTOTAL DD  SYSOUT=*                                                
 //DD01     DD  DSN=PCCCN.CN0060MP.COVERAGE.BACKUP.G0032V00,            
 //             DISP=SHR                                                
 //*DD01O    DD  DSN=TCCCN.CN0056MP.CHNEWOTH.APR16,                     
 //DD01O    DD  DSN=TCCCN.CN0060MP.COVERAGE.BACKUP,                     
 //             DISP=(,CATLG,DELETE),                                   
 //             UNIT=SYSDA,                                             
 //             SPACE=(CYL,(500,350),RLSE),                             
 //             DCB=RECFM=FB                                            
 //                                                                     
 //SYSIN    DD  *                                                       
 $$DD01 COPY OUT=100000                                                 
 //*
                                                                    

Synctool - find the counts of two different files and abend the job if there is difference b/w two counts

//*-------------------------------------------------------------------*
//* FIND THE COUNTS OF FILE SENT TO DIALER AND RECEIVED FROM DIALER    
//*-------------------------------------------------------------------*                                                                         

//STEP085  EXEC PGM=SYNCTOOL                                           
//DFSMSG   DD  SYSOUT=*                                                
//TOOLMSG  DD  SYSOUT=*                                                
//IN1      DD  DSN=&TYPE1.CCCN.CN2030WP.CNSVDNLD.DATA(0),              
//             DISP=SHR                                                
//IN2      DD  DSN=&TYPE1.CCCN.CN2030WP.PREVWEEK.CTBL.BKUP(+1),        
//             DISP=SHR                                                
//OUT      DD  DSN=&&T1,                                               
//             DISP=(MOD,PASS),                                        
//             UNIT=SYSDA,                                             
//             SPACE=(TRK,(1,1),RLSE),                                 
//             DCB=(RECFM=FB,LRECL=80)                                 
//OUT1     DD  DSN=&&T2,                                               
//             DISP=(MOD,PASS),                                        
//             UNIT=SYSDA,                                             
//             SPACE=(TRK,(1,1),RLSE),                                 
//             DCB=(RECFM=FB,LRECL=80)                        
//*                                                           
//TOOLIN   DD  DSN=PAWPC.CICA.PARMLIB(CN233001),              
//             DISP=SHR                                       
//CTL1CNTL DD  DSN=PAWPC.CICA.PARMLIB(CN233002),              
//             DISP=SHR                            



PAWPC.CICA.PARMLIB(CN233001) :

COPY FROM(IN1) TO(OUT) USING(CTL1)  
COPY FROM(IN2) TO(OUT1) USING(CTL1)
           
PAWPC.CICA.PARMLIB(CN233002) :


OUTFIL REMOVECC,NODETAIL,                          
TRAILER1=('CNT1,+',COUNT=(M11,LENGTH=8),80:X)      


//**********************************************************************
//*FIND DIFFERENCE BETWEEN TWO COUNTS AND PRODUCE RC4 IF DIFFERENCE >10
//**********************************************************************                                                                            

//STEP086  EXEC PGM=SORT                                               
//SYSOUT   DD  SYSOUT=*                                                
//SORTIN   DD  DSN=&&T1,                                               
//             DISP=(MOD,DELETE)                                       
//SYMNAMES DD  DSN=&&T2,                                               
//             DISP=(MOD,DELETE)                                       
//OUT      DD  DSN=&&T3,                                               
//             DISP=(MOD,DELETE),                                      
//             UNIT=SYSDA,                                             
//             SPACE=(TRK,(1,1),RLSE),                                 
//             DCB=(RECFM=FB,LRECL=8)                                  
//*                                                                    
//SYSIN    DD  DSN=PAWPC.CICA.PARMLIB(CN233003),                       
//             DISP=SHR                                                

PAWPC.CICA.PARMLIB(CN233003) :

OPTION COPY                                                  
INREC BUILD=(7,8,ZD,SUB,CNT1,M11,LENGTH=8)                   
OUTFIL FNAMES=OUT,INCLUDE=(1,8,ZD,LT,10),NULLOFL=RC4         


//*----------------------------------------------------------------- 
//*         ABEND IF ANY OF THE PREVIOUS STEPS ARE UNSUCCESSFUL      
//*-----------------------------------------------------------------                                             

//ABEND02  EXEC  PGM=ABEND,COND=(0,EQ,STEP086),                      
//             PARM='0444'                                           
//*                                                                  

KSDS Syntax

Creating Base Cluster:

DELETE PCCPU.IOBSC.MASTER -                      
       CLUSTER -                                 
       PURGE                                     
IF MAXCC NE 0 THEN SET MAXCC=0                   
DEFINE CLUSTER -                                 
    (NAME(PCCPU.IOBSC.MASTER) -                  
     FSPC(40 40) -                               
     KEYS(20 0) -                                
     RECSZ(200 200) -                            
     INDEXED -                                   
     SPEED -                                     
     SHR(2 3)) -                                 
 DATA -                                          
    (NAME(PCCPU.IOBSC.MASTER.DATA) -             
     CISZ(4096) -                                
     CYL(200 80)) -                              
 INDEX -                                         
    (NAME(PCCPU.IOBSC.MASTER.INDEX) -            

     CISZ(512))  

Load the VSAM file with records.
REPRO INFILE(INFILE) OUTFILE(OUTFILE) REPLACE


Creating Alternate index/Path/Build index:


DEFINE AIX -                                               
       ( NAME(PCCPU.IOBSC.MASTER.AIX ) -                   
         RELATE(PCCPU.IOBSC.MASTER ) -                     
         NUNQK UPGRADE                 -                   
         RECORDSIZE(200,655213)       -                    
         KEYS(8 12)                   -                    
         SHAREOPTIONS(3 3)            -                    
         SPEED                        -                    
         FREESPACE(40,20)             -                    
  ) -                                                      
       DATA -                                              
       ( NAME(PCCPU.IOBSC.MASTER.AIX.DATA ) -              
         CISZ(4096) -                                      
         CYL(200 80)  -                                    
  ) -                                                      
       INDEX -                                             
       ( NAME(PCCPU.IOBSC.MASTER.AIX.INDEX ) -             
           CISZ(512) -                                     
     )                                                 
                                                       
 DEFINE PATH -                                         
        ( NAME(PCCPU.IOBSC.MASTER.PATH ) -             
          PATHENTRY(PCCPU.IOBSC.MASTER.AIX) -          
   )                                                   
                                                       
 BLDINDEX INDATASET(PCCPU.IOBSC.MASTER) -              
          OUTDATASET(PCCPU.IOBSC.MASTER.PATH) -        
          INTERNALSORT