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 llamado MYPROC.
  • //STEP1 EXEC PGM=IEFBR14: Este es un paso dentro del procedimiento que ejecuta el programa IEFBR14.
  • //STEP2 EXEC PGM=IEBGENER: Otro paso que ejecuta el programa IEBGENER.
  • //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:

//MYJOB  JOB (ACCT),'Example Job'
//STEP1  EXEC MYPROC

Desglose de la Invocación

  • //MYJOB JOB (ACCT),'Example Job': Define un trabajo JCL llamado MYJOB.
  • //STEP1 EXEC MYPROC: Invoca el procedimiento MYPROC en el paso STEP1.

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

//DAILYJOB JOB (ACCT),'Daily Backup'
//BACKUP1  EXEC BACKUP

Ejercicio Práctico

Ejercicio 1: Crear e Invocar un Procedimiento

  1. 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 programa IEBGENER.
  2. 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

//COPYJOB JOB (ACCT),'Copy Job'
//STEP1   EXEC COPYPROC

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.

© Copyright 2024. Todos los derechos reservados