Page 1 of 1

How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 4:09 pm
by Jackson93
Hello,

i tried to find out how many members fit into a single DD statement, but did not find a single source.
I need to do something like this:

//SYSUT1 DD DSN=&SYSUID..TEST.#0001,DISP=(SHR,DELETE,KEEP)
//_______DD DSN=&SYSUID..TEST.#0002,DISP=(SHR,DELETE,KEEP)
//_______DD DSN=&SYSUID..TEST.#0003,DISP=(SHR,DELETE,KEEP)
...
//_______DD DSN=&SYSUID..TEST.#N,DISP=(SHR,DELETE,KEEP)

How big can N be?
I know that around 3273 DDs can exist in a single job, but not how many members can exist in a single dd statement.

Thanks & Regards
Jackson

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 4:42 pm
by expat
Have you googled ???
It depends on the size of your TIOT is seems

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 4:46 pm
by NicC
Whilst I was Googling Expat came up with the above. This is the second result from my Googling (taken from the results page not the link):
Concatenating Data Sets Sequentially - IBM
https://www.ibm.com/support/knowledgece ... seqcat.htm

The system can retrieve two or more data sets and process them successively as a single sequential data set. This is called sequential concatenation. The number of data sets that you can concatenate with sequential concatenation is variable. It is governed by the maximum size of the TIOT option. The system programmer


Edit: I tried that link and it came up with page not found.

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 5:11 pm
by Jackson93
Thank you NicC, was not sure of the TIOT variable was not only regulating the amount DD statements and steps, but also the allowed amount of members in a single DD Statement.
http://publibz.boulder.ibm.com/cgi-bin/ ... 0126222340 shows how much TIOT space a DD statement uses, but i am not sure if the same formular applies for members in a single DD statement.

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 6:11 pm
by Robert Sample
The system can retrieve two or more data sets and process them successively as a single sequential data set. This is called sequential concatenation. The number of data sets that you can concatenate with sequential concatenation is variable. It is governed by the maximum size of the TIOT option. The system programmer controls the TIOT size with the option ALLOCxx member of SYS1.PARMLIB. The smallest TIOT value allows 819 single-unit DD statements or 64 DD statements having the maximum number of units. See z/OS MVS Initialization and Tuning Reference. When data sets are sequentially concatenated, your program is open to only one of the data sets at a time. Concatenated data sets cannot be read backward.
is from https://www.ibm.com/support/knowledgece ... seqcat.htm.

Furthermore, TIOT calculations must factor in the number of units and not just the number of DD statements, as this quote from the MVS Initialization and Tuning Reference manual for the ALLOCxx member indicates:
Use the following to calculate the maximum number of DDs allowed per Job Step:

The TIOT Prefix, Header, and Trailer consume sixty (60) ('3C'x) bytes of the total TIOT space available to a Job Step.
A DD statement requesting a single unit requires twenty (20) bytes ('14'x) of TIOT space. The TIOT space requirement for entire step is 80 bytes.

//TAPEJOB JOB
//STEP1 EXEC PGM=IEFBR14
//DD1 DD UNIT=3490 ** DD requires 20 bytes *

A DD statement requesting two (2) units requires twenty four (24) bytes ('18'x) of TIOT space. Twenty bytes for the basic information for the first unit and an additional four bytes for the second unit. The TIOT space requirement for entire step is 84 bytes.

//TAPEJOB JOB
//STEP1 EXEC PGM=IEFBR14
//DD1 DD UNIT=(3490,2) ** DD requires 24 bytes *

A DD requesting the maximum number of units allowed, fifty nine (59), utilizes two hundred fifty two (252) bytes ('FC'x) of TIOT space. The TIOT space requirement for entire step is 312 bytes.

//TAPEJOB JOB
//STEP1 EXEC PGM=IEFBR14
//DD1 DD UNIT=(3490,59) ** DD requires 252 bytes *

A Job Step with three (3) DD statements and each DD requesting one more unit than the previous DD would use the following TIOT space; TIOT space requirement for entire step is 132 bytes.

//TAPEJOB JOB
//STEP1 EXEC PGM=IEFBR14
//DD1 DD UNIT=3490 ** DD requires 20 bytes *
//DD2 DD UNIT=(3490,2) ** DD requires 24 bytes *
//DD3 DD UNIT=(3490,3) ** DD requires 28 bytes *

The DD limit is 259, not 3273, when every DD statement uses the maximum (59) number of units.

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 9:10 pm
by steve-myers
Well, since a PDS must be on 1 disk volume, the TIOT entry for the DD statement requires 20 bytes. For all practical purposes you have the limit of the TIOT size and any limits as to the number of data sets in a concatenation.

Since a member is specified, it is the equivalent of a sequential data set. In sequential concatenation , for all intents and purposes, each DD statement is opened as though it were a new data set by itself, so I'm not sure if a limits about data sets in a partitioned data set concatenation apply. 259 data sets have been bandied about here, but the issues become more complex when the data sets have multiple extents. This link is old, but I think it's still correct.

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 9:19 pm
by enrico-sorichetti
still the original question is not clear ...

the simple reply, imo, would be according to the jcl rules,

a dd statement can contain just one member

//ddname DD DISP=...,DSN=SOME_PDS(SOME_MEMBER)

// DD DISP=...,DSN=SOME_OTHER_PDS(SOME_OTHER_MEMBER)

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 9:45 pm
by Robert Sample
I think some of the confusion is terminology -- the TS appears to be using "members" when referring to sequential data sets
//SYSUT1 DD DSN=&SYSUID..TEST.#0001,DISP=(SHR,DELETE,KEEP)
//_______DD DSN=&SYSUID..TEST.#0002,DISP=(SHR,DELETE,KEEP)
//_______DD DSN=&SYSUID..TEST.#0003,DISP=(SHR,DELETE,KEEP)
...
//_______DD DSN=&SYSUID..TEST.#N,DISP=(SHR,DELETE,KEEP)

Re: How many members fit in a single DD statement?

PostPosted: Wed Feb 07, 2018 9:46 pm
by steve-myers
I agree with Mr. Sorichetti. The question is poorly worded. How about, "How many members can be specified in JCL on one DD statement. The answer in one. "How many members can exist in one partitioned data set?" There we can state, there is no defined limit; though there seem to be limits in a PDSE data set, however these limits, even in PDSE V1 data sets, seem to be quite large.

Re: How many members fit in a single DD statement?

PostPosted: Thu Feb 08, 2018 4:16 pm
by willy jensen
Well, you could try. Use PGM=IEFBR14 and specify the same datasetname a number of times. Start with 20000 and increase by 5000. That will give you the number for your installation.