M4 VSAM

VSAM
Que es VSAM
Virtual Storage Access Method
(VSAM) es un esquema de almacenamiento de
IBM del sistema operativo OS/VS2, utilizado
también en la arquitectura MVS y ahora en
z/OS.
Tipos de Archivos que se utilizan en VSAM
•KSDS
•(KEY SEQUENCED DATA SET)
•INDEXADOS
Key Sequenced Data Set (KSDS) es un tipo de organización de datos
usado en VSAM, un sistema de archivos de IBM. Cada registro en un
KSDS tiene asociado una clave única. Un archivo KSDS consiste de
dos componentes: uno de datos y otro de un índice que permite al
sistema localizar físicamente los registros dentro del archivo mediante
su clave única. Al conjunto de ambos componentes se le denomina
agrupación.
Tipos de Archivos que se utilizan en VSAM
•ESDS
•(ENTRY SEQUENCED DATA SET)
•PLANOS O SECUENCIALES
Entry Sequenced Data Set (ESDS) es un tipo de organización de datos
usado en VSAM, un sistema de archivos de IBM. El acceso a cada
registro se realiza en orden secuencial, es decir, el orden en el que
fueron escritos en el archivo. Debido a eso, para acceder a un registro
en particular es necesario buscar a través de todos los registros hasta
encontrarlo o bien conocer su dirección física (el número de bytes
desde el inicio). ESDS es considerablemente lento, por lo cual se
hicieron necesarias nuevas organizaciones de datos más rápidas.
Tipos de Archivos que se utilizan en VSAM
•RRDS
•(RELATIVE RECORD DATA SET)
•DE POSICIONAMIENTO RELATIVO
Relative Record Data Set (RRDS) es un tipo de organización de datos
usado en VSAM, un sistema de archivos de IBM. Se accede a los
registros mediante su posición ordinal en el fixhero. Por ejemplo, el
registro deseado puede ser el 42º en un archivo de 999 registros.
El concepto detrás de RRDS es similar al de un método de acceso
secuencial, aunque puede acceder a los datos de manera aleatoria y
dinámica.
Nota.- la estructura de datos es la misma que un ESDS
Estructura de archivos
Cálculo de cilindros
Un disco 3390 tiene las siguientes características:
•
•
•
•
•
•
15 TRACK por CYLINDER
3,300 CYLINDER por UNIT
49,500 TRACK por UNIT
56,664 Bytes por TRACK
849,960 Bytes por CYLINDER
42,073,020,000 Bytes por UNIT
Cálculo de espacio
EN DISCO:
Para calcular el espacio en cilindros, favor de seguir los siguientes pasos:
1.- Calculo en bytes para el caso de archivos secuenciales.
ESPACIO = (TAMAÑO DEL REGISTRO) X (EL NUMERO TOTAL DE REGISTROS)
+ 20 % DE ESPACIO LIBRE POR CRECIMIENTO.
2.- Conversión a tracks.
TRACKS = ESPACIO TOTAL DEL ARCHIVO EN BYTES / 56664
(1 TRACK = 56664 BYTES)
3.- Conversión a cilindros.
CYLS = NUMERO DE TRACKS / 15
(1 CYL = 15 TRACKS)
Ejemplo
Se requiere calcular el espacio de un archivo que va a tener 1,233,500 registros con longitud de 247 bytes.
1.- ESPACIO = 247 x 1233500 = 304,674,500 BYTES + 60,934,900 (20%) = 365,609,400 BYTES
2.- TRACKS = 365,609,400 / 56,664 = 6,452.234 TRACKS
3.- CYL = 6,452.234 / 15 = 430.15 CYL
Por lo anterior el espacio de este archivo se codifica SPACE=(CYL,(450,225),RLSE)
Y su definición completa es:
//SALIDA DD DSN=XXXX.AP.FIX.XXXXX.XXXX,
//
DISP=(NEW,CATLG,DELETE),
//
UNIT=3390,
//
SPACE=(CYL,(450,225),RLSE),
//
DCB=(RECFM=FB,LRECL=247,BLKSIZE=0,DSORG=PS)
Ejemplo
Se requiere calcular el espacio de un archivo que va a tener 23 registros
con longitud de 80 bytes.
1.- ESPACIO = 80 x 23 = 1,840 BYTES + 368 (20%) = 2,208 BYTES
2.- TRACKS = 2,208 / 56,664 = 0.03896 TRACKS
3.- CYL = 0.03896 / 15 = 0.0026 CYL
Como el espacio mínimo en producción es 1 CYL, en casos como este
se recomienda codificar el siguiente espacio: SPACE=(CYL,(2,1),RLSE)
para respetar la regla que el espacio primario siempre sea el doble del
secundario.
Y su definición completa es:
//SALIDA DD DSN=XXXX.AP.FIX.XXXXX.XXXX,
//
DISP=(NEW,CATLG,DELETE),
//
UNIT=3390,
//
SPACE=(CYL,(2,1),RLSE),
//
DCB=(RECFM=FB,LRECL=80,BLKSIZE=0,DSORG=PS)
NOTA.- Para respetar la regla que el espacio primario siempre sea el
doble del secundario, se sugiere codificar siempre el primario con un
número par, por ejemplo:
SPACE=(CYL,(6,3),RLSE),
SPACE=(CYL,(8,4),RLSE),
SPACE=(CYL,(100,50),RLSE), etc.
Estructura de archivos
• Secuenciales
007400035069874062
493160VNM4931600191707580
007400035070969842
493160VNM4931600197665527
007400035073006468
493160VNM4931600217848590
007400045062772922 AC493160VNM4931600136524363
007400045069898697 AB493160VNM4931600191518581
00740004507244209417 493160VNM4931600214578646
007400045073782751
455500VNM4555000225598674
Estructura de archivos
DATA
• Indexados
00001007400035069874062
493160VNM4931600191707580
00002007400035070969842
493160VNM4931600197665527
00003007400035073006468
493160VNM4931600217848590
00004007400045062772922 AC493160VNM4931600136524363
00005007400045069898697 AB493160VNM4931600191518581
0000600740004507244209417 493160VNM4931600214578646
00007007400045073782751
455500VNM4555000225598674
00001EXHD01
00002EXHD31
00003EXHD21
00004EXHD11
00005EXHD33
00006EXHD55
00007EXHD06
INDEX
NOMBRE XXX.XXX.XXX
TAMAÑO 99 CYL.
CRECIMIENTO 99 CYL.
CLUSTER
Estructura de archivos
• Relativos
00001007400035069874062
493160VNM4931600191707580
00002007400035070969842
493160VNM4931600197665527
00003007400035073006468
493160VNM4931600217848590
00004007400045062772922 AC493160VNM4931600136524363
00005007400045069898697 AB493160VNM4931600191518581
0000600740004507244209417 493160VNM4931600214578646
00007007400045073782751
455500VNM4555000225598674
DATA
REC.NUM.
Tipos de Aperturas en VSAM
Organización
ESDS
RSDS
KSDS
Input
SI
SI
SI
Output
SI
SI
SI
I-O
NO
NO
SI
Rel
NO
SI
SI
Apertura
Tipos de Lecturas en VSAM
Organización
ESDS
RSDS
KSDS
Secuencial
SI
SI
SI
Relativa
NO
SI
NO
Random
NO
NO
SI
Dinámica
NO
SI (*)
SI
Lectura
Para que sirve?
• Crear archivos indexados,
secuenciales.
• Respalda archivos
• Duplica archivos
• Borra archivos
• Administra archivos
• Clasifica archivos
Con que se usa?
•
•
•
•
•
•
IEFBR14
IEBGENER
EIBCOPY
EIBCOMPR
IDCAMS
ICEMAN (SORT EXTERNO)
Utilerías
• De archivos
–
–
–
–
–
–
–
–
Crear
Copiar
Imprimir
Actualizar
Reorganizar
Clasificar
Intercalar
Comparar
• Ambos grupos son controlados mediante sentencias de Jcl y
declaraciones de control propias de ellas
• Reducen el costo de adquirirlas o escribirlas con personal de
programación debido al uso tan común que se hace de ellas
19
Tipos de Utilerías
• De Aplicación.
– Normalmente se usan para crear, modificar o borrar conjuntos de
datos.
• De Clasificación/Mezcla.
– Permiten clasificar o mezclar información proveniente de archivos
• Para archivos VSAM.
– Permiten crear, mantener, borrar o actualizar información
contenida en archivos VSAM
• De mantenimiento DASD.
– Permiten darle mantenimiento a los Dispositivos de Acceso Directo,
incluyendo respaldos y recuperaciones
• De control de espacio.
– Se encargan de mantener la disponibilidad de espacio de DASD
20
Utilería IEFBR14
• Ejemplo:
//MYJOB
JOB
(ACC),’AMS’,
//
REGION=4096K,NOTIFY=IDSAMS
//
MSGCLASS=X
//*
//* EJEMPLO DE CREACION DE ARCHIVO A TRAVES DE LA UTILERIA
//* IEFBR14
//*
//STEP1
EXEC
PGM=IEFBR14
//SYSUT
DD
DSN=ARCHIVO.NUEVO,DISP=(NEW,CATLG,DELETE),
//
SPACE=(CYL,(10,1),RLSE),UNIT=TMPDA
//*
//* EJEMPLO DE BAJA DE ARCHIVO A TRAVES DE LA UTILERIA IEFBR14
//*
//STEP2
EXEC
PGM=IEFBR14
//SYSUT2
DD
DSN=ARCHIVO.BAJA,DISP=(OLD,DELETE)
//
21
Utilería IEBGENER
• Copia de archivos, ejemplo:
//MYJOB
JOB
(ACC),’AMS’,
//
REGION=4096K,NOTIFY=IDSAMS
//
MSGCLASS=X
//*
//* EJEMPLO DE COPIA DE ARCHIVO A UNO NUEVO
//*
//STEP1
EXEC
PGM=IEBGENER
//SYSUT1
DD
DSN=ARCHIVO.UNO,DISP=SHR
//SYSUT2
DD
DSN=ARCHIVO.DOS,
//
DISP=(,CATLG,DELETE),DCB=*.SYSUT1,
//
UNIT=TMPDA,SPACE=(CYL,(10,1),RLSE)
//*
//MYJOB
JOB
//
//
//*
//* EJEMPLO DE COPIA DE
//*
//STEP1
//SYSUT1
DD
//SYSUT2
DD
//*
22
(ACC),’AMS’,
REGION=4096K,NOTIFY=IDSAMS
MSGCLASS=X
ARCHIVO EN OTRO YA EXISTENTE
EXEC
PGM=IEBGENER
DSN=ARCHIVO.ABCD,DISP=SHR
DSN=ARCHIVO.WXYZ,DISP=SHR
Utilería IEBGENER
• Imprimir el contenido de archivos, ejemplo:
//MYJOB
JOB
(ACC),’AMS’,
//
REGION=4096K,NOTIFY=IDSAMS
//
MSGCLASS=X
//*
//* EJEMPLO DE UNA DESCARGA A IMPRESORA ARCHIVO EN SYSOUT
//* VISTO EN PANTALLA
//*
//STEP1
EXEC
PGM=IEBGENER
//SYSUT1
DD
DSN=ARCHIVO.EN.DISCO,DISP=SHR
//SYSUT2
DD
SYSOUT=X
//SYSPRINT
DD
SYSOUT=Z
23
Ejercicio
• Por medio del editor de TSO genere datos de prueba en
el archivo DSRNXXX.PS.PRUEBA
• No importa el formato o contenido del archivo
• Por medio de la utilería IEBGENER copie el archivo
DSRNXXX.PS.PRUEBA al archivo
DSRNXXX.PS.PRUEBA.NUEVO
• El JCL se deberá llamar JEJER03
24
Utilería EIBCOPY
• Mantenimiento a datasets particionados
• Funciones:
– Copia de librerías
– Compresión de librerías
• Sentencias DD a utilizarse:
– SYSIN. Define las sentencias de control. Normalmente residen
–
–
–
–
25
como input-stream, sin embargo, también pueden estar en algún
archivo
SYSPRINT. Archivo secuencial que será usado para listar
sentencias y mensajes. Este archivo puede grabarse en sysout, en
disco o en cinta, según se necesite
SYSUT1. Archivo particionado de entrada
SYSUT2. Archivo particionado de salida
SYSUT3 y SYSUT4. Areas auxiliares de espacio
Utilería EIBCOPY
• Sentencias de Control:
– COPY. Indica el inicio de la operación y contiene los operandos:
–
–
–
–
INDD. Librería o librerías de entrada
OUTDD. Librería de destino
R. Especifica reemplazo de miembros existentes
LIST(YES/NO). Lista los miembros copiados
– SELECT. Especifica los miembros a copiar, operandos:
– MEMBER. Nombre del miembro a copiar. Seguido y separado con
coma, se puede especificar un nuevo nombre de miembro
– R. Especifica reemplazo de miembros existentes
– EXCLUDE. Elimina de la operación de copia, algunos miembros del
archivo de entrada, operandos:
– MEMBER. Nombre del o los miembros a excluir. Cada miembro
especificado debe ser único
26
Utilería EIBCOPY
• Ejemplos:
//MYJOB
JOB
(ACC),’AMS’,
//
REGION=4096K,NOTIFY=IDSAMS
//
MSGCLASS=X
//*
//* EJEMPLO DE COMPRESION DE UN ARCHIVO PARTICIONADO
//*
//STEP1
EXEC
PGM=IEBCOPY
//SYSUT1
DD
DSN=IDSAMS.FTE.LIB,DISP=OLD
//SYSUT3
DD
SPACE=(CYL,(10,5))DISP=(,DELETE)
//SYSUT4
DD
SPACE=(CYL,(10,5))DISP=(,DELETE)
//SYSPRINT
DD
SYSOUT=X
//SYSIN
DD
*
COPY INDD=SYSUT1,OUTDD=SYSUT1
//*
27
Utilería EIBCOMPR
• Comparación de data sets
• Funciones:
– Dos archivos secuenciales
– Dos archivos particionados o extendidos
– Data sets fijos, variables, indefinidos, bloqueados o
desbloqueados
– No utilizable para modulos de carga
• Consideraciones de igualdad:
– Los dos archivos contienen el mismo número de registros
– Correspondencia de registros en llave y datos
28
Utilería EIBCOMPR
• Sentencias DD a utilizarse:
– SYSIN. Define las sentencias de control.
– SYSPRINT. Archivo secuencial que será usado para listar
sentencias y mensajes.
– SYSUT1. Archivo de entrada
– SYSUT2. Archivo de salida
– SYSUT3 y SYSUT4. Areas auxiliares de espacio
• Sentencias de Control:
– COMPARE. Indica la organización de archivos, contiene los
operandos:
– TYPORG. Especifica la organización que tienen los archivos de
entrada, opciones: PS – Secuencial, PO – Particionado
29
Utilería EIBCOMPR
• Ejemplos:
//MYJOB
JOB
(ACC),’AMS’,
//
REGION=4096K,NOTIFY=IDSAMS
//
MSGCLASS=X
//*
//* EJEMPLO DE COMPARACION DE ARCHIVOS SECUENCIALES
//*
//PASO
EXEC
IEBCOMPR
//SYSPRINT
DD
SYSOUT=X
//SYSUT1
DD
DSN=DATASET.IND1,DISP=SHR
//SYSUT2
DD
DSN=DATASET.OUT1,DISP=SHR
//SYSIN
DD
DUMMY
//MYJOB
JOB
(ACC),’AMS’,
//
REGION=4096K,NOTIFY=IDSAMS
//
MSGCLASS=X
//*
//* EJEMPLO DE COMPARACION DE ARCHIVOS PARTICIONADOS
//*
//PASO
EXEC
IEBCOMPR
//SYSPRINT
DD
SYSOUT=X
//SYSUT1
DD
DSN=DATASET.ONE,DISP=SHR
//SYSUT2
DD
DSN=DATASET.TWO,DISP=SHR
//SYSIN
DD
*
COMPARE
TYPORG=PO
30
Utilería IDCAMS
•
•
•
•
•
•
Cluster
Repro
Copy
Print
Delete
listcat
Ejemplo
//USRJARP1 JOB (0001),'PBA PROCS',
//
CLASS=A,
//
MSGCLASS=X,
//
MSGLEVEL=(1,1),
//
REGION=0M,
//
NOTIFY=&SYSUID
//*********************************************************************
//*
*
//*********************************************************************
//PASO001 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT
DD SYSOUT=*
//SYSIN
DD *
DELETE DSILNT.PPINST1.VSAM.DIR
SET MAXCC=0
DEFINE CLUSTER (NAME(DSILNT.PPINST1.VSAM.DIR) CYL(10 5) CISZ(4096) KEYS(5 0) FSPC(20) RECSZ(80 80)) DATA (NAME(DSILNT.PPINST1.VSAM.DIR.DAT)) INDEX (NAME(DSILNT.PPINST1.VSAM.DIR.IDX))
//*
IDCAMS
• La ‘Facility’ IDCAMS (Access Method Services) es una
utilidad proporcionada
• por IBM para controlar objetos VSAM, tales como
catálogos, paths, clusters,
• índices alternativos, etc. (ver Solo Programadores:
archivos VSAM),
• aunque también puede ser usado para manejar todos los
tipos de archivos a
• excepción de los PDS o archivos particionados.
• Desde el punto de vista del JCL no se diferencia en nada
de las utilidades
• vistas, pues utiliza las mismas Ddnames SYSPRINT y
SYSIN.
COMANDOS BASE
• Los comandos admitidos por esta utilidad a
través de la SYSIN se podrían clasificar en:
–
–
–
–
–
–
–
Creación de catálogos
Creación de GDG
Listado de catálogos
Función REPRO o copiado de archivos
Función PRINT
Función DELETE
Función SET
CATALOGOS
• Creación de catálogos
Los CATÁLOGOS VSAM no pueden ser creados desde un
JCL, sino que se hacen mediante comandos AMS.
Solo se pueden crear con los atributos de operador
GDG
Definición de archivos GDG (Generation Data Group)
Estos son archivos secuenciales normales que sólo tienen de especial el
nombre ya que bajo un mismo nombre se pueden referenciar varios
archivos..
archivos
//XXXXXXDG JOB
(12,345),'prueba',NOTIFY=XXXXXX,CLASS=x,MSGCLASS=u
//**
*******************************************************
***** **
//PASO1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE GDG (NAME(JMPDES.EJEMPLO.GDG) LIMIT(5) NOEMPTY SCR)
/*
Esqueleto para crear un GDG
La definición de un archivo GDG consta de dos pasos: En el primero se crea
lo que es el nombre del archivo en el catálogo. La figura 1 muestra un paso
de JCL para realizar este cometido. Como puede verse en él, no se especifican
características, como ocurre cuando se crea cualquier archivo, ya
que solo es una entrada en el catalogo de usuario, no en el VTOC pues todavía
no existe físicamente.
Una vez creado el nombre, cuando se desee añadir una versión a ese archivo,
se realizará lo siguiente:
- Añadir el sufijo (+1) al nombre
- Especificar las características de este archivo secuencial, que no tienen
por que coincidir con las otras versiones,
- Poner como disposición inicial NEW.
En cambio, cuando se desee leer una versión habrá que especificar como
nombre, el nombre del GDG y el sufijo (0) para la ultima versión, (( -1) para
la penúltima, etc. ; y como disposición inicial hay que especificar SHR
(Shared: compartido)
GDG
El formato del comando que define un GDG es el siguiente
siguiente::
DEFINE GDG (NAME(nombre_gdg)NAME(nombre_gdg)
LIMIT(num_ver) EMPTY/NOEMPTY SCRATCH/NOSCRATCH)
Donde
NAME: Sirve para especificar el nombre del archivo GDG a definir
NAME:
nombre_gdg : representa el DSN del archivo
archivo..
LIMIT:: Sirve para especificar el numero de versiones que se desea mantener
LIMIT
mantener..
num_ver : numero de versiones de 1 a 155
155..
EMPTY : Opcional
Opcional.. Especifica que se descataloguen todos los nombres de archivo cuya
versión supere la especificada en LIMIT
LIMIT..
NOEMPTY : Sirve para especificar que según se vayan generando versiones nuevas, se vayan
borrando las mas antiguas, de forma que solo estén activas las ultimas LIMIT, tal y como
muestra la figura 2, pudiendo ver el listado de la entrada del catalogo (no tiene VOLUMEN)
y las 5 versiones (6 a 10
10))
SCRATCH : Opcional
Opcional.. Especifica que se borre físicamente el archivo cuando se descatalogue
descatalogue..
GDG
DSLIST - DATA SETS BEGINNING WITH JMPDES.E*.G* ------------------- ROW 1 OF 7
COMMAND ===> SCROLL ===> CSR
COMMAND NAME MESSAGE VOLUME
------------------------------------------------------------------------------JMPDES.EJEMPLO.GDG ??????
JMPDES.EJEMPLO.GDG.G0006V00 X1DES91
JMPDES.EJEMPLO.GDG.G0007V00 X1DES91
JMPDES.EJEMPLO.GDG.G0008V00 X1DES91
JMPDES.EJEMPLO.GDG.G0009V00 X1DES91
JMPDES.EJEMPLO.GDG.G0010V00 X1DES91
***************************** END OF DATA SET LIST ****************************
•
Nombres de las versiones 6 a 10 de un GDG
LISTCAT
Listar entradas del catalogo
El comando LISCAT permite listar entradas del catálogo. Su formato es el
siguiente:
LISCAT CATALOG (nom_catalogo).
Ejercicio.-- desarrolle un jcl para obtener el listcat y ejecutelo
Ejercicio.
REPRO
Copiar archivos
El comando REPRO permite realizar las siguientes copias de archivos
archivos::
- Copiar archivos secuenciales a archivos VSAM
- Copiar archivos VSAM a archivos VSAM
- Copiar archivos VSAM a archivos secuenciales no
no--VSAM
- Copiar archivos ISAM (Indexed Sequential Access Method) a archivos VSAM
VSAM..
el esqueleto de un paso que realice esta función, sería
sería::
//COPIAR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//ENTRADA DD DSN=nombre_archivo_entrada
DSN=nombre_archivo_entrada...
...
//SALIDA DD DSN=nombre_archivo_salida ...
//SYSIN DD *
REPRO INFILE(ENTRADA) OUTFILE(SALIDA) COUNT(nnn)
/*
Donde ENTRADA y SALIDA son las Ddnames que tienen asociados los nombres de
los archivos de entrada y de salida
salida;; y
nnn representa el numero de registros que se desean copiar
copiar.. en el caso de
no especificar el parámetro COUNT se entiende que es todo el archivo
archivo..
PRINT
Imprimir archivos
El comando PRINT permite imprimir tanto archivos VSAM como archivos NOVSAM
El esqueleto de un paso que realice esta función es el siguiente:
//COPIAR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//ENTRADA DD DSN=nombre_archivo_entrada...
//SYSIN DD *
PRINT INFILE(ENTRADA) formato
/*
Donde ENTRADA representa la Ddname que tiene asociado el nombre del archivo
a imprimir; y
formato puede tomar uno de los siguientes valores:
- CHAR : imprime los registros en formato carácter.
- HEX : Imprime los registros en formato HEXADECIMAL.
- DUMP : Imprime los registro en ambos formatos.
DELETE
Borrar archivos
El comando DELETE permite borrar tanto archivos VSAM como archivos NONO-VSAM
El esqueleto de un paso que realice este comando es el siguiente:
//COPIAR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//archivo DD DSN=nombre_archivo...
//SYSIN DD *
DELETE nom_archivo FILE(archivo) PURGE ERASE SCRATCH CATALOG(nom_catalogo)
/*
Este comando admite que el archivo a borrar se especifique directamente o bien a través del parámetro FILE
especificando en el nombre de la Ddname que tiene asociado. El resto de parámetros es opcional, significando lo
siguiente:
PURGE : Borra la entrada mirando la fecha en que expira el archivo.
ERASE : Borrar el archivo y sobreescribe ceros binarios.
SCRATCH : Se omite para archivos VSAM.
CATALOG : Nombre del catalogo VSAM del que se desea borrar el ítem.
SET
SET MAXCC=nn
Este comando especifica que con independencia de cual haya sido el
resultado de la ejecución anterior, devuelva como código de retorno el valor
nn especificado.
Utilería ICEMAN (DFSort)
• Programa utilería para: Clasificar, Fusionar y Copiar
información de archivos
• Alternativamente puede realizar las funciones de:
– Filtrado de información innecesaria
– Editar o reformatear registros
– Sumar información numérica
• Sentencias DD a utilizarse:
– SYSIN. Define las sentencias de control.
– SYSPRINT. Archivo secuencial que será usado para listar
sentencias y mensajes.
– SYSUT1. Archivo de entrada
– SYSUT2. Archivo de salida
45
Utilería ICEMAN (DFSort)
• Sentencias de Control:
–
–
–
–
–
–
–
–
46
INCLUDE. Incluye registros en el archivo de salida
INREC. Reformatea el registro antes de que sean procesados
SORT. Especifica una acción de clasificación
OMIT. Omite registros en el archivo de salida
OUTREC. Omite registros en el archivo de salida
MERGE. Especifica una acción de fusión de archivos
SUM. Sumariza campos
END. Termina la lectura por SYSIN o SORTCNTL
Iceman - Sentencia INCLUDE
• Incluye registros en el archivo de salida mediante un criterio de
selección
• Ejemplo:
INCLUDE COND=(1,10,CH,EQ,50,10,CH)
Se incluyen en el archivo de salida solamente aquellos registros en los
cuales el campo de 10 bytes carácter iniciando en el byte 1 sea
igual al campo de 10 bytes carácter que inicia en el byte 50
47
Iceman - Sentencia INREC
• Reformato de registros antes de que sean procesados
• Define qué partes del registro de entrada serán incluidas en el
registro reformateado de entrada y el orden en que deberán
aparecer
• Ejemplos Sintaxis-1:
INREC FIELDS=(20,4,12,3)
Reformatea el registro de entrada de la posición 20-23 y de la 12-14 en las
posiciones 1-4 y 5-7 respecto al archivo de salida
INREC FIELDS=(10,3,20,8,33,11,5,1)
Reformatea el registro de entrada para dejar en salida:
Posiciones
48
1-3
4-11
12-22
23
El campo
El campo
El campo
El campo
de
de
de
de
entrada de
entrada de
entrada de
entrada en
las posiciones 10-12
las posiciones 20-27
las posiciones 33-43
la posición 5
Iceman - Sentencia SORT
• Ejemplo de SORT:
SORT FIELDS=(2,5,CH,A),SIZE=29483
El campo de argumento de sort inicia en la columna 2 con 5 bytes
de longitud tipo carácter, la secuencia de orden es ascendente. El
archivo a clasificarse deberá tener 29483 registros
49
Iceman - Sentencia OMIT
• Omite registros del archivo de entrada
• Ejemplos:
OMIT COND=(1,10,CH,EQ,50,10,CH)
Omite los registros de entrada cuyo campo de 10 bytes, que inicia
en la columna 1 y es CHaracter, sea igual al campo de 10 bytes
que inicia en la columna 50 y tambien es CHaracter
OMIT COND=(27,1,CH,EQ,C'D‘)
Omite los registros de entrada los cuales contengan el carácter ‘D’
en la posición 27
50
Iceman - Sentencia OUTREC
• Reformatea la salida de registros
• Define que partes del registro de entrada serán incluidas en el
registro reformateado de salida y el orden en que deberán aparecer
51
Iceman - Sentencia MERGE
• Especifica una operación de MERGE o COPY, sintaxis:
MERGE FIELDS=(pos,lon,form,seq),FORMAT=form,opc
MERGE FIELDS=COPY
• Los parámetros y opciones de MERGE son similares a los de la
sentencia SORT
• Remitase a las láminas de descripción de SORT, para la descripcíón
de ésta sentencia
52
Iceman - Sentencia SUM
• Proporciona una opción de obtener sumatorias o totales
de determinados campos de un archivo
• Ejemplos:
SUM FIELDS=(41,8,ZD,49,4,FI)
Suma los datos de un campo desempacado de 8 bytes que empieza en la
columna 41 y de un campo entero de punto fijo de 4 bytes que comienza
en la columna 49
SUM FIELDS=(21,8,49,4),FORMAT=ZD
Suma los datos de un campo numérico de 8 bytes que empieza en la columna
21 a los de un campo numérico de 4 bytes que comienza en la columna
49
53
Calculo de Cilindros
Un disco 3390 tiene las siguientes características:
15 TRACK por CYLINDER
3,300 CYLINDER por UNIT
49,500 TRACK por UNIT
56,664 Bytes por TRACK
849,960 Bytes por CYLINDER
42,073,020,000 Bytes por UNIT
54
Calculo de Cilindros
CALCULO DE ESPACIO EN DISCO:
Para calcular el espacio en cilindros, favor de seguir los siguientes pasos:
1.- Calculo en bytes para el caso de archivos secuenciales.
ESPACIO =
(TAMAÑO DEL REGISTRO) X (EL NUMERO TOTAL DE REGISTROS)
+ 20 % DE ESPACIO LIBRE POR CRECIMIENTO.
2.- Conversión a tracks (1 TRACK = 56664 BYTES).
TRACKS =
ESPACIO TOTAL DEL ARCHIVO EN BYTES / 56664
3.- Conversión a cilindros (1 CYL = 15 TRACKS).
CYLS =
NUMERO DE TRACKS / 15
55
Ejemplos
Se requiere calcular el espacio de un archivo que va a tener 1,233,500 registros
con longitud de 247 bytes.
1.- ESPACIO = 247 x 1233500 = 304,674,500 BYTES + 60,934,900 (20%) =
365,609,400 BYTES
2.- TRACKS = 365,609,400 / 56,664 = 6,452.234 TRACKS
3.- CYL = 6,452.234 / 15 = 430.15 CYL
Por lo anterior el espacio de este archivo se codifica
SPACE=(CYL,(450,225),RLSE)
Y su definición completa es:
//SALIDA DD DSN=XXXX.AP.FIX.XXXXX.XXXX,
//
DISP=(NEW,CATLG,DELETE),
//
UNIT=3390,
//
SPACE=(CYL,(450,225),RLSE),
//
DCB=(RECFM=FB,LRECL=247,BLKSIZE=0,DSORG=PS)
56
Notas
Proporcionar a los alumnos los archivos de calculo de cilindros y códigos de
status vsam para que lo conserven
57
Ligas interesantes
•
•
58
http://www.redbooks.ibm.com/redbooks/SG246105/wwhelp/wwhimpl/js/ht
ml/wwhelp.htm
http://publibz.boulder.ibm.com/cgibin/bookmgr_OS390/BOOKS/IEA1B504/CONTENTS?SHELF=&DT=1998
0112101805
FIN DE MODULO
Derechos de autor
• Este producto has sido elaborado por
• Jorge Godínez Rodríguez.
• Derechos reservados
– Prohibida su reproducción parcial o total
60