CHKPCK: Cómo validar un campo empaquetado

Cómo:

Idiomas disponibles: informes, Maintain

La función CHKPCK valida los datos de un campo de formato empaquetado (si está disponible en su plataforma). La función evita que ocurran excepciones de datos cuando una solicitud lee un campo que, en contra de lo esperado, no contiene un número empaquetado válido.

Para usar CHKPCK:

  1. Asegúrese de que el archivo máster (atributos USAGE y ACTUAL) definan el campo como alfanumérico, no como empaquetado. Esto no modifica los datos del campo, que permanece empaquetado, pero sí permite que la solicitud lea los datos sin que tenga lugar una excepción.
  2. Llame a CHKPCK para que examine el campo. La función devuelve la salida a un campo empaquetado. Si el valor examinado es un número empaquetado válido, la función devuelve el valor. Si el valor no está empaquetado, la función devuelve un código de error.

Principio de página

x
Sintaxis: Cómo Validar un campo empaquetado
CHKPCK(length, in_value, error, output)

donde:

length

Numérico

Es la longitud del en el campo empaquetado. Puede tener entre 1 y 16 bytes.

infield

Alfanumérico

Es el nombre del campo empaquetado o el valor que se va a verificar como decimal empaquetado. El valor debe estar descrito como alfanumérico, no como empaquetado.

error

Numérico

Es el código de error devuelto por la función cuando un valor no está empaquetado. Elija un código de error situado fuera del rango de datos. Primero, el código de error se trunca a un número entero y a continuación, se convierte al formato empaquetado. Sin embargo, puede que aparezca con un punto decimal en el informe, dependiendo del formato de salida.

output

Decimal empaquetado

Es el nombre del campo que contiene el resultado, o el formato del valor de salida puesto entre comillas solas.



Ejemplo: Cómo validar datos empaquetados
  1. Prepare un origen de datos que incluya datos empaquetados no válidos. El siguiente ejemplo crea TESTPACK, que contiene el campo PACK_SAL. PACK_SAL está definido como alfanumérico, aunque contiene datos empaquetados. Los datos empaquetados no válidos se almacenan como AAA.
    DEFINE FILE EMPLOYEE
    PACK_SAL/A8 = IF EMP_ID CONTAINS '123'
          THEN 'AAA' ELSE PCKOUT(CURR_SAL, 8, 'A8');
    END
    TABLE FILE EMPLOYEE
    PRINT DEPARTMENT PACK_SAL BY EMP_ID
    ON TABLE SAVE AS TESTPACK
    END

    La salida es:

     NUMBER OF RECORDS IN TABLE=       12  LINES=     12 
    ALPHANUMERIC  RECORD NAMED  TESTPACK 
    FIELDNAME                         ALIAS          FORMAT        LENGTH
    EMP_ID                            EID            A9               9 
    DEPARTMENT                        DPT            A10             10 
    PACK_SAL                                         A8               8 
    TOTAL                                                            27
  2. Cree un archivo máster para el origen de datos TESTPACK. Defina el campo PACK_SAL como alfanumérico en los atributos USAGE y ACTUAL.
    FILE  = TESTPACK,  SUFFIX = FIX
    FIELD = EMP_ID    ,ALIAS = EID,USAGE = A9 ,ACTUAL = A9 ,$
    FIELD = DEPARTMENT,ALIAS = DPT,USAGE = A10,ACTUAL = A10,$
    FIELD = PACK_SAL  ,ALIAS = PS ,USAGE = A8 ,ACTUAL = A8 ,$
  3. Cree una solicitud que utiliza CHCKPCK para validar los valores del campo PACK_SAL y almacena el resultado en el campo GOOD_PACK. Los valores que no están en formato empaquetado devuelven el código de error -999. Los valores en formato empaquetado aparecen correctamente.
    DEFINE FILE TESTPACK
    GOOD_PACK/P8CM = CHKPCK(8, PACK_SAL, -999, GOOD_PACK); 
    END
    TABLE FILE TESTPACK
    PRINT DEPARTMENT GOOD_PACK BY EMP_ID
    END

    La salida es:

    EMP_ID     DEPARTMENT    GOOD_PACK 
    ------     ----------    --------- 
    071382660  PRODUCTION      $11,000 
    112847612  MIS             $13,200 
    117593129  MIS             $18,480 
    119265415  PRODUCTION       $9,500 
    119329144  PRODUCTION      $29,700 
    123764317  PRODUCTION        -$999 
    126724188  PRODUCTION      $21,120 
    219984371  MIS             $18,480 
    326179357  MIS             $21,780 
    451123478  PRODUCTION        -$999 
    543729165  MIS              $9,000 
    818692173  MIS             $27,062

WebFOCUS