En aquest tema, aprendrem com crear i utilitzar procediments en JCL. Els procediments (o PROCs) són una manera eficient de reutilitzar codi JCL, permetent definir una sèrie d'instruccions que es poden invocar des de múltiples treballs JCL. Això ajuda a estalviar temps i a mantenir la consistència en l'execució de tasques repetitives.
Què és un Procediment?
Un procediment en JCL és un conjunt d'instruccions JCL que es defineixen una vegada i es poden utilitzar múltiples vegades en diferents treballs. Els procediments es defineixen en fitxers de llibreria de procediments (PROCLIB) i es poden invocar mitjançant la instrucció EXEC
.
Avantatges d'Utilitzar Procediments
- Reutilització del Codi: Permet definir una vegada i utilitzar múltiples vegades.
- Manteniment Fàcil: Canvis en el procediment es reflecteixen en tots els treballs que l'utilitzen.
- Consistència: Assegura que les mateixes instruccions s'executin de manera consistent en diferents treballs.
Crear un Procediment
Un procediment es defineix en un fitxer de llibreria de procediments. A continuació es mostra un exemple de com definir un procediment senzill:
//MYPROC PROC //STEP1 EXEC PGM=IEFBR14 //DD1 DD DSN=MY.DATA.SET,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,1),UNIT=SYSDA //STEP2 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DSN=MY.DATA.SET,DISP=SHR //SYSUT2 DD SYSOUT=* //
Explicació del Codi
//MYPROC PROC
: Defineix el nom del procediment comMYPROC
.//STEP1 EXEC PGM=IEFBR14
: Defineix un pas que executa el programaIEFBR14
.//DD1 DD DSN=MY.DATA.SET,DISP=(NEW,CATLG,DELETE),...
: Defineix un conjunt de dades nou.//STEP2 EXEC PGM=IEBGENER
: Defineix un segon pas que executa el programaIEBGENER
.//SYSPRINT DD SYSOUT=*
: Defineix la sortida del sistema.//SYSIN DD DUMMY
: Defineix una entrada fictícia.//SYSUT1 DD DSN=MY.DATA.SET,DISP=SHR
: Defineix un conjunt de dades existent.//SYSUT2 DD SYSOUT=*
: Defineix la sortida del sistema.
Utilitzar un Procediment
Per utilitzar un procediment en un treball JCL, es fa servir la instrucció EXEC
amb el nom del procediment. A continuació es mostra un exemple de com invocar el procediment MYPROC
:
Explicació del Codi
//MYJOB JOB (ACCT),'EXEMPLE',CLASS=A,MSGCLASS=A
: Defineix un treball JCL.//STEP1 EXEC MYPROC
: Invoca el procedimentMYPROC
.
Sobreescriure Paràmetres en un Procediment
És possible sobreescriure paràmetres en un procediment quan s'invoca. Això es fa especificant els nous valors en la instrucció EXEC
. A continuació es mostra un exemple:
//MYJOB JOB (ACCT),'EXEMPLE',CLASS=A,MSGCLASS=A //STEP1 EXEC MYPROC //STEP1.DD1 DD DSN=NEW.DATA.SET,DISP=(NEW,CATLG,DELETE)
Explicació del Codi
//STEP1.DD1 DD DSN=NEW.DATA.SET,DISP=(NEW,CATLG,DELETE)
: Sobreescriu el conjunt de dadesDD1
definit en el procedimentMYPROC
amb un nou conjunt de dadesNEW.DATA.SET
.
Exercici Pràctic
Exercici
- Defineix un procediment anomenat
COPYPROC
que copiï un conjunt de dades a un altre. - Utilitza el procediment
COPYPROC
en un treball JCL. - Sobreescriu el conjunt de dades d'entrada i sortida en la invocació del procediment.
Solució
Definició del Procediment
//COPYPROC PROC //COPYSTEP EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSIN DD DUMMY //SYSUT1 DD DSN=INPUT.DATA.SET,DISP=SHR //SYSUT2 DD DSN=OUTPUT.DATA.SET,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,1),UNIT=SYSDA //
Utilització del Procediment
//MYJOB JOB (ACCT),'EXEMPLE',CLASS=A,MSGCLASS=A //STEP1 EXEC COPYPROC //STEP1.SYSUT1 DD DSN=MY.INPUT.DATA,DISP=SHR //STEP1.SYSUT2 DD DSN=MY.OUTPUT.DATA,DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,1),UNIT=SYSDA
Explicació de la Solució
- Definició del Procediment:
COPYPROC
defineix un pasCOPYSTEP
que utilitzaIEBGENER
per copiar dades. - Utilització del Procediment:
MYJOB
invocaCOPYPROC
i sobreescriu els conjunts de dades d'entrada (SYSUT1
) i sortida (SYSUT2
).
Conclusió
En aquest tema, hem après com crear i utilitzar procediments en JCL. Els procediments són una eina poderosa per reutilitzar codi i mantenir la consistència en els treballs JCL. També hem vist com sobreescriure paràmetres en la invocació d'un procediment per adaptar-lo a necessitats específiques. Amb aquesta base, estàs preparat per explorar paràmetres simbòlics en el següent tema.
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