Accessing Generation Data Groups (GDG)

Tectia Server for IBM z/OS supports generation data groups defined in ICF. Reading GDG ALLs is not supported. Tectia Server for IBM z/OS will not create GDG bases or model data sets.


Tectia file transfers are atomic. Running "sget gdg.base(0) file1" two times in succession might retrieve different files. A loop of "sput file1 gdg.base(+1)" commands might fill the GDG with identical files and roll off all the previous generations.


sftpg3 allows you to navigate to a GDG base and to a prefix of a base.


Generation data sets (GDSs) are normal data sets. The long name format (ls -l) will show all details.

Listing a base with -l will show full details of the GDSs. The listing may contain data sets that are not in the GDG index but do have data set names that have the GDG name as a prefix.

It is possible but not recommended to use data set names which have the GDG base name as a prefix but are not GDS names. For example:

sftp> cd //'USER1.GENGRP'
MVS prefix `'USER1.GENGRP.'' is the current directory.
The working directory `'USER1.GENGRP.'' is a generation data group.
sftp> ls -l
Volume Referred    Recfm Lrecl BlkSz Dsorg    Space  Dsname
S6SYS1 Jan 03 2007 VB     1000 27998 PS       50001  G0006V00.IMPOSTOR
S6SYS1 Jan 02 2007 VB     1000 27998 PS       50001  G0007V00
S6SYS1 Jan 02 2007 VB     1024 27998 PS       50001  G0008V09
S6SYS1 Jan 02 2007 VB     1024 27998 PS       50001  G0077V99
S6SYS1 Jan 02 2007 VB     1024 27998 PS       50001  G0088V99
S6SYS1 Jan 04 2007 VB     1024 27998 PS       50001  G0100V00
S6SYS1 Jan 02 2007 FB       80 27920 PS       50001  GARBAGE

You cannot navigate to a prefix that ends in a GnnnnVnn qualifier. Thus you cannot do "cd G0006V00" or "ls //'USER1.GENGRP.G0006V00'" in the example above.

If the GDG has the NOSCRATCH option, GDSs are retained when they are rolled off. sftpg3 shows data sets based on the prefix - it does not show which data sets are in the GDG and which are not.

Access by Relative Data Set Name

scpg3 and sftpg3 give full access with relative generation numbers for reading and writing. For example, to read the previous and the latest generation, and create a new generation, do the following:

sftp> cd //'ABC.XYZ'
sftp> sget '-1' /tmp/yesterday
sftp> sget 0 /tmp/current
sftp> sput /tmp/new '+1'

z/OS may require you to specify a model data set when creating a new GDS. Tectia does not support the DCB=dsn specification, but you can use the LIKE attribute. Specify it with a file transfer advice string:

sftp> sput /tmp/new /ftadv:LIKE=USER1.GENGRPM.MODEL/'+1'

Alternatively, you can specify it with the site command (in sftpg3):

sftp> sput /tmp/new '+1'

GDG ALL is not supported (that is, reading all the generations as a concatenation).

A new GDS is rolled in immediately. You can not read it back as (+1) (you can do this in JCL, where the GDS generations are rolled in at the end of the job).

GDSs can be removed and renamed by the relative GDS name. On a rename operation, the new name must not be a relative GDS name.

Access by Absolute Data Set Name

With absolute GDS names you can do all the things possible with other data sets.

Writing a data set with a last qualifier with the GnnnnVnn format requires that there exists a suitable GDG base. If the generation exists it is overwritten. If it does not, the new file is inserted in its place in the GDG and older GDGs are rolled off, if necessary.