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

  1. Escriu un JCL per definir una base de GDG amb un límit de 3 generacions.
  2. 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

  1. Escriu un JCL per crear dues noves generacions dins del GDG.
  2. 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.

© Copyright 2024. Tots els drets reservats