Guys,
I've got a really silly problem to which the answer is eluding me right now?
We backup all our volumes to 3590 cart using a job which does the following:
1) Generate the DFDSS input card to a temporary &&DUMPOPTS file
Card contains "DUMP FULL .... IDD(DASD) ODD(TAPE) ..." etc
2) Defines inline PROC using symbolics for volser, output dsn, tape label etc
i.e.
This works fine whilst only the first tape is used.
However, we are now dumping full copies of over 50 volumes, and the first tape is full, thus needing the second.
When this happens, the DFdss dump is contained on the backend of the first tape (001006) and the first part of the second tape (001007) as file sequence 43.
Now, when the next invocation of the proc gets started for sequence number 44, the system requests dismount of the second tape (001007) and re-requests the first in the series again (001006) as follows:
Code:
IEC502E RK 0600,001006,SL,BKUPSYS1,DUMPSYST,BACKUP.VXSMP02.FULL
*IEC501A M 0600,001007,SL,COMP,BKUPSYS1,DUMPSYST.XSMP02,BACKUP.VXSMP02.FULL
IEC705I TAPE ON 0600,001007,SL,COMP,BKUPSYS1,DUMPSYST.XSMP02,BACKUP.VXSMP02.FULL,MEDIA3
IEC205I TAPE,BKUPSYS1,DUMPSYST,FILESEQ=42, COMPLETE VOLUME LIST, 422
DSN=BACKUP.VXSMP02.FULL,VOLS=001006,001007,TOTALBLOCKS=4777
-BKUPSYS1 XSMP02 DUMPSYST 00 8291 1.43 .02 3.22 193K 0 0 0 0 0 43
IEF234E R 0600,001007,PVT,BKUPSYS1,DUMPSYST
*IEC501A M 0600,001006,SL,,BKUPSYS1,DUMPSYST.XSIMS1,BACKUP.XSIMS1.FULL
IEC140I TAPE ,001006 START OF DATA SET NOT ON VOLUME
Apologies for the formatting!
The intention is to allow simple editing of the INCLUDE member to add further volumes in the future as needed.
We only have manual drives, not a tape library
Any suggestions, folks? If only to say "you have been a very silly boy"?
(FDR makes it so much simpler!)
My intital thoughts are that on the REF statment you have SER=(&TVOL) and TVOL resolves to 001016 & 001017. So it will always mount the first tape won't it?
Why don't you refer to the previous DD name on the REF statement rather than an explicit volser?
David,
Thanks for your reply.
The reason I hadn't done this before was because of the inline PROC and trying to simplify the whole process (rather than have reams of JCL which would have possibly caught out an unwary editor when changed?)
I cam to the same conclusion after discussing with a colleague. So I changed the PROC as follows:
//DUMPIT PROC DVOL=WINVOL,
// TUNIT=600,
// TVOL='SER=(001006,001007)',
// TL=0,
// PRM=''
//* PRM='TYPRUN=NORUN' <= OPTIONAL - FOR CHECKING SYNTAX
//* PRM='' <= OPTIONAL - FOR RUNNING THE JOB
//DUMPS EXEC PGM=ADRDSSU,REGION=0M,PARM='&PRM'
//SYSPRINT DD SYSOUT=*
//DASD DD UNIT=3390,VOL=SER=&DVOL,DISP=SHR
//TAPE DD DSN=BACKUP.V&DVOL..FULL,LABEL=(&TL,SL),
// DISP=(NEW,KEEP),
// UNIT=(&TUNIT,,DEFER),
// VOL=(,RETAIN,&TVOL)
//SYSIN DD DSN=&&DUMPOPTS,DISP=(OLD,PASS)
// PEND
and the invocation as follows:
//WRES01 EXEC DUMPIT,DVOL=WRES01,TL=1,TVOL='SER=(001006,001007)'
//WCAT01 EXEC DUMPIT,DVOL=WCAT01,TL=2,TVOL='REF=*.WRES01.DUMPS.TAPE'
//WSMP01 EXEC DUMPIT,DVOL=WSMP01,TL=3,TVOL='REF=*.WCAT01.DUMPS.TAPE'
etc
This generates for the first dump sequence number
IEFC653I SUBSTITUTION JCL - DSN=BACKUP.VWRES01.FULL,LABEL=(1,SL),DISP=(NEW,KEEP),UNIT=(600,,DEFER),VOL=(,
RETAIN,SER=(001006,001007))
then
IEFC653I SUBSTITUTION JCL - DSN=BACKUP.VWCAT01.FULL,LABEL=(2,SL),DISP=(NEW,KEEP),UNIT=(600,,DEFER),VOL=(,
RETAIN,REF=*.WRES01.DUMPS.TAPE)
then
IEFC653I SUBSTITUTION JCL - DSN=BACKUP.VWSMP01.FULL,LABEL=(3,SL),DISP=(NEW,KEEP),UNIT=(600,,DEFER),VOL=(,
RETAIN,REF=*.WCAT01.DUMPS.TAPE)
But the job now does this - dumps to the first tape 001006 for sequence 1,
then demounts 001006 and mounts 001007 for following sequences
*IEC501A M 0600,001006,SL,COMP,BKUPSYS1,DUMPS.WRES01,BACKUP.VWRES01.FULL
IEC705I TAPE ON 0600,001006,SL,COMP,BKUPSYS1,DUMPS.WRES01,BACKUP.VWRES01.FULL,MEDIA3
IEC205I TAPE,BKUPSYS1,DUMPS,FILESEQ=1, COMPLETE VOLUME LIST, 100
DSN=BACKUP.VWRES01.FULL,VOLS=001006,TOTALBLOCKS=12751
-BKUPSYS1 WRES01 DUMPS 00 19126 3.92 .06 5.11 545K 0 0 0 0 0 2
IEF234E R 0600,001006,PVT,BKUPSYS1,DUMPS
*IEC501A M 0600,001007,SL,COMP,BKUPSYS1,DUMPS.WCAT01,BACKUP.VWCAT01.FULL
IEC151I A13-08,IFG0195B,BKUPSYS1,DUMPS,TAPE,0600,001007, 138
BACKUP.VWCAT01.FULL
-BKUPSYS1 WCAT01 DUMPS 08 59 .00 .00 2.22 335 0 0 0 0 0 3
IEC151I A13-08,IFG0195B,BKUPSYS1,DUMPS,TAPE,0600,001007, 140
BACKUP.VWSMP01.FULL
Eventually, the A13-08 messages (invalid sequence number) stops and it goes on to produce
-BKUPSYS1 WCKD08 DUMPS 08 64 .00 .00 .03 304 0 0 0 0 0 40
IEC205I TAPE,BKUPSYS1,DUMPS,FILESEQ=40, COMPLETE VOLUME LIST, 220
DSN=BACKUP.VWWRK06.FULL,VOLS=001007,TOTALBLOCKS=4213
-BKUPSYS1 WWRK06 DUMPS 00 7019 1.12 .02 1.45 148K 0 0 0 0 0 41
IEC205I TAPE,BKUPSYS1,DUMPS,FILESEQ=41, COMPLETE VOLUME LIST, 235
DSN=BACKUP.VWWRK07.FULL,VOLS=001007,TOTALBLOCKS=6377
until job ends OK
IEC205I TAPE,BKUPSYS1,DUMPS,FILESEQ=52, COMPLETE VOLUME LIST, 288
DSN=BACKUP.VWAPP06.FULL,VOLS=001007,TOTALBLOCKS=2253
-BKUPSYS1 WAPP06 DUMPS 00 4590 .21 .01 .33 25274 0 0 0 0 0 53
IEF234E K 0600,001007,PVT,BKUPSYS1
IEF471E FOLLOWING VOLUMES NO LONGER NEEDED BY BKUPSYS1 291
001006.
So it appears that dumps 40 thru 53 are on 001007, dump 1 got taken to 001006, and the intervening dumps 2 thru 39 failed.
Add Volume Count on your tape DD, e.g. VOL=(,,,255) gives you the maximum number of volumes a tape file can extend to. The default value for volume count used to 5, might be a bit bigger now.
If you're not just mounting scratch tapes via a Tape Management Subsystem then you'd have to include more hardcoded volsers in your &TVOL symbolic. This seems a very primitive way of doing things these days though. It means you'll always potentially have to be managing this JCL manually espcially as DASD volume capacities increase. Do you not have a TMS like CA1, TLMS or suchlike?
Also curious why you just have DISP=(,KEEP) rather than (,CATLG) and have no EXPDT or RETPD values specified.