GDG - A Basic Introduction

Introduction

GDG stands for Generation Data Group. Here a group of files are related functionally or chronologically and can be accessed individually or as a group. These files share a unique name.

  • Every dataset in a GDG has a Generation number and version number. Eg.TESTGDG.DATA.G0001.V00
  • Subsequent files are named by incrementing the Generation number(G0001-G9999).
  • The current generation is referred a 0. The next generation as +1 an previous generation as -1
  • Every time a new gen is created, it becomes the current gen and the current gen becomes the previous generation.
  • All generations must be cataloged to keep track of the relative generation numbers
  • Maximum number of versions for a GDG is 255.
  • Each generation can have same or different DCB parameters.

Why We Need GDG?

  • Record keeping
  • Easy to relate data sets
  • Auto deletion of outdated datasets
  • No need to change the JCL every time.

How to define a GDG?

To use the GDG we have to define the GDG base / index.

//STEP10 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
            DEFINE GDG(NAME(TESTGDG.DATA.GDG) –
            LIMIT(10) –
            NOEMPTY –
            SCRATCH) 
/*

Where, - GDG name can range from 1-44 - LIMIT can range from 1-255

Empty Vs NoEmpty

Empty:-This option will delete all the older generations if the limit of generations is reached

Example: If a GDG is defined with a limit of 10 and 11th generation is created then all the old 10 generations are deleted and the 11th generation is created.

NoEmpty:- This option will delete the oldest generation if the limit of generations is reached .

Example: If a GDG is defined with a limit of 10 and 11th generation is created then the 1st generation is deleted and the 11th generation is created.

Scratch Vs NoScratch

Scratch:- This option will delete the generation completely if the dataset is deleted.

NoScratch :- This option will uncatalog the dataset if the dataset is deleted.

Creating a GDG version: GDG version can be created in same JCL by giving +1 to the GDG base name.

STEP1   EXEC PGM=IEFBR14                                 
INFILE  DD  DSN= TESTGDG.DATA.GDG (+1),   
        DISP=(NEW,CATLG,DELETE),                         
        UNIT=SYSDA,                                      
        SPACE=(CYL,(200,200),RLSE),                      
       DCB=(LRECL=2700,BLKSIZE=0,RECFM=FB)                

Altering a GDG:

We can also change the attributes of a GDG using the ALTER keyword.

//STEP1   EXEC PGM=IDCAMS                      
//SYSPRINT DD SYSOUT=*                         
//SYSIN    DD *                                
    ALTER TESTGDG.DATA.GDG  NOSCRATCH     
/*      

Deleting a GDG generation:

//STEP1   EXEC PGM=IEFBR14                    
//DL       DD  DSN=TESTGDG.DATA.GDG(+1),      
//         DISP=(OLD,DELETE,DELTE)            
/*

Deleting a GDG base /Index:

Two parameters for deleting the base.

1.PURGE: Object will be deleted regardless of the expiration date.

//SYSIN    DD  *                  
   DELETE TESTGDG.DATA.GDG PURGE    

2.FORCE: Object will be delete even though it is not empty.

//SYSIN    DD  *                  
   DELETE TESTGDG.DATA.GDG FORCE
comments powered by Disqus