En este tema, aprenderemos cómo referenciar conjuntos de datos en JCL. La capacidad de referenciar correctamente los conjuntos de datos es crucial para la ejecución exitosa de trabajos en un entorno mainframe. Exploraremos los diferentes métodos y parámetros utilizados para referenciar conjuntos de datos, y proporcionaremos ejemplos prácticos para ilustrar estos conceptos.
Conceptos Clave
- Conjunto de Datos (Data Set): Un conjunto de datos es una colección de datos almacenados en un formato específico en el sistema mainframe. Puede ser un archivo secuencial, un archivo particionado (PDS), o un archivo VSAM, entre otros.
- Declaración DD (Data Definition): La declaración DD se utiliza en JCL para definir y referenciar conjuntos de datos. Es una de las declaraciones más importantes en JCL.
Métodos para Referenciar Conjuntos de Datos
- Referenciando Conjuntos de Datos Existentes
Para referenciar un conjunto de datos existente, utilizamos el parámetro DSN
(Data Set Name) en la declaración DD. Aquí hay un ejemplo básico:
- DSN=EXISTING.DATA.SET: Especifica el nombre del conjunto de datos existente.
- DISP=SHR: Indica que el conjunto de datos se compartirá con otros trabajos que también lo necesiten.
- Referenciando Conjuntos de Datos Temporales
Los conjuntos de datos temporales se crean y utilizan dentro del mismo trabajo JCL. No se almacenan permanentemente y se eliminan al finalizar el trabajo. Se referencian utilizando &&
antes del nombre del conjunto de datos:
- DSN=&&TEMP.DATA.SET: Define un conjunto de datos temporal.
- DISP=(NEW,PASS): Indica que el conjunto de datos es nuevo y se pasará al siguiente paso del trabajo.
- Referenciando Conjuntos de Datos en Diferentes Pasos
Para referenciar un conjunto de datos creado en un paso anterior, utilizamos el parámetro DSN
con el nombre del conjunto de datos temporal:
//STEP1 EXEC PGM=MYPROGRAM //TEMPDS DD DSN=&&TEMP.DATA.SET,DISP=(NEW,PASS) //STEP2 EXEC PGM=ANOTHERPGM //INPUT DD DSN=&&TEMP.DATA.SET,DISP=(OLD,DELETE)
- STEP1: Crea un conjunto de datos temporal.
- STEP2: Referencia el conjunto de datos temporal creado en STEP1.
- Referenciando Conjuntos de Datos Particionados (PDS)
Para referenciar un miembro específico de un conjunto de datos particionado (PDS), utilizamos el nombre del miembro entre paréntesis:
- DSN=MY.PARTITIONED.DATA.SET(MEMBER1): Especifica el miembro
MEMBER1
del conjunto de datos particionadoMY.PARTITIONED.DATA.SET
.
Ejemplo Práctico
A continuación, se muestra un ejemplo completo que ilustra cómo referenciar diferentes tipos de conjuntos de datos en un trabajo JCL:
//MYJOB JOB 'ACCOUNTING INFO',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=MYPROGRAM //INPUT DD DSN=EXISTING.DATA.SET,DISP=SHR //TEMPDS DD DSN=&&TEMP.DATA.SET,DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(CYL,(5,5)) //STEP2 EXEC PGM=ANOTHERPGM //OUTPUT DD DSN=&&TEMP.DATA.SET,DISP=(OLD,DELETE) //LIBRARY DD DSN=MY.PARTITIONED.DATA.SET(MEMBER1),DISP=SHR
- STEP1:
INPUT
referencia un conjunto de datos existente.TEMPDS
crea un conjunto de datos temporal.
- STEP2:
OUTPUT
referencia el conjunto de datos temporal creado en STEP1.LIBRARY
referencia un miembro específico de un conjunto de datos particionado.
Ejercicio Práctico
Ejercicio:
Escribe un trabajo JCL que realice las siguientes acciones:
- Cree un conjunto de datos temporal.
- En un segundo paso, lea el conjunto de datos temporal y escriba su contenido en un conjunto de datos existente.
Solución:
//MYJOB JOB 'ACCOUNTING INFO',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=MYPROGRAM //TEMPDS DD DSN=&&TEMP.DATA.SET,DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(CYL,(5,5)) //STEP2 EXEC PGM=ANOTHERPGM //INPUT DD DSN=&&TEMP.DATA.SET,DISP=(OLD,DELETE) //OUTPUT DD DSN=EXISTING.DATA.SET,DISP=MOD
- STEP1:
TEMPDS
crea un conjunto de datos temporal.
- STEP2:
INPUT
referencia el conjunto de datos temporal creado en STEP1.OUTPUT
escribe el contenido en un conjunto de datos existente.
Conclusión
En esta sección, hemos aprendido cómo referenciar conjuntos de datos en JCL utilizando la declaración DD. Hemos cubierto cómo referenciar conjuntos de datos existentes, temporales, y particionados, y cómo pasar conjuntos de datos entre diferentes pasos de un trabajo. Estos conceptos son fundamentales para la gestión de datos en un entorno mainframe y son esenciales para la creación de trabajos JCL eficientes y efectivos.
En el próximo tema, exploraremos el parámetro de disposición en mayor detalle, lo que nos permitirá controlar cómo se manejan los conjuntos de datos antes, durante y después de la ejecución de un trabajo.
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