GDG is the Generation Data Groupwhich is used to provide the functional and Chronological relationship among the geneartions.
In simple word it is used to take the back up in real time.
Suppose u r executing a program and printing its output in a simple flat file (PS file) and if again after some days u need to run the program and will print its output in the same file or in a different file but here u need to change the output file, when u print the output in the same PS file ur preveous data will be lost as it will over write all the information and if u r printing in some other file then u have to create new PS file... now suppose if u r executing ur program for 50 times then u have to create 50 seperate PS file so that u will not lose any info.
When u will use the GDG for storing the output info then u need not to create new GDG for new info only one GDG u can create and it will automatically creates a new generation whenever u executes the program, it contains maximum 255 generations.
If ID.GDG.FIN is the GDG then in ur JCL u just need to give this GDG with (+1) for creating a next generation.
i.e. ID.JGDG.FIN(+1) when u open this generation it looks like ID.JGDG.FIN.G0001V00