You are on page 1of 37

Conceptos de JCL

CONCEPTOS
DE
JCL

Pgina 0

Conceptos de JCL

Indice
1. OBJETIVO DEL CURSO.........................................................................................................................
2. INTRODUCCIN......................................................................................................................................
3. CONTROL DE TRABAJOS.....................................................................................................................
4. LENGUAJE DE CONTROL DE TRABAJOS (J.C.L.)..............................................................................
4.1. Definiciones Previas........................................................................................................................
4.2. Formato de las Sentencias de Control...........................................................................................
4.3. Sentencias de Control.....................................................................................................................
4.3.1. Sentencia JOB :...........................................................................................................................
4.3.1.1. ADDRSPC.............................................................................................................................
4.3.1.2. CLASS..................................................................................................................................
4.3.1.3. MSGCLASS..........................................................................................................................
4.3.1.4. MSGLEVEL...........................................................................................................................
4.3.1.5. NOTIFY.................................................................................................................................
4.3.1.6. PRTY.....................................................................................................................................
4.3.1.7. RD.........................................................................................................................................
4.3.1.8. REGION................................................................................................................................
4.3.1.9. RESTART..............................................................................................................................
4.3.1.10. TIME....................................................................................................................................
4.3.1.11. TYPRUN..............................................................................................................................
4.3.1.12. COND :................................................................................................................................
4.3.2. Sentencia EXEC :........................................................................................................................
4.3.2.1. PGM :....................................................................................................................................
4.3.2.2. PROC....................................................................................................................................
4.3.2.3. ADDRSPC.............................................................................................................................
4.3.2.4. COND....................................................................................................................................
4.3.2.5. PARM....................................................................................................................................
4.3.2.6. REGION................................................................................................................................
4.3.3. Sentencia DD :.............................................................................................................................
4.3.3.1. */DATA...................................................................................................................................
4.3.3.2. DUMMY.................................................................................................................................
4.3.3.3. DSNAME/DSN......................................................................................................................
4.3.3.4. DISP......................................................................................................................................
4.3.3.5. SPACE..................................................................................................................................
4.3.3.6. VOLUME...............................................................................................................................
4.3.3.7. UNIT......................................................................................................................................
4.3.3.8. LABEL...................................................................................................................................
4.3.3.9. DCB.......................................................................................................................................
4.3.3.10. LIKE....................................................................................................................................
4.3.3.11. FREE...................................................................................................................................
4.3.3.12. SYSOUT.............................................................................................................................
4.3.3.13. DEST...................................................................................................................................
4.3.3.14. COPIES...............................................................................................................................
4.4. Sentencias DD Especiales...............................................................................................................
4.4.1. JOBCAT.......................................................................................................................................
4.4.2. JOBLIB........................................................................................................................................
Pgina 1

Conceptos de JCL

4.4.3.
4.4.4.
4.4.5.
4.4.6.
4.4.7.

SETPCAT....................................................................................................................................
SETPLIB......................................................................................................................................
SYSABEND,SYSUDUMP,SYSMDUMP.......................................................................................
SYSIN..........................................................................................................................................
SYSPRINT...................................................................................................................................

4.5. Grupos de generacin.....................................................................................................................


4.6. Procedimientos................................................................................................................................
4.6.1. Parmetros simbolicos :..............................................................................................................
4.6.2. Modificacin de Procedimientos..................................................................................................
4.7. Programas de utilidad del M.V.S....................................................................................................
4.7.1. IEFBR14......................................................................................................................................
4.7.2. IEBGENER..................................................................................................................................
4.7.3. IEBCOPY.....................................................................................................................................
4.7.4. DFSORT......................................................................................................................................
5. EJERCICIOS............................................................................................................................................
6. ANEXO.....................................................................................................................................................
6.1. IF/THEN/ELSE/ENDIF.......................................................................................................................
6.2. JCLLIB...............................................................................................................................................
6.3. INCLUDE...........................................................................................................................................

1.

Objetivo del Curso

El principal objetivo del curso de "INICIACION A LOS J.C.L." es el conocimiento por parte de
los programadores de los parmetros existentes as como su significado y utilizacin en las sentencias
de control.
Para ello el curso mostrar una visin general de la gestin de los trabajos por parte del
sistema; as como una explicacin de las sentencias de control con los parmetros generalmente ms
usados.
Pgina 2

Conceptos de JCL

2.

Introduccin
Un sistema operativo es un conjunto de programas que gobiernan un sistema hardware.
Para ello debe realizar las siguientes funciones:
. Controlar la ejecucin de trabajos
. Suministrar los servicios que otros programas necesitan
. Mantener disponibles los recursos del sistema
. Asignar recursos a un determinado trabajo
El M.V.S. es un sistema operativo capaz de realizar todas estas funciones.

Para poder ejecutar un programa en el sistema, el programador deber introducir una serie de
sentencias que permitan al sistema operativo controlar su ejecucin, as como asignar los recursos
necesarios, etc....
Al conjunto de sentencias del sistema operativo que permiten la ejecucin de un programa se
llama JOB y al lenguaje de control se le denomina J.C.L. (Lenguaje de control de trabajos).
La memoria del M.V.S. en un sistema IBM se puede dividir segn el siguiente grfico.
V CICS
T
A
M
BATCH
U.T.

VTAM
TSO/ISPF
BATCH
U.T.

VTAM - Control de terminales.


CICS - Monitor de teleproceso.
TSO/ISPF - Control de terminales desde el punto de vista de programacin.
U.T - Utilidades del sistema.

Pgina 3

Conceptos de JCL

3.

Control de Trabajos

El M.V.S. se compone de un subsistema de entrada de JOB's denominado JES y de una serie


de iniciadores, donde un iniciador es un programa del sistema operativo encargado de ejecutar este
JOB.
Un JOB desde que entra en el sistema hasta que sale ya ejecutado pasa por las siguientes
fases :
1.- Lectura del JOB introducido para su ejecucin, esta fase la realiza el programa READER del
JES.
2.- Conversin del JCL en el que esta escrito el JOB a un texto interno inteligible por el
ordenador y lo
almacena en un fichero de SPOOL, esta fase la realiza el programa CONVERTER del
JES.
Durante esta fase se detectan los posibles errores de sintaxis en el JCL, en cuyo caso se
escribe un
mensaje de error, deja el job en cola de salida y no se ejecuta. En caso de que no existan
errores el
JOB se ejecuta.
3.- El JES SELECCIONA los JOB's de una cola de trabajos.
Dentro de esa cola el JOB se puede encontrar en las siguientes etapas de proceso:

JOB's en espera de ejecutarse.


JOB's que se estan ejecutando.
JOB's en espera de que se produzca una salida.
JOB's que en ese momento estan saliendo.
JOB's que han sido procesados por completo y estan en espera de ser eliminados.

El JES se comunica con un iniciador para la ejecucin del JOB. El iniciador es el encargado de
arrancar
el JOB para que empiecen a competir por los recursos del sistema con otros trabajos que ya
estan ejecutandose.
Un iniciador es arrancado para que de servicio a unas determinadas clases de entrada; el JES
explora la cola de JOB's para determinar cuales de la primera clase estan en espera de
ejecucin antes de empezar con la segunda.
Esta seleccin se hace tambien en funcion de la prioridad del JOB, siendo seleccionado antes
un JOB de menor prioridad de la primera clase del iniciador que uno con mayor prioridad de la
segunda clase.
4.- INICIACION del JOB por parte del iniciador, este compite con otros trabajos por los recursos
necesarios para la ejecucin del JOB.
5.- EJECUCION del JOB por parte del iniciador.
6.- TERMINACION del JOB, en este caso el iniciador libera los recursos asignados a este
trabajo,
elimina ficheros de trabajo y cede control al JES para dejar el resultado de la ejecucin en
la cola
de salida.
7.- El JES se encarga de escribir el resultado de la ejecucin en la impresora adecuada, esta
fase
Pgina 4

Conceptos de JCL

se desarrolla gracias al programa WRITER.


8.- Al final, el JES elimina dentro de las areas de control el rastro del JOB, siendo esta fase
desarrollada
por el programa PURGE del JES.

4.

Lenguaje de Control de Trabajos (J.C.L.)

4.1.

Definiciones Previas
PASO DE UN JOB : Un paso de Job es un conjunto de sentencias de control que
controlan y solicitan los recursos necesarios para la ejecucin de un determinado
programa.
Un paso de Job puede contener los datos necesarios para la ejecucin de un
programa.
PROCEDIMIENTOS (CATALOGADOS O IN-STREAM): Un procedimiento es un
conjunto de sentencias de control que vayan a ser ejecutadas varias veces con
pocos cambios.
Este conjunto de sentencias puede ser preparado y salvado en una libreria especial
SYS1.PROCLIB, a este conjunto de sentencias se le denomina procedimiento
catalogado.
Si el procedimiento no es salvado sino que se prepara y se ejecuta en el mismo job
se dice
que este es un procedimiento in-stream.
El M.V.S. permite hasta 15 procedimientos in-stream en un mismo JOB.
INTERNAL READER : Se denomina internal reader a un buffer de memoria de
entrada a un programa de sistema operativo que considerar los registros aqui
situados como sentencias de un JOB.

