DECODE: Cómo descodificar valores

Cómo:

Referencia:

Idiomas disponibles: informes, Maintain

La función DECODE asigna valores en base al valor codificado de un campo de entrada. DECODE ofrece un modo práctico de asignar un valor de mayor significado al valor codificado de un campo. Por ejemplo, el campo GENDER puede incluir el código F para las empleadas y M, para los empleados, lo que resulta en un almacenamiento más eficiente (por ejemplo, un carácter en vez de seis para mujer). DECODE expande (descodifica) estos valores para garantizar la correcta interpretación de los informes.

Para usar DECODE puede introducir valores directamente en la función o leerlos desde un archivo independiente.

El uso de DECODE junto con Maintain es limitado. Para más información sobre la descodificación de valores con valores de pila subindexados, consulte SELECTS: Cómo descodificar un valor de una pila.


Principio de página

x
Sintaxis: Cómo Proporcionar valores en la función
DECODE fieldname(code1 result1 code2 result2...[ELSE default ]);
DECODE fieldname(filename ...[ELSE default]);

donde:

fieldname

Alfanumérico o numérico

Es el nombre del campo de entrada.

code

Alfanumérico o numérico

Es el valor codificado comparado por DECODE con el valor de fieldname. Si el valor tiene insertados espacios en blanco, comas u otros caracteres especiales, debe estar entre comillas simples. Cuando DECODE encuentra el valor especificado, devuelve el resultado correspondiente. Cuando el código se compara con el valor del nombre del campo, el código y el nombre deben estar en el mismo formato.

result

Alfanumérico o numérico

Es el valor devuelto correspondiente al código. Si el valor tiene insertados espacios en blanco o comas, o contiene un número negativo, debe estar entre comillas simples. No utilice las comillas dobles (").

Si el resultado se presenta en formato alfanumérico, debe ser una cadena no nula que no esté en blanco. El formato del resultado debe corresponderse con el tipo de datos de la expresión.

default

Alfanumérico o numérico

Es el valor devuelto como resultado para los códigos no coincidentes. El formato debe ser el mismo que el de result. Si omite un valor predeterminado, DECODE asigna un espacio o un cero a los códigos que no coinciden.

filename

Alfanumérico

Es el nombre del archivo en que se almacenan las parejas de código/resultado. Cada registro del archivo debe incluir una pareja.

Puede usar hasta 40 líneas para definir el código y las parejas de resultados de cualquier función DECODE, o 39 si también utiliza una frase ELSE. Emplee una coma o un espacio para separar el código del resultado o una pareja de la otra.

Nota: DECODE no presenta un argumento output.



Ejemplo: Cómo proporcionar valores utilizando la función DECODE

EDIT extrae el primer caracter del campo CURR_JOBCODE y después, DECODE devuelve ADMINISTRATIVE o DATA PROCESSING, dependiendo del valor extraído.

TABLE FILE EMPLOYEE
PRINT CURR_JOBCODE AND COMPUTE
DEPX_CODE/A1 = EDIT(CURR_JOBCODE, '9$$'); NOPRINT AND COMPUTE
JOB_CATEGORY/A15 = DECODE DEPX_CODE(A 'ADMINISTRATIVE' 
              B 'DATA PROCESSING');
BY LAST_NAME
WHERE DEPARTMENT EQ 'MIS';
END

La salida es:

LAST_NAME    CURR_JOBCODE    JOB_CATEGORY
---------    ------------    ------------
BLACKWOOD    B04             DATA PROCESSING
CROSS        A17             ADMINISTRATIVE
GREENSPAN    A07             ADMINISTRATIVE
JONES        B03             DATA PROCESSING
MCCOY        B02             DATA PROCESSING
SMITH        B14             DATA PROCESSING

Principio de página

x
Referencia: Pautas de lectura de valores de un archivo


Ejemplo: Cómo leer valores DECODE desde un archivo

El siguiente ejemplo consta de dos partes. La primera parte crea un archivo con una lista de ids. y lee el archivo de origen EDUCFILE. La segunda lee el origen de datos EMPLOYEE y asigna un 0 a los empleados que hayan dado clases, y un 1 a los que no. El archivo HOLD sólo tiene una columna de valores; DECODE asigna el valor 0 a un empleado cuyo EMP_ID esté presente en el archivo y un,1 cuando no aparece EMP_ID.

TABLE FILE EDUCFILE
PRINT EMP_ID
ON TABLE HOLD
END
TABLE FILE EMPLOYEE
PRINT EMP_ID AND LAST_NAME AND FIRST_NAME AND COMPUTE 
NOT_IN_LIST/I1 = DECODE EMP_ID(HOLD ELSE 1); 
WHERE DEPARTMENT EQ 'MIS';
END

La salida es:

EMP_ID     LAST_NAME        FIRST_NAME  NOT_IN_LIST
------     ---------        ----------  -----------
112847612  SMITH            MARY                  0
117593129  JONES            DIANE                 0
219984371  MCCOY            JOHN                  1
326179357  BLACKWOOD        ROSEMARIE             0
543729165  GREENSPAN        MARY                  1
818692173  CROSS            BARBARA               0

WebFOCUS