LENGUAJE DE CONTROL DE TRABAJOS
Campos de las sentencias de JCL
Cada sentencia de control está compuesta por los siguientes campos:
- IDENTIFICADOR - Indica al sistema de que tipo de sentencia se trata:
// --> sentencia de JCL
/* --> sentencia de delimitador
//* --> sentencia de comentarios - NOMBRE - Identifica una sentencia de control a la que otras sentencias y el sistema pueden hacer referencia.
- OPERACIÓN - Especifica el tipo de sentencia de control que sigue al campo de nombre (JOB, EXEC, DD).
- PARÁMETROS - Especifica las características particulares de las sentencias de JCL. Existen dos tipos de parámetros:
- Posicionales: su significado viene determinado por la position que ocupa en la sentencia. Su ausencia debe indicarse con una coma.
- De Palabra Clave: su significado viene determinado por la palabra especial que lo identifica. Siempre van después de los posicionales.
- Posicionales: su significado viene determinado por la position que ocupa en la sentencia. Su ausencia debe indicarse con una coma.
- COMENTARIOS - Ira a continuación del campo de parámetros, precedido de un espacio en blanco, y puede codificarse hasta la posición 80. No debe utilizarse si no hay campo de parámetros, en éste caso se utilizaría la Sentencia de Comentarios (//*).
Sentencia JOB - CABECERA
//NAMEJCLX JOB 102,'DESCRIPCION',CLASS=A,
// MSGCLASS=H,MSGLEVEL=(2,1),
// NOTIFY=&SYSUID,REGION=4M,
// TIME=NOLIMIT,COND=(0,NE),PRTY=15,
// RESTART=PASO15,TYPRUN=SCAN
Sentencia obligatoria que indica el principio del trabajo, y solo puede existir una por trabajo.
- Parámetros posicionales en la sentencia JOB:
- INFORMACIÓN DE CONTABILIDAD - especifica la information de contabilidad exigida por la instalación.
- NOMBRE DEL PROGRAMADOR - identifica al grupo responsable del trabajo.
- INFORMACIÓN DE CONTABILIDAD - especifica la information de contabilidad exigida por la instalación.
- Parametros de Palabra Clave en la sentencia JOB:
- CLASS - indica la cola de entrada donde esperara el trabajo para ser ejecutado. Ha de ser cualquier carácter alfanumérico según decida la instalación
- MSGCLASS - indica la cola de salida de los mensajes del sistema. Si no se especifica se toma el que tenga por defecto la plataforma donde nos encontremos.
- CLASS - indica la cola de entrada donde esperara el trabajo para ser ejecutado. Ha de ser cualquier carácter alfanumérico según decida la instalación
- MSGLEVEL - indica el tipo de mensajes que ha de imprimir el sistema.
Es un parámetro compuesto de dos subparámetros posicionales: - El primero (Sentencias) acepta los valores : 0 Solo sentencias de Job
1 Sentencias de JCL y resolución de parámetros simbólicos por parte del JES
2 Sentencias de JCL - El segundo (Mensajes):
0 Mensajes de JCL y todos si acaba mal
1 Todos siempre - NOTIFY - indica el usuario de TSO al que el sistema enviara un mensaje cuando termine el trabajo. La opción: NOTIFY=&SYSUID, hace que cuando el jcl acabe se muestre un mensaje al usuario que ha submitido el jcl.
- TIME - indica el tiempo máximo de CPU que puede emplear el job.
- REGION - indica la cantidad de memoria que va a utilizar el job en su ejecución.- En el caso de trabajar con memoria real ADDRSPC=REAL indica el total de memoria a utilizar- En el caso de trabajar con memoria virtual ADDRSPC=VIRT evita el exceso de paginación cuando se codifican valores bajosLa medida se expresa en valor superior a cero en numero par y como unidad K(1024 octetos)
- COND - Indica un código de condición para permitir o evitar ejecutar los diferentes pasos de un JOB en función del código de retorno que devuelve el sistema por la ejecución de cada uno de los paso. El job deja de ejecutarse cuando el código de condición devuelto cumple el código del pa´rametro COND. Ejemplos:
- COND=(0,NE) --> Si el jcl no da un 0 en algún paso se cancela la ejecución.
- COND=(4,NE) --> Si el jcl no da un 4 en algún paso se cancela la ejecución.
- COND=(12,LE) --> Si el jcl no da un error menor o igual a 12 en algún paso, se cancela la ejecución.
- El primer valor puede estar comprendido entre 0 y 4095 (los mas habituales son el 0, 4, 8, 12,16)
- Las condiciones posibles son: EQ (igual), LT(menor que), LE(menor o igual), GT(mayor que), GE(mayor o igual), NE(distinto)
- Se puede poner en la cabecera, en un paso en concreto, o en ambos sitios.
- COND=(0,NE) --> Si el jcl no da un 0 en algún paso se cancela la ejecución.
- ADDRSPC - Especifica si el proceso se ejecuta en memoria Real (ADDRSPC=REAL) o Virtual(ADDRSPC=VIRT). Si no se indica por defecto usa la memoria Virtual.
- DYNAMNBR - Este parámetro esta asociado con la alocación dinámica de ficheros y no se debe codificar en otras circunstancias. Alocación dinámica es aquella que efectuamos por medio del programa en ejecución que marca la pauta de que ficheros debe o no coger o crear .Cada fichero a crear será una unidad de asignación al parámetro. Debe de asociarse el paso al parámetro para que el JOB sepa en que momento debe de reservar recursos para la asignación dinámica de ficheros.DYNAMNBR.PASO01=10El numero máximo de ficheros a poder asignar de forma dinámica es de 1635//TRAB1 JOB DEPEXT,PUIG,MSGCLASS=V,CLASS=C,NOTIFY=T515214,// DYNAMNBR.PASO01=10,........La alocación dinámica suele especificarse en la sentencia EXEC o por medio de una DD
- PRTY - se establece una prioridad al job dentro de la clase de entrada.El parámetro consta de dos subparámetros posicionales numéricos, el primero con valores comprendidos entre 0 y 14 y el segundo entre 0 y 15. La prioridad final se obtiene del producto de 16x (valor 1)+(valor 2)
DPRTY =(10,5)
- RESTART - rearrancar un trabajo desde el paso especificado, saltando los pasos anteriores. Que queremos lanzar el jcl desde el PASO15 (por ejemplo) saltándose los 14 pasos anteriores, pues le indicamos: RESTART=PASO15
- TYPRUN - indica el tipo de ejecucion del job. Los posibles valores que adopta este parámetro:
- HOLD Deja el trabajo en HOLD (pendiente de ejecución para el JES) y queda a la espera que el operador de consola lo libere (Se hace habitualmente cuando el JOB requiere de unos recursos especiales que han de ser cedidos por Explotación.)
- SCAN Analiza sintácticamente el JOB Control.
- JCLHOLD El job queda retenido antes de ser procesado por el converter.No pasa a cola de selección hasta que el operador lo libera
- COPY Lista el JCL sin ejecutarlo
- RD - Especifica la posible forma de arrancar un JOB
RD= | { | R RNC NC NR | } |
R Rearranque automático combinado con la macro CHKPT
RNC Rearranque automático a nivel de paso (no de checkpoint)
NC No se permiten rearranques automáticos
NR No permite arranque automático, pero se puede tomar
checkpoint para el arranque posterior
checkpoint para el arranque posterior
Este parámetro no suele utilizarse y en su lugar se utiliza
frecuentemente el parámetro restart como rearranque manual.
frecuentemente el parámetro restart como rearranque manual.
- PERFORM - Grupo de rendimiento al que se aplica al JOB PERFORM="numero con valores comprendidos entre 1 y 255"
- PERFORM - Grupo de rendimiento al que se aplica al JOB PERFORM="numero con valores comprendidos entre 1 y 255"
Ejemplo de una cabecera:
//NAMEJCLX JOB (101, 'MI JCL'),MSGLEVEL=(2,1) , CLASS=A,
// MSGCLASS=H,NOTIFY=&SYSUID
//*
12 comentarios:
con el tema de las condiciones:
"Se puede poner en la cabecera, en un paso en concreto, o en ambos sitios. "
No aclaraste qué condicion toma el paso, si es q está en ambos sitios.
La condicion que va a tomar es lo que diga ese paso en particular. y si los demás pasos no llevan condiciones propias van a tomar lo que diga la condicion de la cabecera.
saldos!
Gracias por la aportación!
: )
muy buena la aportación, saludos!!
¿Me podeis confirmar la respuesta a esta pregunta, por favor? Lo he copiado de otro sitio y pone que la respues es A.
5. Complete correctly:
When I want a jobstep to be executed only if the previous jobstep has a return code of strictly
less than 8, I should add...
O (a) COND=(8,LE)
O (b) COND=(8,GE)
O (c) COND=(8,LT)
O (d) COND=(8,GT)
La A sería menor o igual a 8, menor que 8 sería la C.
Puedes ver las comparaciones en http://www.consultoriocobol.com/2010/12/sort-vol1-sort-include.html
gracias . Ya me parecia que estaba mal...
hola muchachos como ejecuto un solo paso del jcl ejemplo un paso n , que haga un sorteo que pase de visam a secuencial..,, gracias
Estimado, soy novato en esto y recien he visto apenas un par de codigos JCL pero sin duda esto me ha ayudado bastante a comprender aspectos importantes de esta programación.
Muchas gracias por el tiempo dedicado, me pondré a leer los siguientes ahora.
Agradecido por mantener esta pàgina al servicio de los ususarios del gran dinosaurio, saludos desde Venezuela
Gracias a vosotros Luis Enrique. Saber que sirve de ayuda a los compañeros del mundillo es lo que anima a seguir :-)
Muchas gracias!!!
Tallian por compartir tan valiosa informacion.
Comparto la option de que Cobol es un Enorme Dinosaurio.
Pero que hasta el dia de hoy sigue operando de una manera muy eficiente. y por mi experiencia en este medio segira por varios annos mas. Saludos a todos los cibernautas que programan en cobol. lo mas robusto y estable que conozco hasta hoy.
Muy buen material! lo voy a recomendar a mis compañeros de estudio! saludos!