IBM Redbooks Publication SG24-8529-00: What is New in DFSMSrmm This file contains: JCL examples for Chapter 15: DFSORT JCL for use with DFSMSrmm ------------------------------------------------------------------------ Example of DFSORT SYMBOLS JCL ------------------------------------------------------------------------ //SYMBOLS EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYMNOUT DD SYSOUT=* //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGS42SY) // DD DISP=SHR,DSN=SYS1.MACLIB(EDGSRCSY) //SORTIN DD * //SORTOUT DD SYSOUT=* //SYSIN DD * OPTION COPY /* ------------------------------------------------------------------------ Use case 1: Sample JCL for Tape Volume Usage Report ------------------------------------------------------------------------ //********************************************************************** //* Specify input non-extended extract data set name here //********************************************************************** // SET EXTRACT='your.non-extended-extract.dsn' //********************************************************************** //* Specify SPACE parms for temp data set large enough to //* hold records for all non-scratch tapes in report //********************************************************************** // SET TEMPPRI=x // SET TEMPSEC=y // SET TEMPSIZE='TRK | CYL' //********************************************************************** //USECASE1 EXEC PGM=ICETOOL //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGEXTSY) // DD * **** Reformatted type 'V' records FMT-RDW,01,04,BI FMT-RVVOLSER,*,06,CH FMT-RVDSNAM1,*,44,CH FMT-RVCRJOB,*,08,CH FMT-RVASDATE,*,10,CH FMT-RVEXPDT,*,10,CH FMT-RVEXPDTO,*,10,CH FMT-RVSTATUS,*,08,CH FMT-RVRETDAT,*,10,CH FMT-RVTUSE,*,16,FS //TOOLMSG DD SYSOUT=* ICETOOL MESSAGES //DFSMSG DD SYSOUT=* DFSORT MESSAGES //SYMNOUT DD SYSOUT=* DFSORT Symbols with offsets //EXTRACT DD DISP=SHR,DSN=&EXTRACT //GETVOLS DD DSN=&&GV,DISP=(,PASS), // SPACE=(&TEMPSIZE,(&TEMPPRI,&TEMPSEC),RLSE) //VOLRPT DD SYSOUT=* //TOOLIN DD * CONTROL STATEMENTS COPY FROM(EXTRACT) TO(GETVOLS) USING(VOLS) DISPLAY FROM(GETVOLS) LIST(VOLRPT) - TITLE('DFSMSrmm - Tape Usage Example Report') - DATE TIME PAGE - BLANK - HEADER('VOLSER') ON(FMT-RVVOLSER) - HEADER('DSNAME') ON(FMT-RVDSNAM1) - HEADER('JOBNAME') ON(FMT-RVCRJOB) - HEADER('AS/CR DATE') ON(FMT-RVASDATE) - HEADER('EXPDT') ON(FMT-RVEXPDT) - HEADER('JCL EXPDT') ON(FMT-RVEXPDTO) - HEADER('STATUS') ON(FMT-RVSTATUS) - HEADER('RET DATE') ON(FMT-RVRETDAT) - HEADER('USAGE') ON(FMT-RVTUSE,/MB,E'9999999999.999999') - TOTAL('TOTAL TAPE USAGE IN GB: ') /* //VOLSCNTL DD * OPTION VLSCMP,NOCHALT,LOCALE=NONE INCLUDE COND=(EXTRACT_TYPID,EQ,RVTYPEID,AND, # TYPE 'V' RVSTATUS,NE,C'SCRATCH') # Not scratch stat OUTREC BUILD=(EXTRACT_RDW, # FMT-RDW RVVOLSER, # FMT-RVVOLSER RVDSNAM1, # FMT-RVDSNAM1 RVCRJOB, # FMT-RVCRJOB RVASDATE, # FMT-RVASDATE RVEXPDT, # FMT-RVEXPDT RVEXPDTO, # FMT-RVEXPDTO RVSTATUS, # FMT-RVSTATUS RVRETDAT, # FMT-RVRETDAT RVTUSE, # FMT-RVTUSE MUL,+1000000,FS,LENGTH=16) # +6 DECIMAL PLACES /* ------------------------------------------------------------------------ Use case 2: Sample JCL to rebuild a data set record ------------------------------------------------------------------------ //********************************************************************** //* Specify input extended extract data set and output //* data set that contains generated RMM ADDDATASET commands //********************************************************************** // SET EXTRACT='your.extended-extract.dsn' // SET OUTPUT='your.output.rmmad.clist' //********************************************************************** //* Specify space parms for output data set with generated //* RMM ADDDATASET CLIST //********************************************************************** // SET OUTPRI=x // SET OUTSEC=y // SET OUTSIZE='TRK | CYL' //********************************************************************** //USECASE2 EXEC PGM=SORT //SORTIN DD DISP=SHR,DSN=&EXTRACT //SORTOUT DD DSN=&OUTPUT, // DISP=(,CATLG,DELETE), // UNIT=SYSDA, // SPACE=(&OUTSIZE,(&OUTPRI,&OUTSEC),RLSE) //SYSOUT DD SYSOUT=* //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGEXTSY) SYMBOLS FROM EXTRACT //SYMNOUT DD SYSOUT=* DFSORT SYMBOLS WITH OFFSETS //SYSIN DD * INCLUDE COND=(EXTRACT_TYPID,EQ,RXTYPEID,AND, # Data records RXVOLSER,EQ,C'B01138') # volser is B01138 SORT FIELDS=(RXDSNAME,A) # Dataset name OUTFIL VTOF, # Fixed len output BUILD=(C' RMM AD ''',RXDSNAME, # RMM AD command C'''',C' -',/, C' VOLUME(',RXVOLSER, C') FILESEQ(',RXDDSNSEQ, C')',80:X) /* ------------------------------------------------------------------------ Use case 3: JCL to remove management value from data set records ------------------------------------------------------------------------ //********************************************************************** //* Specify input extended extract data set and output //* data set that contains generated RMM ADDDATASET commands //********************************************************************** // SET EXTRACT='your.extended-extract.dsn' // SET OUTPUT='your.output.rmmad.clist' //********************************************************************** //* Specify space parms for output data set with generated //* RMM ADDDATASET CLIST //********************************************************************** // SET OUTPRI=x // SET OUTSEC=y // SET OUTSIZE='TRK | CYL' //********************************************************************** //USECASE3 EXEC PGM=SORT //SORTIN DD DISP=SHR,DSN=&EXTRACT //SORTOUT DD DSN=&OUTPUT, // DISP=(,CATLG,DELETE), // UNIT=SYSDA,SPACE=(&OUTSIZE,(&OUTPRI,&OUTSEC),RLSE) //SYSOUT DD SYSOUT=* //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGEXTSY) SYMBOLS FROM EXTRACT //SYMNOUT DD SYSOUT=* DFSORT SYMBOLS WITH OFFSETS //SYSIN DD * OPTION VLSCMP INCLUDE COND=(EXTRACT_TYPID,EQ,RXTYPEID,AND, # Data records RXDVRSVAL,EQ,C'VRSMV') # VRSVAL SORT FIELDS=(RXDSNAME,A) # Dataset name OUTFIL VTOF, # Fixed len output BUILD=(C' RMM AD ''',RXDSNAME, # RMM AD command C''' -',/, C' VOLUME(',RXVOLSER, C') FILESEQ(',RXDDSNSEQ, C') NOMANAGEMENTVALUE', 80:X) /* ------------------------------------------------------------------------ Use case 4: DFSORT Joinkeys JCL ------------------------------------------------------------------------ //********************************************************************** //* Specify input non-extended extract data set, which is //* the edgutil verify job log, the output data set //* with generated RMM CHANGEVOLUME CLIST, and the data set //* with matching volume records from extract data set //********************************************************************** // SET EXTRACT='your.non-extended-extract.dsn' // SET JOBLOG='your.input.edgutil.verify.msgs' // SET OUTPUT='your.output.rmmcv.clist' // SET MATCH='impacted.volume.extract.recs.for.support' //********************************************************************** //* Specify space parms for output and match data sets //********************************************************************** // SET OUTPRI=x1 // SET OUTSEC=y1 // SET OUTSIZE='TRK | CYL' // SET MATCHPRI=x2 // SET MATCHSEC=y2 // SET MATCHSIZ='TRK | CYL' //********************************************************************** //USECASE4 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGEXTSY) SYMBOLS FROM EXTRACT // DD * **** EDGUTIL VERIFY OUTPUT SYMBOLS MSG-ID,06,08,CH MSG-VOL,22,6 **** OTHER SYMBOLS VOL-OFFSET-LEN,9,6 REC-START-END,1,1110 //SYMNOUT DD SYSOUT=* DFSORT SYMBOLS WITH OFFSETS //IN1 DD DISP=SHR,DSN=&EXTRACT //IN2 DD DISP=SHR,DSN=&JOBLOG //JNF1CNTL DD * INCLUDE COND=(EXTRACT_TYPID,EQ,RVTYPEID) //JNF2CNTL DD * INCLUDE COND=(MSG-ID,EQ,C'EDG6823I') //RMMCLIST DD DSN=&OUTPUT, // UNIT=SYSDA,DISP=(,CATLG,DELETE), // SPACE=(&OUTSIZE,(&OUTPRI,&OUTSEC)) //VOLRECS DD DSN=&MATCH, // UNIT=SYSDA,DISP=(,CATLG,DELETE), // SPACE=(&MATCHSIZ,(&MATCHPRI,&MATCHSEC)) //SYSIN DD * JOINKEYS F1=IN1,FIELDS=(RVVOLSER,A),TYPE=V # Volser in extract JOINKEYS F2=IN2,FIELDS=(MSG-VOL,A),TYPE=V # Volser in EDG6823I msg REFORMAT FIELDS=(F1:REC-START-END) # Keep EDGRVEXT recs OPTION COPY # for vols with msg OUTFIL FNAMES=RMMCLIST,VTOF, # Fixed len output BUILD=(C'RMM CV ',VOL-OFFSET-LEN, # RMM CV command C' STATUS(MASTER) RETPD(365)', 80:X) OUTFIL FNAMES=VOLRECS, # Write EDGRVEXT recs OUTREC=(REC-START-END) # for vols with msg /* ------------------------------------------------------------------------ Execute RMM TSO commands ------------------------------------------------------------------------ //* SUBMIT TSO RMM SUBCOMMANDS BUILT IN PREVIOUS JOB STEP *// //RMMCMD EXEC PGM=IKJEFT01 //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=*,LRECL=100 //SYSTSIN DD DISP=SHR,DSN=rmm.clist /* -------------------------------------------------------------------------------------------------------- Use case 5: Generate commands for creating single and multi volume datasets -------------------------------------------------------------------------------------------------------- //********************************************************************** //* PURPOSE : GENERATE COMMANDS FOR CREATING SINGLE AND MULTI VOLUME * //* DATASETS. * //* * //* INPUT: * //* -> SPECIFY EXTENDED EXTRACT DATA SET IN "EXTRACT" JCL SYMBOL, * //* WHICH IS USED IN EXTINP DD * //* -> SPECIFY MANAGEMENT VALUE THAT IMPACTED TAPES SHOULD HAVE IN * //* "MV" JCL SYMBOL * //* -> SPECIFY DEVICE TYPE THAT IMPACTED TAPES SHOULD HAVE IN * //* -> "DEVTYPE" JCL SYMBOL * //* -> SPECIFY SPACE PARMS FOR TEMP DATA SETS, LARGE ENOUGH TO * //* APPROXIMATELY HOLD THE EXTENDED EXTRACT DATA SET RECORDS * //* FOR IMPACTED TAPES * //* OUTPUT: * //* -> CMDSV DD HAS GENERATED DEFINE CMDS FOR SINGLE VOL DATA SETS * //* -> CMDSM DD HAS GENERATED DEFINE CMDS FOR MULTIVOL DATA SETS * //* NOTE: OUTPUT IS BEING WRITTEN TO SPOOL IN THIS EXAMPLE * //********************************************************************** // SET EXTRACT=YOUR.EXTENDED.EXTRACT.DSN // SET MV='CATALOG' // SET DEVTYPE='3490' # DO NOT USE ESOTERIC & INSTEAD USE DEVICE NUMBER // SET MVDSNPRI=x # IN CYLINDERS // SET MVDSNSEC=y # IN CYLINDERS // SET RPRTPRI=x # IN CYLINDERS // SET RPRTSEC=y # IN CYLINDERS /* //USECASE5 EXEC PGM=ICETOOL,PARM='JP0"&MV",JP1"&DEVTYPE"' //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //SYMNOUT DD SYSOUT=* //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGEXTSY) SYMBOLS FROM EXTRACT // DD * ** TEMPORARY FIELD DEFINITIONS ** TEMP-RDW,01,04,BI TEMP-DSN-FIELD,*,44,CH TEMP-VOLSEQ-FIELD,*,04,CH TEMP-VOL-FIELD,*,06,CH TEMP-FSEQ-FIELD,*,05,CH GRPID-DEFINE-CMDS,81,08,ZD GRP-SEQ-INDICATOR,*,05,CH GRP-SEQ,=,04,ZD GRP-SEQ-ID,*,01,CH NEW-VOLSEQ-FIELD,*,04,CH TEMP-REC-INDICATOR,*,04,CH SKIP,1 TEMP-REC,*,80,CH TEMP-REC-TYPEA,=,64,CH TEMP-REC-TYPEB,*,04,CH TEMP-REC-TYPEC,*,12,CH SKIP,1 NEW-KEY,*,09,CH SKIP,1 NEW-VOL,*,06,CH //EXTINP DD DISP=SHR,DSN=&EXTRACT //MVDSN DD DSN=&&T1,DISP=(,PASS),SPACE=(CYL,(&MVDSNPRI,&MVDSNSEC),RLSE) //CMDSV DD SYSOUT=* //CMDSM DD SYSOUT=* //TOOLIN DD * SELECT FROM(EXTINP) TO(MVDSN) ON(TEMP-DSN-FIELD) ALLDUPS - DISCARD(CMDSV) USING(CTL0) SORT FROM(MVDSN) TO(CMDSM) USING(CTL1) /* //CTL0CNTL DD * OPTION VLSCMP *--------------------------------------------------------------------* * INCLUDE ONLY THE RECENTLY RECOVERED TAPE VOLUMES * *--------------------------------------------------------------------* INCLUDE COND=(RXTYPE,EQ,C'X',AND, RXVSTATUS,NE,C'SCRATCH',AND, # VOL STATUS!=SCRATCH RXDVRSVAL,EQ,JP0,AND, # MV==YOUR_MV RXDVRSNAM,NE,JP0,AND, # VRS!=MV RXDCAT,NE,C'Y') # CATALOG != Y *--------------------------------------------------------------------* * BUILD TEMP RECORDS WITH FIELDS NEEDED FOR DEFINE CMDS * *--------------------------------------------------------------------* INREC BUILD=(RXRDW, # RDW RXDSNAME, # DATASET NAME RXDVOLSEQ, # VOL SEQ RXVOLSER, # VOLSER RXDDSNSEQ) # DS SEQ *--------------------------------------------------------------------* * SORT ON DSNAME AND VOLUME SEQUENCE NUMBER IN TEMP RECORDS * *--------------------------------------------------------------------* SORT FIELDS=(TEMP-DSN-FIELD,A, # DATASET NAME ASC TEMP-VOLSEQ-FIELD,D) # VOL SEQ DESC *--------------------------------------------------------------------* * BUILDS GROUPING OF VARIOUS SECTIONS FOR DEFINE CMDS FOR MULTIVOL DS* *--------------------------------------------------------------------* OUTFIL FNAMES=MVDSN, # MULTIVOL OUTPUT *--------------------------------------------------------------------* * GENERATE GROUPID WITH THE TEMP RECORD DSNAME FIELD AS THE KEY * *--------------------------------------------------------------------* IFTHEN=(WHEN=GROUP,KEYBEGIN=(TEMP-DSN-FIELD), # GRPID FOR DSN PUSH=(GRPID-DEFINE-CMDS:ID=8, GRP-SEQ:SEQ=4)), *--------------------------------------------------------------------* * IF GENERATED GROUPID IS GREATER THAN 0, THEN REFORMAT TEMP RECORD * *--------------------------------------------------------------------* IFTHEN=(WHEN=(GRPID-DEFINE-CMDS,GT,0), BUILD=(TEMP-RDW,TEMP-DSN-FIELD, # DSN RECORDS GRPID-DEFINE-CMDS:GRPID-DEFINE-CMDS, GRP-SEQ,C'A',4X,/, TEMP-RDW,TEMP-FSEQ-FIELD:TEMP-FSEQ-FIELD, GRPID-DEFINE-CMDS:GRPID-DEFINE-CMDS, # FILESEQ RECORD GRP-SEQ, C'B',TEMP-VOLSEQ-FIELD,/, TEMP-RDW,TEMP-VOL-FIELD:TEMP-VOL-FIELD, # VOLSER RECORDS GRPID-DEFINE-CMDS:GRPID-DEFINE-CMDS, GRP-SEQ, C'C',TEMP-VOLSEQ-FIELD)) *--------------------------------------------------------------------* * BUILD DEFINE CMDS FOR SINGLE VOLUME DATA SETS WITH NEEDED FIELDS * *--------------------------------------------------------------------* OUTFIL FNAMES=CMDSV,VTOF, # SINGLE VOL CMDS BUILD=(01:C' DEFINE NONVSAM', 66:C'-', /, *--------------------------------------------------------------------* * LEAD + DSN + TRAIL (7+44+2) = 53 BYTE FIELD FOR JUSTIFY SHFT LEFT * *--------------------------------------------------------------------* 01:TEMP-DSN-FIELD,JFY=(SHIFT=LEFT, LEAD=C' NAME(''', TRAIL=C''')', LENGTH=53), 66:C'-', /, 01:C' DEVICETYPES(',JP1,C') ', 66:C'-', /, *--------------------------------------------------------------------* * LEAD + FILESEQ + TRAIL(7+4+2) = 12 BYTE FIELD FOR JUSTIFY SHFT LEFT* *--------------------------------------------------------------------* 01:TEMP-FSEQ-FIELD,JFY=(SHIFT=LEFT, LEAD=C' FSEQN(', TRAIL=C')', LENGTH=12), 66:C'-', /, *--------------------------------------------------------------------* * LEAD + VOLSER + TRAIL (9+6+2) = 17 BYTE FIELD FOR JUSTIFY SHFT LEFT* *--------------------------------------------------------------------* 01:TEMP-VOL-FIELD,JFY=(SHIFT=LEFT, LEAD=C' VOLUMES(', TRAIL=C'))', LENGTH=17), 80:X) /* //CTL1CNTL DD * OPTION VLSHRT *--------------------------------------------------------------------* * OMIT RECORDS WITH DUP DSNAME & GROUP ID (1ST PART OF DEFINE CMD) * *--------------------------------------------------------------------* OMIT COND=(GRP-SEQ,GT,1,AND, # OMIT DUP DSN GRP-SEQ-ID,EQ,C'A') # RECORDS *--------------------------------------------------------------------* * OVERLAY INDICATOR W/ SYNTACTICALLY CORRECT ENDING TO CMD SECTION * *--------------------------------------------------------------------* INREC OVERLAY=(TEMP-REC-INDICATOR:GRP-SEQ-INDICATOR, CHANGE=(4,C'0001B',C' ) -', # CONTINUE CHAR C'0001C',C' )) '), # ENDING CHAR NOMATCH=(C' - ')) # CONTINUE CHAR *--------------------------------------------------------------------* * SORT ON GROUPID, THEN SEQ NUM FOR EACH REC IN GROUP, AND VOLSEQ * *--------------------------------------------------------------------* SORT FIELDS=(GRPID-DEFINE-CMDS,A, # GROUPID ASC GRP-SEQ-ID,A, # RECID ASC NEW-VOLSEQ-FIELD,A) # VOLSEQ ASC *--------------------------------------------------------------------* * CREATE A NEW GROUPID AND SEQ NUM FOR EACH REC IN GROUP AND VOLSEQ * *--------------------------------------------------------------------* OUTREC IFTHEN=(WHEN=INIT, OVERLAY=(NEW-KEY:GRPID-DEFINE-CMDS,GRP-SEQ-ID)), IFTHEN=(WHEN=GROUP,KEYBEGIN=(NEW-KEY), PUSH=(GRP-SEQ:SEQ=4)), *--------------------------------------------------------------------* * BUILD DSNAME PART OF DEFINE CMD WHEN INDICATOR == 0001A * * LEAD + DSN + TRAIL (7+44+2) = 53 BYTE FIELD FOR JUSTIFY SHFT LEFT * *--------------------------------------------------------------------* IFTHEN=(WHEN=(GRP-SEQ-INDICATOR,EQ,C'0001A'), OVERLAY=(TEMP-REC-TYPEA:TEMP-DSN-FIELD, JFY=(SHIFT=LEFT, LEAD=C' NAME(''', TRAIL=C''')', LENGTH=53), TEMP-REC-TYPEB:TEMP-REC-INDICATOR, TEMP-REC-TYPEC:X)), *--------------------------------------------------------------------* * BUILD 1ST FILESEQ PART OF DEFINE CMD WHEN INDICATOR == 0001B * * LEAD + FILESEQ (7+4) = 11 BYTE FIELD FOR JUSTIFY SHFT LEFT * *--------------------------------------------------------------------* IFTHEN=(WHEN=(GRP-SEQ-INDICATOR,EQ,C'0001B'), OVERLAY=(TEMP-REC-TYPEA:TEMP-FSEQ-FIELD, JFY=(SHIFT=LEFT, LEAD=C' FSEQN(', LENGTH=11), TEMP-REC-TYPEB:TEMP-REC-INDICATOR, TEMP-REC-TYPEC:X)), *--------------------------------------------------------------------* * REMAINING FILESEQ RECORDS WHEN GROUP SEQ > 1 & ID == B * * LEAD + FILESEQ (7+4) = 11 BYTE FIELD FOR JUSTIFY SHFT LEFT * *--------------------------------------------------------------------* IFTHEN=(WHEN=(GRP-SEQ,GT,1,AND,GRP-SEQ-ID,EQ,C'B'), OVERLAY=(TEMP-REC-TYPEA:TEMP-FSEQ-FIELD, JFY=(SHIFT=LEFT, LEAD=C' ', LENGTH=11), TEMP-REC-TYPEB:TEMP-REC-INDICATOR, TEMP-REC-TYPEC:X)), *--------------------------------------------------------------------* * BUILD 1ST VOLUME PART OF DEFINE CMD WHEN INDICATOR == 0001C * * LEAD + VOLSER (9+6) = 15 BYTE FIELD FOR JUSTIFY SHFT LEFT * *--------------------------------------------------------------------* IFTHEN=(WHEN=(GRP-SEQ-INDICATOR,EQ,C'0001C'), OVERLAY=(TEMP-REC-TYPEA:TEMP-VOL-FIELD, JFY=(SHIFT=LEFT, LEAD=C' VOLUMES(', LENGTH=15), TEMP-REC-TYPEB:TEMP-REC-INDICATOR, TEMP-REC-TYPEC:X)), *--------------------------------------------------------------------* * REMAINING VOLUME RECORDS WHEN GROUP SEQ > 1 & ID == C * * LEAD + VOLSER & CONT CH (9+8) = 17 BYTE FIELD FOR JUSTIFY SHFT LEFT* *--------------------------------------------------------------------* IFTHEN=(WHEN=(GRP-SEQ,GT,1,AND,GRP-SEQ-ID,EQ,C'C'), OVERLAY=(TEMP-REC-TYPEA:TEMP-VOL-FIELD, JFY=(SHIFT=LEFT, LEAD=C' ', LENGTH=17), TEMP-REC-TYPEB:TEMP-REC-INDICATOR, TEMP-REC-TYPEC:X)) *--------------------------------------------------------------------* * HEADER3 BUILDS 1ST PART OF DEFINE CMD FOR EACH SECTION/GROUP * *--------------------------------------------------------------------* OUTFIL REMOVECC,VTOF, BUILD=(TEMP-REC), SECTIONS=(GRPID-DEFINE-CMDS, HEADER3=(' DEFINE NONVSAM',66:'-',/, ' (DEVICETYPES(',JP1,C') ',66:'-'), TRAILER3=(/)) /* //********************************************************************** //* PURPOSE : GENERATE REPORT OF TAPES TO BE CATALOUGED. * //* * //* INPUT: * //* -> EXTENDED EXTRACT DATA SET SPECIFIED EARLIER IN "EXTRACT" JCL* //* SYMBOL, WHICH IS USED IN INPUT DD * //* -> MANAGEMENT VALUE THAT IMPACTED TAPES SHOULD HAVE, WHICH WAS * //* SPECIFIED EARLIER IN "MV" JCL SYMBOL * //* OUTPUT: * //* -> REPORT DD HAS INFO ON LIST OF TAPE DATA SETS THAT HAVE * //* DEFINE CMDS GENERATED IN PREVIOUS JOB STEP (USECASE5) * //* NOTE: OUTPUT IS BEING WRITTEN TO SPOOL IN THIS EXAMPLE * //********************************************************************** //REPORT EXEC PGM=ICETOOL,PARM='JP0"&MV"' //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //INPUT DD DISP=SHR,DSN=&EXTRACT //TEMPRPRT DD DSN=&&RPRT,DISP=(,PASS),SPACE=(CYL,(&RPRTPRI,&RPRTSEC),RLSE) //SYMNAMES DD DISP=SHR,DSN=SYS1.MACLIB(EDGEXTSY) SYMBOLS FROM EXTRACT //*------------------------* //REPORT DD SYSOUT=* //*------------------------* //TOOLIN DD * *--------------------------------------------------------------------* * TOOLIN STATEMENTS GENERATES REPORT OF TAPES TO BE CATALOGED * *--------------------------------------------------------------------* *--------------------------------------------------------------------* * GENERATE A REPORT OF TAPES THAT NEED TO BE CATALOGED * *--------------------------------------------------------------------* COPY FROM(INPUT) TO(TEMPRPRT) USING(RPRT) DISPLAY FROM(TEMPRPRT) LIST(REPORT) - TITLE('DFSMSRMM - TAPE DATA SETS BEING RECATALOGED') - DATE TIME PAGE - BLANK - HEADER('DSNAME') ON(RXDSNAME) - HEADER('VOLUME') ON(RXVOLSER) - HEADER('VSEQ') ON(RXDVOLSEQ,CH) - HEADER('FSEQ') ON(RXDDSNSEQ) - HEADER('VOL','CNT') ON(RXVOLCNT) - HEADER('PREV','VOLUME') ON(RXVPVOL) - HEADER('NEXT','VOLUME') ON(RXVNVOL) - HEADER('CAT','STAT') ON(RXDCAT) /* //RPRTCNTL DD * OPTION VLSCMP INCLUDE COND=(RXTYPE,EQ,C'X',AND, RXVSTATUS,NE,C'SCRATCH',AND, # VOL STATUS!=SCRATCH RXDVRSVAL,EQ,JP0,AND, # MV==YOUR_MV RXDVRSNAM,NE,JP0,AND, # VRS!=MV RXDCAT,NE,C'Y') # CATALOG != Y SORT FIELDS=(RXDSNAME,A, RXDVOLSEQ,A) /* ------------------------------------------------------------------------ End of file -----------------------------------