En este estudio de caso, exploraremos cómo utilizar JCL para gestionar datos de manera eficiente en un entorno de mainframe. Veremos cómo definir, referenciar y manipular conjuntos de datos, así como cómo optimizar el rendimiento de los trabajos que manejan grandes volúmenes de datos.

Objetivos del Estudio de Caso

  1. Definir y crear conjuntos de datos: Aprender a definir y crear conjuntos de datos permanentes y temporales.
  2. Manipular conjuntos de datos: Realizar operaciones comunes como copiar, mover y eliminar conjuntos de datos.
  3. Optimizar el rendimiento: Aplicar técnicas para mejorar la eficiencia de los trabajos que gestionan datos.

Paso 1: Definir y Crear Conjuntos de Datos

Definición de Conjuntos de Datos

En JCL, los conjuntos de datos se definen utilizando la declaración DD. Aquí hay un ejemplo básico de cómo definir un conjunto de datos:

//DEFDS    JOB  (ACCT),'DEFINE DATASET',CLASS=A,MSGCLASS=X
//STEP1    EXEC PGM=IEFBR14
//DD1      DD   DSN=MY.DATA.SET, 
//             DISP=(NEW,CATLG,DELETE), 
//             SPACE=(CYL,(5,1)), 
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

Explicación del Código

  • JOB Statement: Define el trabajo con un nombre y parámetros de contabilidad.
  • EXEC Statement: Ejecuta el programa IEFBR14, que es un programa de utilidad que no realiza ninguna operación, pero se usa para definir conjuntos de datos.
  • DD Statement: Define el conjunto de datos MY.DATA.SET con los siguientes parámetros:
    • DISP=(NEW,CATLG,DELETE): Indica que el conjunto de datos es nuevo, se catalogará si el trabajo se completa con éxito y se eliminará si el trabajo falla.
    • SPACE=(CYL,(5,1)): Asigna espacio en cilindros, con una cantidad primaria de 5 cilindros y una cantidad secundaria de 1 cilindro.
    • DCB=(RECFM=FB,LRECL=80,BLKSIZE=800): Define las características del conjunto de datos, incluyendo el formato de registro (FB), la longitud del registro (80) y el tamaño del bloque (800).

Paso 2: Manipular Conjuntos de Datos

Copiar Conjuntos de Datos

Para copiar un conjunto de datos, se puede utilizar el programa IEBGENER. Aquí hay un ejemplo:

//COPYDS   JOB  (ACCT),'COPY DATASET',CLASS=A,MSGCLASS=X
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD   SYSOUT=*
//SYSUT1   DD   DSN=MY.DATA.SET,DISP=SHR
//SYSUT2   DD   DSN=MY.COPY.DATA.SET,DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(5,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD   DUMMY

Explicación del Código

  • EXEC Statement: Ejecuta el programa IEBGENER, que se utiliza para copiar conjuntos de datos.
  • SYSUT1 DD Statement: Define el conjunto de datos de entrada MY.DATA.SET.
  • SYSUT2 DD Statement: Define el conjunto de datos de salida MY.COPY.DATA.SET con parámetros similares a los del conjunto de datos original.
  • SYSIN DD Statement: Indica que no se necesita entrada adicional para el programa IEBGENER.

Eliminar Conjuntos de Datos

Para eliminar un conjunto de datos, se puede utilizar el programa IEFBR14 con la declaración DD adecuada:

//DELDS    JOB  (ACCT),'DELETE DATASET',CLASS=A,MSGCLASS=X
//STEP1    EXEC PGM=IEFBR14
//DD1      DD   DSN=MY.COPY.DATA.SET,DISP=(OLD,DELETE)

Explicación del Código

  • DD Statement: Define el conjunto de datos MY.COPY.DATA.SET y especifica que debe ser eliminado (DISP=(OLD,DELETE)).

Paso 3: Optimizar el Rendimiento

Uso Eficiente de Conjuntos de Datos

Para mejorar el rendimiento, es importante utilizar los conjuntos de datos de manera eficiente. Aquí hay algunos consejos:

  • Asignar el espacio adecuadamente: Asegúrate de asignar suficiente espacio para evitar errores de espacio insuficiente, pero no tanto como para desperdiciar recursos.
  • Elegir el tamaño de bloque adecuado: Un tamaño de bloque más grande puede reducir el número de operaciones de E/S, mejorando el rendimiento.

Procesamiento Paralelo

El procesamiento paralelo puede mejorar significativamente el rendimiento de los trabajos que manejan grandes volúmenes de datos. Aquí hay un ejemplo de cómo dividir un trabajo en varios pasos que se ejecutan en paralelo:

//PARALLEL JOB  (ACCT),'PARALLEL PROCESSING',CLASS=A,MSGCLASS=X
//STEP1    EXEC PGM=PROG1
//STEP2    EXEC PGM=PROG2,COND=(0,LT)
//STEP3    EXEC PGM=PROG3,COND=(0,LT)

Explicación del Código

  • COND Parameter: El parámetro COND se utiliza para controlar la ejecución condicional de los pasos. En este caso, STEP2 y STEP3 se ejecutarán solo si STEP1 se completa con éxito (COND=(0,LT)).

Ejercicio Práctico

Ejercicio

  1. Define un conjunto de datos llamado STUDENT.DATA.SET con las siguientes características:

    • Espacio: 10 cilindros primarios y 2 cilindros secundarios.
    • Formato de registro: FB.
    • Longitud del registro: 100.
    • Tamaño del bloque: 1000.
  2. Copia el conjunto de datos STUDENT.DATA.SET a un nuevo conjunto de datos llamado STUDENT.COPY.DATA.SET.

  3. Elimina el conjunto de datos STUDENT.COPY.DATA.SET.

Solución

//EXERCISE JOB  (ACCT),'JCL EXERCISE',CLASS=A,MSGCLASS=X
//* Step 1: Define the dataset
//STEP1    EXEC PGM=IEFBR14
//DD1      DD   DSN=STUDENT.DATA.SET, 
//             DISP=(NEW,CATLG,DELETE), 
//             SPACE=(CYL,(10,2)), 
//             DCB=(RECFM=FB,LRECL=100,BLKSIZE=1000)
//* Step 2: Copy the dataset
//STEP2    EXEC PGM=IEBGENER
//SYSPRINT DD   SYSOUT=*
//SYSUT1   DD   DSN=STUDENT.DATA.SET,DISP=SHR
//SYSUT2   DD   DSN=STUDENT.COPY.DATA.SET,DISP=(NEW,CATLG,DELETE),
//             SPACE=(CYL,(10,2)),DCB=(RECFM=FB,LRECL=100,BLKSIZE=1000)
//SYSIN    DD   DUMMY
//* Step 3: Delete the copied dataset
//STEP3    EXEC PGM=IEFBR14
//DD1      DD   DSN=STUDENT.COPY.DATA.SET,DISP=(OLD,DELETE)

Conclusión

En este estudio de caso, hemos aprendido a definir, crear, copiar y eliminar conjuntos de datos utilizando JCL. También hemos explorado técnicas para optimizar el rendimiento de los trabajos que gestionan datos. Estos conceptos son fundamentales para gestionar datos de manera eficiente en un entorno de mainframe. Con esta base, estarás mejor preparado para enfrentar desafíos más complejos en la gestión de datos.

© Copyright 2024. Todos los derechos reservados