En aquest estudi de cas, explorarem com utilitzar JCL per gestionar un procés per lots. El processament per lots és una tècnica comuna en entorns mainframe on es processen grans volums de dades en un període de temps determinat, sovint durant la nit o en hores de baixa activitat.
Objectius de l'Estudi de Cas
- Comprendre el flux de treball d'un procés per lots.
- Aprendre a definir i executar treballs JCL per a processament per lots.
- Gestionar conjunts de dades i utilitzar procediments per simplificar el JCL.
- Implementar tècniques de depuració i optimització per a processos per lots.
Escenari
Suposem que treballem en una empresa que necessita processar diàriament un gran volum de transaccions financeres. Aquestes transaccions es guarden en un conjunt de dades d'entrada i el resultat es guarda en un conjunt de dades de sortida després de ser processat.
Requisits
- Llegir el conjunt de dades d'entrada.
- Processar les transaccions.
- Guardar els resultats en un conjunt de dades de sortida.
- Generar un informe de resum.
Estructura del Treball JCL
Declaració JOB
La declaració JOB defineix el treball i proporciona informació general com el nom del treball, la classe, i les prioritats.
Declaració EXEC
La declaració EXEC s'utilitza per executar un programa o procediment. En aquest cas, executarem un programa anomenat PROCPROG
.
Declaració DD
Les declaracions DD defineixen els conjunts de dades que seran utilitzats pel treball. Aquí definim els conjunts de dades d'entrada i sortida.
//INPUT DD DSN=FINANCE.TRANSACTIONS.INPUT,DISP=SHR //OUTPUT DD DSN=FINANCE.TRANSACTIONS.OUTPUT, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(50,10),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000)
Generar un Informe de Resum
Per generar un informe de resum, podem afegir un pas addicional que executi un programa d'informe.
//STEP2 EXEC PGM=SUMMARYPROG //REPORT DD DSN=FINANCE.REPORT.SUMMARY, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=132,BLKSIZE=1320)
Exemple Complet de JCL
//BATCHJOB JOB (ACCT),'PROCESSAMENT PER LOTS', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //* //STEP1 EXEC PGM=PROCPROG //INPUT DD DSN=FINANCE.TRANSACTIONS.INPUT,DISP=SHR //OUTPUT DD DSN=FINANCE.TRANSACTIONS.OUTPUT, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(50,10),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000) //* //STEP2 EXEC PGM=SUMMARYPROG //REPORT DD DSN=FINANCE.REPORT.SUMMARY, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=132,BLKSIZE=1320)
Exercicis Pràctics
Exercici 1: Modificar el Conjunt de Dades d'Entrada
Modifica el JCL per utilitzar un conjunt de dades d'entrada diferent anomenat FINANCE.TRANSACTIONS.NEWINPUT
.
Exercici 2: Afegir un Pas de Còpia
Afegeix un pas addicional al JCL per copiar el conjunt de dades de sortida a un conjunt de dades de còpia de seguretat anomenat FINANCE.TRANSACTIONS.BACKUP
.
Exercici 3: Depuració
Simula un error en el pas STEP1
i utilitza tècniques de depuració per identificar i corregir l'error.
Solucions
Solució a l'Exercici 1
//BATCHJOB JOB (ACCT),'PROCESSAMENT PER LOTS', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //* //STEP1 EXEC PGM=PROCPROG //INPUT DD DSN=FINANCE.TRANSACTIONS.NEWINPUT,DISP=SHR //OUTPUT DD DSN=FINANCE.TRANSACTIONS.OUTPUT, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(50,10),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000) //* //STEP2 EXEC PGM=SUMMARYPROG //REPORT DD DSN=FINANCE.REPORT.SUMMARY, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=132,BLKSIZE=1320)
Solució a l'Exercici 2
//BATCHJOB JOB (ACCT),'PROCESSAMENT PER LOTS', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //* //STEP1 EXEC PGM=PROCPROG //INPUT DD DSN=FINANCE.TRANSACTIONS.INPUT,DISP=SHR //OUTPUT DD DSN=FINANCE.TRANSACTIONS.OUTPUT, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(50,10),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000) //* //STEP2 EXEC PGM=SUMMARYPROG //REPORT DD DSN=FINANCE.REPORT.SUMMARY, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=132,BLKSIZE=1320) //* //STEP3 EXEC PGM=IEBGENER //SYSUT1 DD DSN=FINANCE.TRANSACTIONS.OUTPUT,DISP=SHR //SYSUT2 DD DSN=FINANCE.TRANSACTIONS.BACKUP, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(50,10),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000) //SYSPRINT DD SYSOUT=*
Solució a l'Exercici 3
Per simular un error, podem canviar el nom del programa en STEP1
a un nom incorrecte, per exemple PGM=WRONGPROG
. Després, revisem els missatges d'error generats per identificar el problema.
//BATCHJOB JOB (ACCT),'PROCESSAMENT PER LOTS', // CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //* //STEP1 EXEC PGM=WRONGPROG //INPUT DD DSN=FINANCE.TRANSACTIONS.INPUT,DISP=SHR //OUTPUT DD DSN=FINANCE.TRANSACTIONS.OUTPUT, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(50,10),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=8000) //* //STEP2 EXEC PGM=SUMMARYPROG //REPORT DD DSN=FINANCE.REPORT.SUMMARY, // DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=132,BLKSIZE=1320)
Després de corregir l'error, el JCL hauria de tornar a la seva forma original.
Conclusió
Aquest estudi de cas ha demostrat com utilitzar JCL per gestionar un procés per lots, incloent la definició de conjunts de dades, l'execució de programes, i la generació d'informes. Els exercicis pràctics proporcionen una oportunitat per aplicar els coneixements adquirits i millorar les habilitats en JCL.
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