Introducció als GDGs
Els Grups de Dades de Generació (GDGs) són una característica poderosa del JCL que permet gestionar conjunts de dades seqüencials que es creen i utilitzen en una seqüència temporal. Cada conjunt de dades dins d'un GDG es coneix com una generació i es pot referenciar fàcilment per la seva posició relativa dins del grup.
Conceptes Clau
- Generació: Un conjunt de dades individual dins d'un GDG.
- GDG Base: El nom del grup de dades que actua com a contenidor per a les generacions.
- Número de Generació: Un identificador únic per a cada generació dins del GDG.
Beneficis dels GDGs
- Organització: Facilita la gestió de conjunts de dades seqüencials.
- Automatització: Permet la creació i l'accés automàtic a les generacions més recents.
- Històric: Manté un registre històric de les dades.
Creació d'un GDG
Definició de la Base del GDG
Abans de crear generacions, cal definir la base del GDG. Això es fa utilitzant el llenguatge de definició de recursos (JCL) i el sistema de gestió de catàlegs.
//DEFINEGDG JOB (ACCT),'DEFINE GDG BASE', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A //SYSIN DD * DEFINE GDG (NAME(MY.GDG.BASE) LIMIT(5) SCRATCH) /*
Explicació del Codi
- DEFINE GDG: Inicia la definició del GDG.
- NAME(MY.GDG.BASE): Especifica el nom de la base del GDG.
- LIMIT(5): Defineix el nombre màxim de generacions que es poden mantenir.
- SCRATCH: Indica que les generacions més antigues es suprimiran automàticament quan es creïn noves generacions.
Creació de Generacions
Un cop definida la base del GDG, es poden crear noves generacions utilitzant la declaració DD
en el JCL.
//CREATEGDG JOB (ACCT),'CREATE GDG', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=IEFBR14 //NEWGEN DD DSN=MY.GDG.BASE(+1), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
Explicació del Codi
- DSN=MY.GDG.BASE(+1): Especifica que es crearà una nova generació dins del GDG.
- DISP=(NEW,CATLG,DELETE): Indica que el conjunt de dades és nou, es catalogarà i es suprimirà si hi ha un error.
- SPACE: Defineix l'espai d'emmagatzematge per al conjunt de dades.
- DCB: Especifica les característiques del conjunt de dades (longitud de registre, format de registre, mida de bloc).
Accés a Generacions Existents
Per accedir a generacions existents, es poden utilitzar números de generació relatius o absoluts.
Exemple d'Accés Relatiu
//ACCESSGDG JOB (ACCT),'ACCESS GDG', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=MYPROG //INPUT DD DSN=MY.GDG.BASE(0),DISP=SHR
Explicació del Codi
- DSN=MY.GDG.BASE(0): Especifica l'accés a l'última generació creada.
- DISP=SHR: Indica que el conjunt de dades es compartirà.
Exemple d'Accés Absolut
//ACCESSGDG JOB (ACCT),'ACCESS GDG', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=MYPROG //INPUT DD DSN=MY.GDG.BASE.G0001V00,DISP=SHR
Explicació del Codi
- DSN=MY.GDG.BASE.G0001V00: Especifica l'accés a una generació específica utilitzant el seu número absolut.
Exercicis Pràctics
Exercici 1: Crear una Base de GDG
- Escriu un JCL per definir una base de GDG amb un límit de 3 generacions.
- Executa el JCL i verifica que la base s'ha creat correctament.
Solució
//DEFINEGDG JOB (ACCT),'DEFINE GDG BASE', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A //SYSIN DD * DEFINE GDG (NAME(MY.GDG.BASE) LIMIT(3) SCRATCH) /*
Exercici 2: Crear i Accedir a Generacions
- Escriu un JCL per crear dues noves generacions dins del GDG.
- Escriu un JCL per accedir a la generació més recent.
Solució
//CREATEGDG1 JOB (ACCT),'CREATE GDG', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=IEFBR14 //NEWGEN DD DSN=MY.GDG.BASE(+1), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //CREATEGDG2 JOB (ACCT),'CREATE GDG', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=IEFBR14 //NEWGEN DD DSN=MY.GDG.BASE(+1), // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1),RLSE), // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) //ACCESSGDG JOB (ACCT),'ACCESS GDG', // CLASS=A,MSGCLASS=A //STEP1 EXEC PGM=MYPROG //INPUT DD DSN=MY.GDG.BASE(0),DISP=SHR
Conclusió
Els Grups de Dades de Generació (GDGs) són una eina essencial per a la gestió de conjunts de dades seqüencials en JCL. Permeten una organització eficient, automatització i manteniment d'un històric de dades. Amb la pràctica, els programadors poden utilitzar GDGs per simplificar i optimitzar els seus processos de treball.
En el següent tema, explorarem el Reinici i Punt de Control, una altra característica avançada del JCL que permet gestionar i recuperar treballs en cas d'errors o interrupcions.
Curs de JCL (Job Control Language)
Mòdul 1: Introducció al JCL
- Què és el JCL?
- Estructura Bàsica d'un Treball JCL
- Visió General de les Declaracions JCL
- Executar el Teu Primer Treball JCL
Mòdul 2: Declaracions i Sintaxi del JCL
Mòdul 3: Declaracions de Definició de Dades (DD)
- Definició de Conjunts de Dades
- Conjunts de Dades Temporals
- Referència a Conjunts de Dades
- Paràmetre de Disposició
Mòdul 4: Procediments i Paràmetres Simbòlics
- Introducció als Procediments
- Crear i Utilitzar Procediments
- Paràmetres Simbòlics
- Sobreescriure Paràmetres
Mòdul 5: Conceptes Avançats de JCL
- Processament Condicional
- Declaracions JCLLIB i INCLUDE
- Grups de Dades de Generació (GDGs)
- Reinici i Punt de Control
Mòdul 6: Gestió d'Errors i Depuració
- Errors Comuns de JCL
- Interpretar Missatges d'Error de JCL
- Tècniques de Depuració
- Utilitzar JES2/JES3 per a la Resolució de Problemes