En este tema, exploraremos los conceptos de reinicio y punto de control en JCL. Estos mecanismos son esenciales para la gestión de trabajos largos o críticos, permitiendo la recuperación y continuación de trabajos en caso de fallos.
Conceptos Clave
-
Punto de Control (Checkpoint):
- Un punto de control es una marca en el procesamiento de un trabajo que permite guardar el estado actual del trabajo.
- Si el trabajo falla, puede reiniciarse desde el último punto de control en lugar de comenzar desde el principio.
-
Reinicio (Restart):
- El reinicio es el proceso de reanudar un trabajo desde un punto de control específico.
- Esto es útil para evitar la repetición de pasos ya completados y ahorrar tiempo y recursos.
Implementación de Puntos de Control y Reinicio
Declaración de Puntos de Control
Para implementar puntos de control en JCL, se utiliza la declaración CHKPT
en combinación con el sistema de gestión de trabajos (JES2 o JES3). Aquí hay un ejemplo básico:
//STEP1 EXEC PGM=MYPROG,REGION=4M,COND=(0,NE) //SYSCHK DD DSN=MY.CHECKPOINT.DATA,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(1,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
En este ejemplo:
SYSCHK
es el DD que define el conjunto de datos donde se almacenarán los puntos de control.DSN
especifica el nombre del conjunto de datos.DISP
define la disposición del conjunto de datos.UNIT
ySPACE
especifican la unidad y el espacio de almacenamiento.DCB
define las características del conjunto de datos.
Reinicio desde un Punto de Control
Para reiniciar un trabajo desde un punto de control, se utiliza el parámetro RESTART
en la declaración JOB
o EXEC
. Aquí hay un ejemplo:
//MYJOB JOB (ACCT),'RESTART JOB',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID, // RESTART=STEP1 //STEP1 EXEC PGM=MYPROG,REGION=4M,COND=(0,NE) //SYSCHK DD DSN=MY.CHECKPOINT.DATA,DISP=OLD
En este ejemplo:
RESTART=STEP1
indica que el trabajo debe reiniciarse desde el pasoSTEP1
.DISP=OLD
enSYSCHK
asegura que el conjunto de datos de puntos de control existente se utilice para el reinicio.
Ejemplo Práctico
Supongamos que tenemos un trabajo que procesa un gran volumen de datos y queremos implementar puntos de control para poder reiniciar en caso de fallo.
Código JCL Completo
//MYJOB JOB (ACCT),'DATA PROCESSING',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=MYPROG,REGION=4M,COND=(0,NE) //SYSIN DD * // Aquí irían los datos de entrada para el programa /* //SYSOUT DD SYSOUT=* //SYSCHK DD DSN=MY.CHECKPOINT.DATA,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(1,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Reinicio del Trabajo
Si el trabajo falla y necesitamos reiniciarlo, modificamos el JCL de la siguiente manera:
//MYJOB JOB (ACCT),'RESTART JOB',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID, // RESTART=STEP1 //STEP1 EXEC PGM=MYPROG,REGION=4M,COND=(0,NE) //SYSIN DD * // Aquí irían los datos de entrada para el programa /* //SYSOUT DD SYSOUT=* //SYSCHK DD DSN=MY.CHECKPOINT.DATA,DISP=OLD
Ejercicio Práctico
Ejercicio
- Escribe un JCL que ejecute un programa llamado
DATAPROC
y defina un conjunto de datos para puntos de control. - Simula un fallo en el trabajo y escribe el JCL necesario para reiniciar el trabajo desde el punto de control.
Solución
Paso 1: JCL Inicial
//MYJOB JOB (ACCT),'DATA PROCESSING',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID //STEP1 EXEC PGM=DATAPROC,REGION=4M,COND=(0,NE) //SYSIN DD * // Aquí irían los datos de entrada para el programa /* //SYSOUT DD SYSOUT=* //SYSCHK DD DSN=MY.CHECKPOINT.DATA,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(CYL,(1,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
Paso 2: JCL de Reinicio
//MYJOB JOB (ACCT),'RESTART JOB',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID, // RESTART=STEP1 //STEP1 EXEC PGM=DATAPROC,REGION=4M,COND=(0,NE) //SYSIN DD * // Aquí irían los datos de entrada para el programa /* //SYSOUT DD SYSOUT=* //SYSCHK DD DSN=MY.CHECKPOINT.DATA,DISP=OLD
Conclusión
En esta sección, hemos aprendido sobre los conceptos de puntos de control y reinicio en JCL, cómo implementarlos y cómo utilizarlos para gestionar trabajos de manera eficiente. Estos mecanismos son cruciales para asegurar la continuidad y eficiencia en el procesamiento de trabajos largos o críticos. En el siguiente módulo, exploraremos técnicas avanzadas de manejo de errores y depuración en JCL.
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