En esta sección: |
La mayoría de los atributos de archivo máster estándar se utiliza con los orígenes de datos VSAM e ISAM de un modo convencional. Para más información, consulte Cómo identificar un origen de datos, Cómo describir un grupo de campos y Cómo describir un campo individual.
La única excepción es los RECTYPEs no relacionados, donde el SEGNAME raíz debe ser DUMMY.
Todos los datos que no se repitan van en el segmento raíz. Los segmentos restantes pueden tener cualquier nombre que sea válido y tenga entre uno y ocho caracteres.
Todos los segmentos, excepto el de raíz, son descendientes o secundarios de otros segmentos. El atributo PARENT proporciona el nombre del segmento jerárquico principal o propietario del segmento actual. Si no aparece ningún atributo PARENT, el segmento por defecto es el que esté situado inmediatamente antes. El nombre PARENT puede tener entre uno y ocho caracteres.
Cómo: |
Los orígenes de datos de un único segmento sólo pueden tener un campo clave, aunque deben estar descritos con una declaración de GROUP. El grupo también debe tener ALIAS=KEY.
También puede asignar grupos simplemente para proporcionar nombres de referencia útiles para los grupos de campos. Suponga que cuenta con una serie de tres campos para un empleado: apellido, nombre e inicial del segundo nombre. Estos campos se utilizan constantemente para identificar al empleado. Puede identificar estos tres campos como un GROUP llamado EMPINFO, en su archivo máster. A continuación, puede hacer referencia a estos tres campos vinculados como si se tratasen de una sola unidad, llamada EMPINFO. Cuando utilice la característica GROUP con elementos que no sean clave, debe usar el parámetro ALIAS=, que no puede ser igual a KEY.
Para los campos de grupos, debe proporcionar los formatos USAGE y ACTUAL en forma alfanumérica. La longitud debe ser exactamente igual a la suma de las longitudes de los campos subordinados.
El atributo USAGE de la declaración GROUP especifica el número de posiciones utilizado para describir la clave en un origen de datos VSAM KSDS. Si el archivo máster no describe la totalidad de la clave en al menos una ocasión, aparece el siguiente mensaje de error:
(FOC1016) INVALID KEY DESCRIPTION IN MASTER FILE
La definición de la clave en clúster se compara con el archivo máster en cuanto a longitud y desplazamiento.
Al ampliar la clave en un origen de datos RECTYPE, describa su longitud completa en el último segmento que no sea OCCURS de cada ruta de acceso a datos.
No describa los grupos con ALIAS=KEY para los segmentos OCCURS.
Si los campos que componen una clave de grupo no son alfanuméricos, el formato de ésta sigue siendo alfanumérico, aunque su longitud se determina de un modo distinto. La longitud de ACTUAL sigue siendo la suma de las longitudes de los campos subordinados. El formato USAGE, sin embargo, es la suma de las longitudes de almacenamiento interno de los campos subordinados, ya que, independientemente de los tipos de datos, el grupo aparece como alfanumérico. La longitud de estas longitudes de almacenamiento interno se determina de la siguiente manera:
Nota:
GROUP = keyname, ALIAS = KEY, USAGE = Ann, ACTUAL = Ann ,$
donde:
Puede tener hasta 66 caracteres.
El origen de datos de la biblioteca, el primer campo, PUBNO, puede estar descrito como la clave de grupo. El número del editor está compuesto de tres elementos: un número que identifica al editor, otro para el autor y un tercero para el título. Pueden describirse como una clave de grupo, compuesta de un campo independiente de cada elemento, cuando el origen de datos se trata de una estructura de datos VSAM.
El archivo máster presenta este aspecto:
FILE = LIBRARY5, SUFFIX = VSAM,$ SEGMENT = ROOT, SEGTYPE = S0,$ GROUP = BOOKKEY ,ALIAS = KEY ,USAGE = A10 ,ACTUAL = A10 ,$ 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 = 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 ,$ FIELDNAME = RECTYPE ,ALIAS = B ,USAGE = A1 ,ACTUAL = A1 ,$
GROUP = A, ALIAS = KEY, USAGE = A14, ACTUAL = A8 ,$ FIELDNAME = F1, ALIAS = F1, USAGE = P6, ACTUAL=P2 ,$ FIELDNAME = F2, ALIAS = F2, USAGE = I9, ACTUAL=I4 ,$ FIELDNAME = F3, ALIAS = F3, USAGE = A2, ACTUAL=A2 ,$
Las longitudes de los atributos ACTUAL de los campos subordinados F1, F2 y F3, suman un total de 8, que es la longitud del atributo ACTUAL de una clave de grupo. Las longitudes de visualización de los atributos USAGE de los campos subordinados suman un total de 17. Sin embargo, la longitud del atributo USAGE de la clave de grupo se calcula añadiendo sus longitudes de almacenamiento interno, especificadas por el tipo de campo: 8 para USAGE=P6, 4 para USAGE=I9 y 2 para USAGE=A2, para un total de 14.
Cuando se emplea un campo de grupo con formatos múltiples en una consulta, debe tenerse en cuenta cada posición dentro del grupo, incluidos los espacios en blanco finales y los ceros iniciales. El siguiente ejemplo explica cómo acceder a un campo de grupo con formatos múltiples, en una consulta:
GROUP = GRPB, ALIAS = KEY, USAGE = A8, ACTUAL = A8 ,$ FIELDNAME = FIELD1, ALIAS = F1, USAGE = A2, ACTUAL = A2 ,$ FIELDNAME = FIELD2, ALIAS = F2, USAGE = I8, ACTUAL = I4 ,$ FIELDNAME = FIELD3, ALIAS = F3, USAGE = A2, ACTUAL = A2 ,$
Los valores de los campos F1 y F3 pueden incluir algunos espacios en blanco finales, mientras que los de F2 pueden presentar ceros iniciales. Cuando utilice el grupo en una consulta, debe tener en cuenta cada posición. Puesto que FIELD2 se trata de un campo numérico, no puede especificar los criterios de IF, como se indica a continuación:
IF GRPB EQ 'A 0334BB'
Para eliminar este error, use una barra diagonal (/) para separar los componentes de la clave de grupo:
IF GRPB EQ 'A/334/BB'
Nota: Cuando sea necesario, los espacios en blanco y ceros iniciales se darán por sentado para completar la clave.
Cómo: Referencia: |
Las declaraciones GROUP de los archivos máster sirven para describir varios campos como si trataran de una sola entidad. Uno de los usos del grupo es el de describir las claves de grupos en un origen de datos VSAM. Algunas veces, refiriéndose a varios campos mediante un nombre de campo, para facilitar la generación de informes.
Normalmente, para describir un campo de GROUP, tenía que tener en cuenta el hecho de que, mientras los formatos USAGE y ACTUAL del campo GROUP son alfanuméricos, la porción de longitud del formato USAGE para el grupo debe calcularse como la suma de las longitudes componentes, donde cada campo de número entero o precisión simple equivale a 4 bytes, cada campo de doble precisión es igual a 8 bytes y cada campo de decimal empaquetado se cuenta como si tuviese 8 o 16 bytes, dependiendo del tamaño.
Para no tener que calcular estas longitudes, puede utilizar la opción GROUP ELEMENTS, que describe el grupo como un conjunto de elementos, sin los formatos USAGE y ACTUAL.
GROUP=group1, ALIAS=g1alias,ELEMENTS=n1,$ FIELDNAME=field11, ALIAS=alias11, USAGE=ufmt11, ACTUAL=afmt11, $ . . . FIELDNAME=field1h, ALIAS=alias1h, USAGE=ufmt1h, ACTUAL=afmt1h, $ GROUP=group2,ALIAS=g2alias,ELEMENTS=n2,$ FIELDNAME=field21, ALIAS=alias21, USAGE=ufmt21, ACTUAL=afmt21, $ . . . FIELDNAME=field2k, ALIAS=alias2k, USAGE=ufmt2k, ACTUAL=afmt2k, $
donde:
Son nombres válidos asignados a un grupo de campos. Las reglas para nombres de grupos aceptables son las mismas que para los de los campos.
Son los números de los elementos (campos o grupos) que componen el grupo. Si un grupo está definido dentro de otro grupo, el subgrupo (con todos sus elementos) cuenta como un elemento más del grupo principal.
Son nombres de campos válidos.
Son nombres de alias válidos.
Son formatos de USAGE para cada campo.
Son formatos de ACTUAL para cada campo.
En el siguiente archivo máster, GRP2 consta de dos elementos, los campos FIELDA y FIELDB. GRP1 consta de dos elementos, GRP2 y el campo FIELDC. El campo FIELDD no forma parte de un grupo:
FILENAME=XYZ , SUFFIX=FIX , $ SEGMENT=XYZ, SEGTYPE=S2, $ GROUP=GRP1,ALIAS=CCR,ELEMENTS=2,$ GROUP=GRP2,ALIAS=CC,ELEMENTS=2,$ FIELDNAME=FIELDA, ALIAS=E01, USAGE=A10, ACTUAL=A10, $ FIELDNAME=FIELDB, ALIAS=E02, USAGE=A16, ACTUAL=A16, $ FIELDNAME=FIELDC, ALIAS=E03, USAGE=P27, ACTUAL=A07, $ FIELDNAME=FIELDD, ALIAS=E04, USAGE=D7, ACTUAL=A07, $
El siguiente diagrama muestra los desplazamientos y formatos de estos campos.
Número de campo | Nombre de campo | Desplazamiento | USAGE | ACTUAL |
---|---|---|---|---|
1 | GRP1 | 0 | A42 - Admite 16 caracteres para FIELDC (P27) | A33 |
2 | GRP2 | 0 | A26 | A26 |
3 | FIELDA | 0 | A10 | A10 |
4 | FIELDB | 10 | A16 | A16 |
5 | FIELDC | 26 | P27 | A7 |
6 | FIELDD | 42 | D7 | A7 |
Tenga en cuenta que las características de visualización del grupo no han cambiado. El grupo GRP1, de formato mixto, sigue apareciendo como alfanumérico.
WebFOCUS |