Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION
LEER
TRABAJOS INTERPRETAR
BUSCAR FICHEROS
TRABAJOS COLAS DE
TRABAJO
(1) JOB
contabilidad (1) SELECCIONAR UN TRABAJO
programador
CLASS
PRTY
(2) SELECCIONAR UN PASO
TYPRUN
MSGCLASS
MSGLEVEL
BUSCAR ESPACIO F. SALIDA
(3) ASIGNAR FICHEROS
(2) EXEC CARGAR PROGRAMAS
nombre de paso
DSNAME
DCB
UNIT SALIDA DEL PROGRAMA:
VOLUME - IMPRESA (SPOOL)
SPACE - FICHEROS
DISP (5)
(5)
DD SI
MAS PASOS
DISP=....
NO
BORRAR INFORMACION
DEL TRABAJO
TIPOS DE SENTENCIAS
El JCL está compuesto por sentencias identificadas por un nombre. Además, cada
sentencia puede incorporar una serie de parámetros para su correcta ejecución.
JOB
EXEC
DD
PROC
PEND
//*
Indica el final del job (sentencia nula). No es necesario indicar esta sentencia y se
suele utilizar en pruebas para realizar “cortes” temporales en una cadena, que
permite la ejecución paso a paso o de un bloque de pasos determinados, sin
necesidad de ejecutar el resto, es decir, de llegar al final del job.
/*
// //
//* //*comentarios
/* /*
Notas
Entre las dos barras, que identifican una línea de sentencia JCL, y el nombre no
puede haber ningún blanco.
Entre el nombre y la sentencia y entre la sentencia y sus parámetros debe haber al
menos un blanco.
Entre los parámetros dentro de una sentencia no puede haber blancos. Si los
hubiera, el resto de la línea se considera como comentarios.
Nombre
Nota: En algunas versiones se acepta la letra “Ñ” para el nombre de job, pero se
recomienda no utilizarla.
Sentencia
Parámetros
Posiciónales
Comentarios
Sirven para documentar las fichas de control. Deben de estar separados del último
parámetro por, al menos, un blanco. Su utilización no es general.
Puesto que el primer soporte que se utilizó para escribir JCL fueron fichas
perforadas, las sentencias de control se codifican en líneas de 80 columnas y
todavía se denominan fichas o tarjetas. Cada “ficha” se divide en tres zonas:
Columnas 1-2
Todas las fichas comienzan con dos barras (//). La única excepción es
la ficha que identifica el final de un fichero interno de JCL, que contiene
barra-asterisco (/*) o delimitadores especiales (ver apartado “DLM” de
la sentencia “DD”, más adelante).
Columnas 3-72
Columnas 73-80
INTRODUCCION
Indica el principio de un trabajo (job). Esta ficha es única para el trabajo y debe
estar en la primera línea.
El nombre del trabajo debe empezar por una caracter alfabético, en la columna 3,
y puede tener hasta 8 caracteres alfanuméricos.
En algunas instalaciones este nombre está normalizado (por ejemplo, los jobs de
desarrollo tienen que empezar por el identificador del usuario que lo ejecuta).
PARAMETROS POSICIONALES
Información de contabilidad
Como excepción a los caracteres especiales está el caracter guión (-), que no se
considera especial. Este campo puede tener un máximo de 142 caracteres.
Nota: En algunas versiones, no hace falta indicar el caracter coma (“,”) cuando no
se codifica este parámetro.
Ejemplo
Nombre de programador
Nota: En algunas versiones, no hace falta indicar el caracter coma (“,”) cuando no
se codifica este parámetro.
Ejemplo
CLASS
CLASS=clase-ejecución
MSGLEVEL
MSGLEVEL=(sentencias,mensajes)
Sentencias
0
Sólo se imprime la sentencia JOB.
1
Se imprimen todas las sentencias fuente más las que resultan de
expandir los procedimientos catalogados en los pasos, si los hubiera.
2
Sólo se imprimen las sentencias fuente.
Mensajes
0
Se imprimen los mensajes de asignación/terminación sólo cuando el
trabajo termina anormalmente (con error).
1
Se imprimen siempre los mensajes de asignación/terminación.
Ejemplo
MSGCLASS=clase-
salida
Donde la clase de salida se especifica con un caracter alfanumérico (A-Z,0-9) y
cada instalación define y asigna las distintas clases de salida que precise.
Ejemplo
NOTIFY
NOTIFY=identificador-usuario
Ejemplo
TYPRUN={SCAN | HOLD}
Se pueden indicar otras dos opciones, aunque sólo para pruebas y situaciones
excepcionales,
SCAN
Solicita que el sistema sólo compruebe los errores sintácticos que haya en las
fichas de control del trabajo, pero que no lo ejecute.
HOLD
COND
0 correcto
4 aviso
8 error recuperable
12 error grave
16 error irrecuperable
El parámetro COND especifica las condiciones con las que los siguientes pasos de
un trabajo se ejecutarán o no. Si se cumplen las condiciones fijadas no se ejecutan
los siguientes pasos al que ha devuelto el código y el trabajo se da por terminado.
COND=((código,operador),(código,operador),.....)
Código
Operador
GT mayor que
GE mayor o igual que
LT menor que
LE menor o igual que
EQ igual a
NE no igual a
IF
Facilita la ejecución condicionada, al eliminar el “IF inverso” que supone el
parámetro COND, realizando un IF como cualquier lenguaje de programación.
IF (condición) THEN
paso(s)
ELSE
paso(s)
ENDIF
Condición
NOT ¬ no igual a
Además de la posibilidad de establecer condiciones complejas o
múltiples a través de los operadores lógicos
[nombre-paso.]RC
[nombre-paso.]ABEND
[nombre-paso.]ABENDCC
[nombre-paso.]RUN
Indica que en la condición compruebe si un paso se ha ejecutado. Los
valores de comparación son: TRUE (para preguntar si se ha ejecutado)
o FALSE (para preguntar si no se ha ejecutado)
TIME
TIME=([minutos][,segundos])
Minutos
Segundos
OTROS PARAMETROS
REGION
REGION={nK | nM}
Donde “n” es un número par que indica el número de kilobytes (1024 octetos) o un
valor d e megabites (entre 1 y 16) que se desean reservar para este trabajo.
RESTART
Indica el paso desde el que se desea comenzar la ejecución del trabajo, en el caso
de un rearranque diferido.
RESTART={* | nombre-paso}
Donde el signo “asterisco” (*) indica que se debe comenzar desde el primer paso
del trabajo.
PRTY
PRTY=prioridad
Donde la prioridad puede variar de 0 a 15, siendo mayor la prioridad cuanto mayor
sea el valor.
SENTENCIA EXEC
INTRODUCCION
La sentencia de control EXEC identifica un paso de trabajo dentro del JOB. Indica
el programa que se quiere ejecutar o un procedimiento que se debe llamar o
expandir.
PROGRAMAS
Utilidades
De aplicación o usuario
PROCEDIMIENTOS
Internos
Catalogados
PARAMETROS POSICIONALES
PGM
(*)
Para obtener más información sobre librerías de programas de
usuario, ver apartado “Sentencias DD con nombres especiales” del
capítulo “Sentencia DD”, más adelante.
PGM={programa |
*.nombre-paso.nombre-DD |
*.nombre-paso.nombre-paso-proc.nombre-DD}
Ejemplo
PROC
[PROC=]nombre-proc
TIME
Todo lo que se indicó para el parámetro TIME en la sentencia JOB es válido aquí,
pero a nivel del paso. Su codificación es:
TIME[.nombre-paso-
proc]=([minutos][,segundos])
Si se codifica en una sentencia EXEC que llama a un procedimiento sin poner
nombre de paso, el tiempo indicado es el máximo para la ejecución de todo el
procedimiento, ignorándose los parámetros TIME que pudieran llevar las
sentencias EXEC internas del procedimiento.
Un paso que excede del tiempo indicado provoca la terminación anormal de todo
el trabajo.
COND
y este valor puede ser revisado, bien desde la sentencia JOB (como se
explicó) o bien desde la sentencia EXEC.
COND[nombre-paso-proc]={[{código,operador |
código,operador,
nombre-paso.nombre-paso-
proc]
....[,{EVEN | ONLY}])
Indica que este paso se tiene que ejecutar aunque algún paso anterior
haya terminado anormalmente, es decir, siempre.
ONLY
PARM
PARM[nombre-paso-proc]=lista-parámetros
REGION
INTRODUCCION
Concatenar ficheros
Ejemplo
//SYSIN DD DSN=.........
// DD DSN=.........
// DD DSN=.........
//SYSOUT DD DSN=.........
PARAMETROS POSICIONALES
“asterisco” (*)
Ejemplo
//SYSIN DD *
1999-09-26
/*
DATA
DLM
//SYSIN DD *,DLM=FINAL
1999-09-26
FINAL
DUMMY
//ddname DD DSN=nombre-fichero,DISP=...,
// UNIT=unidad,VOL=SER=volumen,
// DCB=(..........),
// SPACE=(......)
Aunque, como se verá más adelante, no todos los ficheros necesitan todos los
parámetros. Por ejemplo, un fichero de entrada (que ya debe existir) no necesitará
información DCB, un fichero en cinta no necesitará SPACE, etc.
“ddname”
DSN (“dsname”)
Indica el nombre con el que el sistema debe localizar (si ya existe) o
crear (si es nuevo) el fichero definido por la sentencia de control DD.
Este nombre se puede escribir de varias formas, en función del tipo de
fichero de que se trate:
{DSNAME |
DSN} ={nombre-fichero |
nombre-fichero(nombre-miembro) |
nombre-fichero(número-GDG) |
nombre-fichero(nombre-área) |
nombre-fichero-temporal |
nombre-fichero-temporal(nombre-miembro) |
nombre-fichero-temporal(nombre-área) |
*.nombre-DD |
*.nombre-paso.nombre-DD |
*.nombre-paso.nombre-paso-proc.nombre-DD}
Ficheros permanentes
Secuénciales
//FASTCONT DD
DSN=SUNION.CONTAB.ASTOS.DIARIO.D990926
Librerías
Ejemplo
//FDATTEMP DD
DSN=SUNION.LIBDATOS.PRUEBAS(FDATTEMP)
Grupos de generación
Ejemplo
//FRESHACI DD DSN=SUNION.HACIENDA.RESUMEN.ANUAL(-5)
Ficheros temporales
nombre-trabajo.nombre-paso.nombre-dd.nombre-temporal
Ejemplo
//DD1 DD DSN=&&SALDOS
Ficheros diferidos
Son ficheros que se usan en algún punto del trabajo y a los que se
hace referencia en otro lugar mencionando ese uso anterior.
Ejemplo
DISP
Indica la situación del fichero antes de ejecutar el paso y la situación en
la que quedará cuando termine
DISP=(estado-inicial,estado-final-normal,estado-final-error)
UNIT=unidad
Unidad
VOLUME
{VOLUME | VOL}=SER=número-serie
SER
DCB=(RECFM=tipo,LRECL=n,BLKSIZE=n,DSORG=tipo)
Indica el tipo o formato de los registros del fichero. Los tipos más
habituales son:
F longitud fija
FB longitud fija bloqueados
V longitud variable
VB longitud variable bloqueados
BLKSIZE (BLocKSIZE)
PS secuencial
IS secuencial indexado
DA organización directa
PO particionado
SPACE
TRK
CYL
nn
Cantidad primaria
Indica la cantidad de espacio que debe asignarse en principio para el
fichero. Es el espacio mínimo a asignar y se considera la primera
extensión del fichero.
Cantidad secundaria
Directorio o índice
RLSE
CONTIG
ROUND
SYSOUT={clase-salida | *}
Clase de salida
COPIES
COPIES=n
OUTLIM
Ejemplo
JOBLIB
Cuando todos los programas de usuario del trabajo están en la misma librería o
cuando se desea indicar una sola vez el grupo de librerías donde están los
programas, se utilizará el nombre JOBLIB.
Ejemplo
STEPLIB
Ejemplo
SYSABEND y SYSUDUMP
FIN