Hi,
We have many jobs that look like this:
//STEP230 EXEC PGM=ICETOOL
//DFSMSG DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//TOOLIN DD *
COPY FROM(INP0101) TO(OUT0101)
COPY FROM(INP0201) TO(OUT0201)
//INP0101 DD DISP=SHR,DSN=DSNI1
//INP0201 DD DISP=SHR,DSN=DSNi2
//*
//OUT0101 DD DSN=DSNO1,
// DISP=(,CATLG,DELETE),UNIT=TAPEC
//OUT0201 DD DSN=DSNO2,
// DISP=(,CATLG,DELETE),UNIT=TAPEC,LABEL=2,
// VOL=(,,,99,REF=*.OUT0101)
The actual jobs copy more than two datasets.
Originally, TAPEC was on tape, so the output datasets were stacked.
Many years ago, we converted the output to DASD.
TAPEC is now a storage group.
To do this we coded a DATACLAS ACS routine, that assigns a DATACLAS to these
output files and adds SPACE information.
This worked great in z/OS v2.4 (and probably z/OS v2.2 before that).
We've now upgraded to z/OS v3.1 and something broke.
The first output dataset works fine, but the second and subsequent output
datasets break with the message:
IGD17045I SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET DSNO2.
The application people say that they have 130 of these jobs, and they are not
keen on changing them.
I started playing with the DATACLAS ACS routine and found that the VOL= Clause
is causing the problem.
If I remove it from the job, everything works fine.
When I added some WRITE statements to the DATACLAS ACS routine, I found that
the statement that actually assign the DATACLAS to these output datasets does
not get executed.
My DATACLAS ACS ROUTINE is:
PROC DATACLAS
FILTLIST DB2D_FILES INCLUDE(DB2D.**)
FILTLIST DB2P_FILES INCLUDE(DB2P.**)
FILTLIST DB2P_ARCHLOG2 INCLUDE(DB2P.ARCHLOG2.**)
FILTLIST TMP_FILES INCLUDE(KVPO.TMPCTR.**)
IF &DSN = &TMP_FILES THEN
SET &DATACLAS = 'EXT'
IF &DSN = &DB2D_FILES AND &UNIT = '3390' THEN
SET &DATACLAS = 'EXT'
IF &DSN = &DB2P_FILES AND &STORCLAS ¬= '' THEN DO
WRITE 'DB2P - 1- ' &DSN
SET &DATACLAS = 'EXT'
END
IF &DSN = &DB2P_FILES THEN DO
WRITE 'DB2P - 2- ' &DSN
SET &DATACLAS = 'EXT'
END
IF &JOB = 'PKTD0534' THEN DO
WRITE 'PKTD0534 ANYVOL -' &ANYVOL
WRITE 'PKTD0534 ALLVOL -' &ALLVOL
WRITE 'PKTD0534 UNIT -' &UNIT '-'
WRITE 'PKTD0534 DATACLAS -' &DATACLAS
END
IF &STORCLAS = 'TAPEC' AND &DATACLAS = '' THEN
SET &DATACLAS = 'TAPEC'
IF (&STORCLAS = 'TAPE') THEN
SET &DATACLAS = 'DC6G'
IF &DSN = &DB2P_ARCHLOG2 THEN
SET &DATACLAS = 'DC6G'
IF &STORCLAS ¬= '' THEN
EXIT
IF (&UNIT = 'TAPEC') AND &DATACLAS = '' THEN DO
WRITE 'PKTD0534 B ALLVOL -' &ALLVOL
SET &DATACLAS = 'TAPEC'
END
IF &JOB = 'PKTD0534' AND &ANYVOL='REF=SD' THEN DO
WRITE 'PKTD0534 C UNIT -' &UNIT
WRITE 'PKTD0534 C ANYVOL -' &ANYVOL
SET &DATACLAS = 'TAPEC'
END
IF (&UNIT = 'TAPEV') AND &DATACLAS = '' THEN
SET &DATACLAS = 'DC6G'
IF (&UNIT = '3490') AND &DATACLAS = '' THEN
SET &DATACLAS = 'DC6G'
END
I've left the WRITE statements in the routine.
The job I was using to test is PKTD0534.
Can anyone see what the problem is, and suggest a fix?
Gadi
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN