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