atributo GROUP

En esta sección:

El grupo proporciona un nombre alternativo, útil cuando hay uno o varios campos contiguos. El grupo cambia la definición de una secuencia de campos y no requiere un almacenamiento propio.

Los campos de grupos permiten:


Principio de página

x
Cómo describir un campo de un grupo con formatos

Cómo:

Referencia:

Los campos de los componentes pueden incluir datos numéricos o alfanuméricos. Sin embargo, el formato del campo de grupo siempre debe ser alfanumérico. La longitud del campo de grupo debe ser la suma de las longitudes reales de los campos de componentes. Por ejemplo, los campos de número entero siempre tienen una longitud real de cuatro bytes, independientemente del formato USAGE, que determina el número de caracteres de un informe.



x
Sintaxis: Cómo Definir un campo de un grupo con formatos
GROUP=groupname, [ALIAS=groupalias,] USAGE=An, [FIELDTYPE=I,] $
 FIELDNAME=field1, ALIAS=alias1, USAGE=fmt1,$
 FIELDNAME=field2, ALIAS=alias2, USAGE=fmt2,$
 .
 .
 .
 FIELDNAME=fieldn, ALIAS=aliasn, USAGE=fmtn,$

donde:

groupname

Es el nombre del grupo.

groupalias

Es un nombre de alias opcional para el grupo.

An

Es el formato del campo de grupo. Su longitud es la suma de las longitudes internas de los campos de componentes:

  • Los campos de tipo I tienen una longitud interna de 4.
  • Los campos de tipo F tienen una longitud interna de 4.
  • Los campos de tipo P, con un formato USAGE de P15, P16 o inferior, tienen una longitud interna de 8, mientras que la longitud interna de los de tipo P con un formato USAGE de P17 o superior, es de 16.
  • Los campos de tipo D tienen una longitud interna de 8.
  • Los campos de tipo A tienen una longitud interna igual al número de caracteres (n) de sus formatos USAGE.

Si describe el campo de grupo con un formato que no sea A, no se generará un mensaje de error. Sin embargo, no es una opción recomendable ya que puede producir resultados inesperados.

field1, ..., fieldn

Son los campos de componentes del grupo.

alias1, ..., aliasn

Son los nombres de alias de los campos de componentes del grupo.

fmt1, ..., fmtn

Son los formatos USAGE de los campos de componentes del grupo.

FIELDTYPE=I

Crea un índice independiente para el grupo.



x
Referencia: Notas de uso de los campos de grupo en orígenes de datos FOCUS


Ejemplo: Cómo mostrar un campo de grupo alfanumérico

En la siguiente definición de campo de grupo, la longitud del grupo es de 25, la suma de las longitudes de los campos LAST_NAME y FIRST_NAME:

FILENAME=EMPLOYEE, SUFFIX=FOC
SEGNAME=EMPINFO,  SEGTYPE=S1
 FIELDNAME=EMP_ID,       ALIAS=EID,      FORMAT=A9,      $ 
 GROUP=FULL_NAME,                 ,      FORMAT=A25,     $  
  FIELDNAME=LAST_NAME,    ALIAS=LN,      FORMAT=A15,     $
  FIELDNAME=FIRST_NAME,   ALIAS=FN,      FORMAT=A10,     $

La prueba WHERE del campo de grupo no requiere barras entre los valores de los componentes, ya que los campos de éstos son alfanuméricos:

TABLE FILE EMPLOYEE
PRINT EMP_ID HIRE_DATE
BY FULL_NAME
WHERE FULL_NAME GT 'CROSSBARBARA'
END

La salida es:

FULL_NAME                  EMP_ID     HIRE_DATE
---------                  ------     ---------
GREENSPAN      MARY        543729165   82/04/01
IRVING         JOAN        123764317   82/01/04
JONES          DIANE       117593129   82/05/01
MCCOY          JOHN        219984371   81/07/01
MCKNIGHT       ROGER       451123478   82/02/02
ROMANS         ANTHONY     126724188   82/07/01
SMITH          MARY        112847612   81/07/01
SMITH          RICHARD     119265415   82/01/04
STEVENS        ALFRED      071382660   80/06/02


Ejemplo: Cómo filtrar un campo de grupo con un componente de número entero

En la siguiente definición de campo de grupo, la longitud del grupo es de 29, la suma de las longitudes de los campos LAST_NAME, FIRST_NAME y HIRE_DATE Puesto que HIRE_DATE es un campo de número entero, su longitud interna es de 4:

FILENAME=EMPLOYEE, SUFFIX=FOC
SEGNAME=EMPINFO,  SEGTYPE=S1
 FIELDNAME=EMP_ID,       ALIAS=EID,      FORMAT=A9,    $ 
 GROUP=FULL_NAME,                 ,      FORMAT=A29,   $  
  FIELDNAME=LAST_NAME,    ALIAS=LN,      FORMAT=A15,   $
  FIELDNAME=FIRST_NAME,   ALIAS=FN,      FORMAT=A10,   $
  FIELDNAME=HIRE_DATE,    ALIAS=HDT,     FORMAT=I6YMD, $

En la siguiente solicitud, los valores de los campos de componentes deben estar separados por barras en la prueba WHERE. La solicitud no muestra el campo del grupo, ya que el componente de número entero no aparecería correctamente:

TABLE FILE EMPGROUP
PRINT EMP_ID LAST_NAME FIRST_NAME HIRE_DATE
BY FULL_NAME NOPRINT
WHERE FULL_NAME GT 'CROSS/BARBARA/811102'
END

La salida es:

EMP_ID     LAST_NAME        FIRST_NAME  HIRE_DATE
------     ---------        ----------  ---------
543729165  GREENSPAN        MARY         82/04/01
123764317  IRVING           JOAN         82/01/04
117593129  JONES            DIANE        82/05/01
219984371  MCCOY            JOHN         81/07/01
451123478  MCKNIGHT         ROGER        82/02/02
126724188  ROMANS           ANTHONY      82/07/01
112847612  SMITH            MARY         81/07/01
119265415  SMITH            RICHARD      82/01/04
071382660  STEVENS          ALFRED       80/06/02

Principio de página

x
Cómo describir un campo de grupo como un conjunto de elementos

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.



x
Sintaxis: Cómo Describir un campo de GROUP como un conjunto de elementos
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:

group1, group2

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.

n1, n2

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.

field11, field2k

Son nombres de campos válidos.

alias11, alias2k

Son nombres de alias válidos.

ufmt11, ufmt2k

Son formatos de USAGE para cada campo.

afmt11, afmt2k

Son formatos de ACTUAL para cada campo.



x
Referencia: Notas de uso de los elementos de grupos


Ejemplo: Cómo declarar un GROUP con ELEMENTS

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


WebFOCUS