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:
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.
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:
Es el nombre del grupo.
Es un nombre de alias opcional para el grupo.
Es el formato del campo de grupo. Su longitud es la suma de las longitudes internas de los campos de componentes:
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.
Son los campos de componentes del grupo.
Son los nombres de alias de los campos de componentes del grupo.
Son los formatos USAGE de los campos de componentes del grupo.
Crea un índice independiente para el grupo.
Tenga en cuenta que el uso de la barra permite especificar valores, de un modo más fácil, cuando los campos de componente contienen espacios en blanco finales, ya que permite ignorarlos.
Las únicas máscaras compatibles con los criterios de selección de campos de grupo, son las que aceptan cualquier combinación de caracteres para todos los componentes de grupo, posteriores al primer componente. Por ejemplo, si el grupo FULL_NAME está compuesto por LAST_NAME y FIRST_NAME, la siguiente máscara es compatible:
WHERE FULL_NAME EQ '$R$$$$*'
(FOC439) WARNING. A MATCH CONDITION HAS BEEN ASSUMED FOR:
GROUP = ..., ,$ FIELDNAME = FIELDG1, ... ,$ FIELDNAME = FIELDG2, ... ,$ FIELDNAME = FIELD3, ... ,$
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
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
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 |
WebFOCUS |