4.2.

Formato de las Sentencias de Control


Una sentencia de JCL consiste en uno o varios registros de 80 bytes.
Cada sentencia de JCL se divide de una manera logica en los siguientes cinco campos :
Campo de identificacin : Esta zona permite al sistema conocer si es una
sentencia JCL o un registro de datos.
Una sentencia de JCL se identifica por que las columnas 1 y 2 contendran los
carcteres //.
Una sentencia de comentarios se codifica con //* en las posiciones de la 1 a la 3.
Campo de Nombre : Esta zona permite identificar la sentencia de una manera
particular; de esta manera otra sentencia y el sistema puedan referirse a ella.
La formacin de los nombres de las sentencias deben cumplir las siguientes reglas:
1.- El nombre debe de comenzar en la columna 3.
2.- El nombre esta compuesto de 1 a 8 carcteres alfanmericos.
3.- El primer cracter debe ser siempre alfanmerico.
Pgina 5

Conceptos de JCL

4.- El nombre debe estar siempre seguido por un blanco.


//BGJEBSDD JOB (EEBG,1),'BGJEBSDD',
Campo de Operacin : El campo de operacin identifica en una sentencia el
comando a ejecutar.
//BGJEBSDD JOB (EEBG,1),'BGJEBSDD',
1.- El campo operacin esta precedido por un nombre de sentencia.
2.- La operacin debe estar precedido al menos por un blanco.
Ejemplo : JOB,EXEC,DD

Campo de parmetros : El campo de parmetros contiene una serie de parmetros


separados por comas.
//BGJEBSDD JOB (EEBG,1),'BGJEBSDD',
Campo de comentarios : El campo de comentarios contienen informacion de ayuda
de la sentencia de control.
Por ejemplo :
//[nombre-dd] DD [parmetros [comentarios]]
Cuando la longitud de una sentencia de control excede de 71 columnas se podr
continuar de las siguientes maneras :
1.- Interumpiendo el campo despues de un parmetro o subparmetro completo,
incluyendo la
coma que lo continua, antes o en la columna 71.
2.- Continuar la sentencia interumpida con un parmetro o campo entre las columnas 4
a 16, si se
comienza a codificar despues de la columna 16 el sistema lo considerar como
comentarios.
3.- La columna 3 de la siguiente sentencia deber contener solamente un espacio o un *
, en caso
contrario considerar que es una nueva sentencia.

4.3.

Sentencias de Control
Las sentencias de control ms importantes son:
JOB Define un Trabajo (JOB) completo.
EXEC Define un paso de un JOB, o cada ejecucin de un
programa.
DD
Define cada fichero o dispositivo a utilizar por el programa.
A continuacin se pasar a detallar cada una de estas sentencias.
4.3.1.

Sentencia JOB :
La sentencia Job es la primera que se codifica, el formato ser el siguiente :
Pgina 6

Conceptos de JCL

//nombre-job JOB [parmetros] [comentarios]


La sentencia JOB puede contener dos tipos de parmetros; parmetros
posicionales y los parmetros de palabra clave. Todos los parmetros son
opcionales; Aunque la instalacin requiera el parmetro de informacin
estadistica y/o el nombre del programador.
(.....) --> Informacin de control (parmetros de instalacin).
nombre programador : Identifica al responsable del JOB.

4.3.1.1. ADDRSPC

Especifica el espacio de direcciones en que se ejecutar el JOB.


La sintaxis de este parmetro ser la siguiente:
ADDRSPC = VIRT | REAL
Indica si el JOB deber ejecutarse en memoria VIRTUAL (permite paginacin) o
en memoria REAL (no permite paginacin).
Este parmetro se aplica a todos los pasos del JOB con independencia de los
parmetros ADDRSPC de las sentencias EXEC.
Por defecto se toma VIRT.
Este parmetro no se suele utilizar.
4.3.1.2. CLASS
Este parmetro se utiliza para asignar el JOB a una clase de entrada, desde
donde ser ejecutado por el iniciador arrancado con dicha clase.
La sintaxis de este parmetro es la siguiente
CLASS = clase de ejecucin
4.3.1.3. MSGCLASS
Este parmetro identifica la clase de salida donde se dejarn los mensajes de
ejecucin del JOB.
La sintaxis de este parmetro ser la siguiente :
MSGCLASS=clase-salida
4.3.1.4. MSGLEVEL
Este parmetro permite controlar el listado de salida de ejecucin del JOB.
La sintaxis de este parmetro ser la siguiente :
MSGLEVEL=(x,y)
Pgina 7

Conceptos de JCL

x - identifica que sentencias de control debern ser impresas, puede tomar los
siguientes valores :
0 - El sistema imprime solo la sentencia JOB.
1 - El sistema imprime todas las sentencias del JOB, las sentencias que
resulten de
expandir los procedimientos y los valores asignados a parmetros
simbolicos.
2 - El sistema solamente imprime las sentencias de control de entrada.
y - identifica que mensajes debern ser impresos, podr tomar los siguientes
valores:
0 - El sistema imprime solamente los mensajes de JCL y no los mensajes de
asignacin
o terminacin de cada paso a menos que termine anormalmente.
1 - Se imprimen todos los mensajes.
Si no se codifica asume los parmetros especificados en instalacin.
4.3.1.5. NOTIFY
Identifica al usuario TSO al cual debe de comunicar la terminacin del JOB.
La sintaxis de este parmetro ser la siguiente :
NOTIFY=usuario-tso
4.3.1.6. PRTY
Se utiliza para asignar una prioridad de ejecucin al JOB.
La sintaxis de este parmetro ser la siguiente:
PRTY=prioridad
El JES selecciona dentro de una clase aquellos JOB's que tienen una mayor
prioridad.
La prioridad puede tomar valores entre 0 y 15; donde el valor ms alto es 15.
4.3.1.7. RD
Se utiliza para el rearranque automtico de los pasos de un JOB.
La sintaxis de este parmetro ser la siguiente:
RD=valores
Los valores que podr tomar sern los siguientes:
R - Indica que se permite el rearranque automatico del paso. Permite dos
posibilidades :
Si el programa no incluye checkpoints, se permite que en caso de error se
rearranque a comienzo del paso que ha dado error.
Pgina 8

Conceptos de JCL

Si el programa incluye checkpoints, se permite el rearranque del programa a


partir de ese checkpoint.
RNC - Se permite rearranque a nivel de paso pero no a nivel de checkpoint.
NC - No se permite ningn arranque automatico.
NR - Se pueden tomar checkpoints pero no se permite rearranque automatico,
pero se puede rearrancar a nivel de checkpoints ms tarde.
4.3.1.8. REGION
Permite especificar la cantidad de memoria necesaria para ejecutar el JOB.
La sintaxis de este parmetro ser la siguiente :
REGION=valork | valorM
ValorK - espcifica la cantidad de memoria necesaria para la ejecucin del JOB
en Kbytes (1024 bytes); se codificarn valores multiplos de 4, si el valor no es
multiplo de 4 el sistema lo redondea al siguiente multiplo de 4.
Codificar 0K producir un error.
ValorM- especifica la cantidad de memoria necesaria para la ejecucin en
Mbytes (1024 Kbytes).
4.3.1.9. RESTART
Permite comenzar la ejecucin desde un determinado paso.
La sintasis de este parmetro ser la siguiente:
RESTART= * | nombre-paso | nombre-paso.nombre-paso-procedimiento
[,checkid]
*

- La ejecucin comienze desde el primer paso del JOB.

nombre-paso - La ejecucin comienza desde el paso especificado.


nombre-paso.nombre-paso-procedimiento - La ejecucin
comienza desde el paso del procedimiento especificado.
[checkid] - Nombre del punto de check desde el cual el sistema rearrancar la
ejecucin.
4.3.1.10.

TIME

Especifica el mximo periodo de tiempo en el que puede utilizar el JOB la CPU.


La sintaxis de este parmetro ser la siguiente:
TIME=(minutos,segundos)
Si se codifica TIME=1440 se indica que no hay limite de uso de la CPU para el
JOB.
4.3.1.11.

TYPRUN

Indica como debe considerar el sistema el JOB con vistas a su ejecucin.


La sintaxis de este parmetro ser la siguiente :
Pgina 9

Conceptos de JCL

TYPRUN = HOLD | SCAN | JCLHOLD | COPY


HOLD
no sea

: El JOB se coloca en la cola de entrada, pero no ejecutar hasta que

liberado por el operador.


SCAN
: El sistema comprueba los posibles errores en las sentencias de
control pero no
lo ejecuta.
JCLHOLD : El JOB ser retenido antes que sea procesado por el "converter",
no pasa a
la cola de seleccin hasta que el operador lo libere.
COPY : Convierte las sentencias de entrada tal y como se han leido en un
fichero de
SYSOUT y se ponga en cola para el proceso de salida la clase de
salida ser
la indicada en la clausula MSGCLASS.

