Description:
When newer tape devices are added which are not compatible with older devices you need to deal with the following two aspects :
Solution:
Using DYNPRINT, you can easily generate the input cards for a // EXEC DYNCAT which will change the density of the datasets, or generate the DELETE statements for the tapes which are in SCRATCH status. We will show you here JCL and DYNPRINT statements to generate these commands.
// JOB DYNPRINT // DLBL SORTIN1,'===SORTIN1' // DLBL SORTWK1,'===SORTWK1' // DLBL SORTOUT,'===SORTOUT' // DLBL EARLOBJ,'===EARLOBJ' // DLBL WORK1,'===WORK1' // DLBL SYSPRIN,'===SYSPRIN' /* DLBL SYSEARL,'===SYSERAL' // DLBL IJSYS05,'===SYS005' // DLBL IJSYS06,'===SYS006' /* OPTION CATAL // EXEC DYNPRINT,SIZE=800K ACCESS CATALOG COMPILE CUSTOM05,REQ=SD /* OPTION LIST OFF ! SUPPRESS COMPILATION LISTING OPTION PAGE=60 ! NO SUPPRESS PAGE BREAKE OPTION PRINTER=132 ! OPTION SAVE=CUS05 ! USER 'EVRAZ INC ' OPTION EXCLUDE ! NO SUPPRESS PAGE HEADING ! OPTION ERRLIM=5 ! THIS REPORT IS A USER REPORT, NOT SUPPORTED BY CA !---------------------------------------------------------------------- ! ! SAMPLE DYNPRINT CUSTOM REPORT ! !---------------------------------------------------------------------- CAICATL: FILE DYNREAD 300 RECORD = 3234 DEFINE INFOREC 1-3234 X DEFINE CATINFO (X 3234) = 'DYNINFO 7.1' DEFINE YDPINFO (X 102) = 'DYNPARM' COPY DYNINFOE USING INFOREC COPY YDPARMSE USING YDPINFO DEFINE PREF (X 5) = 'ALT '''
DEFINE SUFF (X 10) = ''' DEN=08E ' ! CAN BE CHANGED TO ANOTHER DENSITY DEFINE MF (X 6) = ' ' DEFINE DATASETN (X 44 ) = ' ' DEFINE QUOTE (X 1) = '''' SET DYNRQLEN = DYNINFLN GET CAICATL GOTO EOJ DYNRTCOD > 28 GOTO EOJ DYNRTCOD = 20 IF DYNRTCOD = 16 THEN SET DATASETN = 'PASSWORD PROTECTED DATASET' ELSE SET DATASETN = DYNDSN ENDIF ! CHECK FOR AMF DATASETS IF DYNAUTOS > 0 THEN SET MF = 'MF=NEW' ELSE SET MF = ' ' ENDIF GOTO START DYNDEVCL = 'DISK' GOTO START DYNAUTOS = 255 REPORT EXCLUDE PRINT @ 1 PREF @ 6 DATASETN @ 50 SUFF @ 61 MF END /* /&
The output of this job will have the form
ALT 'datasetname' DEN=08E
The following DYNPRINT will generate the DELETE statement to delete all the tapes that are in scratch status and density 08E:
// JOB DYNPRINT * DELETE ALL THE VOLUMES WITH DENSITY 08E AND STATUS SCRATCH // DLBL SORTIN1,'===SORTIN1' // DLBL SORTWK1,'===SORTWK1' // DLBL SORTOUT,'===SORTOUT' // DLBL EARLOBJ,'===EARLOBJ' // DLBL WORK1,'===WORK1' // DLBL SYSPRIN,'===SYSPRIN' /* DLBL SYSEARL,'===SYSERAL' // DLBL IJSYS05,'===SYS005' // DLBL IJSYS06,'===SYS006' // OPTION CATAL // EXEC DYNPRINT,SIZE=800K COMPILE CUSTOM05,REQ=SV /* OPTION LIST ON ! SUPPRESS COMPILATION LISTING OPTION PAGE=60 ! NO SUPPRESS PAGE BREAKE OPTION PRINTER=132 ! OPTION SAVE=CUS05 ! OPTION EXCLUDE ! NO SUPPRESS PAGE HEADING ! OPTION ERRLIM=5 ! THIS REPORT IS A USER REPORT, NOT SUPPORTED BY CA !----------------------------------------------------------------------! ! ! ! SAMPLE DYNPRINT CUSTOM REPORT ! ! ! !----------------------------------------------------------------------! CAICATL: FILE DYNREAD 300 RECORD = 3234 DEFINE INFOREC 1-3234 X DEFINE CATINFO (X 3234) = 'DYNINFO 7.1' DEFINE YDPINFO (X 102) = 'DYNPARM' COPY DYNINFOE USING INFOREC COPY YDPARMSE USING YDPINFO DEFINE DEL1 (X 8) = 'DEL VOL=' SET DYNRQLEN = DYNINFLN SET DYNRQCD = 'SV' GET CAICATL GOTO EOJ DYNRTCOD > 26 ! ERROR GOTO EOJ DYNRTCOD = 24 ! END OF CATALOG GOTO START DYVMODE2 NOT = '08E ' ! NOT 3490E GOTO START DYNRTCOD NOT = 6 ! SCRATCH TAPE REPORT EXCLUDE SELECT DYGCDVCL NOT = 'DISK ' SELECT DYVVOL NOT = ' ' CONTROL DYVVOL PRINT @ 1 DEL1 @ 9 DYVVOL END * $$ LST CLASS=V,DEST=(*,DEVDA01) /* /&
output generated:
DEL VOL=A00009 DEL VOL=DDV021 DEL VOL=DDV026 DEL VOL=DDV027
In the sample, there are 2 special characters that can have a different hexadecimal representation depending on the code page used:
! = x'5A' @ = x'7C'