Discussion:
Question on DISP=MOD and GDGs
Add Reply
Lizette Koehler
2018-10-05 22:50:41 UTC
Reply
Permalink
List -

I am having a discussion on how a GDG is handled based on the DISP. I was
always working from the position that the use of MOD changes JCL behavior
slightly with a dataset. My understanding is: If using MOD then if the dataset
does not exist, it is treated as NEW and if it exists then treated as OLD. That
seems reasonable, however, I have some users coding this for GDGs and I am not
sure why they should work.


Now the following are samples and I am sure there are other coding that I have
not included.



So based on the following, which should be considered incorrect coding

1) First time creating the new Daily dataset. There is also a concern on the
second coding


//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(+1),
// DISP=(MOD,CATLG,DELETE),
// STORCLAS=NONSMS,EXPDT=99000,
// RECFM=VBS,BLKSIZE=32000,LRECL=32760,BUFNO=10,
// UNIT=TAPE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)

Appending SMF data daily dataset

//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(0),
// DISP=(MOD,CATLG,DELETE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)



2) Using BR14 with MOD DELETE for a GEN that has NOT been created

//S1 EXEC PGM=IEFBR14
//GDGBASE DD
DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0),SPACE=(TRK,(1,1)),UNIT=SYSDA
!!!ERROR 04: GDG(0) NOT PERMITTED WITH DISP=NEW


GDG does not have any GENs yet. So get the following

//COPYIT1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//*
//*
//SYSIN DD DUMMY
//SYSUT2 DD DISP=(MOD,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// DSN=TSOHLQ.GDGTEST(+1)
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
//SYSUT1 DD *
TEST RECORD


The GDG has one generation in the base I am able to see this should work

//****************************************************************
//*
//****************************************************************
//S1 EXEC PGM=IEFBR14
//GDGBASE DD DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0)


I am not saying these are great ways to code DISP=MOD, just that I have seen
this coding work but have been told that they should not work or they would
cause weird/crazy results


Any and all opinions welcome.



Thanks


Lizette Koehler
statistics: A precise and logical method for stating a half-truth inaccurately

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Longabaugh, Robert E
2018-10-06 00:03:24 UTC
Reply
Permalink
Messages like *** WARN 04 and !!!ERROR 04 are probably not coming from IBM or an ISV.

However, customers can write messages like that from the IBM ACS routine or from an allocation manger like CA Allocate DASD Space and Placement or some of the other competitors in that area which were mentioned on another thread earlier today. There are also JCL checking ISV products like CA JCLCheck, and the job scheduling products like CA 7 or CA Workload Automation ESP Edition which might also be used produce a message like that.

If those appeared in the IDCAMS output, it would probably be the JCL checker or scheduling product. The messages from allocation manager would normally appear in the JES log.

Bob Longabaugh
CA Technologies
Storage Management

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-***@LISTSERV.UA.EDU> On Behalf Of Lizette Koehler
Sent: Friday, October 05, 2018 5:50 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Question on DISP=MOD and GDGs

CAUTION: This email originated from outside of CA. Do not click links or open attachments unless you recognize the sender and know the content is safe.


List -

I am having a discussion on how a GDG is handled based on the DISP. I was always working from the position that the use of MOD changes JCL behavior slightly with a dataset. My understanding is: If using MOD then if the dataset does not exist, it is treated as NEW and if it exists then treated as OLD. That seems reasonable, however, I have some users coding this for GDGs and I am not sure why they should work.


Now the following are samples and I am sure there are other coding that I have not included.



So based on the following, which should be considered incorrect coding

1) First time creating the new Daily dataset. There is also a concern on the second coding


//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(+1),
// DISP=(MOD,CATLG,DELETE),
// STORCLAS=NONSMS,EXPDT=99000,
// RECFM=VBS,BLKSIZE=32000,LRECL=32760,BUFNO=10,
// UNIT=TAPE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)

Appending SMF data daily dataset

//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(0),
// DISP=(MOD,CATLG,DELETE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)



2) Using BR14 with MOD DELETE for a GEN that has NOT been created

//S1 EXEC PGM=IEFBR14
//GDGBASE DD
DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0),SPACE=(TRK,(1,1)),UNIT=SYSDA
!!!ERROR 04: GDG(0) NOT PERMITTED WITH DISP=NEW


