Introducción

El Lenguaje de Control de Trabajos (JCL, por sus siglas en inglés) es un lenguaje de scripting utilizado en sistemas mainframe de IBM para describir trabajos por lotes. JCL permite a los usuarios definir y controlar la ejecución de programas y la gestión de recursos en un entorno de mainframe. Es una herramienta esencial para la automatización de tareas y la gestión eficiente de grandes volúmenes de datos.

Objetivos de Aprendizaje

Al final de esta sección, deberías ser capaz de:

  1. Comprender la función y la importancia de JCL en un entorno de mainframe.
  2. Identificar los componentes básicos de un trabajo JCL.
  3. Reconocer la estructura general de un script JCL.

Conceptos Clave

  1. Función de JCL

JCL se utiliza para:

  • Definir trabajos por lotes: Especificar qué programas ejecutar y en qué secuencia.
  • Asignar recursos: Indicar qué archivos y dispositivos se necesitan.
  • Controlar la ejecución: Establecer condiciones para la ejecución y manejo de errores.

  1. Importancia de JCL

  • Automatización: Permite la ejecución automática de tareas repetitivas.
  • Eficiencia: Optimiza el uso de recursos del sistema.
  • Control: Proporciona un control detallado sobre la ejecución de trabajos y la gestión de datos.

  1. Componentes Básicos de un Trabajo JCL

Un trabajo JCL típicamente incluye:

  • Declaración JOB: Define el inicio de un trabajo y proporciona información general.
  • Declaración EXEC: Especifica qué programa o procedimiento ejecutar.
  • Declaración DD: Describe los archivos y dispositivos necesarios para el trabajo.

Estructura General de un Script JCL

Un script JCL se compone de varias declaraciones, cada una con un propósito específico. A continuación se muestra un ejemplo básico de un script JCL:

//JOBNAME  JOB (ACCT),'PROGRAMMER NAME',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//STEP1    EXEC PGM=MYPROGRAM
//INPUT    DD  DSN=MY.INPUT.DATASET,DISP=SHR
//OUTPUT   DD  DSN=MY.OUTPUT.DATASET,DISP=(NEW,CATLG,DELETE),
//             UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

Explicación del Ejemplo

  1. Declaración JOB:

    //JOBNAME  JOB (ACCT),'PROGRAMMER NAME',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
    
    • JOBNAME: Nombre del trabajo.
    • (ACCT): Información de la cuenta.
    • 'PROGRAMMER NAME': Nombre del programador.
    • CLASS=A: Clase de trabajo.
    • MSGCLASS=X: Clase de mensajes.
    • NOTIFY=&SYSUID: Notificación al usuario del sistema.
  2. Declaración EXEC:

    //STEP1    EXEC PGM=MYPROGRAM
    
    • STEP1: Nombre del paso.
    • PGM=MYPROGRAM: Programa a ejecutar.
  3. Declaración DD:

    //INPUT    DD  DSN=MY.INPUT.DATASET,DISP=SHR
    //OUTPUT   DD  DSN=MY.OUTPUT.DATASET,DISP=(NEW,CATLG,DELETE),
    //             UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE),
    //             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
    
    • INPUT: Nombre del archivo de entrada.
    • DSN=MY.INPUT.DATASET: Nombre del conjunto de datos.
    • DISP=SHR: Disposición del archivo (compartido).
    • OUTPUT: Nombre del archivo de salida.
    • DSN=MY.OUTPUT.DATASET: Nombre del conjunto de datos de salida.
    • DISP=(NEW,CATLG,DELETE): Disposición del archivo (nuevo, catalogar, eliminar si falla).
    • UNIT=SYSDA: Unidad de almacenamiento.
    • SPACE=(CYL,(5,5),RLSE): Espacio asignado (cilindros).
    • DCB=(RECFM=FB,LRECL=80,BLKSIZE=800): Control de datos (formato de registro, longitud de registro, tamaño de bloque).

Ejercicio Práctico

Ejercicio 1: Crear un Script JCL Básico

Instrucciones:

  1. Escribe un script JCL que ejecute un programa llamado TESTPROG.
  2. Define un archivo de entrada llamado TEST.INPUT.DATASET con disposición compartida.
  3. Define un archivo de salida llamado TEST.OUTPUT.DATASET con disposición nueva, catalogar y eliminar si falla.

Solución:

//TESTJOB  JOB (ACCT),'STUDENT NAME',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//STEP1    EXEC PGM=TESTPROG
//INPUT    DD  DSN=TEST.INPUT.DATASET,DISP=SHR
//OUTPUT   DD  DSN=TEST.OUTPUT.DATASET,DISP=(NEW,CATLG,DELETE),
//             UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

Conclusión

En esta sección, hemos aprendido qué es JCL, su función e importancia en un entorno de mainframe, y los componentes básicos de un trabajo JCL. También hemos visto un ejemplo práctico de un script JCL y hemos realizado un ejercicio para reforzar los conceptos aprendidos. En la próxima sección, profundizaremos en la estructura básica de un trabajo JCL.

© Copyright 2024. Todos los derechos reservados