GDG (Generation Data Group)

Top  Previous  Next

GDG stands for Generation Data Group and it is a method used on the mainframe to allow a group of related files to be created that can be referenced individually or as a group.

The name of the first GDG created file version is composed by the the base name plus "00" (number of version) added to the end.

When a new version of GDG file is created, all the previous versions are renamed increasing by 1 their number of version. The default number of maintained versions is 8. A different range can be indicated in xgdg.conf file, setting the group size.

The lower version is the last version.

Example

Nov  8 16:24 /appl/aki000/ki0/data/FLATCAT/TEST.E122.SCMET006.GC.02
Nov  8 16:24 /appl/aki000/ki0/data/FLATCAT/TEST.E122.SCMET006.GC.01
Nov  8 17:23 /appl/aki000/ki0/data/FLATCAT/TEST.E122.SCMET006.GC.00

Files within a GDG may be referenced using the physical name but they are more usually referenced using relative generation numbers.

Generation 0 (zero) (i.e. TEST.E122.SCMET006.GC(0)) represents the current generation within the GDG at the time that the current job began execution while -1 (minus one) represents the immediately previous version (TEST.E122.SCMET006.GC(-1)). Even earlier versions can be referenced using -2, -3 etc. up to the maximum number of generations held within the GDG.  If a new generation is added to the GDG during execution of the job then it will be the +1 generation.

Referencing the files within a GDG by their relative names means that the actual physical filename does not need to be known.

GDG cataloging features are normally used inside a "GDG processing unit", that is script of commands. When the processing unit completes, the new version created during the execution unit are cataloged or removed depending on the results of the processing unit.

Usage

GDG files are used in the scripts running under the XFRAME environment.

Normally they are referenced in the file link declaration (i.e. dlbl_XXX for Unix/Linux or dd() for Windows) before the program invocation. In this case, the xgdg subsystem of the XFRAME runtime directly interprets the GDG information from the the "gdg" parameter contained in file link value. I.e.

Unix/Linux:

setenv dlbl_FILEIN "PUYIOS.E122.SCEKS040.GC,cat=$FLATCAT,disp=OLD,type=flat,gdg=0"

Windows:

dd("FILEIN1", "FILEGDG.SORT,cat=FLATCAT,disp=(NEW,KEEP),type=flat,gdg=+1");

Sometimes it may be necessary to know the real name of the file, maybe to pass it to other utilities. To retrieve the real file name of GDG files, on UNIX/LInux you may invoke the xgdg utility; on Windows you may invoke the gdgGetName or the gdgGetFullName .

For example if want to know the file name of a specified GDG version, on UNIX/Linux you can issue:

set filename=`xgdg --full --get 0 $XVSAM/FLAT/FILE01`

For more information refer to "xgdg".

Unix/Linux only

For each XGDG processing unit (normally a script/JCL), the XJCLLOG environment value must be set to a unique file name, which name uniquely identifies the execution run.

I.e

$XJCLLOG= $HOME/tmp/$$.XJCLLOG

When script is launched, the XFRAME batch runtime writes into the file addressed by $XJCLLOG all the script operational information (files used, GDG versions, return code of the steps, disposition, etc) .

At the end of script, ithe command  "xgdg --catalogue" must be invoked: it analyzes the information contained in $XJCLLOG, and performs the cataloging of necessary files.

Configuration

In order to have the XFRAME xgdg subsystem working, a configuration file must be provided. This file must be named xgdg.conf and must reside in the $HOME/etc directory.

This file contains both general GDG parameters as well as specific file settings.

I.e.

#
# xgdg.conf - configuration for xgdg
#
set keep($RC < 8)
set verbose
define name=E104/PCKBOS.RA04.SCKBOP00.JA group=4
define name=E104/PCKBOS.RAXX.TSATSTTT.JA group=12

Windows

Sometimes it may be necessary to get GDG information to let non XFRAME commands to use it. You may invoke the gdgGetName or the gdgGetFullName functions to respectively get the name and the full name of the file required.

Sample run