GDG does not have any GENs yet. So get the following

//COPYIT1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//*
//*
//SYSIN DD DUMMY
//SYSUT2 DD DISP=(MOD,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// DSN=TSOHLQ.GDGTEST(+1)
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
//SYSUT1 DD *
TEST RECORD


The GDG has one generation in the base I am able to see this should work

//****************************************************************
//*
//****************************************************************
//S1 EXEC PGM=IEFBR14
//GDGBASE DD DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0)


I am not saying these are great ways to code DISP=MOD, just that I have seen this coding work but have been told that they should not work or they would cause weird/crazy results


Any and all opinions welcome.



Thanks


Lizette Koehler
statistics: A precise and logical method for stating a half-truth inaccurately

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Lizette Koehler
2018-10-08 17:38:35 UTC
Reply
Permalink
The question was not about the JCL Check process returning a 4 or an 8


It was more on when using DISP=MOD, would any of the sample provided be against
JCL rules?

My understanding is if DISP=MOD is used, then if the dataset does not exist,
create it, if it does exist append to it.

Just trying to understand why some might think these sample coding is invalid.

Thanks

Lizette
Post by Longabaugh, Robert E
-----Original Message-----
Lizette Koehler
Sent: Friday, October 05, 2018 3:50 PM
Subject: Question on DISP=MOD and GDGs
List -
I am having a discussion on how a GDG is handled based on the DISP. I was
always working from the position that the use of MOD changes JCL behavior
slightly with a dataset. My understanding is: If using MOD then if the
dataset does not exist, it is treated as NEW and if it exists then treated as
OLD. That seems reasonable, however, I have some users coding this for GDGs
and I am not sure why they should work.
Now the following are samples and I am sure there are other coding that I
have not included.
So based on the following, which should be considered incorrect coding
1) First time creating the new Daily dataset. There is also a concern on the
second coding
//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(+1),
// DISP=(MOD,CATLG,DELETE),
// STORCLAS=NONSMS,EXPDT=99000,
// RECFM=VBS,BLKSIZE=32000,LRECL=32760,BUFNO=10,
// UNIT=TAPE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
Appending SMF data daily dataset
//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(0),
// DISP=(MOD,CATLG,DELETE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
2) Using BR14 with MOD DELETE for a GEN that has NOT been created
//S1 EXEC PGM=IEFBR14
//GDGBASE DD
DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0),SPACE=(TRK,(1,1)),UNIT=SYSDA
!!!ERROR 04: GDG(0) NOT PERMITTED WITH DISP=NEW
GDG does not have any GENs yet. So get the following
//COPYIT1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//*
//*
//SYSIN DD DUMMY
//SYSUT2 DD DISP=(MOD,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// DSN=TSOHLQ.GDGTEST(+1)
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
//SYSUT1 DD *
TEST RECORD
The GDG has one generation in the base I am able to see this should work
//****************************************************************
//*
//****************************************************************
//S1 EXEC PGM=IEFBR14
//GDGBASE DD DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0)
I am not saying these are great ways to code DISP=MOD, just that I have seen
this coding work but have been told that they should not work or they would
cause weird/crazy results
Any and all opinions welcome.
Thanks
Lizette Koehler
statistics: A precise and logical method for stating a half-truth inaccurately
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
CM Poncelet
2018-10-09 00:48:00 UTC
Reply
Permalink
Yes, a DISP=(MOD,CATLG) defaults to DISP=(NEW,CATLG) if the DSN does not
exist.

The following *might* be invalid, as it would be referring to a GDG entry DSN that already exists (but it might also just issue a 'NOT CATLG 2' or similar JES2 log message):
"//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(0), "
"// DISP=(MOD,CATLG,DELETE) " <--- not 'CATLG' again
It would 'correctly' have to be:
"//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(0), "
"// DISP=(MOD,KEEP,KEEP) "

Why not try it using a test GDG hlq DSN and/or on a test LPAR to see what happens, regardless of JCL checks? 

