En esta sección: |
Los órigenes de datos secuenciales, VSAM e ISAM puede contener más de un tipo de registro. En este caso, pueden estructurarse de dos formas:
Si existe una relación posicional entre los distintos tipos de registros, donde un registro principal de un tipo precede a uno o varios registros secundarios con información sobre el primero, describa la estructura definiendo al principal como raíz y el resto como descendientes.
Algunos orígenes de datos VSAM e ISAM pueden estar estructurados de forma que los registros descendientes estén relacionados mediante campos clave concatenados. Es decir que los campos clave de un registro principal actúan como la primera parte de la clave de un registro secundario. En estos casos, los campos de clave de segmento deben describirse por medio de una declaración GROUP. Cada campo clave GROUP de segmento consiste de los campos clave con el nombre modificado, pertenecientes al segmento principal, además de un campo clave único del segmento secundario.
Si la relación posicional de los registros no resulta significante, debe proporcionar alguna forma de interpretar el tipo de registro que se va a leer. Para ello, cree un segmento raíz ficticio para los registros.
Para poder describir los orígenes de datos secuenciales, con distintos tipos de registros, independientemente de que estén relacionados de forma lógica, emplee el atributo de segmento PARENT y el atributo de campo RECTYPE. Los orígenes de datos secuenciales complejos se describen como estructuras de múltiples segmentos.
Los orígenes de datos VSAM con secuencia de claves y e ISAM complejos también utilizan el atributo RECTYPE para diferenciar los distintos tipos de registros del origen de datos.
El principal no siempre comparte su RECTYPE con sus descendientes. Puede compartir otra información de identificación, como el PUBNO del ejemplo. Este campo debe estar incluido en la clave principal, junto con todas las claves descendientes, para poder relacionarlas.
Cuando el atributo RECTYPE se utiliza en orígenes de datos VSAM o ISAM con claves de grupos, el campo RECTYPE puede formar parte de la clave del grupo de segmentos sólo si pertenece a un segmento sin descendientes, o uno cuyos descendientes estén descritos en un atributo OCCURS. En Cómo describir registros VSAM relacionados por posición, el campo RECTYPE se añade a la clave de grupo en el segmento SERIANO, que es el segmento descendiente más bajo de la cadena.
Cómo: |
Cuando un origen de datos contiene múltiples tipos de registros, debe haber un campo en los registros que pueda usarse para diferenciar los tipos. Puede consultar información sobre este campo en la descripción existente de su origen de datos (por ejemplo, una declaración COBOL FD). Este campo debe estar en la misma ubicación física en cada registro. Por ejemplo, las columnas 79 y 80 pueden tener un código de dos dígitos diferente para cada tipo de registro único. Describa este campo identificativo con el nombre de campo RECTYPE.
Otra técnica para redefinir las partes de un registro es la de utilizar los atributos MAPFIELD y MAPVALUE, descritos en Cómo describir un grupo repetido mediante MAPFIELD.
El campo RECTYPE debe encontrarse en la misma ubicación física dentro de cada registro del origen de datos; de lo contrario se ignorará. La sintaxis para describir el campo RECTYPE es
FIELDNAME = RECTYPE, ALIAS = value, USAGE = format, ACTUAL = format, ACCEPT = {list|range} ,$
donde:
Es el tipo de registro en formato alfanumérico, si no se ha especificado una lista ACCEPT. Si hay una lista ACCEPT, puede tratarse de cualquier valor.
Es el tipo de datos del campo. Además de los campos RECTYPE en formato alfanumérico, también son compatibles los campos RECTYPE en formato empaquetado o de número entero (formatos P e I). Los valores posibles son:
An (donde n es 1-4095) indica datos de caracteres, incluyendo letras, dígitos y otros caracteres.
In indica números enteros binarios en formato ACTUAL (interno):
El formato USAGE puede variar entre I1 e I9, en función de la magnitud del formato ACTUAL.
Pn (donde n es 1-16) indica el formato ACTUAL (interno) de decimal empaquetado. n es el número de bytes, cada uno con dos dígitos, excepto el último, que contiene un dígito y el signo. Por ejemplo, P6 significa 11 dígitos más un signo.
Si el campo contiene un punto decimal asumido, represente el campo con un formato USAGE de Pm.n, donde m es el número total de dígitos, y n, el número de posiciones decimales. Por tanto, P11.1 significa a un número de once dígitos con una posición decimal.
Es una lista de una o varias líneas con los valores específicos de RECTYPE, para los registros que presentan el mismo diseño de segmento. El número máximo de caracteres permitido en la lista es de 255. Separe cada elemento de la lista mediante un espacio en blanco o la palabra clave OR. Si la lista incluye espacios en blanco y comas insertados, debe ir colocada entre comillas simples. La lista puede incluir un único valor de RECTYPE. Por ejemplo:
FIELDNAME = RECTYPE, ALIAS = TYPEABC, USAGE = A1,ACTUAL = A1, ACCEPT = A OR B OR C, $
Es un rango o intervalo de una o varias líneas con los valores específicos de RECTYPE, para los registros que presentan el mismo diseño de segmento. El número máximo de caracteres permitido en el rango es de 255. Si el rango incluye espacios en blanco y comas insertados, debe ir colocado entre comillas simples.
Para especificar un rango de valores, incluya el valor más bajo, la palabra clave TO y el valor más alto, en este orden. Por ejemplo:
FIELDNAME = RECTYPE, ALIAS = ACCTREC, USAGE = P3,ACTUAL = P2, ACCEPT = 100 TO 200, $
La siguiente descripción de campo pertenece a un RECTYPE empaquetado de un byte, que contiene el valor 1:
FIELD = RECTYPE, ALIAS = 1, USAGE = P1, ACTUAL = P1, $
La siguiente descripción de campo pertenece a un RECTYPE empaquetado de tres bytes, que contiene el valor A34:
FIELD = RECTYPE, ALIAS = A34, USAGE = A3, ACTUAL = A3,$
El siguiente diagrama muestra una versión más compleja del origen de datos de biblioteca:
La información compartida por todas las copias de un determinado libro (el número de identificación, nombre del autor y título) tienen el mismo tipo de registro. Toda esta información se asigna al segmento raíz en el archivo máster. La sinopsis es un elemento común a todas las copias de un libro, aunque en el origen de datos aparece descrita como una serie de campos repetidos con diez caracteres cada uno, para ahorrar espacio.
La sinopsis se asigna a su propio segmento subordinado con un atributo de OCCURS=VARIABLE, en el archivo máster. Aunque el diagrama presenta segmentos a la derecha del segmento OCCURS=VARIABLE, éste se encuentra a la derecha del todo dentro de su propio tipo de registro. Sólo los segmentos que tengan un RECTYPE distinto al del segmento OCCURS=VARIABLE pueden aparecer a su derecha en la estructura. Además, observe que el segmento OCCURS=VARIABLE no presenta un RECTYPE. Esto se debe a que forma parte del mismo registro que su segmento principal.
La encuadernación y el precio pueden variar de una copia a otra. Por ejemplo, la biblioteca puede tener dos versiones distintas de Pamela, una con la cubierta blanda y un precio de $7.95, la otra, de cubierta dura, a $15.50. Estos dos campos pertenecen a un segundo tipo de registro y están asignados a un segmento descendiente en el archivo máster.
Finalmente, cada copia del libro en la biblioteca cuenta con su propio número de serie identificativo, que aparece descrito en un campo con un tipo de registro S. En el archivo máster, esta información está asignada a un segmento secundario del segmento que contiene la información de encuadernación y precio.
Emplee el siguiente archivo máster para describir este origen de datos:
FILENAME = LIBRARY2, SUFFIX = FIX,$ SEGNAME = PUBINFO, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = P ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PUBNO ,ALIAS = PN ,USAGE = A10 ,ACTUAL = A10 ,$ FIELDNAME = AUTHOR ,ALIAS = AT ,USAGE = A25 ,ACTUAL = A25 ,$ FIELDNAME = TITLE ,ALIAS = TL ,USAGE = A50 ,ACTUAL = A50 ,$ SEGNAME = SYNOPSIS, PARENT = PUBINFO, OCCURS = VARIABLE, SEGTYPE = S0,$ FIELDNAME = PLOTLINE ,ALIAS = PLOTL ,USAGE = A10 ,ACTUAL = A10 ,$ SEGNAME = BOOKINFO, PARENT = PUBINFO, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = B ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = BINDING ,ALIAS = BI ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PRICE ,ALIAS = PR ,USAGE = D8.2N ,ACTUAL = D8 ,$ SEGNAME = SERIANO, PARENT = BOOKINFO, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = S ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = SERIAL ,ALIAS = SN ,USAGE = A15 ,ACTUAL = A15 ,$
Tenga en cuenta que cada segmento, excepto OCCURS, contiene un campo llamado RECTYPE y que el ALIAS del campo incluye un valor único por cada segmento (P, B y S). Si existe un registro en este origen de datos con un RECTYPE que no sea P, B o S, se ignora el registro. El campo RECTYPE debe encontrarse en la misma ubicación física dentro de cada registro del origen de datos.
El orden físico determina las relaciones de principal-secundario en los registros secuenciales. No todos los registros principales requieren descendientes. Especifique el modo en que desea manipular los datos de copias de segmentos no disponibles, presentes en sus informes, utilizando el comando SET para modificar el parámetro ALL. El comando SET aparece descrito en el manual Cómo desarrollar aplicaciones de informes .
En el ejemplo que aparece en Cómo describir registros relacionados por posición, si el primer registro del origen de datos no es de tipo PUBINFO, se le considerará un secundario sin principal. Cualquier información asignada al segmento SYNOPSIS aparece en el registro PUBINFO. El siguiente registro puede tratarse de un BOOKINFO o, incluso, de otro PUBINFO (se da por sentado que el primer PUBINFO no tienen descendientes). Se da por supuesto que los registros SERIANO son descendientes del registro BOOKINFO anterior. Si hay un SERIANO situado a continuación de un registro PUBINFO, sin que intervenga un BOOKINFO, se le trata como si no tuviese un principal.
Examine el siguiente origen de datos VSAM con tres tipos de registros. Los registros ROOT tienen una clave compuesta por el número de editor, PUBNO. El segmento BOOKINFO tiene una clave compuesta por el mismo número de editor más un indicador de cubierta dura o blanda, BINDING. La clave del segmento SERIANO consta de los dos primeros elementos más un campo de tipo de registro, RECTYPE.
FILENAME = LIBRARY6, SUFFIX = VSAM,$ SEGNAME = ROOT, SEGTYPE = S0,$ GROUP=PUBKEY ,ALIAS=KEY ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=PUBNO ,ALIAS=PN ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=FILLER ,ALIAS= ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=RECTYPE ,ALIAS=1 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=AUTHOR ,ALIAS=AT ,USAGE=A25 ,ACTUAL=A25 ,$ FIELDNAME=TITLE ,ALIAS=TL ,USAGE=A50 ,ACTUAL=A50 ,$ SEGNAME=BOOKINFO,PARENT=ROOT, SEGTYPE=S0,$ GROUP=BOINKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=PUBNO1 ,ALIAS=P1 ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=BINDING ,ALIAS=BI ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=RECTYPE ,ALIAS=2 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=PRICE ,ALIAS=PR ,USAGE=D8.2N ,ACTUAL=D8 ,$ SEGNAME=SERIANO, PARENT=BOOKINFO,SEGTYPE=S0,$ GROUP=SERIKEY ,ALIAS=KEY ,USAGE=A12 ,ACTUAL=A12 ,$ FIELDNAME=PUBNO2 ,ALIAS=P2 ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=BINDING1 ,ALIAS=B1 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=RECTYPE ,ALIAS=3 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=SERIAL ,ALIAS=SN ,USAGE=A15 ,ACTUAL=A15 ,$ SEGNAME=SYNOPSIS,PARENT=ROOT, SEGTYPE=S0, OCCURS=VARIABLE,$ FIELDNAME=PLOTLINE ,ALIAS=PLOTL ,USAGE=A10 ,ACTUAL=A10 ,$
Tenga en cuenta que la longitud de los campos clave especificada en los atributos USAGE y ACTUAL de una declaración de GROUP es la de los campos clave de los segmentos principales, más la longitud del campo añadido, perteneciente al segmento secundario (campo RECTYPE). En el ejemplo anterior, la longitud de la clave GROUP, SERIKEY, es igual a la de PUBNO2 y BINDING1, la clave de grupo del segmento principal, más la longitud de RECTYPE, que es el campo añadido a la clave de grupo en el segmento secundario. La longitud de la clave aumenta según se vaya avanzando por la estructura.
Nota: Cada clave de segmento describe la parte de la clave actual necesaria para hallar la próxima copia de dicho segmento.
En el origen de datos de ejemplo, la repetición del número de editor, que aparece como PUBNO1 y PUBNO2 en los segmentos descendientes, interrelaciona los tres tipos de registros.
El origen de datos se puede representar con la siguiente estructura:
Una consulta típica consiste en solicitar información sobre el precio y los números de catálogo de un número de editor específico:
PRINT PRICE AND SERIAL BY PUBNO IF PUBNO EQ 1234567890 OR 9876054321
Puesto que PUBNO forma parte de la clave, la recuperación es rápida y el procesamiento continúa. Para aumentar más aún la velocidad de recuperación, añada criterios de búsqueda basados en el campo BINDING, que también pertenece a la clave.
Algunos orígenes de datos VSAM e ISAM no tienen registros relacionados entre sí. Es decir, que la clave VSAM o ISAM de un tipo de registro es independiente de las claves de otros tipos de registros. Para describir orígenes de datos con registros no relacionados, se define un segmento raíz ficiticio para estos registros. Estas son las reglas para el segmento raíz ficticio:
El resto de los segmentos que no se repiten deben apuntar hacia el segmento raíz como su segmento principal. A excepción de la raíz, todos los segmentos que no se repiten deben tener un RECTYPE y un atributo PARENT, además de describir la totalidad de la clave VSAM/ISAM. Si el origen de datos no tiene clave, no se debe describir el grupo. Los RECTYPE pueden estar situados en cualquier lugar del registro.
El origen de datos de biblioteca tiene tres tipos de registros: información sobre libros, información sobre revistas e información sobre periódicos. Puesto que estos tres tipos de registros no tienen nada en común, no pueden ser descritos como registros principales seguidos de registros detallados.
El origen de datos podría tener el siguiente aspecto:
Una estructura como la siguiente también podría describir este origen de datos:
El archivo máster de la estructura del ejemplo es:
FILENAME = LIBRARY3, SUFFIX = FIX,$ SEGMENT = DUMMY, SEGTYPE = S0,$ FIELDNAME= ,ALIAS= ,USAGE = A1 ,ACTUAL = A1 ,$ SEGMENT = BOOK, PARENT = DUMMY, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = B ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PUBNO ,ALIAS = PN ,USAGE = A10 ,ACTUAL = A10 ,$ FIELDNAME = AUTHOR ,ALIAS = AT ,USAGE = A25 ,ACTUAL = A25 ,$ FIELDNAME = TITLE ,ALIAS = TL ,USAGE = A50 ,ACTUAL = A50 ,$ FIELDNAME = BINDING ,ALIAS = BI ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PRICE ,ALIAS = PR ,USAGE = D8.2N ,ACTUAL = D8 ,$ FIELDNAME = SERIAL ,ALIAS = SN ,USAGE = A15 ,ACTUAL = A15 ,$ FIELDNAME = SYNOPSIS ,ALIAS = SY ,USAGE = A150 ,ACTUAL = A150 ,$ SEGMENT = MAGAZINE, PARENT = DUMMY, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = M ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PER_NO ,ALIAS = PN ,USAGE = A10 ,ACTUAL = A10 ,$ FIELDNAME = PER_NAME ,ALIAS = NA ,USAGE = A50 ,ACTUAL = A50 ,$ FIELDNAME = VOL_NO ,ALIAS = VN ,USAGE = I2 ,ACTUAL = I2 ,$ FIELDNAME = ISSUE_NO ,ALIAS = IN ,USAGE = I2 ,ACTUAL = I2 ,$ FIELDNAME = PER_DATE ,ALIAS = DT ,USAGE = I6MDY ,ACTUAL = I6 ,$ SEGMENT = NEWSPAP, PARENT = DUMMY, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = N ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = NEW_NAME ,ALIAS = NN ,USAGE = A50 ,ACTUAL = A50 ,$ FIELDNAME = NEW_DATE ,ALIAS = ND ,USAGE = I6MDY ,ACTUAL = I6 ,$ FIELDNAME = NVOL_NO ,ALIAS = NV ,USAGE = I2 ,ACTUAL = I2 ,$ FIELDNAME = ISSUE ,ALIAS = NI ,USAGE = I2 ,ACTUAL = I2 ,$
Imagine otro origen de datos VSAM con información sobre la biblioteca. Este origen de datos tiene tres tipos de registros: información sobre libros, información sobre revistas e información sobre periódicos.
Hay dos estructuras posibles:
El RECTYPE supone el principio de la clave. La estructura de la clave es:
RECTYPE B |
Código del libro |
RECTYPE M |
Código de la revista |
RECTYPE N |
Código del periódico |
La secuencia de registros es:
Libro |
Libro |
Revista |
Revista |
Periódico |
Periódico |
Observe la diferencia entre el uso de RECTYPE que se hace aquí y su uso cuando los registros están relacionados por posición. En este caso, los códigos no están relacionados y el diseñador de bases de datos ha decidido acumular los registros primero por tipo (juntando toda la información sobre los libros, las revistas y los periódicos), para que RECTYPE pueda estar al principio de la clave.
El RECTYPE no está al principio de la clave ni fuera de ella.
La estructura de la clave es:
Código del libro |
Código de la revista |
Código del periódico |
La secuencia de tipos de registros en la clave puede ser arbitraria.
Puede representar ambos tipos de estructura de archivos mediante lo siguiente:
FILE=LIBRARY7, SUFFIX=VSAM,$ SEGMENT=DUMMY,$ FIELDNAME= ,ALIAS= ,USAGE=A1 ,ACTUAL=A1 ,$ SEGMENT=BOOK, PARENT=DUMMY,SEGTYPE=S0,$ GROUP=BOOKKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=PUBNO ,ALIAS=PN ,USAGE=A3 ,ACTUAL=A3 ,$ FIELDNAME=AUTHNO ,ALIAS=AN ,USAGE=A3 ,ACTUAL=A3 ,$ FIELDNAME=TITLNO ,ALIAS=TN ,USAGE=A4 ,ACTUAL=A4 ,$ FIELDNAME=RECTYPE ,ALIAS=B ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=AUTHOR ,ALIAS=AT ,USAGE=A25 ,ACTUAL=A25 ,$ FIELDNAME=TITLE ,ALIAS=TL ,USAGE=A50 ,ACTUAL=A50 ,$ FIELDNAME=BINDING ,ALIAS=BI ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=PRICE ,ALIAS=PR ,USAGE=D8.2N ,ACTUAL=D8 ,$ FIELDNAME=SERIAL ,ALIAS=SN ,USAGE=A15 ,ACTUAL=A15 ,$ FIELDNAME=SYNOPSIS ,ALIAS=SY ,USAGE=A150 ,ACTUAL=A150 ,$ SEGMENT=MAGAZINE, PARENT=DUMMY, SEGTYPE=S0,$ GROUP=MAGKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=VOLNO ,ALIAS=VN ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=ISSUNO ,ALIAS=IN ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=PERDAT ,ALIAS=DT ,USAGE=A6 ,ACTUAL=A6 ,$ FIELDNAME=RECTYPE ,ALIAS=M ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=PER_NAME ,ALIAS=PRN ,USAGE=A50 ,ACTUAL=A50 ,$ SEGMENT=NEWSPAP, PARENT=DUMMY, SEGTYPE=S0,$ GROUP=NEWSKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=NEWDAT ,ALIAS=ND ,USAGE=A6 ,ACTUAL=A6 ,$ FIELDNAME=NVOLNO ,ALIAS=NV ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=NISSUE ,ALIAS=NI ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=RECTYPE ,ALIAS=N ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=NEWNAME ,ALIAS=NN ,USAGE=A50 ,ACTUAL=A50 ,$
Cómo: |
Si su origen de datos secuencial de formato fijo, VSAM o ISAM tiene varios tipos de registros, que comparten el mismo diseño, puede especificar un único segmento generalizado que describa todos los tipos de registros en el diseño común. El uso de un segmento generalizado (también denominado RECTYPE generalizado) en lugar de un segmento por cada tipo de registro, supone reducir el número de segmentos que debe describir en el archivo máster.
Cuando se utiliza un segmento generalizado, los valores de RECTYPE se identifican con el atributo ACCEPT. Puede asignar cualquier valor al atributo ALIAS.
FIELDNAME = RECTYPE, ALIAS = alias, USAGE = format, ACTUAL = format, ACCEPT = {list|range} ,$
donde:
Es el nombre de campo obligatorio.
Nota: Como el nombre del campo, RECTYPE, puede no ser único en los distintos segmentos, no debería utilizarlo de esta forma a menos que lo cualifique. El alias no es obligatorio. Puede dejarlo en blanco.
Es cualquier especificación de alias válida. Puede especificar un nombre único como valor de alias para el campo RECTYPE sólo si está usando el atributo ACCEPT. Esto permite usar el alias como campo de visualización o clasificación y en pruebas de selección, mediante WHERE o IF, de una solicitud de TABLE.
Es una lista de una o varias líneas con los valores específicos de RECTYPE, para los registros que presentan el mismo diseño de segmento. El número máximo de caracteres permitido en la lista es de 255. Cada elemento de la lista debe estar separado por un espacio en blanco o por la palabra clave OR. Si la lista incluye espacios en blanco y comas insertados, debe ir colocada entre comillas simples. La lista puede incluir un único valor de RECTYPE. Por ejemplo:
FIELDNAME = RECTYPE, ALIAS = TYPEABC, USAGE = A1,ACTUAL = A1, ACCEPT = A OR B OR C, $
Es un rango o intervalo de una o varias líneas con los valores específicos de RECTYPE, para los registros que presentan el mismo diseño de segmento. El número máximo de caracteres permitido en el rango es de 255. Si el rango incluye espacios en blanco y comas insertados, debe ir colocado entre comillas simples.
Para especificar un rango de valores, incluya el valor más bajo, la palabra clave TO y el valor más alto, en este orden. Por ejemplo:
FIELDNAME = RECTYPE, ALIAS = ACCTREC, USAGE = P3,ACTUAL = P2, ACCEPT = 100 TO 200, $
Para explicar el uso del tipo de registro generalizado en un archivo máster VSAM, consulte los siguientes diseños de registros en el origen de datos DOC. El registro de tipo DN es el segmento raíz y contiene el número y título del documento. Los registros de tipo M, I y C contienen información sobre los manuales, guías de instalación y de cursos, respectivamente. Observe que los registro de tipo M e I tienen el mismo diseño.
Tipo de registro DN:
---KEY--- +-----------------------------------------------------------------------+ DOCID FILLER RECTYPE TITLE +-----------------------------------------------------------------------+
Tipo de registro M:
--------KEY-------- +-----------------------------------------------------------------------+ MDOCID MDATE RECTYPE MRELEASE MPAGES FILLER +-----------------------------------------------------------------------+
Tipo de registro I:
--------KEY-------- +-----------------------------------------------------------------------+ IDOCID IDATE RECTYPE IRELEASE IPAGES FILLER +-----------------------------------------------------------------------+
Tipo de registro C:
--------KEY-------- +-----------------------------------------------------------------------+ CRSEDOC CDATE RECTYPE COURSENUM LEVEL CPAGES FILLER +-----------------------------------------------------------------------+
Sin el atributo ACCEPT cada uno de los cuatro tipos de registro debe aparecer descrito como un segmento independiente en el archivo máster. Se debe proporcionar un conjunto único de nombres de campos para los registros de tipo M e I, aunque éstos tengan el mismo diseño.
La capacidad de RECTYPE generalizado permite codificar un solo conjunto de nombres de campos para el diseño de registros de tipo M e I. Puede emplear el atributo ACCEPT para la especificación de RECTYPE, incluso cuando sólo existe un valor aceptable.
FILENAME=DOC2, SUFFIX=VSAM,$ SEGNAME=ROOT, SEGTYPE=SO,$ GROUP=DOCNUM, ALIAS=KEY, A5, A5, $ FIELD=DOCID, ALIAS=SEQNUM, A5, A5, $ FIELD=FILLER, ALIAS,= A5, A5, $ FIELD=RECTYPE, ALIAS=DOCRECORD, A3, A3, ACCEPT = DN,$ FIELD=TITLE, ALIAS=, A18, A18, $ SEGNAME=MANUALS, PARENT=ROOT, SEGTYPE=SO,$ GROUP=MDOCNUM, ALIAS=KEY, A10, A10,$ FIELD=MDOCID, ALIAS=MSEQNUM, A5, A5, $ FIELD=MDATE, ALIAS=MPUBDATE, A5, A5, $ FIELD=RECTYPE, ALIAS=MANUAL, A3, A3, ACCEPT = M OR I,$ FIELD=MRELEASE, ALIAS=, A7, A7, $ FIELD=MPAGES, ALIAS=, I5, A5, $ FIELD=FILLER, ALIAS=, A6, A6, $ SEGNAME=COURSES, PARENT=ROOT, SEGTYPE=SO,$ GROUP=CRSEDOC, ALIAS=KEY, A10, A10,$ FIELD=CDOCID, ALIAS=CSEQNUM, A5, A5, $ FIELD=CDATE, ALIAS=CPUBDATE, A5, A5, $ FIELD=RECTYPE, ALIAS=COURSE, A3, A3, ACCEPT = C,$ FIELD=COURSENUM, ALIAS=CNUM, A4, A4, $ FIELD=LEVEL, ALIAS=, A2, A2, $ FIELD=CPAGES, ALIAS=, I5, A5, $ FIELD=FILLER, ALIAS=, A7, A7, $
Puede incluir un alias para el campo RECTYPE si utiliza el atributo ACCEPT para especificar uno o varios valores de RECTYPE en el archivo máster. Esto permite usar el alias como campo de visualización o clasificación y en en pruebas de selección, mediante WHERE o IF, de una solicitud de informe.
Presente los valores de RECTYPE incluyendo el alias como campo de visualización. En este ejemplo, el alias MANUAL muestra los valores M e I de RECTYPE:
TABLE FILE DOC PRINT MANUAL MRELEASE MPAGES BY DOCID BY TITLE BY MDATE END
La salida es:
PAGE 1 DOCID TITLE MDATE RECTYPE MRELEASE MPAGES ----- ----- ----- ------- -------- ------ 40001 FOCUS USERS MANUAL 8601 M 5.0 1800 8708 M 5.5 2000 40057 MVS INSTALL GUIDE 8806 I 5.5.3 66 8808 I 5.5.4 66 40114 zOS INSTALL GUIDE 8806 I 5.5.3 58 8808 I 5.5.4 58
Puede utilizar el alias en una prueba de WHERE para mostrar un subconjunto de registros:
TABLE FILE DOC PRINT MANUAL MRELEASE MPAGES BY DOCID BY TITLE BY MDATE WHERE MANUAL EQ 'I' END
La salida es:
PAGE 1 DOCID TITLE MDATE RECTYPE MRELEASE MPAGES ----- ----- ----- ------- -------- ------ 40057 MVS INSTALL GUIDE 8806 I 5.5.3 66 8808 I 5.5.4 66 40114 zOS INSTALL GUIDE 8806 I 5.5.3 58 8808 I 5.5.4 58
WebFOCUS |