--> step STEP0020 running
XRUN: redirecting  stdout on /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX042.GS
XRUN: DD IZTBP010   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP010.GA
XRUN: DD IF86630    SHR              670230     /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX042.GA
XRUN: DD WRKRPT08   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT08
XRUN: DD WRKRPT04   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT04
XRUN: DD IZTBP020   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP020.GA
XRUN: DD WRKRPT12   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT12
XRUN: DD IZTBP040   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP040.GA
XRUN: DD WRKRPT01   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT01
XRUN: DD ACKBX040   ,CATLG,DELETE    0          /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX040.GA.tmp.1
XRUN: DD WRKRPT15   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT15
XRUN: DD IZTBP060   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP060.GA
XRUN: DD WRKRPT17   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT17
XRUN: DD WRKRPT16   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT16
XRUN: DD WRKRPT06   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT06
XRUN: DD IZTBP070   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP070.GA
XRUN: DD OCZZZ166   NEW,KEEP         not exists /appl/akb000/kb0/data/SYSLST/gkbe0418.sh.3866826.STEP0020.txt
XRUN: DD WRKRPT20   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT20
XRUN: DD ACKBX046   ,CATLG,DELETE    18120      /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX046.GA
XRUN: DD ACKBX048   ,CATLG,DELETE    56625      /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX048.GA
XRUN: DD WRKRPT03   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT03
XRUN: DD WRKRPT13   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT13
XRUN: DD WRKRPT10   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT10
XRUN: DD WRKRPT09   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT09
XRUN: DD WRKRPT05   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT05
XRUN: DD WRKRPT19   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT19
XRUN: DD WRKRPT11   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT11
XRUN: DD WRKRPT18   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT18
XRUN: DD IZTBP050   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP050.GA
XRUN: DD WRKRPT14   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT14
XRUN: DD ACKBX045   ,CATLG,DELETE    2720       /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX045.GA
XRUN: DD WRKRPT02   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT02
XRUN: DD WRKRPT07   NEW,KEEP         not exists /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT07
XRUN: DD ACKBX047   ,CATLG,DELETE    16600      /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX047.GA
XRUN: DD ACKBX041   SHR              45602816   /appl/akb000/kb0/data/VSAMCAT/PCKBV1.E104.VCKBX041.GA.dat
XRUN: DD OCZZZ036   ,CATLG,DELETE    221312     /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX043.GA
XRUN: DD ACKBX049   ,CATLG,DELETE    23840      /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX049.GA
XRUN: DD IZTBP030   SHR              not exists /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP030.GA
XRUN: DD ICZZZ166   OLD,DELETE       146        /appl/akb000/kb0/data/TMPCAT/ICZZZ166.3866826
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX040.GA.tmp.1
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX046.GA
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX048.GA
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX045.GA
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX047.GA
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX043.GA
XRUN: ACKBX042 erasing  /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX049.GA
XRUN: STARTING ACKBX042
XRUN: DATA CARDS
31 060731
XRUN: END OF DATA CARDS
XRUN:  TERMINATED WITH CODE 0
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP010.GA (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX042.GA (670230)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT08 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT04 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP020.GA (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT12 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP040.GA (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT01 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX040.GA.tmp.1 (223740)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT15 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP060.GA (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT17 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT16 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT06 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP070.GA (not exists)
XRUN: /appl/akb000/kb0/data/SYSLST/gkbe0418.sh.3866826.STEP0020.OCZZZ166.txt (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT20 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX046.GA (7320)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX048.GA (22875)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT03 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT13 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT10 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT09 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT05 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT19 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT11 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT18 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP050.GA (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT14 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX045.GA (0)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT02 (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/gkbe0418.sh.3866826.WRKRPT07 (not exists)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX047.GA (5900)
XRUN: /appl/akb000/kb0/data/VSAMCAT/PCKBV1.E104.VCKBX041.GA.dat (45608960)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX043.GA (90592)
XRUN: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX049.GA (9440)
XRUN: /appl/akb000/kb0/data/FLATCAT/GZTBV1B.C000.IZTBP030.GA (not exists)
XRUN: /appl/akb000/kb0/data/TMPCAT/ICZZZ166.3866826 (not exists)
--> step STEP0020 return code 0

At the end of script:

xgdg: checking GDG for /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX040.GA
xgdg: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX040.GA(+1) defined in STEP0020 (RC=0): keeping
xgdg: renaming PCKBOS.E104.SCKBX040.GA.07 to PCKBOS.E104.SCKBX040.GA.08
xgdg: renaming PCKBOS.E104.SCKBX040.GA.06 to PCKBOS.E104.SCKBX040.GA.07
xgdg: renaming PCKBOS.E104.SCKBX040.GA.05 to PCKBOS.E104.SCKBX040.GA.06
xgdg: renaming PCKBOS.E104.SCKBX040.GA.04 to PCKBOS.E104.SCKBX040.GA.05
xgdg: renaming PCKBOS.E104.SCKBX040.GA.03 to PCKBOS.E104.SCKBX040.GA.04
xgdg: renaming PCKBOS.E104.SCKBX040.GA.02 to PCKBOS.E104.SCKBX040.GA.03
xgdg: renaming PCKBOS.E104.SCKBX040.GA.01 to PCKBOS.E104.SCKBX040.GA.02
xgdg: renaming PCKBOS.E104.SCKBX040.GA.00 to PCKBOS.E104.SCKBX040.GA.01
xgdg: renaming PCKBOS.E104.SCKBX040.GA.tmp.1 to PCKBOS.E104.SCKBX040.GA.00
xgdg: /appl/akb000/kb0/data/FLATCAT/PCKBOS.E104.SCKBX040.GA not found in configuration: assuming default
xgdg: deleting PCKBOS.E104.SCKBX040.GA.08
xgdg: cataloging completed