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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to