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

  1. Comprendre el flux de treball d'un procés per lots.
  2. Aprendre a definir i executar treballs JCL per a processament per lots.
  3. Gestionar conjunts de dades i utilitzar procediments per simplificar el JCL.
  4. 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

  1. Llegir el conjunt de dades d'entrada.
  2. Processar les transaccions.
  3. Guardar els resultats en un conjunt de dades de sortida.
  4. 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.

//BATCHJOB  JOB (ACCT),'PROCESSAMENT PER LOTS',
//          CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID

Declaració EXEC

La declaració EXEC s'utilitza per executar un programa o procediment. En aquest cas, executarem un programa anomenat PROCPROG.

//STEP1    EXEC PGM=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.

© Copyright 2024. Tots els drets reservats