Version 2 PDSEs support multiple levels, or generations,
of members. This allows you to reverse or access recent changes to
a member. It also allows you to retain multiple generations of a member
for archival reasons. Member generations is similar to generations
for data sets, which is described in Processing Generation Data Groups.
Users can control member generation with these DD keywords in JCL:
- MAXGENS, which sets the number of generations for members in the
data set. A value greater than 0 causes generations of a member to
be created.
- REFDD, which specifies attributes for a new data set by copying
attributes of a data set defined on an earlier DD statement in the
same job. If MAXGENS is specified on the referenced DD statement it
is copied to the new data set.
For more information about the JCL keywords, refer to
DD statement in
z/OS MVS JCL Reference.
System programmers can set the upper limit for MAXGENS with MAXGENS_LIMIT
in the IGDSMSxx member of PARMLIB. For more information about
PARMLIB, refer to IGDSMSxx in z/OS MVS Initialization and Tuning Reference.z/OS MVS Initialization and Tuning Reference.
Programs can use macros to exploit member generations.
- To read a generation, use the FIND macro with the G option to
connect to an old generation of a member, then the READ and CHECK
macros to read it.
- To replace, delete or recover a generation, use the STOW macro
with the RG, DG or RECOVERG option.
- To retrieve directory information for a PDSE with member generations,
use the GET_G and GET_ALL_G functions of the DESERV macro.
For more information, refer to
in
z/OS DFSMS Macro Instructions for Data Sets.
The member rename function retains generations. Old generations
are retained under the original names. Any new generations are retained
under the new names. If you create a member which has the same name
as a series of previously created generations, the new member is associated
with the existing generations.
When a specific generation, or the current generation, is deleted,
the other generations remain. Deleting a specific generation can create
a gap between two generation numbers. You can fill in this gap by
replacing one or more generations.
A generation is retained until enough newer generations have been
created to cause it to be deleted, based on the number of generations
defined with MAXGENS.
The maximum allowable number of generations for
the system is stored in word DFAMAXGN in the data facilities area
(DFA). For more information about the DFA, refer to Data Facilities Area (DFA) fields in z/OS DFSMSdfp Advanced Services.
The
following restrictions apply to copying PDSEs with generations:
- If you use IEBCOPY to copy a Version 2 PDSE to another PDSE, the
PDSE member generations are not preserved. To preserve member generations
when copying a Version 2 PDSE, use the DFSMSdss DUMP and RESTORE functions,
or use the DFSMSdss COPY function.
- TSO TRANSMIT processing only transfers the primary member. Do
not use TSO TRANSMIT if the intended purpose is to preserve all member
generations.
- TSO RECEIVE command processing uses the IGDSMSxx PDSE_VERSION
number to allocate the target PDSE. Preallocate the target data set
if the intention is to preserve the PDSE VERSION.