FDREPORT Punch Examples


This section shows examples of generating JCL and control cards using FDREPORT data fields (RPTYPE=SELPCH). All examples in this section are found in the JCL library installed with FDR. The member names are EX5445x.

Generate ABR statements example

Use FDREPORT as a front-end filter for ABR, selecting data sets to be scratched by Superscratch. All data sets whose last index level begins with “LIST” or “TEMP” are scratched, if they were created more than one day ago. FDREPORT generates ABR control statements in the default format:

SELECT VOL=volser,DSN=dsname

and writes them to the SYSPUNCH temporary data set that is read by the following ABR step.

//REPORT   EXEC PGM=FDREPORT,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPUNCH DD DSN=&&ABRIN,UNIT=SYSALLDA,SPACE=(TRK,(2,1)),
//            DISP=(NEW,PASS),DCB=BLKSIZE=0
//SYSIN    DD *
 XSELECT  XDSN=(**.LIST*,**.TEMP*),CRDAYS>1
 PRINT    ENABLE=ONLINE,RPTYPE=SELPCH
/*
//SUPERSCR EXEC PGM=FDRABR,COND=(0,NE,REPORT)
//SYSPRINT DD SYSOUT=*
//SYSPRIN1 DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//TAPE1    DD DUMMY
//SYSIN    DD *
  DUMP     TYPE=SCR,ONLVOL,DSNENQ=USE,MAXCARDS=1000
/*
//         DD DSN=&&ABRIN,DISP=(OLD,DELETE)

Generate ABR restore SELECT statements example

Generate a data set containing SELECT statements specifying the data set name, volume, and ABR generation and cycle for each selected data set, using a punch mask. This might be used at a disaster recovery site to do data set restores of selected data sets from their most recent ABR backup.

//REPORT   EXEC PGM=FDREPORT,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPUNCH DD DSN=SELPCH.OUTPUT,UNIT=TAPE,DISP=(,CATLG),
//            DCB=BLKSIZE=0
//SYSIN    DD *
 XSELECT  XDSN=PAYROLL.**
 PUNCH    FDRLIB=MASK PRINT ENABLE=ONLINE,RPTYPE=SELPCH
//MASK     DD *
 SELECT   DSN=<NAME>,VOL=<VOL>,
          GEN=<ABRGEN>,CYCLE=<ABRCYCLE>,NVOL=PAY*
/*

The generated statements on SYSPUNCH look like:

SELECT   DSN=PAYROLL.HOURLY.MASTER,VOL=PAY001,
         GEN=0123,CYCLE=005,NVOL=PAY*

Generate IDCAMS delete example

Generate an IDCAMS job stream to delete selected clusters and data sets. The job is submitted directly to the JES internal reader for execution. The punch mask is read from a member of the FDRLIB library.

//REPORT   EXEC PGM=FDREPORT,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD SYSOUT=(A,INTRDR)
//SYSUDUMP DD SYSOUT=*
//FDRLIB   DD DSN=USER1.FDREPORT,DISP=SHR
//SYSIN    DD *
 XSELECT  XDSN=OLDFILES.**
 PUNCH    MASKNAME=IDCDEL,ECHO
 PRINT    DATATYPE=CATALOG,RPTYPE=SELPCH
/*

Member IDCDEL of library USER1.FDREPORT contains:

)PREFIX
//DELETE      JOB (ACCT),CLASS=M,MSGCLASS=X
//*           DELETE OLD FILES
//DELETE      EXEC PGM=IDCAMS
//SYSPRINT    DD SYSOUT=*
)ENDPREFIX
 DELETE      <NAME> PURGE
)SUFFIX
/*

The job submitted to the internal reader looks like:

//DELETE    JOB (ACCT),CLASS=M,MSGCLASS=X 
//*         DELETE OLD FILES
//DELETE    EXEC PGM=IDCAMS 
//SYSPRINT  DD SYSOUT=* 
  DELETE    OLDFILES.JCL.CNTL PURGE
  DELETE    OLDFILES.RECORDS.KSDS PURGE
/*

Generate a job per volume example

FDREPORT can be used to generate a job or job step for each selected volume. This can be used to submit FDR backups, ICKDSF jobs, or other volume-oriented utility steps. This example shows using FDREPORT to submit ICKDSF jobs to initialize newly added volumes with UCB addresses 3340-334F.

//REPORT   EXEC PGM=FDREPORT,REGION=0M
//SYSPRINT DD SYSOUT=*
//PCHSEL   DD SYSOUT=(A,INTRDR)    SUBMIT THE INIT JOBS TO JES
//SYSUDUMP DD SYSOUT=*
//SYSIN    DD *
 DEFAULT  IFSELECTERR=BYPASS,IFKEYWORDERR=BYPASS
 XSELECT  VLUNIT>=3340,VLUNIT<=334F,UCBSTATS=OFFLINE
 PUNCH    FDRLIB=MASKDD,ECHO
 PRINT    RPTYPE=SELPCH,DATATYPE=VOLDATA,PCHDDNAME=PCHSEL
/*
//MASKDD   DD DATA
//INIT<VLUNIT> JOB ...
//INIT     EXEC PGM=ICKDSF,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  INIT     UNITADDRESS(<VLUNIT>)   +
           NOVERIFY                +
           NOCHECK                 +
           NOMAP                   +
           PURGE                   +
           VALIDATE                +
           VOLID(SH<VLUNIT>)       +
           VTOC(0000,0001,14)
/*

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*