En aquest tema, explorarem diversos exemples pràctics de JCL (Job Control Language) que es poden trobar en entorns reals. Aquests exemples ajudaran a consolidar els coneixements adquirits en els mòduls anteriors i proporcionaran una visió pràctica de com s'utilitza JCL en situacions del món real.

Exemple 1: Copiar un Conjunt de Dades

Aquest exemple mostra com copiar un conjunt de dades d'entrada a un conjunt de dades de sortida utilitzant la utilitat IEBGENER.

Codi JCL

//COPYJOB  JOB (ACCT),'COPY DATASET',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSN=INPUT.DATASET,DISP=SHR
//SYSUT2   DD  DSN=OUTPUT.DATASET,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(5,1)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD  DUMMY

Explicació

  • COPYJOB: La declaració JOB defineix el treball amb un nom, un identificador de compte i altres paràmetres.
  • STEP1: La declaració EXEC especifica que s'executarà el programa IEBGENER.
  • SYSPRINT: Defineix on s'enviaran els missatges de sortida del programa.
  • SYSUT1: Defineix el conjunt de dades d'entrada.
  • SYSUT2: Defineix el conjunt de dades de sortida, incloent-hi la seva disposició, espai i característiques de control de dades.
  • SYSIN: Defineix que no hi ha entrada addicional per al programa (DUMMY).

Exemple 2: Ordenar un Conjunt de Dades

Aquest exemple mostra com ordenar un conjunt de dades utilitzant la utilitat SORT.

Codi JCL

//SORTJOB  JOB (ACCT),'SORT DATASET',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=SORT
//SYSOUT   DD  SYSOUT=A
//SORTIN   DD  DSN=INPUT.DATASET,DISP=SHR
//SORTOUT  DD  DSN=OUTPUT.DATASET,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(5,1)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD  *
  SORT FIELDS=(1,10,CH,A)
/*

Explicació

  • SORTJOB: La declaració JOB defineix el treball amb un nom, un identificador de compte i altres paràmetres.
  • STEP1: La declaració EXEC especifica que s'executarà el programa SORT.
  • SYSOUT: Defineix on s'enviaran els missatges de sortida del programa.
  • SORTIN: Defineix el conjunt de dades d'entrada.
  • SORTOUT: Defineix el conjunt de dades de sortida, incloent-hi la seva disposició, espai i característiques de control de dades.
  • SYSIN: Defineix les instruccions de sort. En aquest cas, s'ordena el conjunt de dades per les primeres 10 posicions en ordre ascendent.

Exemple 3: Executar un Procediment

Aquest exemple mostra com executar un procediment JCL definit prèviament.

Procediment JCL (PROC)

//MYPROC   PROC
//STEP1    EXEC PGM=IEFBR14
//DD1      DD  DSN=MY.DATASET,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(5,1)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

Codi JCL per Executar el Procediment

//RUNPROC  JOB (ACCT),'RUN PROCEDURE',CLASS=A,MSGCLASS=A
//STEP1    EXEC MYPROC

Explicació

  • MYPROC: Defineix un procediment amb un pas que executa el programa IEFBR14 (un programa buit) i defineix un conjunt de dades.
  • RUNPROC: La declaració JOB defineix el treball amb un nom, un identificador de compte i altres paràmetres.
  • STEP1: La declaració EXEC especifica que s'executarà el procediment MYPROC.

Exercicis Pràctics

Exercici 1: Crear un Conjunt de Dades

Escriu un JCL que creï un conjunt de dades nou anomenat USER.DATASET.NEW amb les següents característiques:

  • RECFM=FB
  • LRECL=100
  • BLKSIZE=1000
  • Espai: 10 cilindres primaris i 5 secundaris

Solució

//CREATE   JOB (ACCT),'CREATE DATASET',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=IEFBR14
//DD1      DD  DSN=USER.DATASET.NEW,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(10,5)),
//             DCB=(RECFM=FB,LRECL=100,BLKSIZE=1000)

Exercici 2: Ordenar un Conjunt de Dades per un Camp Diferent

Escriu un JCL que ordeni el conjunt de dades USER.DATASET.INPUT per les posicions 11 a 20 en ordre descendent i guardi el resultat en USER.DATASET.SORTED.

Solució

//SORTJOB  JOB (ACCT),'SORT DATASET',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=SORT
//SYSOUT   DD  SYSOUT=A
//SORTIN   DD  DSN=USER.DATASET.INPUT,DISP=SHR
//SORTOUT  DD  DSN=USER.DATASET.SORTED,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(5,1)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD  *
  SORT FIELDS=(11,10,CH,D)
/*

Conclusió

En aquesta secció, hem vist diversos exemples pràctics de JCL que es poden trobar en entorns reals. Aquests exemples inclouen la còpia de conjunts de dades, l'ordenació de conjunts de dades i l'execució de procediments. A més, hem proporcionat exercicis pràctics per reforçar els conceptes apresos. Amb aquests coneixements, estàs preparat per aplicar JCL en situacions del món real i resoldre problemes comuns en la gestió de treballs en sistemes mainframe.

© Copyright 2024. Tots els drets reservats