En esta sección, exploraremos algunos ejemplos prácticos de cómo se utiliza JCL (Job Control Language) en entornos reales. Estos ejemplos te ayudarán a comprender cómo aplicar los conceptos aprendidos en situaciones del mundo real y te proporcionarán una base sólida para desarrollar tus propios trabajos JCL.

Ejemplo 1: Copia de Conjuntos de Datos

Descripción

Este ejemplo muestra cómo copiar un conjunto de datos de entrada a un conjunto de datos de salida utilizando el programa IEBGENER.

Código JCL

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

Explicación

  • COPYJOB: Nombre del trabajo.
  • STEP1: Nombre del paso que ejecuta el programa IEBGENER.
  • SYSPRINT: Define la salida del listado del programa.
  • SYSIN: Indica que no se necesita entrada adicional para el programa.
  • SYSUT1: Define el conjunto de datos de entrada.
  • SYSUT2: Define el conjunto de datos de salida, especificando que se creará un nuevo conjunto de datos con las características dadas.

Ejercicio

Modifica el código anterior para copiar un conjunto de datos llamado USER.INPUT.DATA a un conjunto de datos llamado USER.OUTPUT.DATA.

Solución

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

Ejemplo 2: Ordenación de Conjuntos de Datos

Descripción

Este ejemplo muestra cómo ordenar un conjunto de datos utilizando el programa DFSORT.

Código JCL

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

Explicación

  • SORTJOB: Nombre del trabajo.
  • STEP1: Nombre del paso que ejecuta el programa DFSORT.
  • SYSOUT: Define la salida del listado del programa.
  • SORTIN: Define el conjunto de datos de entrada.
  • SORTOUT: Define el conjunto de datos de salida.
  • SYSIN: Contiene las instrucciones de ordenación. En este caso, se ordena por los primeros 10 caracteres en orden ascendente.

Ejercicio

Modifica el código anterior para ordenar un conjunto de datos llamado USER.UNSORTED.DATA y guardar el resultado en USER.SORTED.DATA.

Solución

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

Ejemplo 3: Ejecución Condicional

Descripción

Este ejemplo muestra cómo ejecutar un paso condicionalmente basado en el código de retorno de un paso anterior.

Código JCL

//CONDJOB  JOB (ACCT),'CONDITIONAL EXEC',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=PROG1
//STEP2    EXEC PGM=PROG2,COND=(4,LT,STEP1)
//STEP3    EXEC PGM=PROG3,COND=(0,EQ,STEP1)
//*

Explicación

  • CONDJOB: Nombre del trabajo.
  • STEP1: Nombre del primer paso que ejecuta el programa PROG1.
  • STEP2: Nombre del segundo paso que ejecuta el programa PROG2 si el código de retorno de STEP1 es menor que 4.
  • STEP3: Nombre del tercer paso que ejecuta el programa PROG3 si el código de retorno de STEP1 es igual a 0.

Ejercicio

Modifica el código anterior para que el segundo paso se ejecute solo si el código de retorno del primer paso es mayor o igual a 8.

Solución

//CONDJOB  JOB (ACCT),'CONDITIONAL EXEC',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=PROG1
//STEP2    EXEC PGM=PROG2,COND=(8,LE,STEP1)
//STEP3    EXEC PGM=PROG3,COND=(0,EQ,STEP1)
//*

Conclusión

En esta sección, hemos explorado varios ejemplos prácticos de cómo se utiliza JCL en entornos reales. Estos ejemplos incluyen la copia de conjuntos de datos, la ordenación de conjuntos de datos y la ejecución condicional de pasos. Al comprender y practicar estos ejemplos, estarás mejor preparado para aplicar JCL en tus propios proyectos y entornos de trabajo.

En el siguiente tema, profundizaremos en estudios de caso específicos que ilustran cómo se utiliza JCL para resolver problemas complejos en el mundo real.

© Copyright 2024. Todos los derechos reservados