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 procedimientoMYPROCen 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
COPYPROCque 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