My ha'penny. CP
Post by Lizette Koehler
The question was not about the JCL Check process returning a 4 or an 8
It was more on when using DISP=MOD, would any of the sample provided be against
JCL rules?
My understanding is if DISP=MOD is used, then if the dataset does not exist,
create it, if it does exist append to it.
Just trying to understand why some might think these sample coding is invalid.
Thanks
Lizette
Post by Longabaugh, Robert E
-----Original Message-----
Lizette Koehler
Sent: Friday, October 05, 2018 3:50 PM
Subject: Question on DISP=MOD and GDGs
List -
I am having a discussion on how a GDG is handled based on the DISP. I was
always working from the position that the use of MOD changes JCL behavior
slightly with a dataset. My understanding is: If using MOD then if the
dataset does not exist, it is treated as NEW and if it exists then treated as
OLD. That seems reasonable, however, I have some users coding this for GDGs
and I am not sure why they should work.
Now the following are samples and I am sure there are other coding that I
have not included.
So based on the following, which should be considered incorrect coding
1) First time creating the new Daily dataset. There is also a concern on the
second coding
//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(+1),
// DISP=(MOD,CATLG,DELETE),
// STORCLAS=NONSMS,EXPDT=99000,
// RECFM=VBS,BLKSIZE=32000,LRECL=32760,BUFNO=10,
// UNIT=TAPE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
Appending SMF data daily dataset
//SMFOUT DD DSN=SMFHLQ.DAILY.SMFDSN(0),
// DISP=(MOD,CATLG,DELETE
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
2) Using BR14 with MOD DELETE for a GEN that has NOT been created
//S1 EXEC PGM=IEFBR14
//GDGBASE DD
DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0),SPACE=(TRK,(1,1)),UNIT=SYSDA
!!!ERROR 04: GDG(0) NOT PERMITTED WITH DISP=NEW
GDG does not have any GENs yet. So get the following
//COPYIT1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//*
//*
//SYSIN DD DUMMY
//SYSUT2 DD DISP=(MOD,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// DSN=TSOHLQ.GDGTEST(+1)
*** WARN 04: DISP FOR NEW GDG DATASET IS NOT (NEW,CATLG)
//SYSUT1 DD *
TEST RECORD
The GDG has one generation in the base I am able to see this should work
//****************************************************************
//*
//****************************************************************
//S1 EXEC PGM=IEFBR14
//GDGBASE DD DISP=(MOD,DELETE,DELETE),DSN=TSOHLQ.GDGTEST(0)
I am not saying these are great ways to code DISP=MOD, just that I have seen
this coding work but have been told that they should not work or they would
cause weird/crazy results
Any and all opinions welcome.
Thanks
Lizette Koehler
statistics: A precise and logical method for stating a half-truth inaccurately
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Brian Westerman
2018-10-09 07:38:46 UTC
Reply
Permalink
Hi,

Your conclusion is correct, but there is a currently known problem with PRO/JCL (from ASG) that erroneously says that it's not valid. There are actually several PRO/JCL problems that we have open with ASG currently, related to GDG processing with tape and also tape processing with disp=MOD and disk processing with DISP=MOD. I think we have 4 altogether. Of all the problems, the only one they fixed is that the PROCLIB concatenation was not being dynamically located under z/OS 2.3. (the easiest one for us to code around by already defining the libraries explicitly in the parms).

I would imagine their other JCL checker product probably has the same issue but I don't know for sure.

Brian

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Charles Mills
2018-10-09 13:56:04 UTC
Reply
Permalink
Post by Brian Westerman
I would imagine their other JCL checker product probably has the same issue
I was once acquired by ASG and worked there for about four years, but I have no special knowledge of logic of the JCL check products. That said, the products were acquired from competing companies and had different code bases, so the internal processing might be quite different, and a given bug might be specific to only one of them.

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Brian Westerman
Sent: Tuesday, October 9, 2018 12:39 AM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: Question on DISP=MOD and GDGs

Hi,

Your conclusion is correct, but there is a currently known problem with PRO/JCL (from ASG) that erroneously says that it's not valid. There are actually several PRO/JCL problems that we have open with ASG currently, related to GDG processing with tape and also tape processing with disp=MOD and disk processing with DISP=MOD. I think we have 4 altogether. Of all the problems, the only one they fixed is that the PROCLIB concatenation was not being dynamically located under z/OS 2.3. (the easiest one for us to code around by already defining the libraries explicitly in the parms).

I would imagine their other JCL checker product probably has the same issue but I don't know for sure.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Loading...