El procesamiento condicional en JCL permite que un trabajo ejecute diferentes pasos basados en el resultado de pasos anteriores. Esto es útil para manejar errores, realizar tareas alternativas o simplemente optimizar el flujo de trabajo. En esta sección, aprenderemos cómo utilizar las declaraciones condicionales en JCL para controlar el flujo de ejecución de un trabajo.

Conceptos Clave

  1. Código de Retorno (Return Code, RC): Es un valor numérico devuelto por un programa o paso de JCL que indica el estado de finalización. Los códigos de retorno comunes son:

    • 0: Ejecución exitosa.
    • 4: Advertencia (warning).
    • 8: Error.
    • 12: Error severo.
    • 16: Error crítico.
  2. Condición (COND): Es un parámetro utilizado en la declaración EXEC para especificar condiciones bajo las cuales un paso debe ser omitido.

  3. Parámetro COND: Se utiliza para evaluar el código de retorno de pasos anteriores y decidir si un paso debe ejecutarse o no.

Sintaxis del Parámetro COND

La sintaxis básica del parámetro COND es:

//STEPname EXEC PGM=program, COND=(code,operator)
  • code: El código de retorno a evaluar.
  • operator: El operador de comparación (GT, LT, EQ, NE, GE, LE).

Ejemplo de Uso del Parámetro COND

Supongamos que tenemos un trabajo con tres pasos y queremos que el tercer paso se ejecute solo si el segundo paso termina con un código de retorno mayor que 4.

//JOBNAME  JOB (ACCT),'COND EXAMPLE',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=PROG1
//STEP2    EXEC PGM=PROG2
//STEP3    EXEC PGM=PROG3,COND=(4,LT,STEP2)

En este ejemplo:

  • STEP1 y STEP2 se ejecutan sin condiciones.
  • STEP3 se ejecutará solo si el código de retorno de STEP2 es menor que 4.

Ejemplo Completo

A continuación, se muestra un ejemplo completo de un trabajo JCL que utiliza el parámetro COND para controlar el flujo de ejecución:

//CONDJOB  JOB (ACCT),'COND EXAMPLE',CLASS=A,MSGCLASS=A
//*
//STEP1    EXEC PGM=PROG1
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para PROG1
/*
//*
//STEP2    EXEC PGM=PROG2
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para PROG2
/*
//*
//STEP3    EXEC PGM=PROG3,COND=(4,LT,STEP2)
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para PROG3
/*
//*
//STEP4    EXEC PGM=PROG4,COND=(0,EQ,STEP1)
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para PROG4
/*
//

En este ejemplo:

  • STEP3 se ejecutará solo si STEP2 tiene un código de retorno menor que 4.
  • STEP4 se ejecutará solo si STEP1 tiene un código de retorno igual a 0.

Ejercicio Práctico

Ejercicio

Crea un trabajo JCL que contenga tres pasos:

  1. El primer paso ejecuta un programa que siempre devuelve un código de retorno de 0.
  2. El segundo paso ejecuta un programa que siempre devuelve un código de retorno de 8.
  3. El tercer paso debe ejecutarse solo si el segundo paso devuelve un código de retorno mayor que 4.

Solución

//EXERJOB  JOB (ACCT),'COND EXERCISE',CLASS=A,MSGCLASS=A
//*
//STEP1    EXEC PGM=DUMMYPGM1
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para DUMMYPGM1
/*
//*
//STEP2    EXEC PGM=DUMMYPGM2
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para DUMMYPGM2
/*
//*
//STEP3    EXEC PGM=DUMMYPGM3,COND=(4,LT,STEP2)
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  // Instrucciones para DUMMYPGM3
/*
//

En este ejercicio:

  • STEP1 y STEP2 se ejecutan sin condiciones.
  • STEP3 se ejecutará solo si STEP2 tiene un código de retorno mayor que 4.

Resumen

En esta sección, hemos aprendido sobre el procesamiento condicional en JCL, incluyendo el uso del parámetro COND para controlar el flujo de ejecución de los pasos en un trabajo. Hemos visto ejemplos prácticos y hemos realizado un ejercicio para reforzar los conceptos aprendidos. Con esta base, estarás preparado para manejar situaciones más complejas y optimizar tus trabajos JCL de manera efectiva.

© Copyright 2024. Todos los derechos reservados