En este módulo, aprenderemos sobre los procedimientos en JCL (Job Control Language). Los procedimientos son una herramienta poderosa que permite la reutilización de código y la simplificación de trabajos complejos. A lo largo de esta sección, cubriremos los conceptos básicos de los procedimientos, cómo crearlos y usarlos, y cómo pueden mejorar la eficiencia y la legibilidad de tus trabajos JCL.
¿Qué es un Procedimiento en JCL?
Un procedimiento en JCL es un conjunto de declaraciones JCL que se agrupan en un solo bloque y se pueden invocar desde otros trabajos JCL. Los procedimientos permiten:
- Reutilización de Código: Puedes definir un conjunto de pasos una vez y reutilizarlos en múltiples trabajos.
- Mantenimiento Simplificado: Al centralizar el código común en un procedimiento, cualquier cambio solo necesita hacerse en un lugar.
- Claridad y Organización: Los trabajos JCL pueden ser más cortos y fáciles de leer al delegar tareas repetitivas a procedimientos.
Estructura de un Procedimiento
Un procedimiento se define en una biblioteca de procedimientos (PROCLIB) y tiene una estructura similar a un trabajo JCL, pero con algunas diferencias clave. Aquí hay un ejemplo básico de un procedimiento:
//MYPROC PROC //STEP1 EXEC PGM=IEFBR14 //STEP2 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=INPUT.FILE,DISP=SHR //SYSUT2 DD DSN=OUTPUT.FILE,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(1,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Desglose del Procedimiento
//MYPROC PROC
: Esta línea define el inicio del procedimiento llamadoMYPROC
.//STEP1 EXEC PGM=IEFBR14
: Este es un paso dentro del procedimiento que ejecuta el programaIEFBR14
.//STEP2 EXEC PGM=IEBGENER
: Otro paso que ejecuta el programaIEBGENER
.//SYSPRINT DD SYSOUT=*
: Una declaración DD que define la salida del sistema.//SYSUT1 DD DSN=INPUT.FILE,DISP=SHR
: Una declaración DD que define un conjunto de datos de entrada.//SYSUT2 DD DSN=OUTPUT.FILE,DISP=(NEW,CATLG,DELETE),...
: Una declaración DD que define un conjunto de datos de salida.
Invocando un Procedimiento
Para usar un procedimiento en un trabajo JCL, simplemente lo invocas con la declaración EXEC
. Aquí hay un ejemplo de cómo invocar el procedimiento MYPROC
definido anteriormente:
Desglose de la Invocación
//MYJOB JOB (ACCT),'Example Job'
: Define un trabajo JCL llamadoMYJOB
.//STEP1 EXEC MYPROC
: Invoca el procedimientoMYPROC
en el pasoSTEP1
.
Ejemplo Práctico
Vamos a crear un procedimiento más complejo y luego invocarlo desde un trabajo JCL.
Definición del Procedimiento
//BACKUP PROC //BACKUP1 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //SYSIN DD * COPY INDD=SYSUT1,OUTDD=SYSUT2 /* //SYSUT1 DD DSN=SOURCE.DATASET,DISP=SHR //SYSUT2 DD DSN=BACKUP.DATASET,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(5,5)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Invocación del Procedimiento
Ejercicio Práctico
Ejercicio 1: Crear e Invocar un Procedimiento
- Definir un Procedimiento: Crea un procedimiento llamado
COPYPROC
que copie un conjunto de datos de entrada a un conjunto de datos de salida usando el programaIEBGENER
. - Invocar el Procedimiento: Escribe un trabajo JCL que invoque el procedimiento
COPYPROC
.
Solución
Definición del Procedimiento
//COPYPROC PROC //COPYSTEP EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=INPUT.DATASET,DISP=SHR //SYSUT2 DD DSN=OUTPUT.DATASET,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(1,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Invocación del Procedimiento
Conclusión
En esta sección, hemos aprendido qué son los procedimientos en JCL, cómo se estructuran y cómo se invocan desde un trabajo JCL. Los procedimientos son una herramienta esencial para la reutilización de código y la simplificación de trabajos complejos. En el próximo tema, profundizaremos en cómo crear y usar procedimientos de manera más avanzada, incluyendo el uso de parámetros simbólicos y la sobrescritura de parámetros.
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