Curso
JCL (Job Control
Language)
JCL (Job Control Language)
Enva (submit) un trabajo al Sistema Operativo
Solicita los dispositivos de entrada o salida
Instrucciones para el S.O. En cuanto a
planificacin de recursos y ejecucin de
aplicaciones
Es un medio de comunicacin entre los
programas y el S.O. Y el hardware
Pg: 2
11/11/2014
Proceso interactivo y batch
Interactivo (on-line):
El envo de un comando supone una respuesta
del ordenador (conversacin)
Batch (por lotes):
Se envan un conjunto de comandos y el
ordenador responde cuando los ha tratado
todos
Pg: 3
11/11/2014
Estructura de una sentencia JCL
//JOBNAME JOB ALBERTO,MSGCLASS=H,NOTIFY=user
Operacin
Nombre
Parmetros
Identificador
Pg: 4
11/11/2014
Restricciones del JCL
Todas las sentencias comienzan con // (cols. 1 y 2)
Se escriben siempre en maysculas
Nombre (opcional)
Operacin (JOB, EXEC, DD)
Operandos (parmetros)
Pg: 5
Comienza en columna 3
Debe empezar por letra
Se permiten A-Z, 0-9, @, #, $
Separado de nombre y operando por al menos un blanco
Comienza antes de col. 17
Terminan antes de col. 72
Se separan por comas (sin blancos entre ellos)
11/11/2014
Tipos de parmetros
Pg: 6
Posicinales
Se identifican por su posicin
Se separan por comas
Si se omite alguno debe codificarse la coma
Si el parmetro omitido es el ltimo no es necesario
codificar la coma
De palabra clave
Se identifican por la palabra que los define
Pueden ir en cualquier orden
Tanto los parmetros posicinales como los de
palabra clave pueden contener subparmetros
Ejemplo: DISP=(NEW,CATLG,KEEP)
11/11/2014
Continuacin de una sentencia
Ninguna sentencia puede exceder la col. 71
Se puede interrumpir una sentencia en cualquier
parmetro o subparmetro, despus de la coma que
lo acompaa
La siguiente lnea comienza por // y se comienza a
escribir entre las col. 4 y 16 (inc.)
//JOBNAME JOB ALBERTO,MSGCLASS=H,NOTIFY=user
Es equivalente a:
//JOBNAME JOB ALBERTO,
//
MSGCLASS=H,
//
NOTIFY=user
Pg: 7
11/11/2014
Comentarios
Lneas completas
En una lnea que contenga parmetros
Se comienzan por //*
Se separan de la coma del ltimo parmetro por
un blanco
Si la lnea se contina debe haber un carcter
no blanco en la columna 72
//* Esto es una lnea de comentario completa
//JOBNAME JOB ALBERTO,
//
MSGCLASS=H,
//
NOTIFY=user esto es un comentario
Pg: 8
11/11/2014
Sentencias bsicas
JOB (1)
Identifica el comienzo de un trabajo
EXEC (1-255)
Identifica un paso (ejecucin de un programa
o procedimiento)
DD (1-3273)
Identifica a cada uno de los ficheros que se
utilizan en cada uno de los pasos
Pg: 9
11/11/2014
JES
ISPF
JES
Iniciador 1 Iniciador 2 Iniciador 3
Clases =
A,J,K,L
Clases =
A,B,C
Clases =
Z,D
SPOOL
Colas de
Entrada
SPOOL
Clase hold
Pg: 10
Colas de
Salida
Impresora
Clases =
A,X
11/11/2014
Sentencia JOB I
Nombre
Se le aplican las restricciones mencionadas
anteriormente
Parmetros posicinales
Informacin de contabilidad. Propia de cada
instalacin
Nombre del programador o comentario.
Mximo 40 caracteres
Ejemplo:
//JOBNAME JOB (2937,A@7),ALBERTO
Pg: 11
11/11/2014
Sentencia JOB II
Parmetros de palabra clave
Control de entrada
CLASS: Clase de entrada. Defecto la clase
asignada en la instalacin
TYPRUN:
HOLD se almacena en la cola de entrada, para
ejecutarse es necesario que sea liberado por el operador
SCAN slo se comprueba el JCL
Defecto el JOB se ejecuta normalmente
Ejemplo:
//JOBNAME JOB ALBERTO,CLASS=A,TYPRUN=SCAN
Pg: 12
11/11/2014
Sentencia JOB III
Control de ejecucin I
ADDRSPC: (no utilizado)
VIRT el JOB se ejecuta en memoria virtual (defecto)
REAL el JOB se ejecuta en memoria real
TIME: ([minutos][,segundos])
Mxima utilizacin de CPU por este JOB
NOLIMIT no hay limite en la utilizacin de CPU
MAXIMUN es lo mismo que TIME=357912
PERFORM=grupo de rendimiento
PRTY: prioridad de ejecucin
Pg: 13
Valor de 0 a 15. 0 = mnima prioridad, 15 = mxima
prioridad
11/11/2014
Sentencia JOB IV
Control de ejecucin II
REGION: tamao de la memoria
El sufijo K indica Kilobytes
El sufijo M indica Megabytes
El sistema ajusta automticamente a mltiplos de 4K
RESTART: nombre de paso, *
Indica desde donde debe comenzarse el JOB
* Indica que se ejecute desde el principio
Ejemplo:
//JOBNAME JOB ALBERTO,REGION=8192K,RESTART=PASO30
Pg: 14
11/11/2014
Sentencia JOB V
Control de salida
NOTIFY=nombre_usuario
El sistema enva un mensaje al usuario indicado cuado
termina el JOB
MSGCLASS=clase_salida (A-Z, 0-9)
Clase a la que se enviaran los mensajes y sentencias de
control
MSGLEVEL=([sentencias][,mensajes])
Sentencias
Mensajes
0 slo se imprime la sentencia JOB
1 se imprimen las sentencias de entrada y la expansin de
procedimientos catalogados
3 slo se imprimen las sentencias de entrada
0 no se imprimen los mensajes de asignacin/desaginacin
1 se imprimen los mensajes de asignacin/desaginacin
//JOBNAME JOB NOTIFY=user,MSGCLASS=H,MSGLEVEL=(1,1)
Pg: 15
11/11/2014
Sentencia JOB VI
A
H
//JOBNAME JOB CLASS=A,NOTIFY=user,MSGCLASS=H
Iniciador
SPOOL
Clases =
X,A
Colas de
Salida
Hold
Impresora
SDSF
Pg: 16
Clases =
A,X
11/11/2014
Sentencia EXEC I
Nombre:
PGM:
PROC:
ACCT: Informacin contable
PARM: pasa informacin al programa
Se le aplican las restricciones mencionadas
anteriormente
especifica el nombre del programa a ejecutar
Especifica el nombre del procedimiento a ejecutar
Igual a ficha JOB, aunque aqu es de palabra clave
//PASO30 EXEC PGM=ALFA,PARM=LOAD,UNLOAD
Pg: 17
11/11/2014
Sentencia EXEC II
Los siguientes parmetros tienen el mismo
significado que en la ficha JOB:
ADDRSPC
REGION
TIME
PERFORM
DPRTY (PRTY)
Pg: 18
11/11/2014
Sentencia EXEC III
//NOMBRE EXEC PGM=PROGRAM1
Fichero Particionado,
Librera o
Biblioteca
PROGRAM1
//NOMBRE EXEC PROC=PROC1
Procedimientos
//NOMBRE EXEC PROC1
PROC1
//paso1 exec
//file1 dd
//file2 dd
Pg: 19
11/11/2014
Cdigos de condicin
Especifican que el JOB se interrumpa si se
cumple la condicin
COND=((n,op,paso)...[,EVEN][,ONLY])
N nmero con el que se comparar el cdigo
retorno
Op operacin a realizar (GT, GE, LT, LE, EQ, NE)
Paso: nombre del paso cuyo cdigo de retorno se
quiere investigar, si no se codifica se investigan
todos los pasos anteriores.
EVEN: incluso si algn paso anterior termin mal
ONLY: slo si algn paso anterior termin mal
A partir de MVS/ESA v4 se puede utilizar if-endif para controlar los cdigos de condicin
Pg: 20
11/11/2014
Sentencia DD
La sentencia DD (Data Definition)
identifica a cada uno de los ficheros que
intervienen en el paso
Su nombre, al que se le aplican las
restricciones mencionadas anteriormente,
debe coincidir con el asignado en el
programa
Se utiliza para describir los atributos del
fichero (nombre, dispositivo, volumen,
bloqueo, etc.)
Pg: 21
11/11/2014
Tipos de Ficheros
Pg: 22
In-stream
Secuencial
Particionado Secuencial (PS)
Indexado
Relativo
Temporales
VSAM
Impresora
11/11/2014
Ficheros in-stream
Se incluyen junto al JCL
No pueden exceder de 80 columnas
Se indica su comienzo por un *
Se indica su finalizacin por /* (cols. 1 y 2)
Normalmente se utiliza SYSIN como nombre
//SYSIN DD *
Ejemplo:
Registro 1
.
.
Registro n
/*
Pg: 23
11/11/2014
Parmetros Comunes
Pg: 24
Comunes a todos los ficheros, excepto in-stream o
de impresora
DSN o DSNAME identifica al fichero que estamos
tratando
UNIT identifica el dispositivo (disco, cinta, etc.)
VOL o VOLUME identifica el volumen del que
estamos hablando
DISP disposicin del fichero
SPACE espacio a asignar (slo ficheros en disco)
DCB (Data Control Block) (Bloque de Control de
Datos)
11/11/2014
DSN DSNAME
De 1 a 5 bloques de un mximo de 8
caracteres separados por puntos
Normalmente el primer nivel debe ser un
nombre autorizado
A cada uno de los bloques se les aplica las
restricciones de nombre
Los ficheros temporales comienzan por &&
//FICHERO1 DD DSN=TESTAPP.MOVTO.CONTABLE
//FICHERO2 DD DSN=usuario.STOCK.ALMACEN
//FICHERO3 DD DSN=&&TEMP
Pg: 25
11/11/2014
DISP (disposition)
Estado del fichero (inicial, fin-ok, fin-ko)
Inicial:
Fin-ok:
NEW: nuevo (se crear en este paso)
OLD: viejo (ya existe) (uso exclusivo)
SHR: viejo (ya existe) (uso compartido)
MOD: viejo (ya existe) (se aadirn datos)
(si termina bien)
CATLG: Catalogado
KEEP: Guardado sin catalogar
PASS: Catalogado para el JOB
DELETE: Borrado
UNCATLG: Descatalogado
Pg: 26
Fin-ko:
(si termina mal)
CATLG: Catalogado
KEEP: Guardado sin catalogar
DELETE: Borrado
UNCATLG: Descatalogado
11/11/2014
Ubicacin de procedimientos
//nombre JCLLIB ORDER=(P390A.PROCLIB, )
//NOMBRE EXEC PROC=PROC1
//NOMBRE EXEC PROC1
P390A.PROCLIB
PROC1
//paso1 exec
//file1 dd
//file2 dd
SYS1.PROCLIB
//NOMBRE EXEC PROC=PROC1
//NOMBRE EXEC PROC1
Pg: 27
PROC1
//paso1 exec
//file1 dd
//file2 dd
11/11/2014
P390A.LOAD
Ubicacin de programas
PROGRAM1
//JOBLIB DD DSN=P390A.LOAD,DISP=SHR
//NOMBRE1 EXEC PGM=PROGRAMA1
//NOMBRE2 EXEC PGM=PROGRAMA2
//NOMBRE1 EXEC PGM=PROGRAMA1
//NOMBRE2 EXEC PGM=PROGRAMA2
//NOMBRE1
//STEPLIB
//NOMBRE1
//STEPLIB
EXEC PGM=PROGRAMA1
DD DSN=P390A.LOAD,DISP=SHR
EXEC PGM=PROGRAMA1
DD DSN=P390B.LOAD,DISP=SHR
SYS1.LINKLIB
PROGRAM1
P390A.LOAD
PROGRAM1
P390B.LOAD
PROGRAM1
Pg: 28
11/11/2014
Unit
Especifica la unidad a utilizar para el fichero
UNIT=(nnn,unit_count, DEFER) (no usar)
UNIT=(tipo,P,DEFER)
UNIT=(grupo,,DEFER)
//FICHERO1 DD DSN=F1,DISP=OLD,UNIT=3480
//FICHERO2 DD DSN=F2,DISP=(,KEEP),UNIT=3480
//FICHERO3 DD DSN=F3,DISP=(,KEEP),UNIT=SYSDA
Pg: 29
11/11/2014
Vol o Volume
Especifica el volumen donde se encuentra
el fichero
Slo para ficheros nuevos o no catalogados
VOL=SER=(nnnnnn ... [,nnnnnn])
VOL=REF=fichero
VOL=REF=*.pason
//FICHERO1 DD DSN=F1,DISP=OLD,UNIT=TAPE,
//
VOL=SER=003276
Pg: 30
11/11/2014
DCB (Data Control Block)
Subparametros:
RECFM: (Formato de registro)
F (Longitud Fija)
V (Longitud Variable)
U (Indefinido)
FB (Fijo Bloqueado)
VB (Variable Bloqueado)
LRECL: (Longitud del registro)
DSORG: (Data Set Organization)
PS (Secuencial)
IS (Secuencial Indexado)
PO (Particionado)
KEYLEN: (Longitud de la clave)
BLKSIZE: (Longitud del bloque)
A partir de MVS/ESA se pueden codificar como parmetros fuera de la DCB
Pg: 31
11/11/2014
Cilindro y pista
Pista (trk)
Pg: 32
Cilindro (cyl)
11/11/2014
Space
SPACE=(tipo,(p,s,d),RLSE,CONTIG)
Tipo:
TRK
CYL
Longitud de bloque
Pg: 33
P Cantidad primaria
S Cantidad secundaria
D Bloques de directorio (256) (slo PO)
RLSE (liberar espacio sobrante)
CONTIG (contiguo)
11/11/2014
Data definition (DD)
//NOMBRE EXEC PGM=PROGRAM1
PROGRAM1
OPEN entrada1
OPEN salida1
OPEN entrada2
//entrada1 DD DSN=fichero.entrada,DISP=SHR
c
DISCO2
DISCO3
Catlogo
Fichero.entrada
VTOC
A
//salida1 DD SYSOUT=A
//entrada2 DD *
dato1
dato2
/*
Pg: 34
SPOOL
Colas de
Salida
Impresora
Clases =
A,X
11/11/2014
Ejercicios I
1. Realizar y ejecutar un JOB que cree y
catalogue un fichero llamado
userid.primero.texto de longitud 80
2. Realizar y ejecutar un JOB que rellene el
fichero anterior con registros numerados
del 01 al 50 en sus dos primeras
posiciones
3. Descatalogar el fichero anterior
4. Borrar el fichero anterior
Pg: 35
11/11/2014
Programas de Utilidad I
IEFBR14 crear, catalogar y borrar ficheros
Los ficheros se crean, catalogan o borran
dependiendo de lo que indiquemos en el
parmetro DISP de la sentencia DD
Se pueden colocar cualquier nmero de
DDs y con cualquier nombre
//PASO01 EXEC PGM=IEFBR14
//DD1
DD DSN=F1,DISP=(OLD,DELETE)
//DD2
DD DSN=F2,DISP=(,CATLG,DELETE),
//
UNIT=DISK,VOL=SER=DSK0001,
//
DCB(RECFM=FB,LRECL=80,BLKSIZE=2400)
Pg: 36
11/11/2014
Procedimientos catalogados I
In-stream
Entre las sentencias PROC y PEND
No pueden estar anidados
Del sistema
Incluidos en SYS1.PROCLIB u otra librera de
procedimientos
Pueden incluir variables simblicas
En la llamada se puede modificar el valor de
las variables simblicas, de algn parmetro
o incluirse alguna DD inexistente
Pg: 37
11/11/2014
Procedimientos catalogados II
//TESTPROC PROC A=IMB406,B=ABLE,C=3330,D=WXYZ1,
// E=OLD,F=TRK,G='10,10,1'
//STEP EXEC PGM=&A
//DD1 DD DSNAME=&B,UNIT=&C,VOLUME=SER=&D,DISP=&E,
// SPACE=(&F,(&G))
// PEND
//LLAMADA EXEC PROC=TESTPROC,A=IEFBR14,
//
B=BAKER,E=(NEW,KEEP)
//STEP EXEC PGM=IEFBR14
//DD1 DD DSNAME=BAKER,UNIT=3330,VOLUME=SER=WXYZ1,
//
DISP=(NEW,KEEP),SPACE=(TRK,(10,10,1))
Pg: 38
11/11/2014
Backward References
//STEP EXEC PGM=IEFBR14
//DD1 DD DSNAME=FILE01,UNIT=3390,
//
DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(10,10,1)),
//
DCB=(RECFM=FB,LRECL=80,BLKSIZE=4000)
//*
//STEP2 EXEC PGM=IEBGENER
//SYSUT1 DSNAME=*.STEP.DD1,DISP=SHR
//SYSUT2 DSNAME=FILE02,REFDD=*.STEP.DD1
//
//STEP3 EXEC PGM=IEBGENER
//SYSUT1 DSNAME=*.STEP.DD1,DISP=SHR
//SYSUT2 DSNAME=FILE03,UNIT=3390,
//
DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(10,10,1)),
//
DCB=*.STEP.DD1
//
Pg: 39
11/11/2014
Sustitucin en procedimientos
//TESTPROC PROC C=A
//STEP EXEC PGM=IEBGENER
//SYSUT1 DD DSN=FILE01,DISP=SHR
//SYSUT2 DD DSN=FILE02,DISP=(,CATLG,DELETE),
//
UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSPRINT DD SYSOUT=&C
//SYSIN DD DUMMY
// PEND
//LLAMADA EXEC PROC=TESTPROC,C=HP)
//STEP.SYSIN DD *
GENERATE
RECORD FIELD
//STEP.SYSUT2 DD SPACE=(CYL,(10,20),RLSE)
Pg: 40
11/11/2014
Concatenacin de ficheros
Unin de varios ficheros formando un
nico fichero lgico
Los ficheros deben ser secuenciales y del
mismo tipo (RECFM)
La longitud de registro de todos los
ficheros debe ser igual
Si hay distintas longitudes de bloque
(BLKSIZE) el ms grande debe ir primero
Slo para ficheros de entrada
//FICHERO1 DD DSN=F1,DISP=OLD
//
DD DSN=F2,DISP=OLD
Pg: 41
11/11/2014
Ficheros sin etiqueta
Normalmente los ficheros llevan asociada
una etiqueta, donde se almacenan sus
caractersticas
En algunos casos no es recomendable el
uso de etiquetas
Los ficheros sin etiquetas debe estar en
cinta o cartucho
Para acceder a un fichero sin etiquetas
codificaremos LABEL=(n,NL)
N es el nmero del fichero en la cinta
NL indica que es un fichero sin etiquetas
Pg: 42
Ser nuestra responsabilidad indicar las
caractersticas del fichero
11/11/2014
Ficheros Temporales
Slo estn vivos durante la ejecucin del
JOB
Su nombre comienza por && y no pueden
exceder los 8 caracteres
Normalmente su disposition ser DELETE
o PASS
Recomendables para las pruebas
No puede investigarse su contenido una
vez ha terminado el JOB
Pg: 43
11/11/2014
Ficheros ficticios
Se utilizan cuando:
No nos interesa un fichero salida de un programa,
pero no queremos modificar el programa
Nos interesa que el programa considere que el
fichero de entrada est vaco
Se indican de dos formas:
Con el parmetro posicional DUMMY
Con DSN=NULLFILE
//FICHERO1 DD DUMMY,BLKSIZE=32000
//FICHERO2 DD DSN=NULLFILE,DISP=OLD
Pg: 44
11/11/2014
Grupos de Generacin I
Podemos considerar los grupos de
generacin como un fichero con distintas
versiones
Todas las versiones deben estar catalogadas
El formato (tipo y longitud) de todos los
ficheros debe ser el mismo
Se usan para garantizar la seguridad de los
datos
Tienen un nombre especfico
Pg: 45
11/11/2014
Grupos de Generacin II
Nombres:
Absoluto:
Nombre fichero (mx. 35 caracteres)
Gnnnn N de generacin (asignado por el sistema)
Vnn N de versin (asignado por el sistema)
Relativo:
Nombre fichero (mx. 35 caracteres)
(0), (+1), (-2), etc
Antes de utilizar un grupo de generacin es
necesario definirlo (IDCAMS, IEHPROGM)
Los nombres relativos se consolidan a final
de JOB
Pg: 46
11/11/2014
Ficheros de impresin
Se identifican por el parmetro posicional
SYSOUT=(n,form)
N: es la clase de salida o *, en cuyo caso se
tomar la clase especificada en el
MSGCLASS de la ficha JOB
Form: es cdigo del formulario a utilizar
Parmetros adicionales
Pg: 47
COPIES: N de copias
DEST: Identificacin de la impresora
FCB: Identificacin programa impresora
UCS: Juego de caracteres
11/11/2014
Campos decimales y empaquetados
Representacin Interna:
1 byte (carcter) = 8 bits
A =
6 =
1
1
1
6
F 1 F 2 F 8 F 9 F 7
Al realizar una operacin
Pg: 48
11/11/2014
Campos decimales y empaquetados
Representacin Interna:
1 byte (carcter) = 8 bits
A =
6 =
1
1
1
6
F 1 F 2 F 8 F 9 C 7
Si el campo es negativo
Pg: 49
11/11/2014
Campos decimales y empaquetados
Representacin Interna:
1 byte (carcter) = 8 bits
A =
6 =
1
1
1
6
F 1 F 2 F 8 F 9 D 7
Formato empaquetado
Pg: 50
11/11/2014
Campos decimales y empaquetados
-
Decimal
Empaquetado
F 1 F 2 F 8 F 9 D 7
1 2 8 9 7 D
5 octetos
3 octetos
Decimal
F 1 F 2 F 8 F 9 F 7 D 6
6 octetos
Pg: 51
Empaquetado
0 1 2 8 9 7 6 D
4 octetos
11/11/2014
Programas de Utilidad II
IEBGENER Copia ficheros
manipulndolos
Sentencias de control:
Entrada: SYSUT1
Salida: SYSUT2
Mensajes: SYSPRINT
Control: SYSIN
Puede prefijarse con X
PZ Empaquetado a decimal
ZP Decimal a empaquetado
EXITS, LABELS, MEMBERS
RECORD
Debe ir la primera
Pg: 52
[IDENT=(long.,'name,pos.)]
[RECORD [FIELD=(long.in,pos.in|literal,conv.,pos. out)]]
... ]
GENERATE [MAXLITS=mx.] , [MAXFLDS=mx]
11/11/2014
Ejercicios II
1. El fichero P390.empl.texto tiene la siguiente
estructura:
Pos. 1 a 5 Nmero
Pos. 6 a 30 Nombre
Pos. 31 a 80 Apellidos
Pos. 81 a 87 Salario (decimal con zonas)
2. Queremos obtener el fichero P390?.empl.textomod:
Pg: 53
Pos. 1 a 5 Nmero
Pos 6 a 8 Siglas Sr. en todos los registros
Pos. 9 a 33 Nombre
Pos. 34 a 83 Apellidos
Pos. 84 a 87 Salario (empaquetado)
11/11/2014
Programas de Utilidad III
IEHPROGM Creacin de ficheros
Sentencias de control:
Entrada: cualquier nombre apuntando al disco
donde se encuentren los ficheros
Mensajes: SYSPRINT
Control: SYSIN
SCRATCH DSNAME=nombre,VOL=device
UNCATLG DSNAME=nombre
CATALOG DSNAME=nombre,VOL=device
RENAME
DSNAME=nombre,VOL=device,NEWNAME=nombre
BLDG INDEX=nombre,ENTRIES=n,EMPTY
Pg: 54
11/11/2014
Programas de Utilidad IV
Pg: 55
IEBCOMPR Comprar ficheros
IEBCOPY Copiar ficheros
IEBDG Generar datos de prueba
IEBEDIT Editar JCL
IEBIMAGE Mantiene cartulas impresora
IEBISAM manejo de ficheros ISAM
IEBPTPCH Imprimir ficheros
IEBUPDATE Modificar ficheros
IEHINIT Inicializar cintas
IEHLIST Listar informacin s/ ficheros
particionados
11/11/2014
SORT
Clasificacin de ficheros
Entrada: SORTIN
Salida: SORTOUT
Control: SYSIN
ALTSEQ CODE=(oorr, ... )
INCLUDE COND=(condicin)
INREC cambia formato antes proceso
OMMIT COND=(condicin)
OUTFIL FNAMES=nombre,include
OUTREC cambia formato despus proceso
SORT FIELDS(p,l,f,[A|D], )
SUM FIELDS(p,l,f)
Trabajo: SORTWK01 a SORTWK))
Slo especificar UNIT y SPACE
Pg: 56
11/11/2014
SORT
Clasificacin de ficheros
Entrada: SORTIN
Salida: SORTOUT
Control: SYSIN
Oo valor hexadecimal origen
Rr valor hexadecimal a considerar
ALTSEQ CODE=(oorr, ... )
INCLUDE COND=(condicin)
INREC cambia formato antes proceso
OMMIT COND=(condicin)
OUTFIL FNAMES=nombre,include
OUTREC cambia formato despus proceso
SORT FIELDS(p,l,f,[A|D])
SUM FIELDS(p,l,f)
Trabajo: SORTWK01 a SORTWK))
Slo especificar UNIT y SPACE
Pg: 57
11/11/2014
SORT
Clasificacin de ficheros
Entrada: SORTIN
Salida: SORTOUT
Control: SYSIN
P1,l1,f1,[EQ|NE |GT |GE |LT |LE],[cliteral|p2,l2,f2],
[AND|OR] ...
F1 Y F2 [CH|ZD|PD|BI]
ALTSEQ CODE=(oorr, ... )
INCLUDE COND=(condicin)
INREC cambia formato antes proceso
OMIT COND=(condicin)
OUTFIL FNAMES=nombre,include
OUTREC cambia formato despus proceso
SORT FIELDS(p,l,f,[A|D] )
A = Ascendente
D = Descendente
SUM FIELDS(p,l,f)
Trabajo: SORTWK01 a SORTWK))
Slo especificar UNIT y SPACE
Pg: 58
11/11/2014
SORT (OUTFIL)
OUTFIL permite definir los dnames de los
ficheros de salida
A cada ddname se le pueden asignar una
condicin distinta
//PASO1
EXEC PGM=SORT
//SORTIN
DD DSN=P39OX.ENTRADA,DISP=SHR
//AES
DD DSN=P390X.AES,DISP=(,CATLG,DELETE),
//BES
DD DSN=P390X.BES,DISP=(,CATLG,DELETE),
//RESTO
DD DSN=P390X.RESTO,DISP=(,CATLG,DELETE),
//SYSIN
DD *
OUTFIL INCLUDE=(1,1,CH,EQ,CA'),FNAMES=AES
OUTFIL INCLUDE=(1,1,CH,EQ,CB'),FNAMES=BES
OUTFIL SAVE,FNAMES=RESTO
SORT FIELDS=(1,1,CH,A)
/*
Pg: 59
11/11/2014
Ejercicios III
1. El fichero user.PEDIDOS.ALMACEN tiene
la siguiente estructura:
Pos. 1 a 1 Cdigo (C=Cabecera, L=Lnea)
Pos. 2 a 6 Nmero de pedido
Pos. 7 a 11 Nmero de cliente
Para las cabeceras:
Pos. 12 a 41 Nombre del cliente
Pos. 12 a 21 Cdigo de Artculo
Pos. 22 a 26 Cantidad Pedida (empaquetado)
Para las lneas:
Pg: 60
11/11/2014
Ejercicios III
Se quiere:
1. Obtener el fichero
user.PEDIDOS.LINEAS que slo
tendr las lneas de pedido, ordenadas
por: Artculo y Cliente (nmero).
2. Obtener el fichero
user.ARTICULO.PEDIDOS que debe
tener una lnea por artculo con el total
de las cantidades pedidas
Pg: 61
11/11/2014
Ejercicios IV
El fichero P390.EJERIV.DATA contiene los
siguientes datos
Nmero empleado long. 5 caracteres
Nombre long. 15 caracteres
Domicilio long. 20 caracteres
Salario long. 7 caracteres numricos (sin empaquetar)
Obtener el fichero P390?.EJERIV.DATA con la
siguiente informacin:
Pg: 62
Nombre long. 15 caracteres
Salario long. 7 caracteres numricos (empaquetados) ocupa 4
Domicilio long. 20 caracteres
Nmero empleado long. 5 caracteres
Si el paso de transformacin no termina con
cdigo cero borrar el fichero de salida
11/11/2014
VSAM (Virtual Storage Acces Metod)
Tipos de organizacin:
KSDS (ms utilizados)
Pg: 63
KSDS (Key-sequenced Data Set)
ESDS (Entry-sequenced Data Set)
RRDS (Relative-record DataSet)
VRDS (Variable Relative-record DataSet)
Contienen un rea de datos y otra de indices
Cada rea es un fichero independiente
Cluster: nombre que agrupa las dos reas
Acceso en secuencia o por clave
Borrados fsicos
11/11/2014
Organizacin VSAM
Catlogo
Programa
Leer
Mtodo de
acceso
VSAM
RL RL
Intervalo de
control
KSDS
ESDS
RRDS
Registro lgico
Pg: 64
11/11/2014
VSAM KSDS
32
43
67
75
EL
ndice
23
28
30
32
33
35
40
43
47
52
56
67
68
70
75
Intervalos de
Control
(Datos)
ndice
Nombre Apellidos Nmero empleado
Categora
Campo clave
Pg: 65
11/11/2014
Catlogos
Catlogo
Maestro
Catlogo
Usuario
Catlogo
Usuario
Fichero7
Fichero1
Pg: 66
Fichero2
Fichero3
Catlogo
Usuario
Catlogo
Usuario
Fichero8
Fichero9
Fichero4
Fichero5
Fichero1
11/11/2014
Alias
CATUSER1
Catlogo Maestro
Pagos.a11
Pagos.B22
Pagos.C33
Alias Pagos
CATUSER1
Alias BE18
Alias BE05
Alias BE25
CURSOS
Pg: 67
CURSOS
DISCOS
Pagos.B22
Pagos.a11
BE18.user1
BE05.jcl
BE18.user1
BE18.user2
BE05.jcl
BE05.vsam
11/11/2014
Comandos IDCAMS I
Pg: 68
ALTER: Modifica las caractersticas de un catlogo definido
previamente
BLDINDEX: Construye ndices para ficheros existentes
CNVTCAT: Convierte una VTOC en un catlogo VSAM
DEFINE ALIAS: Define un nombre alternativo para uno
fichero no VSAM
DEFINE ALTERNATEINDEX: Define un ndice alternativo
DEFINE CLUSTER: Define un cluster (data + index)
DEFINE GENERATIONDATAGROUP: Define un grupo
de generacin
DEFINE NONVSAM: Define un fichero no VSAM
DEFINE PAGESPACE: Define un fichero PAGE SPACE
(paginacin)
11/11/2014
Comandos IDCAMS II
Pg: 69
DEFINE PATH: Define un enlace entre un cluster y un
ndice alternativo
DEFINE SPACE: Define un espacio VSAM
DEFINE USERCATALOG|MASTERCATALOG: Define un
catlogo
DELETE: borra catlogos y ficheros VSAM y no VSAM
EXAMINE: Informa de la consistencia de ndices y datos
en un KSDS
EXPORT: Exporta un cluster o ndice alternativo
EXPORT DISCONNECT: Desconecta un catlogo de su
catlogo maestro
EXPORTRA: Recupera entradas del catlogo, si se
defini como recuperable
IMPORT: Importaun cluster o ndice alternativo
11/11/2014
Comandos IDCAMS III
Pg: 70
IMPORT CONNECT Conecta un catlogo de usuario
IMPORTRA: Restaura entradas del catlogo, si se
defini como recuperable
LISTCAT: Lista entradas del catlogo
LISTCRA: Lista o compara entradas del rea de
recuperacin del catlogo, si se defini como recuperable
PRINT: Lista catlogos y ficheros VSAM y no VSAM
REPRO: Copia ficheros VSAM y no VSAM, descarga y
carga catlogos
RESETCAT: Compara entradas del catlogo con
entradas de recuperacin, si se defini como recuperable
VERIFY Verifica el cierre correcto del fichero
11/11/2014
Define Cluster
DEFINE CLUSTER(parmetros)
[DATA(parmetros)]
[INDEX(parmetros)]
[CATALOG(parmetros)]
Parmetros obligatorios:
(NAME(nombre)
CYLINDERS|RECORDS|TRACKS(p,s)
VOLUMES(vol1, ...) )
Parmetros opcionales:
CONTROLINERVALSIZE(n) ERASE|NOERASE FREESPACE(CI% [CA%]) KEYS(length offset) RECORDSIZE(average maximum|default) SHAREOPTIONS(crossregion[ crosssystem]|1 3)
Pg: 71
11/11/2014
Define GenerationDataGroup
DEFINE
GENERATIONDATAGROUP(parmetros)
Parmetros obligatorios:
(NAME(nombre)
LIMIT(n) 1:255
Parmetros opcionales:
EMPTY|NOEMPTY OWNER(ownerid) SCRATCH|NOSCRATCH
Pg: 72
11/11/2014
Define AlternateIndex
DEFINE ALTERNATEINDEX(parmetros)
Parmetros obligatorios:
Igual que para CLUSTER
Parmetros opcionales:
Igual que en CLUSTER ms
RELATE(cluster-name)
UNIQUEKEY|NONUNIQUEKEY
Pg: 73
11/11/2014
Define Path
DEFINE PATH(parmetros)
Parmetros obligatorios:
(NAME(nombre)
PATHENTRY(entryname) )
Parmetros opcionales:
OWNER(ownerid) UPDATE|NOUPDATE
Pg: 74
11/11/2014
Delete
DELETE(parmetros)
Parmetros obligatorios:
(NAME(nombre) )
Parmetros opcionales:
ALIAS|ALTERNATEINDEX|CLUSTER|
GENERATIONDATAGROUP|
NONVSAM|PAGESPACE|PATH|SPACE|USERCATALOG
ERASE|NOERASE
FORCE|NOFORCE
PURGE|NOPURGE
SCRATCH|NOSCRATCH
Pg: 75
11/11/2014
Listcat
LISTCAT(parmetros)
Parmetros opcionales:
[ALIAS][ALTERNATEINDEX][CLUSTER][DATA]
[GENERATIONDATAGROUP][INDEX][NONVSAM]
[PAGESPACE][PATH][SPACE][USERCATALOG]
CREATION(days)
ENTRIES([entryname[ entry name]...][LEVEL(level)])
NAME|HISTORY|VOLUME|ALLOCATION|ALL
NOTUSABLE
Pg: 76
11/11/2014
Print
PRINT(parmetros)
Parmetros obligatorios:
INFILE(ddname) | INDATASET(entryname)
Parmetros opcionales:
CHARACTER|DUMP|HEX
FROMKEY(key) | FROMADDRESS(address) |
FROMNUMBER(number) | SKIP(number)
TOKEY(key) | TOADDRESS(address) |
TONUMBER(number) | COUNT(number)
Pg: 77
11/11/2014
Repro
REPRO parmetros
Parmetros obligatorios:
INFILE(ddname) | INDATASET(entryname)
OUTFILE(ddname) | OUTDATASET(entryname)
Parmetros opcionales:
CHARACTER|DUMP|HEX
FROMKEY(key) | FROMADDRESS(address) |
FROMNUMBER(number) | SKIP(number)
TOKEY(key) | TOADDRESS(address) |
TONUMBER(number) | COUNT(number)
REPLACE|NOREPLACE
Pg: 78
11/11/2014
Verify
VERIFY(parmetros)
Parmetros obligatorios:
FILE(ddname) | DATASET(entryname)
Pg: 79
11/11/2014
Ejercicios V
1. Definir un cluster KSDS (data+ index) con una
clave de 15 pos., empezando en la 1 pos. Del
registro
2. Definir un grupo de generacin (GDG), que
permita 5 entradas, al crear la sexta se debe
descatalogar (no borrar) la primera
3. Definir un ndice alternativo, sobre el fichero del
ejercicio 1, con longitud de tres y
desplazamiento 16
4. Definir un path para permitir el acceso sobre el
fichero del ejercicio 1, a travs del ndice del
ejercico 3.
5. Borrar los ficheros utilizados en este ejemplo
Pg: 80
11/11/2014