4.3.1.12.

COND :

Especifica una condicin que se impondr para que el JOB se siga ejecutando,
dependiendo de los cdigos de condiccin que van devolviendo los distintos
pasos.
La sintaxis de este parmetro ser la siguiente :
COND=((cdigo,operacin),(cdigo,operacin),.......)
Cdigo = nmero decimal entre 0 y 4095. Es el cdigo de retorno de los pasos.
Operacin = tipo de comparacin a efectuar, podr tomar los siguientes valores
:
GT ----> Mayor que
GE ----> Mayor o igual que
LT ----> Menor que
LE ----> Menor o igual que
EQ ----> Igual a
NE ----> No igual a
En el momento en que alguna de las condiciones se cumpla, se deja de
ejecutar el JOB.
Se puden ejecutar hasta 8 condiciones distintas.
Ejemplos :
1.- Codificar la sentencia JOB con las siguientes carcteristicas :
. Clase de entrada C
. Clase de salida X
. Prioridad 9
. Modalidad no paginable
. Particin real de 180 K
. Limitacin del tiempo de CPU a 50 seg.
. El job tendr 8 pasos teniendose que comprobar que todos ellos devuelven
un cdigo inferior a 5 para ejecutarse.
//DEKARI01 JOB (,'DES'),CLASS=C,MSGCLASS=X,MSGLEVEL=(1,1),
Pgina 10

Conceptos de JCL

//
//

ADDRSPC=REAL,REGION=180K,PRTY=9,TIME=(,50),
COND=(5,LE),NOTIFY=DEKARI

2.- Cdificar la sentencia JOB con las siguientes carcteristicas:


. Clase de entrada 2
. Clase de salida A
. Solo se debe imprimir la sentencia JOB.
. No se desean mensajes
//DEKARI02 JOB (,'DES'),CLASS=2,MSGCLASS=X,MSGLEVEL=(0,0),
//
NOTIFY=DEKARI

4.3.2.

Sentencia EXEC :
La sentencia EXEC sirve para identificar el programa, procedimiento
catalogado o in-stream que se desea ejecutar, y las carcteristicas de ejecucin
de ese programa.
Un JOB puede tener hasta un maximo de 255 pasos de JOB. Este limite incluye
los pasos de los procedimientos que se llaman mediante una EXEC.
El formato de una sentencia EXEC ser el siguiente:
//[nom-paso] EXEC parm-pos,[resto-parm] [comentarios]
El nombre de paso ser opcional, pero no se podr hacer referencia a algo
definido en este paso de trabajo, as como no se podr rearrancar el JOB a
partir de este paso.
El parmetro posicional permitir indicar si se esta haciendo referencia a un
programa o a un procedimiento.
A continuacin se detallan los parmetros posicionales:
4.3.2.1. PGM :
Indica que la sentencia EXEC hace referencia a un programa en concreto para
llamarlo a ejecucin. El nombre de programa debe coincidir con un miembro de
la librera de objetos. Aunque sea de palabra clave debe ser el primer
parmetro que se codifique.
PGM=nombre.programa | *.nombre-paso.nombre-dd
| *.nombre-paso.nombre-proc.nombre-dd
*.nombre-paso.nombre-dd o *.nombre-paso.nombre-proc.nombre-dd - Se hace
referencia al programa por el nombre de DD que define ese programa para que
el sistema pueda buscarlo.
Ejemplo 1:
El programa se encuentra en una libreria temporal definida por la siguiente DD
dentro del paso LKED:
//LIBRDD

DD DSN=&&LIBR(PROG)
Pgina 11

Conceptos de JCL

La sentencia EXEC para llamar a este programa ser :


//PASON

EXEC PGM=*.LKED.LIBRDD

Ejemplo 2:
//DEKARI0A JOB (P,'DES'),CLASS=D,MSGCLASS=X,
//
MSGLEVEL=(1,1),NOTIFY=DEKARI
//PASO1 EXEC PGM=UPDT
//DDA
DD DSNAME=SYS1.LINKLIB(P40),DISP=OLD
//PASO2 EXEC PGM=*.PASO1.DDA

4.3.2.2. PROC
Indica al sistema que se llama y ejecuta un procedimiento catalogado o instream.
La sintaxis de este parmetro ser la siguiente:
PROC=nombre-procedimiento
nombre-procedimiento
nombre-procedimiento : Debe ser un procedimiento catalogado o existente en
el mismo JOB (in-stream)
Ejemplo
//PASO1 EXEC PROC=CREATE
//PASO1 EXEC CREATE
Todos los parmetros que se detellan a continuacin puden estar en cualquier lugar de
la sentencia EXEC (parmetros de palabra clave) y siempre despues de los parmetros
posicionales.
4.3.2.3. ADDRSPC
Especifica si el paso en cuestin se ha de ejecutar en memoria REAL o
VIRTUAL.
La sintaxis de este parmetro ser la siguiente:
ADDRSPC[.nombre-paso-procedimiento]=VIRT | REAL
El parmetro ADDRSPC cdificada en la sentencia JOB tiene preferencia sobre
la cdificada en la sentencia EXEC.
4.3.2.4. COND
Especifica bajo que condiciones se ejecutar el paso, dependiendo de que
cdigos de retorno devueltos por uno, varios o todos los pasos anteriores.
Pgina 12

Conceptos de JCL

La sintaxis de este parmetro ser la siguiente :


COND[.nombre-pas-proc]=[(cdigo,operacin)] |
((cdigo,operacin[,nombre-pas][,nombre-pas-proc]),
[,(cdigo,operacin[,nombre-paso][,nombre-proc])]... [,EVEN] [,ONLY]
El cdigo indica el nmero con el que el sistema compara con los cdigos de
retorno devueltos por todos los pasos del job o por cada paso especifico. El
cdigo es un nmero decimal entre 0 y 4095.
La operacin indica el tipo de comparacin que se establece con el cdigo de
retorno. Si la condicin se cumple el paso no se ejecuta en caso contrario
se ejecutar el paso.
El nombre-paso identifica el nombre de un paso previo que devuelve el cdigo
de retorno usado en la comparacin.
Varias condiciones unidas por comas actuan como un OR; es decir que si se
cumple una o varias condiciones el paso no se ejecutar.
EVEN - Indica que este paso se ejecutar siempre que algun paso anterior haya
terminado anormalmente.
ONLY - Indica que este paso se ejecutar solamante si algun paso anterior
termina anormalmente.
Si se especifico el parmetro COND en la sentencia JOB y en una o varias
sentencias EXEC, en este caso y si el cdigo de retorno de la condicin del
JOB se cumple el JOB deja de ejecutarse y el sistema ignora los parmetros
COND de las sentencias EXEC.
Ejemplo 1:
//PASON
(4,LT,PASO1))

EXEC

