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.
Curso de JCL (Lenguaje de Control de Trabajos)
Módulo 1: Introducción a JCL
- ¿Qué es JCL?
- Estructura Básica de un Trabajo JCL
- Visión General de las Declaraciones JCL
- Ejecutando Tu Primer Trabajo JCL
Módulo 2: Declaraciones y Sintaxis de JCL
Módulo 3: Declaraciones de Definición de Datos (DD)
- Definiendo Conjuntos de Datos
- Conjuntos de Datos Temporales
- Referenciando Conjuntos de Datos
- Parámetro de Disposición
Módulo 4: Procedimientos y Parámetros Simbólicos
- Introducción a los Procedimientos
- Creando y Usando Procedimientos
- Parámetros Simbólicos
- Sobrescribiendo Parámetros
Módulo 5: Conceptos Avanzados de JCL
- Procesamiento Condicional
- Declaraciones JCLLIB e INCLUDE
- Grupos de Datos de Generación (GDGs)
- Reinicio y Punto de Control
Módulo 6: Manejo de Errores y Depuración
- Errores Comunes de JCL
- Interpretando Mensajes de Error de JCL
- Técnicas de Depuración
- Usando JES2/JES3 para Solución de Problemas
Módulo 7: Rendimiento y Optimización
- Optimizando Trabajos JCL
- Uso Eficiente de Conjuntos de Datos
- Procesamiento Paralelo
- Mejores Prácticas