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