0% found this document useful (0 votes)
103 views7 pages

MF GDGcreation

This document provides information about generation data groups (GDGs) in JCL. It discusses how GDGs organize related data sets chronologically and functionally using a common data set name and generation numbers. It also describes how to create a GDG using IDCAMS, including defining the GDG, creating a model data set, using the GDG in JCL, altering the GDG definition, deleting GDGs and generations, and answering some practical questions about using GDGs in JCL.

Uploaded by

Johnnyus
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views7 pages

MF GDGcreation

This document provides information about generation data groups (GDGs) in JCL. It discusses how GDGs organize related data sets chronologically and functionally using a common data set name and generation numbers. It also describes how to create a GDG using IDCAMS, including defining the GDG, creating a model data set, using the GDG in JCL, altering the GDG definition, deleting GDGs and generations, and answering some practical questions about using GDGs in JCL.

Uploaded by

Johnnyus
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 7

JCL

CHAPTER - 9

JCL Reference - Generation Data Groups (GDG)

1. INTRODUCTION

2. CREATION OF GDG

3. USING GDG

4. ALTERING GDG DEFINITION

5. DELETING GDG

6. IMPORTANT PRACTICAL QUESTIONS

1. INTRODUCTION

Generation Data Groups or GDGs are a group of data sets which


are related to each other chronologically and functionally.
These related Data Sets share a unique Data Set Name.

Every GDG data set has a Generation number and Version number
assigned
to each data set.

EXAMPLE -- 'MYLIB.LIB.TEST.G0001V00'
'MYLIB.LIB.TEST.G0002V00'
'MYLIB.LIB.TEST.G0003V00' <-- Current Version

Generation Number -> GaaaaVnn


aaaa is between 0000 to 9999
nn is between 00 to 99

In JCL, we refer current version with 0 ( Ex.


MYLIB.LIB.TEST(0) )
new version going to create with +1 ( Ex.
MYLIB.LIB.TEST(+1) )

older versions , refer with -1 -2 -3 etc....


( Ex. MYLIB.LIB.TEST(-1) ) <-
OLDER VERSION

Example for where we can use this GDGs.


Usually, In production environment, for every month we need
to run jobs to create reports for that month.

Let us suppose for January, We can code it MYLIB.LIB.TEST.JAN


for FEB, We can code it MYLIB.LIB.TEST.FEB
for MAR, We can code it MYLIB.LIB.TEST.MAR

So , Every month we need change dataset name in JCL, before


submitting the job. Whenever we enterred into another year,
We need to delete old years data sets.

We need to do above task carefully, If we use GDG, It will take


care following things

- It will maintain all generation of data sets


- It will delete/uncatalog older generation
- Very easily, we can refer current and older versions of data
sets
- No need of change the JCL every time when we submit

2. CREATION OF GDG
Before using GDG , We need to create GDG index and model.
IDCAMS (the 'AMS' stands for Access Method Services), utility
is used to create GDG index.

Example JCL for creating GDG index


