Un JCL, o Job Control Language, es crucial en el entorno de mainframes, permitiendo gestionar y controlar la ejecución de tareas. ¿No estás seguro por dónde empezar? No te preocupes, en este escrito te desglosamos la estructura básica de un JCL para que puedas comprender cómo se configura y ejecuta un job correctamente.
¿Cómo inicializo un JCL?
Cada JCL comienza con una sentencia JOB, marcando el inicio del script. Este encabezado es esencial y debe contener varios parámetros clave que delinean cómo se ejecutará la tarea.
Parámetros posicionales y de palabra clave (keyword):
Parámetro posicional: Aunque opcional, es útil para auditorías o referencias internas.
Parámetro keyword: Como CLASS, NOTIFY, MSGCLASS, entre otros, definen propiedades específicas de ejecución.
Composición de un JCL:
Un JCL puede tener hasta 255 pasos, cada uno empezando con la sentencia EXEC seguida del programa que se llama a ejecutar.
Copiando y creando un nuevo JCL:
Utiliza comandos como C99 99 para copiar el contenido a un nuevo miembro para modificaciones posteriores.
Elimina líneas innecesarias con D99 99 para limpiar el template previo antes de codificar desde cero.
¿Cómo codifico mi primer JCL?
Inicio con las columnas adecuadas:
Los JCL comienzan con dos diagonales (//), seguido del nombre del usuario y caracteres que identifican el JCL para su fácil localización en el sistema.
Incorporación de parámetros clave:
Parámetro JOB: Añade el nombre del job y otros valores opcionales de auditoría.
//ERC01 JN,MSGLEVEL=(1,1)
Especificar valores dentro de las columnas:
Utiliza columnas específicas para mantener todo ordenado extendiendo líneas con ,.
Clase: Define el valor del CLASS para controlar cómo se programa y procesa en el sistema JES.
Notificación: Usa el parámetro NOTIFY para recibir alertas por el estado del job.
TIME: Especifica cuánto tiempo puede permanecer en ejecución antes de ser forzado a completar: TIME=1440 indica un máximo de 24 horas.
REGIÓN: Define el tope de memoria virtual, REGION=8M es un ejemplo de configuración.
// TIME=1440,REGION=8M
¿Cómo finalizo y verifico mi JCL?
Comentarios y estructura final:
Completa tu JCL añadiendo líneas de comentarios con /* y especificaciones finales como diagonales y asterisco: //* This is the structure.
Revisar sintaxis y parámetros opcionales:
Asegúrate de que todo esté en su lugar, revisando que los parámetros como MESSAGE CLASS, entre otros, estén adecuadamente configurados según las políticas del sistema en uso.
Crear un JCL puede parecer complicado al principio, ¡pero con práctica te volverás un experto! Continúa explorando los conceptos y trabajando en nuevos scripts para dominar este lenguaje esencial en el mundo de los mainframes.
Una clase es tomado por el JES y hace referencia al tiempo en el cual el sistema JES va a tomar tu JCL y lo va a procesar. Depende del operador del sistema en el que estamos trabajando
Hay alguna lista para enteder los tipos de clases y niveles depende del programa en el que se esté ejecutando el JCL?
Al momento de replicar la clase en el emulador obtuvo esa sección de codigo sombreado, tiene alguna utilidad?
Hola René! Espero que estés bien, creo que te ha sucedido un typo, al final del parámetro que escribiste en la línea 3 colocaste una tilde en vez de apostrofo, lo hice en mi emulador y también se coloreo en rosa, indicándome que es necesario corregir esa parte del código, te lo muestro con el crosshair:
'JCL NUEVO´,
Y sobre los tipos de parámetros a los que te refieres:
(123)Parámetro posicional-opcional: ++Contiene información de contabilidad para el job++.
'JCL NUEVO'Parámetro posicional-opcional. ++Descripción del Job (debe tener de 1 a 20 caracteres).++
CLASS=AParámetro keyword-opcional. ++Asigna la clase de ejecución para el JOB (un caracter de A-Z o 0-9)++.
NOTIFY=HERC01Parámetro keyword-opcional. ++Designa al usuario al cual se le notificará el final de la ejecución del JOB.++
MSGLEVEL=(1,1)Parámetro keyword-opcional. ++Controla la salida del Job, el primer subparametro controla los enunciados que serán desplegados en el log del JCL, el segundo subparametro controla los mensajes que serán impresos en el log del JCL.++
MSGCLASS=HParámetro keyword-opcional. ++Asigna la clase de salida para el log del JOB (un caracter de A-Z o 0-9). Esto se traduce en: ¿hacía donde debe dirigir el JES las líneas del resultado de la ejecución del JOB?++
TIME=1440Parámetro keyword-opcional. ++Especifica el tiempo máximo de ejecución en CPU del JOB, 1440 minutos es el máximo tiempo de ejecución que un JCL puede tener, lo que se traduce a 24 horas.++
REGION=8MParámetro keyword-opcional. ++Especifica el tamaño máximo de memoria virtual para el JOB, 8M hace referencia a 8 Megabytes de memoria virtual.++
Dejamé saber como te va avanzando en este curso 😃... Saludos.
Muchas gracias profe por el aporte y la corrección, me falta refinar los detalles de escritura.
Esta Excelente el resumen, ya me es más claro el uso de los parámetros.
Me está gustando mucho este curso ya que se ve la gran demanda de personal capacitado en Cobol en mi país (Perú) y su enseñanza está restringida.
Apunte:
1 parámetro posicional y luego el parámetro llave.
¿De dónde salen las letras "JN" en "HERC01JN"? ¿Son las que hay que poner siempre? No lo entiendo...
DONE! Carlos, solo una pregunta...como se que esta bien escrito? tengo que compilarlo o nada? Gracias
Hola Xime, como estas?
No se compila, y para verificar que no tenga errores tipograficos se puede validar una vez que has ejecutado el jcl.
Sin embargo, al tratarse en esta clase de la estructura inicial del JCL, si ejecutas dando la instrucción SUB en la línea de comandos, el JCL fallará indicando lo siguiente: