To clarify, you must use the absolute dsn if you need to specify a member name 
*in the JCL* but you can use a relative generation to allocate a PDS[E] to a 
step that opens the GDS with DSORG=PO and processes individual members via, 
e.g., FIND, OPENJ.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3

________________________________________
From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Steve Thompson [ste...@wkyr.net]
Sent: Monday, May 29, 2023 8:07 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Two related member generation questions

Well, I had to go read this. Here is what it says in the DFSMS
Using Data Sets Manual (z/OS 2.5) SC23-6855-50:


Data set organization of generation data sets

Generation data sets (GDSs) can be sequential, direct, or
partitioned data sets. *If you use PDSs or PDSEs**
**as generation data sets and you want to reference a member, you
must reference the member using**
**absolute data set names rather than relative names.* This is
because MVS JCL does not support specifying
both a relative name and a member name. To access a member of a
generation data set that is a PDS or
PDSE using JCL, you must use an absolute generation name.

Example: When referencing a generation data set using JCL, it is
common to use relative naming, as
inA.B.C(0),A.B.C(+1), orA.B.C(-1). *If you want to access a
member of a PDS or PDSE, you**
**cannot use relative naming because there is no way to specify
the member name in JCL. You can refer**
**to a****specific****member of a PDS or PDSE that is a
generation data set by using absolute names such as**
**A.B.C.G0005V00(MEMBER)**, but JCL does not allow
specifying****A,B.C(+5)(MEMBER)**.*

Restriction:

• Generation data sets cannot be VSAM data sets.
• *Note* that only z/OS systems at the V2R1 level or higher
support GDSs that are PDSEs:
– If you run a mixed sysplex anddefinea GDS PDSE on a system at
the z/OS V2R1 level, but
issue an access method service LISTCAT command on a system at a
lower level, the command
output will displaySTATUS---UNKNOWNfor deferred and rolled-off
GDS PDSEs. In this case LISCAT
command output will not display the DSNTYPE line for that PDSE.
For an active GDS PDSE, the
LISTCAT command output on a z/OS system below the V2R1 level
displaysSTATUS--ACTIVEand no
DSNTYPE.

– If you roll-off an active GDS PDSE data set from a z/OS system
at the V1R13 level or lower, the GDS
PDSE becomes a rolled-off simple GDS. If you roll-in back the GDS
from a z/OS system at the V2R1
level or lower, it becomes an active GDS (not an active GDS PDSE).

In both these cases, the data set can still be used as a PDSE,
(it can be loaded with members) because
the PDSE indicator for the data set remains set.

Absolute generation and version numbers

An absolute generation and version number is used to identify
aspecificgeneration of a GDG. The
generation and version numbers are in the formGxxxxVyy,
wherexxxxis an unsigned 4-digit decimal
generation number (0001 through 9999) andyyis an unsigned 2-digit
decimal version number (00
through 99). For example:

• A.B.C.G0001V00 is generation data set 1, version 0, in
generation data group A.B.C.
• A.B.C.G0009V01 is generation data set 9, version 1, in
generation data group A.B.C.

While it is technically possible todefinean explicit generation
of G0000V00, such adefinitionis
discouraged because it can cause unpredictable results when
deleting generation data sets using relative
generations.

The number of generations and versions is limited by the number
of digits in the absolute generation
name; that is, there can be 9,999 generations. Each generation
can have 100 versions. To maintain
relative order when the highest generation is 9999 and a new
generation is added, the new generation is
assigned a wrap flag. The wrap flag causes the new generation to
behave as if it had 10,000 added to it.
This causes the ordering to be correct when going from 9999 to
0001. Note: the next higher generation
from 9999 is not 0000, it is 0001. When all of the generations in
the generation index have the wrap
flag set, the wrap flags are all turned off. For example if we
have a generation index with 3 entries, and
the generations are 9999, 0001, and 0002, with 0001 and 0002
having their wrap flags on, the order
would be 9999, 0001, 0002. If a new generation is created, 0003,
it also has the wrap flag set. The LIMIT
causes the 9999 to be rolled off from the index. 0001, 0002 and
0003 all have the wrap flag set, so
the wrap flag is turned off for all three generations. The order
is still valid and is 0001, 0002, 0003. If a
generation exceeds 2000 generations from the current generation,
the wrap flag is not set. You should not
create large relative generation gaps which can lead to order
problems.

I think I get it. I think this might be done via SLCM trying to
keep generations of source(?) -- Pure guess.

Steve Thompson

On 5/29/2023 7:47 PM, Steve Thompson wrote:
> Charles:
>
> I think you are quite rightly confusing GDG ops with PDSE
> Generations.
>
> And, I have not read up enough on PDSE generations to know how
> one deals with this in JCL. I just know they exist, but I've
> not had the need to use them (unless it is pent up and one I
> now how will realize the utility... :) ).
>
> Steve Thompson
>
> On 5/29/2023 5:56 PM, Charles Mills wrote:
>> 1. Is there any support in JCL or in ISPF for reading member
>> generations? If I want to reference or browse a PDSE 2 member
>> generation other than the latest, is it possible to do so? Am
>> I just missing the doc somewhere?
>>
>> 2. Is this not an error or at least an illogical statement in
>> the JCL reference? Under DSNAME - Cataloged data set name it says
>>
>> dsname(member)
>> Specifies the name of the permanent partitioned data set (PDS)
>> or the partitioned data set extended (PDSE), and the name of a
>> member within that data set. If the member does not exist and
>> DISP=OLD or DISP=SHR is specified, the allocation will
>> succeed, but the job will fail when the data set is opened for
>> input. If the member does not exist and the data set is opened
>> for output, the system will add the member to the data set.
>>
>> member
>> 1 to 8 alphanumeric or national characters, or a character
>> X'C0'. The first character must be alphabetic, national, +, or
>> -. If the first character is + or -, the member is a part of a
>> generation data group.
>>
>> dsname(generation)
>> Specifies the name of a generation data group (GDG) and the
>> generation number (zero or a signed integer) of a generation
>> data set within the GDG.
>>
>> That member description is not right, is it? If the first
>> character is numeric, + or -, it's not a reference to a member
>> of a PDS or PDSE at all -- it specifies a generation data set,
>> right? Or is this support for member generations and I am not
>> reading it correctly?
>>
>> Also, member syntax has nothing to do with whether the dataset
>> is cataloged, right? The syntax is exactly the same with a
>> VOLSER reference or for a temporary dataset, right?
>>
>> Charles
>>
>> ----------------------------------------------------------------------
>>
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO
>> IBM-MAIN
>

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

----------------------------------------------------------------------
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