# GDG

A GDG (Generation Data Group) is a collection of datasets that are logically related and share a common naming structure. It's commonly used to manage multiple versions of data over time

GDGs help in organizing datasets that are created on a regular basis like daily reports, backups, or job outputs making version control simple and automated

All datasets in a GDG share a common prefix, known as the GDG base.

* Example: MYDATA.TEST.SAMPLE.GDG is the base name

Each dataset in the group is named using the base followed by a generation and version number.\
Example:

* MYDATA.TEST.SAMPLE.GDG.G0001V00
* MYDATA.TEST.SAMPLE.GDG.G0002V00

A GDG can have up to 255 generations at one time. When the limit is reached, older generations can be automatically deleted, based on how the GDG is defined (e.g., with a limit and a scratch or no-scratch option).

GDG datasets are usually sequential (PS), but they can also be partitioned (PDS)

All generations under a GDG must have the same dataset attributes, such as record format, record length, and dataset organization.

**RULES**

* All generations within a GDG must share the same attributes. This includes DCB parameters like record format and record length, ensuring consistency across the group
* A GDG can have up to 255 generations at a time. If you reach this limit, older generations may be automatically deleted, depending on how the GDG is set up.
* Both DSN (the name of the dataset) and UNIT (where it should be stored) are required when allocating a new generation
* When you're creating a new generation, make sure to set the DISP parameter to (NEW, CATLG, ...) in your JCL. This tells the system to treat it as a brand-new dataset and add it to the catalog.
* GDGs don’t support VSAM datasets

**USES**

* GDGs make it easy to manage files that are created on a schedule daily, weekly, monthly, or even yearly. Each version is stored neatly under the same base name, making everything easier to track.
* GDGs automatically handle file versions for you. This reduces manual effort and prevents mistakes in using the wrong dataset
* You can set a limit on how many generations to keep. When that limit is reached, older versions are automatically removed. This helps manage disk space without manual cleanup