//MYJOB JOB (W234),'RAMESH'
//STEP1 EXEC PGM=IDCAMS
//SYSIN DD *
DEFINE GDG(NAME(MYLIB.LIB.TEST) -
LIMIT(10) -
NOEMPTY -
SCRATCH)
/*
//

In this example, IDCAMS utility is used to create an index


for a GDG called MYLIB.LIB.TEST. The number of generations
that can exist in this GDG is limited to ten. NOEMPTY
parameter
is used to specify , Once the limit is reached, the system is
instructed to uncatalog the oldest generation data set within
the
GDG. SCRATCH parameter is used to specify to physically
delete
the data set which was uncataloged.

PARAMETERS WE CAN PASS TO IDCAMS


NAME - This parameter is used to specify the name of
the
data set that is to be created.

LIMIT - This parameter is used to specify the the


total number
of generations that the GDG may contain

EMPTY/NOEMPTY - These two parameters are mutually exclusive.


EMPTY
specifies that all existing generations of
the GDG
are to be uncataloged whever the generations
of GDG
reached the maximum limit NOEMPTY specifies
that only
the oldest generation of the GDG is to be
uncataloged
if the limit is reached

SCRATCH/NOSCRATCH - These two parameters are mutually exclusive.


SCRATCH
parameter specifies that whenever entry of
the GDG is
removed from the index, it should be deleted
physically
and uncataloged. NOSCRATCH parameter
specifies that
whenever entry of the GDG is removed from the
index, it
should be uncataloged, not physically deleted

SCRATCH and NOEMPTY are default parameters

CREATING MODEL
Once the index has been created, a model data set must be
created.
This model data set contains specifications for the DCB
subparameters
for all data sets that will belong to that GDG. Programmer can
override
this default values if he want.

EXAMPLE JCL
//MYJOB JOB (W983),'KRISHNA'
//STEP1 EXEC PGM=IDCAMS
//SYSIN DD *
DEFINE GDG( -
NAME(MYLIB.LIB.TEST) -
LIMIT(10) -
NOEMPTY -
SCRATCH)
//STEP2 EXEC PGM=IEFBR14
//MODEL1 DD DSN=MYLIB.LIB.TEST,
// DISP=(NEW,KEEP,DELETE),
// UNIT=SYSDA,
// SPACE(TRK,0),
// DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//

Using IEFBR14, we have created the model, Now GDG is ready to


use, In
next section you will learn how we will use this created GDG.

3. USING GDG
To use created GDG in our JCL, we need to use name
(with +1 for new generation) which we used in DEFINE
GDG command. (i.e. MYLIB.LIB.TEST)

EXAMPLE JCL
//MYJOB JOB (SD345),'KRISHNA REDDY'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=MYLIB.LIB.TEST(+1),
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(20,10),RLSE),
// DCB=(MODEL.DCB,RECFM=FB,
// LRECL=80,
// BLKSIZE=800)
//

The program COBPROG is executed. A new generation data set is


created via the statement

//INFILE DD DSN=MYLIB.LIB.TEST(+1)

Since we used (+1) with GDG name, it creates a new generation


data set.

The DISP parameter must be set to CATLG for all new generation
data sets , DISP=(NEW,CATLG,DELETE)

We used MODEL.DCB in DCB parameter to instruct system to use


subparameters specified in model GDG.

The DSN and UNIT parameters must be coded for all new
generation data sets

4. ALTERING GDG DEFINITION

Some times there are situtations where we need to change the


attributes of GDG. These types of tasks can be performed using
ALTER command. We will use IDCAMS utitlity to alter GDG attributes.

In last section, I have create MYLIB.LIB.TEST GDG with NOEMPTY


SCRATCH
subparameters, now I want to change them to EMPTY NOSCRATCH
respectively.
Here is the JCL that will do this:
//MYJOB JOB (WE345),'KRISHNA'
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
ALTER MYLIB.LIB.TEST EMPTY NOSCRATCH
/*
//

In this example, the ALTER statement is used to modify the features


of
the GDG called MYLIB.LIB.TEST. Any generations that may exist for
that
GDG will now contain the modified features as well. Any new
generations
that are created for this GDG will now be created based on these
new
features.

5. DELETING GDG

We can delete an generation of GDG with IEFBR14, Here is the


JCL to do that

//MYJOB JOB (ER456),'RAMESH'


//STEP1 EXEC PGM=IEFBR14
//DEL1 DD DSN=MYLIB.LIB.TEST(0) <-- Current Version
// DISP=(OLD,DELETE,DELETE)
//

In this example JCL, the program IEFBR14 is executed. The current


generation of MYLIB.LIB.TEST is deleted.

To delete GDG index/generations , We need to use DELETE command in


IDCAMS utility. There are two sub parameters we can use with DELETE
command.

They are PURGE and FORCE

PURGE sub parameter is used in conjunction with DELETE statement to


delete the GDG index, even if its retention period has not expired.

FORCE parameter can be coded on the DELETE statement to delete the


GDG index, the model, and all related generation data sets, if they
exist.

EXAMPLE JCL for FORCE


//MYJOB JOB (W234),'KRISHNA'
//STEP1 EXEC PGM=IDCAMS
//SYSIN DD *
DELETE(MYLIB.LIB.TEST) GDG FORCE
/*

MYLIB.LIB.TEST GDG index, the model and all related generation


data
sets will be deleted upon successful execution of this job step.

Maximum of 255 data sets exist within one GDG

6. IMPORTANT PRACTICAL QUESTIONS


Q. In my JCL, In step1 I will going to create a new generation data
set for that i gave gdgname(+1). In step2 I want to use same data
set created by previous step? what number i should give to refer that
data set (i.e 0 or +1 or +2 )? (STEP1 EXECUTED SUCCESSFULLY)

A. +1

Q. Why?

A. Even step1 executed successfully, It is not become the current


generation
of GDG. At the end of the job only it will become the current version
of GDG.
So within the job we need to refer it as new generation only, even
that step
completed sucessfully.

NEXT CHAPTER TOPIC : Control Job Processing (IF THEN ELSE) in


JCL

You might also like