PGM=IEBGENER,COND=(EVEN,(12,LT),

Se ejecuta aunque algn paso anterior haya terminado anormalmente, pero no


se ejecuta si el PASO1 devolvi un cdigo de retorno mayor que 4 y cualquier
paso devolvio un cdigo de retorno superior a 12.
Ejemplo 2 :
//PASO1 EXEC PGM=UNO
//PASO2 EXEC PGM=DOS,COND=(4,EQ,PASO1)
//PASO3 EXEC PGM=TRES,COND=((8,LT,PASO1),(8,GT,PASO2))
Si el PASO1 devuelve un cdigo de retorno 4, el PASO2 no se ejecuta.Si 8 es
menor que el cdigo de retorno del PASO1 (en este caso es 4) no se cumple la
condicin y el paso se ejecuta.
El cdigo de retorno del PASO2 no se comprueba ya que no se ejecuta debido
a los cdigos de retorno.
4.3.2.5. PARM
Sirve para pasar algn tipo de informacin al programa cuando se este
ejecutando.
La sintaxis de este parmetro ser la siguiente:
Pgina 13

Conceptos de JCL

PARM=parmetro
prametro - Es la informacin pasada y se pueden pasar hasta 100 carcteres.
Si la informacin esta compuesta por ms de una expresin se separarn por
comas, que pasarn al programa, y se encerrarn el conjunto entre parentesis o
apostrofos pero estos delimitadores no pasarn al programa.
Para recibir la informacin en un programa COBOL se deber definir el
parmetro en el rea de comunicaciones del programa (LINKAJE SECTION).
LINKAJE SECTION.
01 PARAMETRO.
02 LONGITUD PIC 9(4) COMP.
02 DATOS
PIC X(10).
La sentencia EXEC ser de la siguiente manera:
//PASON EXEC PGM=MESES,PARM=ENERO
4.3.2.6. REGION
Indica la cantidad de memoria real o virtual necesaria para ejecutar este paso.
La sintaxis de este parmetro ser la siguiente:
REGION[.nombre-paso-proc] = valorK | valorM
Este parmetro es igual que el de la sentencia JOB.
Si se especifico el parmetro REGION en la sentencia JOB este es aplicado a
todos los pasos del JOB e ignora todos los parmetros regin de las sentencias
EXEC.
4.3.3.

Sentencia DD :
La sentencia DD (Definicin de Datos) describe un fichero especificando todas
las carcteristicas necesarias para que un programa pueda trabajar con el.
La sintaxis de la DD ser la siguiente:
//[nombre-dd]
DD [parm-pos][parm-palabra-clave]
[nombre-pas-proc.nombre.dd]
Si tras una sentencia DD con nombre, el sistema encuentra otras sentencias
DD sin nombre asume que todos los ficheros que van definiendo son
prolongacin del que define la primera, y asi hasta que se encuentre una nueva
DD con nombre; a esto se le llama concatenacin de DD's.
En Cobol el nombre a la derecha de la clausula ASSIGN deber corresponder
con el nombre de DD del fichero que define, para el caso de ficheros
secuenciales SAM y para ficheros VSAM indexados y relativos, para el caso de
ficheros VSAM ESDS (secuenciales) le precedera el prefijo AS-.
Ejemplo 1:
//VSAMESDS DD DSN=DES.DEKARI.VSAMESDS,DISP=SHR
Pgina 14

Conceptos de JCL

En Cobol ser
SELECT ENTRADA ASSIGN AS-VSAMESDS
Ejemplo 2:
//SAM

DD DSN=DES.DEKARI.SAM,DISP=SHR

En Cobol ser
SELECT ENTRADA ASSIGN SAM
Los parmetro posicional, al igual que la tarjeta EXEC, deber ir codificado
antes que cualquier parmetro de palabra clave.
4.3.3.1. */DATA
Indica que el fichero que se define en la DD va a continuacin de ella en la
corriente de entrada.
El final del fichero viene marcado por:
El delimitador /* en columnas 1 y 2.
Otra sentencia de control // en columnas 1 y 2.
Una sentencia DD de este tipo no puede aparecer dentro de un procedimiento.
4.3.3.2. DUMMY
Indica que el fichero definido es un fichero "ficticio" es decir el programa lo
podr abrir, leer e incluso escribir, pero sern operaciones ficticias ya que el
sistema las ignorar pero sin producir un error en el programa.
//FICHERO1 DD DUMMY,[parmetros]
Los parmetros que se detallan a continuacin son todos parmetros de Palabra Clave.
4.3.3.3. DSNAME/DSN
Indica el nombre con el que el sistema crear (si es nuevo) o buscar (si ya
existe) el fichero definido por la sentencia de control DD.
La sintaxis de la sentencia DD, dependiendo del tipo fichero que se trate, ser
la siguiente :
//nombre-dd DD DSN=nombre-fichero-dd
donde nombre-fichero-dd podr tener las siguientes formas:
FICHEROS PERMAMENTES :
Se denominan ficheros permanentes aquellos que permanecen una vez
terminado el JOB.
nombre-fichero : Ser el nombre de un determinado fichero permanente,
existen dos tipos de nombres :
Pgina 15

Conceptos de JCL

nombre-fichero sin calificar : Se compondr de 1 a 8 caracteres alfanumricos


y/o los caracteres especiales (@,#,$).
Ejemplo : //ENTRADA DD DSN=ENTRADA
nombre-fichero calificado : Son mltiples nombres unidos mediante puntos.
Cada nombre ser codificado como un nombre sin calificar.
La longitud mxima del nombre (incluidos puntos) ser de 44 caracteres, 35
para un grupo de generacin y 17 para cintas magnticas.
Ejemplo : //ENTRADA DD DSN=DES.DEKARI.ENTRADA
nombre-fichero(nombre-miembro) : Indica el nombre de un fichero
particionado permanente (librera) y el nombre de miembro dentro de el.
Ejemplo : //LIBRDD DD DSN=DES.DEKARI.JCL(LOAD)
nombre-fichero(generacin) : Indica el nombre de un grupo de generacin y
un determinado ciclo dentro de el.
Ejemplo : //GENER DD DSN=DES.DEKARI.GENER(0)
FICHEROS TEMPORALES :
Se dice que un fichero es temporal cuando se crea y se borra dentro del mismo
JOB.
La caracterstica de estos ficheros es que el sistema los almacena en unos
discos especiales definidos para este fin.
nombre-fichero-temporal : Indica el nombre de un determinado fichero
temporal.
Ejemplo : //TEMPORAL DD DSN=&&ENTRADA
nombre-libreria-temporal(nombre-miembro) : Indica el nombre de miembro
dentro de una librera temporal.
Ejemplo : //LIBDRT DD DSN=&&LIBMOD(PGM045)
Se podrn referenciar DD's ya codificadas bien en pasos anteriores del JOB o
bien en procedimientos catalogados o in-stream.
*.nombre-dd : Copia el nombre del fichero que contiene la DD (nombre-dd)
ms cercana.
*.nombre-paso.nombre-dd : Copia el nombre del fichero de la DD (nombredd) contenida en el paso (nombre-paso) del mismo JOB.
*.nombre-paso.nombre-paso-proc.nombre-dd : Copia el nombre del fichero
de la DD (nombre de DD) contenida en el paso del procedimiento (nombrepaso-proc) ejecutado desde el paso (nombre-paso).
NULLFILE : Realiza las mismas funciones que si definimos el fichero como
DUMMY.
4.3.3.4. DISP
Este parmetro indica el estado en que se encuentra el fichero cuando se inicia
el paso de de trabajo y como se desea que quede una vez finalizado este.
La sintaxis de este parmetro ser el sigiente:

Pgina 16

Conceptos de JCL

DISP=(x,y,z)
Donde x es el estado inicial en que se encuentra el fichero antes de ejecutar el
paso.
El parmetro x podr tomar los siguientes valores:
NEW : El fichero es nuevo y se crea en este paso de trabajo.
SHR : El fichero existe y adems permite que sea compartido por otra tarea.
OLD : El fichero existe y no puede ser compartido con otras tareas (utilizacin
exclusiva).
MOD : Si el fichero existe se asume utilizacin exclusiva, y obliga al sistema de
lectura/escritura a posicionarse trs el ltimo registro que exista.
Si el fichero no existe el sistema asume que es nuevo y asume el estado NEW.
Donde y es el estado en que quedar el fichero si el paso de trabajo termina
bien.
El parmetro y podr tomar los siguientes valores:
DELETE : El fichero no se va a utilizar en adelante y el espacio que ocupaba en
el volumen debe quedar libre al final del paso.
KEEP : El fichero se debe guardar al final del paso, pero no se crea una entrada
en el catalogo del disco.
PASS : El fichero se va a utilizar por otro paso de trabajo dentro del mismo
JOB.
Al final del JOB el fichero desaparecer.
CATLG : El fichero se guarda creando una entrada en el catalogo del sistema o
en un catalogo de usuario.
UNCATLG : El sistema guarda el fichero pero borra la entrada del catalogo del
sistema o catalogo de usuario.
Donde z es el estado en que quedar el fichero si el paso de trabajo termina
mal.
El parmetro y podr tomar los siguientes valores:
DELETE,KEEP,CATLG,UNCATLG
Teniendo estos valores el mismo sentido que para el caso en que el paso
termine bien.
Los valores por defecto son:
Si se omite el parmetro x tomar el valor NEW.
Si se omite el parmetro y se tomar DELETE si eldataset es NEW y KEEP
si el dataset exista ya.
Si se omite el parmetro z se tomar el valor implicito o explicito del
parmetro y.
Si el segundo parmetro es PASS entonces el parmetro z tomar DELETE
para un dataset NEW y KEEP para un dataset ya existente.
Si
se
omite
el
parmetro
DISP
se
toma
por
defecto
(NEW,DELETE,DELETE).

Pgina 17

Conceptos de JCL

Ejemplo 1:
//DD1

DD DSN=DES.DEKARI.NEW,DISP=(,CATLG,DELETE)

Esto es como si fuera


//DD1 DD DSN=DES.DEKARI.NEW,DISP=(NEW,CATLG,DELETE)

4.3.3.5. SPACE
Este parmetro se codifica cuando se desea realizar una solicitud de espacio
para un nuevo fichero.
La sintaxis del parmetro SPACE ser la siguiente :
SPACE=(TRK,(cant-prim,[cant-sec][,direc][,RLSE][,CONTIG],
[,ROUND])
(CYL,
[,index][, ][,MXIG]
(longitud-bloque,
[,ALX]
[, ]
TRK : Solicita el espacio a asignar en pistas.
CYL : Solicita el espacio a asignar en cilindros.
longitud bloque : Solicita el espacio en bloques cuya longitud es la indicada por
este subparmetro.
cant-prim : Cantidad que debe asignarse al principio para el fichero.
cant-sec : Cantidad que debe aadirse al fichero si se necesita ms espacio.
El sistema puede hacer hasta 16 extensiones en total del fichero en cada
volumen.
Si el fichero es particionado:
direc : es el nmero de bloques de 256 octetos que contendrn el directorio del
fichero.
Si el fichero es secuencial indexado :
index : es el nmero sea en pistas o cilindros necesarios para el rea de
indices.
RLSE : Indica que el espacio que no se utilice en la creacin del fichero se
debe liberar cuando se cierra.
CONTIG : Indica que el espacio asignado para la peticin primaria debe de ser
contiguo.
MXIG : Indica que se debe asignar para la peticin primara la mayor cantidad
de espacio libre contiguo que haya en el volumen, siempre que sea igual o
mayor que la cantidad primaria pedida.
ALX : Indica que se debe asignar para la peticin primaria hasta cinco reas
contiguas de memoria de tamao igual o mayor que la cantidad primaria
pedida.
ROUND : Si se especifica la cantidad de espacio pedido en unidades de
longitud de bloque, obliga al sistema a que redendee a un nmero entero de
cilindros.
Ejemplo 1:
Pgina 18

Conceptos de JCL

//DD1
DSN=DES.DEKARI.EJEMPLO1,DISP=(,CATLG,DELETE),
//
SPACE=(CYL,(1,1),RLSE)

DD

Ejemplo 2:
//DD2
DSN=DES.DEKARI.EJEMPLO2,DISP=(,CATLG,DELETE),
//
SPACE=(TRK,(1,1,10),RLSE)

DD

Ejemplo 3:
//DD3
DSN=DES.DEKARI.EJEMPLO3,DISP=(,CATLG,DELETE),
//
SPACE=(3440,(500,30),,,ROUND)

DD

4.3.3.6. VOLUME
Indica el volumen donde reside ( residir si es nuevo) el fichero.
La sintaxis del parmetro volumen ser la siguiente:
VOLUME=[(PRIVATE[,RETAIN][,n
secuencia][,ncuenta],
[SER=nserie])
VOL
[REF=nom-fic]
[REF=*.nom-DD]
PRIVATE : El sistema no puede asignar espacio para otros ficheros en este
volumen, a menos que en la sentencia DD se solicite este volumen especifico.
Un volumen definido como PRIVATE ser desmontado al final del paso.
RETAIN : Un volumen en cinta, definido como private, no ser desmontado al
final del paso.
n secuencia : Dentro de un fichero multivolumen, indica el numero de volumen
a utilizar en nuestro proceso
Este nmero debe ser un nmero decimal entre 1 y 255, el primer volumen se
identifica con el 1.
ncuenta : nmero de volmenes de salida que necesita un fichero
multivolumen de salida.
El nmero de cuenta es un nmero entre 1 y 255; el nmero mximo para
todas las DD's del paso es de 4095.
Todos los parmetros anteriores son posicionales, si falta alguno se pondr una
"," en su lugar.
SER : Indica el nmero de serie del volumen que se necesita
Se pueden especificar hasta 255 n de serie.
REF : Indica que se solicita el mismo volumen que el nombre de fichero
referenciado, este fichero debi venir de otro paso con DISP=PASS o
catalogado.
Se puede referir al nombre de fichero que se utiliz en una DD anterior.
Ejemplo 1:
//DD1 DD DSN=ENTRADA,VOL=SER=234511
Pgina 19

Conceptos de JCL

Ejemplo 2:
//DD2 DD DSN=SALIDA,DISP=(,CATLG,DELETE),
//
VOL=(,,,3,SER=(330001,330002,330003)),
//
SPACE=(TRK,(9,10)),UNIT=(TAPE,P)

4.3.3.7. UNIT
Indica el tipo y nmero de unidades que se necesitan para el fichero que se
esta definiendo.
La sintaxis del parmetro unit ser la siguiente:

UNIT=([direccin][,cuenta][,DEFER]
[tipo dis] [,P ]
[nom-gene] [,
]
UNIT=AFF=nombre-dd
direccin : Identifica un dispositivo particular, la direccin es un nmero de tres
cifras en hexadecimal.
Normalmente no se debe utilizar esta formula para el acceso a una unidad a
menos que sea muy necesario.
tipo dispositivo : Es el nombre del sistema que identifica una serie de unidades.
Es el tipo de dispositivo, 3380,3390,3420,3480,etc....
nombre genrico : Es un nombre de 1 a 8 carcteres que identifican a una serie
de dispositivos.
Ejemplo :
SYSDA -- dispositivos acceso directo
TAPE -- dispositivos en cinta.
cuenta : Es el nmero de unidades que se necesitan para ese fichero. Este
nmero es un nmero decimal de 1 a 59.
P
: Indica que los volmenes especificados para ese fichero deben montarse
en unidades distintas y a la vez.
DEFER : Indica al sistema que no se le monten las unidades hasta el momento
de abrir el fichero.
AFF : El fichero se debe montar en la misma unidad que al fichero definido en
una DD anterior pero dentro de un mismo paso.
Ejemplo 1:
//DD1 DD DSN=CINTA1.ENERO,DISP=SHR,
//
VOL=SER=ENERO,UNIT=(TAPE,,DEFER)
//
DD DSN=CINTA2.FEBRERO,DISP=SHR,
//
VOL=SER=FEBRER,UNIT=AFF=DD1
//
DD DSN=CINTA3.MARZO,DISP=SHR,
//
VOL=SER=MARZO,UNIT=AFF=DD1
Pgina 20

Conceptos de JCL

4.3.3.8. LABEL
Especifica el tipo de etiquetas asociadas con el fichero que define la sentencia
DD donde se encuentre.
La sintaxis del parmetro label ser la siguiente:
LABEL=([nsec][,etiqueta][,PASSWORD][,IN ][,RETD=nnnn]
[,NOPWREAD][,OUT][,EXPDT=yyddd | yyyy/ddd]
n secuencia : Indica la posicin del fichero dentro de una cinta magntica.
Por omisin asume 1.
etiqueta : Indica el tipo de etiquetas asociadas al fichero.
SL - Etiquetas standard IBM.
SUL - Etiquetas standard IBM y del usuario.
AL - Etiquetas standard ANSI
AUL - Etiquetas standard ANSI y del usuario.
NSL - No tiene etiquetas standard
NL - No tiene ningn tipo de etiquetas.
LTM - Se debe ignorar la marca de relleno de cinta en una cinta sin
etiquetas.
BLP - No se procesan las etiquetas de un fichero de cinta.
PASSWORD : El fichero no podr ser modificado ni leido a menos que el
operador (usuario TSO) introduzca la palabra de proteccin.
NOPWREAD : El fichero no necesita password para lectura peri si para
modificacin.
IN
: Indica que el fichero BSAM no podr ser abierto mas que de lectura
OUT
: Indica que el fichero BSAM no podr ser abierto ms que de escritura.
RETPD : N de das a partir de la creacin durante los cuales debe respetar el
fichero.
EXPDT : Fecha en que ser borrado el fichero; en formato ao y dia.
4.3.3.9. DCB
Este parmetro nos describe internamente el fichero.
La sintaxis del parmetro dcb es la siguiente:
DCB=(operando1,operando2,operando3 .........)
En la verisin de MVS/ESA no es necesario este parmetro ya que los
operandos se pueden colocar como si fueran parmetros de la sentencia DD.
Los posibles operandos que se detallarn a continuacin son :
RECFM : Especifica el tipo de registros de los que esta compuesto el fichero.
U - Registro de longitud indefinida
V - Registro de longitud variable.
VB - Registro de longitud variable y bloqueado
F - Registro de longitud fija.
FB - Registro de longitud fija y bloqueada.
FBA- Registro de longitud fija y bloqueada y con carcteres de control
de dispositivo.
Pgina 21

Conceptos de JCL

LRECL : Especifica la longitud del registro, permitiendo poner esta longitud en


K's o en bytes.
La longitud en K's se encuentra en el rango de 1 a 16383.
BLKSIZE : Especifica el tamao de bloque del fichero. Este valor deber ser
multiplo del tamao de registro LRECL.
DSORG
valores:

: Indica la organizacin del fichero, podr tomar los siguientes

PS --- Secuencial
PO --- Particionado
IS --- Secuencial indexado
DEN : Indica la densidad de la cinta magntica, podr tomar los siguientes
valores:
0 --- 200 bpi (solo cinta 7 pistas)
1 --- 556 "
"
"
2 --- 800 "
"
"
3 --- 1600 " (solo cinta 9 pistas)
4 --- 6250 "
"
"
4.3.3.10.

LIKE

Indica que los atributos de asignacin de un nuevo fichero se copien de un


fichero ya existente.
La informacin que se copiar ser la siguiente
RECFM,LRECL,KEYLEN,KEYOFF,SPACE
4.3.3.11.

FREE

Indica cuando el fichero debe ser liberado (desasignado).


La sintaxis de este parametro ser la siguiente:
FREE=END | CLOSE
END : Indica que el fichero ser liberado al final del paso.
CLOSE : Indica que el fichero ser liberado cuando sea cerrado.
4.3.3.12.

SYSOUT

Este parmetro permite identificar al fichero como un fichero de salida.


La sintaxis de este parmetro ser la siguiente:
SYSOUT=([clase][,programa][,form][,]
[,INTRDR ]
clase : clase de salida a la que queda asignado este fichero.
programa : Identifica el nombre del progrma de installacin encargado de
escribir el fichero.
Pgina 22

Conceptos de JCL

INTRDR : Indica al JES que el fichero de salida ser enviado al internal reader
como un job de entrada al sistema.
form : nombre de 1 a 4 carcteres del formulario en el que ser impresa la
salida.
Ejemplo :
//SALIDA DD SYSOUT=*
Indica que el fichero de salida ser escrito en la clase de salida indicada en el
parmetro MSGCLASS de la sentencia JOB.
4.3.3.13.

DEST

Indica al sistema el destino de un fichero de salida.


La sintaxis de este parmetro es la siguiente:
DEST= LOCAL | RMTXXXX | RXXXX
LOCAL : Identifica cualquier dispositivo local.
RMTXXXX : Identifica un terminal remoto.
RXXXX : Identico al anterior.
4.3.3.14.

COPIES

Indica el nmero de copias que se desea de un fichero de salida.


La sintaxis de este parmetro es la siguiente:
COPIES=valor
valor : nmero de copias deseadas del fichero de salida.
4.4.

Sentencias DD Especiales

La principal carcteristica de estas DD's es que poseen un nombre especial para el sistema.
4.4.1.

JOBCAT
Esta DD define el catalogo donde debe buscar el JOB todos los ficheros
catalogados.
La sintaxis de esta DD ser la siguiente:
//JOBCAT DD DSN=nombre-catalogo,DISP= SHR | OLD
Esta sentencia se deber colocar despues de la sentencia JOB y antes de la
primera sentencia EXEC.
El sistema buscar el fichero en este catalogo, en caso de no encontrarlo lo
buscar bien en el catalogo privado que le indique el primer calificador del
nombre del fichero o bien en el catalogo del sistema.

Pgina 23

Conceptos de JCL

4.4.2.

JOBLIB
Esta DD define la librera donde se buscarn los programas a ejecutar por el
JOB.
En caso de omitirse o no encontrar el programa en la librera especificada se
buscar en la SYS1.LINKLIB.
Si se utiliza una JOBLIB deber ser la primera sentencia despues de la
sentencia JOB ; y no podr codificarse en un procedimiento catalogado.
La sintaxis de esta DD ser la siguiente:
//JOBLIB

4.5.

DD DSN=DES.DEKARI.PGM,DISP=SHR

4.4.3.

SETPCAT
Es igual que la JOBCAT pero a nivel de paso de JOB.
En caso de existir una JOBCAT y una SETPCAT primero se buscar en el
catalogo de la STEPCAT y si no encontrase el fichero en el catalogo definido en
la JOBCAT.

4.4.4.

SETPLIB
Es igual que la JOBLIB pero a nivel de paso de JOB. En caso de existir una
JOBLIB y una STEPLIB primero se buscar el programa en la librera definida
en la STEPLIB y en caso de no encontrarlo en la JOBLIB.

4.4.5.

SYSABEND,SYSUDUMP,SYSMDUMP
Define unos ficheros donde se va a efectuar un vuelco de memoria en caso de
que el paso termine anormalmente.
La diferencia existente entre ellas reside en qu parte de memoria se vuelca en
el fichero.

4.4.6.

SYSIN
Se utiliza para comenzar un fichero in-stream; es decir los datos vienen a
continuacin de la ficha DD.
En Cobol estos datos se recuperarn mediante la instruccion ACCEPT.
//SYSIN DD *
datos
/*

4.4.7.

SYSPRINT
Indica el fichero de salida standard del programa.
En Cobol el programa escribir en este fichero los DISPLAYS realizados.

Grupos de generacin
Mediante el IDCAMS (programa de ejecucin de comandos de VSAM) se crear una
entrada en el catalogo para ficheros no-VSAM; a dicha entrada se la pueden unir varios
ficheros del mismo nombre.
Este sistema permitir mantener varias versiones de un mismo fichero; el sistema
permitir mantener hasta 255 versiones dentro de un grupo de generacin.
Pgina 24

Conceptos de JCL

La versin ms actual ser la versin 0, la anterior la versin (-1), la anterior a esta la (2), etc....
Si se desea crear una nueva versin ser la (+1), una vez creada esta pasar a ser la
verisn 0, la 0 la -1 y as sucesivamente hasta la ltima que se liberar.
Ejemplo :
//GRUPO DD DSN=DES.DEKARI.GRUPO(0),DISP=SHR

4.6.

Procedimientos
Un conjunto de sentencias de control que se desean ejecutar muchas veces con pocos
cambios se denomina procedimiento.
El sistema nos permitir almacenar estas sentencias de manera que puedan ser
ejecutadas por varios usuarios; para ello el usuario identificar a este conjunto de
sentencias mediante un nombre, llamado nombre procedimiento.
Al procedimiento almacenado en una librera del sistema se denomina procedimiento
catalogado, en este caso el nombre del procedimiento ser el nombre del miembro con
que fue salvado en la librera de procedimientos.
Si el uso de un conjunto de sentencias de control no es lo suficientemente frecuente
para que merezca la pena catalogarlo, entonces se pueden incluir estas sentencias en
el JOB de manera que cada vez que se deseen utilizar dentro del mismo JOB
simplemente nos referenciaremos a ellas con ese nombre genrico. A este tipo de
procedimientos se denominan procedimientos in-stream.
En un JOB se deber identificar donde comienza y donde acaba un procedimiento
catalogado; para ello se utilizan las sentencias PROC y PEND.
Ejemplo :
//FASE1 PROC
//PASO1 EXEC PGM=P1
//DD1 DD DSN=DES.DEKARI.ENTRADA,DISP=SHR
//SALIDA DD SYSOUT=*
//PEND
Para llamar a un procedimiento se utilizar la sentencia EXEC.
El programa READER del JES resolver la sentencia EXEC sustituyendo esta por todas
las sentencias del procedimiento; en un procedimiento catalogado el READER buscar
este en la librera de procedimientos.
4.6.1.

Parmetros simbolicos :

Tanto los procedimientos catalogados como los procedimientos in-stream pueden


contener parmetros simblicos.
Existen valores de parmetros o subparmetros dentro de un procedimiento que
pueden variar cada vez que se ejecutan, esto se puede resolver con un parmetro
simblico.
La sintaxis de un parmetro simblico es un ampersand (&) seguido por 1 a 7
caracteres alfanumricos incluyendo los caracteres especiales (@,#,$).
Ejemplo :
Pgina 25

Conceptos de JCL

//FASE1 PROC PROVI


//PASO1 EXEC PGM=P1
//C1 DD DSN=CINTA.&PROVI,DISP=SHR
//I1 DD SYSOUT=*
Las sentencias para ejecutar este procedimiento sern las siguientes :
//DEKARI0 JOB (P,DES),CLASS=2,MSGCLASS=X,
//
MSGLEVEL=(1,1),NOTIFY=DEKARI
//PASO1 EXEC FASE1,PROVI=ZAMORA
//PASO2 EXEC FASE1,PROVI=ZARAGOZA
//PASO3 EXEC FASE1,PROVI=MADRID
El procedimiento entonces se resolver cambiando
//C1 DD DSN=CINTA.ZAMORA,DISP=SHR
Reglas de formacin de parmetros simbolicos :
1.- No se pueden utilizar como nombres de parmetros simblicos los nombres de
parmetros o
subparmetros de una sentencia EXEC.
Ejemplo : &REGION no sera valido.
2.- Se encierran entre apostrofos (') aquellos parametros que son precedidos por un
parmetro
simblico no encerrado entre apostrofes :
//DD1 DD DSN=&A'&B',DISP=OLD
3.- Un parmetro simblico terminar en un punto cuando le sigue un cdigo fijo y
comienza
con:
Un carcter alfanumerico (incluyendo @,#,$)
Un punto
El punto no aparecer despues del parmetro simblico, una vez resuelto el
procedimiento:
//DD1 DD DSN=&user..FTES,DISP=SHR
//DD1 DD DSN.DEKARI.FTES,DISP=SHR
4.6.2.

Modificacin de Procedimientos
Las sentencias de un procedimiento se pueden modificar cuando este es
llamado mediante la sentencia EXEC.
Esta modificacin nos permitir cambiar parmetros de la sentencia EXEC del
procedimiento y modificar e incluir nuevas DD's en el procedimiento.
Para modificar parmetros de la sentencia EXEC se har lo siguiente :
En la llamada al procedimiento se pondr
//PASO1 EXEC PROC=PP,REGION=100K
Pgina 26

Conceptos de JCL

Se aplicar el parmetro REGION a todos los pasos del procedimiento.


Para que solamente se aplique a un paso se pondr:
//PASO1 EXEC PROC=PP,REGION.PASO11=100K
Para darle un valor nulo a un parmetro pondremos:
//PASO1 EXEC PROC=PP,REGION=
Cuando se deseen modificar sentencias DD's se deber tener en cuenta las
siguientes normas:
1.- Deben respetarse siempre el orden
primero las sentencias que aaden o
segundo, etc...
2.- Dentro del mismo paso siempre se
luego las que se aaden
3.- Dentro de las que se modifican se
dentro del procedimiento.

de pasos, se modificar o aadirn


modifican el primer paso, luego el
pondr primero las que modifican y
respetar el orden en que aparezca

Ejemplo :
//JOB1 JOB
//PASO1 EXEC FASE1,PROVI=ZAMORA
//PASO1.STEPLIB DD DSN=DES.GRDES.PGM,DISP=OLD
Para aadir un fichero catalogado :
//PASO1.STEPLIB DD
//
DD DSN=DES.GRDN.PGM,DISP=OLD
En este caso se respetaria la primera STEPLIB y aadiria la siguiente.
4.7.

Programas de utilidad del M.V.S.


Los programas de utilidad del M.V.S. son una serie de programas del sistema que
realizan una serie de funciones especificas.
4.7.1.

IEFBR14
El programa IEFBR14 es un programa que por si mismo no hace nada.
Simplemente se utiliza para aprovechar que para el iniciador es un programa y
que por tanto asigna ficheros, los cataloga, los borra, etc...
Por ejemplo :
//PASO1 EXEC PGM=IEFBR14
//DD1
DISP=DES.DEKARI.PRUEBA,DISP=(OLD,DELETE,DELETE)

DD

Esto har que el fichero DES.DEKARI.PRUEBA se borre al final de la ejecucin


del paso.
4.7.2.

IEBGENER
El programa iebgener permite realizar copias de archivos no VSAM.
Pgina 27

Conceptos de JCL

Por ejemplo :
//PASO1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=DES.DEKARI.ENTRADA,DISP=SHR
//SYSUT2 DD DSN=DES.DEKARI.SALIDA,DISP=(,CATLG,DELETE),
//
UNIT=SYSDA,VOL=SER=DES001,LIKE=DES.DEKARI.ENTRADA
//SYSIN DD DUMMY

4.7.3.

IEBCOPY
El programa de utilidad Iebcopy permitir realizar copias de ficheros
particionados (libreras).
Por ejemplo :
//PASO1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//DD1
DD DSN=DES.DEKARI.FTES,DISP=SHR
//DD2
DD DSN=DES.DEKARI.FTES.A2,DISP=(,CATLG,DELETE),
//
LIKE=DES.DEKARI.FTES,UNIT=SYSDA,VOL=SER=DES001
//SYSIN DD *
COPY INDD=DD1,OUT=DDD2

4.7.4.

DFSORT

El programa DFSORT permitir realizar la ordenacin o mezcla de ficheros.


Este programa recibir una serie de parmetros que indicarn al programa como se
desea la ordenacin del fichero.
Un paso tipico de SORT dentro de un JOB ser :
//SORT EXEC PGM=SORT
//SYSPRINT DD SYSOUT=*
//SORTIN DD DSN=nombre-fichero-entrada,DISP=SHR
//SORTOUT DD DSN=nombre-fichero-salida,DISP=(,CATLG,DELETE),
//
SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA,...........
//SORTWK01
DD
DSN=&&TRABAJO1,UNIT=SYSDA,SPACE=(TRK,
(1,1),RLSE)
//SORTWK02
DD
DSN=&&TRABAJO2,UNIT=SYSDA,SPACE=(TRK,
(1,1),RLSE)
//SORTWK03
DD
DSN=&&TRABAJO3,UNIT=SYSDA,SPACE=(TRK,
(1,1),RLSE)
//SYSIN DD *
SORT FIELDS=(10,4,A,24,8,A),FORMAT=BI
Los parmetros ms comunmente usados para la ordenacin de ficheros son los
siguientes:
PARAMETRO SORT:
Proporciona informacin de los campos por los que se desea ordenar el fichero.
La sintaxis de este parmetro ser la siguiente:
SORT FIELDS= (p,m,f,s,.....p,m,f,s) |
Pgina 28

Conceptos de JCL

(p,m,s,.....p,m,s),FORMAT=f
FIELDS=COPY
donde :
p : Posicin de comienzo del campo que se desea ordenar dentro del registro.
m : Longitud del campo a ordenar
f : formato del campo a ordenar, podr tomar los siguientes valores:
CH=Carcteres EBCDIC, sin signo
BI=Binario, sin signo
PD=Decimal empaquetado, con signo
s : Secuencia solicitada para la ordenacin de los campos.
A - Ascendente
D - Descendente
COPY: La secuencia de registros solicitada en este caso ser la misma que
tengan en el fichero de entrada.
PARAMETRO SUM :
Permitir sumar los campos que se soliciten para todos los registros cuyos
campos a ordenar sean iguales.
Dejar el resultado en uno de los registros eliminando el resto de registros
iguales.
La sintaxis de este parmetro ser la siguiente :
SUM FIELDS=(p,m,f,....p,m,f) | (p,m,......p,m),FORMAT=f | NONE
donde:
p : Posicin de comienzo del campo que se desea sumar
dentro del
registro.
m : Longitud del campo a sumar
f : formato del campo a sumar, podr tomar los
siguientes valores:
BI=Binario, sin signo
PD=Decimal empaquetado, con signo
ZD= Decimal ?
NONE: Permitir eliminar registros duplicados de un
archivo de entrada.
PARAMETRO INCLUDE :
Indica que solamente aquellos registros cuyos campos se encuentren con
ciertos criterios de seleccin sern incluidos en la ordenacin.
La sintaxis de este parmetro ser la sigiente :
INCLUDE COND=(p1,m1,f1,operac,p2,m2,f2|cte,operador,.......)
Donde
p
: Posicin de comienzo del campo que se desea sumar dentro del registro.
m
: Longitud del campo a sumar
f
: formato del campo a sumar, podr tomar los siguientes valores:
CH=Carcteres EBCDIC, sin signo
BI=Binario, sin signo
PD=Decimal empaquetado, con signo
operac : operacin a realizar, podr tomar los siguientes valores
EQ - Igual
NE - Distinto
GT - Mayor que
GE - Mayor o igual que
LT - Menor que
LE - Menor o igual que
Pgina 29

Conceptos de JCL

cte

: Constante decimal,carcter o hexadecimal


X'40' -- Para valores hexadecimales
C' ' -- Para valores de formato carcter.
AND : AND lgico, tambien puede ser utilizado el carcter &.
OR : OR lgico, tambien puede ser utilizado el carcter |.
PARAMETRO OUTREC :
Indica como sern reformateados los registros antes de ser escritos.
La sintaxis de este parmetro ser la siguiente:
OUTREC FIELDS=([s,]p,m[,a]........[,s][,p[,m][,a]][,s])
Donde
p
m
a

: Posicin de comienzo del campo en el registro de entrada


: Longitud del campo de entrada
: Aliniamiento del campo de entrada dentro del campo de salida.
H=Media palabra
P=Palabra
D=Doble palabra
: Campo de separacin, los valores permisibles son:
nX - Separacin de blancos. n indica el nmero de blancos que sern
insertados.(X'40')
nZ - Separacin de ceros binarios. n indica el nmero de ceros
binarios que
sern insertados. (X'00').
n - Podr tomar valores de 1 a 256.
X'0000C' - Insertamos 4 ceros con signo en la posicin indicada.

5.

EJERCICIOS
Ejercicio 1.- Codifique un procedimiento "in-stream", que conste de un solo paso PASO1 que
llama al programa A, cuyo campo parmetro esta formado por un parmetro simblico
&PARAM que por defecto ser "LISTAR".
Se utilizar un fichero en disco, el cual se desconoce si exista o no, el nombre ser DES.FICH1
residir en una unidad de disco y tendr un espacio de 50 pistas. El estado se determinar por
otro parmetro simblico, que no podr dejarse nunca en blanco, y podr tomar los valores
NEW o OLD.
Codificar la sentencia EXEC de ejecucin del procedimiento dando a la disposicin del fichero
el valor NEW.
//DEKARI01 JOB (P,DES),'ANTONIO',CLASS=D,MSGCLASS=X,MSGLEVEL=(1,1),
//
NOTIFY=DEKARI
//*------------------------------------------------------------------------------------------------------*
//*E.D.S.
1993
-*
//*-*
//*FUNCION : RESOLUCION EJERCICIO 1
-*
//*-*
//*-----------------------------------------------------------------------------------------------------*
//PROC1 PROC PARM=LISTAR
Pgina 30

Conceptos de JCL

//PASO1 EXEC PGM=A,PARM=&ESTADO


//FICH1 DD
DSN=DES.FICH1,DISP=&ESTADO,UNIT=SYSDA,
//
SPACE=(TRK,50),DCB=(RECFM=FB,LRECL=70,BLKSIZE=70000),
//
BUFNO=11
//PEND
//*
//PASO1 EXEC PROC1,ESTADO=NEW
Ejercicio 2 : Se desea copiar un archivo existente en cinta a disco. El archivo en cinta tiene las
siguientes carcteristicas:
.
.
.
.
.

Sin etiquetas
El volumen esta etiquetado como "BM9305"
Densidad de 6250 Bpi.
Registros de longitud fija
Longitud 300 carct. y tamao bloque 3000 carcteres

El archivo de salida tendr las siguientes carcteristicas :


. Se almacenar en el volumen "DES930"
. El espacio se dar en pistas y lo que no se utilice se debe dejar libre.

//DEKARI02 JOB (P,DES),'ANTONIO',CLASS=D,MSGCLASS=X,MSGLEVEL=(1,1),


//
NOTIFY=DEKARI
//*------------------------------------------------------------------------------------------------------*
//*E.D.S
1993
-*
//*-*
//*- FUNCION : RESOLUCION EJERCICIO 2
-*
//*-*
//*------------------------------------------------------------------------------------------------------*
//COPIA EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=CINTA.MVTOS.BANMAD,DISP=SHR,
//
VOL=SER=BM9305,UNIT=2420,LABEL=(,NL),
//
DCB=(RECM=FB,LRECL=300,BLKSIZE=3000,DEN=4)
//SYSUT2 DD DSN=DES.DEKARI.SALIDA,DISP=(,CATLG,DELETE),
//
UNIT=DISKDES,VOL=SER=DES930,SPACE=(TRK,(10,10),RLSE)
//SYSIN DD DUMMY
Ejercicio 3 : El mismo problema propuesto en el ejercicio 2 pero hacer un procedimiento instream que nos permita copiar las cintas de meses diferentes.
Se debern copiar sobre ficheros de salida diferentes.
//DEKARI03 JOB (P,DES),'ANTONIO',CLASS=D,MSGCLASS=X,MSGLEVEL=(1,1),
//
NOTIFY=DEKARI
Pgina 31

Conceptos de JCL

//*------------------------------------------------------------------------------------------------------*
//*E.D.S.
-*
//*-*
//*- FUNCION : RESOLUCION EJERCICIO 3
//*-*
//*------------------------------------------------------------------------------------------------------*
//COPIA PROC
//PASO1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=CINTA.MVTOS.BANMAD,DISP=SHR,
//
VOL=SER=&VOLUM,UNIT=2420,LABEL=(,NL),
//
DCB=(RECM=FB,LRECL=300,BLKSIZE=3000,DEN=4)
//SYSUT2 DD DSN=DES.DEKARI.SALIDA.A&MES,DISP=(,CATLG,DELETE),
//
UNIT=DISKDES,VOL=SER=DES930,SPACE=(TRK,(10,10),RLSE)
//SYSIN DD DUMMY
//PEND
//PASO1 EXEC COPIA,VOLUM=BM9305,MES=05
//PASO2 EXEC COPIA,VOLUM=BM9304,MES=04
//*

Pgina 32

1993

-*

Conceptos de JCL

6.

ANEXO
Este anexo se compone con la informacin relativa a las nuevas sentencias de control
aparecidas en la versin 4.0 de M.V.S. y superiores.
Estas nuevas sentencias son las siguientes:
. IF/THEN/ELSE/ENDIF
. INCLUDE
. JCLLIB
A continuacin se pasar a detallar cada una de estas sentencias:

6.1.

IF/THEN/ELSE/ENDIF
Esta sentencia permite condicionar la ejecucin de los pasos dentro del JOB.
El formato de la sentencia es el siguiente :
//nombre IF (condicin) THEN comentarios
accin a realizar si se cumple la condicin
//nombre ELSE
accin a realizar si no se cumple la condicin
//nombre ENDIF
Dentro de esta sentencia se pueden anidar hasta 15 IF.
nombre : Es opcional y se utiliza para identificar la sentencia.
S se codifica deber de cumplir las siguientes restricciones:
Deber ser nico dentro del JOB.
Comenzar en la posicin 3.
Se compone de 8 caracteres alfanmericos
y los caracteres ($,#)
El primer caracter deber ser alfabetico.
Condicin : Es una combinacin de palabras reservadas y operadores (aritmeticos y

lgicos).
Operadores aritmeticos :
NOT - Se comprueba lo primero
En un segundo nivel se comprobarn los operadores :
GT > ; LT < ; NG >; NL < ; EQ =
NE = ;GE >= ; LE <=
En un tercer nivel se comprobarn los operadores :
AND & y OR |
Palabras reservadas :
Son palabras que se ponen en la condicin para conformarla.
Existen las siguientes:
RC - Indica el return code.
ABEND - Cuando se produzca una condicin de
ABEND en el JOB.
ABEND - Cuando no Abende
RUN - Indica cuando un paso se haya ejecutado
RUN - Indica cuando un paso no se ha ejecudado
Pgina 33

Conceptos de JCL

ABENDCC - Indica que se hace cuando da un determinado


ABEND en un paso previo.
RC : Permite identificar el return code dentro de la condicin.
Podr ponerse de los siguientes modos
RC - Se refiere a los return codes de todos los pasos anteriores.
paso.RC - Se refiere al return code de un determinado paso.
paso.paso-procedimiento.RC - Se refiere al paso de un procedimiento.
Ejemplo :
//IF1 IF (RC=0) THEN
accin a realizar cuando todos los pasos
hayan terninado con 0.
//ELSE1 ELSE
accin a realizar cuando algn paso haya
terminado distinto de 0.
//ENDIF1 ENDIF
ABEND : Permite identificar cuando un paso anterior da un ABEND.
Podr ponerse de los siguientes modos
ABEND- Se refiere a cuando de un ABEND en cualquiera de los pasos
anteriores.

cdigo de

paso.ABEND - Se refiere al ABEND de un determinado paso.


paso.paso-procedimiento.ABEND - Se refiere al paso de un procedimiento.
Ejemplo :
//IF1 IF (ABEND = TRUE)
accin a realizar cuando cualquier paso
haya dado un ABEND.
//ELSE1 ELSE
accin a realizar cuando cualquier paso
no haya dado un ABEND.
//ENDIF1 ENDIF
ABENDCC : Permite identificar cuando un paso anterior da un determinado
ABEND.
Podr ponerse de los siguientes modos
ABENDCC- Se refiere a cuando de un ABEND, del cdigo especificado en

cualquiera
de los pasos anteriores.
paso.ABENDCC - Se refiere al ABEND, de un determinado cdigo, en un paso.
paso.paso-procedimiento.ABENDCC - Se refiere al paso de un procedimiento.
Ejemplo :
//IF1

IF (ABENDCC = SXXX UXXXX)


accin a realizar cuando cualquier paso
haya dado un ABEND con cdigo de ABEND de usuario o de sistema.
//ELSE1 ELSE
accin a realizar cuando cualquier paso
no haya dado un ABEND con esos cdigos.
//ENDIF1 ENDIF
RUN : Permite identificar cuando un paso anterior se ha ejecutado o no.
Podr ponerse de los siguientes modos
paso.RUN - Se refiere a la ejecucin de un determinado paso.
paso.paso-procedimiento.RUN - Se refiere al paso de un procedimiento.
Ejemplo :
//IF1 IF (PASO1.RUN = TRUE)
accin a realizar cuando el paso paso1 se haya ejecutado.
Pgina 34

Conceptos de JCL

//ELSE1 ELSE
accin a realizar cuando el paso paso1 no haya ejecutado.
//ENDIF1 ENDIF
Esta condicin podr aparecer despues de la ficha JOB en cualquier lugar, en caso de
codificar una sentencia IF antes de la primera EXEC el sistema ignora el premetro
COND del primer EXEC.
Acciones :
El THEN o el ELSE debern conterner al menos una sentencia del tipo EXEC.
Se pueden incluir las siguientes sentencias:
IF anidado
EXEC
DD (incluyendo * | DATA)
STEPCAT, STEPLIB
SYSIN
No se pueden poner
JOB
JCLLIB
JOBCAT
JOBLIB
NO se ejecutan condicionalmente
PROC ...... PEND
Comentarios
INCLUDE
Sentencias del JES2 JES3
Se pueden especificar prametros simbolicos.

6.2.

JCLLIB
Permite definir librerias privadas que el sistema utiliza para el

JOB.

Se utilizan para :
. Procedimientos
. Grupos de sentencias JCL que se incluyen mediante
una INCLUDE.
//nombre JCLLIB ORDER=(libreria, libreria, etc.....)
librerias ni

Como libreria no se pueden identificar, ficheros o librerias temporales, miembros de


GDGs.
Deber aparecer despues de la ficha JOB y antes del primer EXEC.
No se puede meter en un INCLUDE.
Solamente se puede poner una sentencia de este tipo por JOB.

6.3.

INCLUDE
Identifica el nombre de un miembro que contiene un grupo de sentencias de JCL.
Pgina 35

Conceptos de JCL

El formato es el siguiente:
//nombre INCLUDE MEMBER=nombre
El miembro debe estar en la libreria de la JCLLIB o en la SYS1.PROCLIB.
Puede aparecer despues de la JOB.
Podrn existir hasta 15 niveles de include.
No podrn contener las siguientes sentencias:
JOB, PROC, Sentencias JES 2 , DD * DD DATA.

Pgina 36

You might also like