DECODE : Décoder des valeurs

Comment :

Référence :

Langages disponibles : reporting, Maintain

La fonction DECODE attribue des valeurs en fonction de la valeur encodée d'un champ d'entrée. DECODE est utile pour donner une valeur plus significative à une valeur encodée dans un champ. Par exemple, vous pouvez attribuer au champ GENDER la valeur F pour désigner les employées du sexe féminin et la valeur M pour désigner les employés du sexe masculin (de cette manière, le champ contient un champ au lieu de plusieurs). DECODE développe (décode) ces valeurs pour assurer leur interprétation correcte dans un rapport.

Vous pouvez utiliser DECODE en fournissant des valeurs directement dans la fonction ou en lisant les valeurs à partir d'un autre fichier.

L'utilisation de DECODE avec Maintain est limitée. Pour plus d'informations sur le décodage des valeurs avec des valeurs empilées en indice, consultez SELECTS : Décoder une valeur à partir d'une pile.


Haut de page

x
Syntaxe : Fournir des valeurs à la fonction
DECODE fieldname(code1 result1 code2 result2...[ELSE default ]);
DECODE fieldname(filename ...[ELSE default]);

où :

fieldname

Alphanumérique ou Numérique

est le nom du champ d'entrée.

code

Alphanumérique ou Numérique

est la valeur codée que DECODE compare avec la valeur actuelle de fieldname. Si la valeur contient des blancs incorporés, des virgules ou d’autres caractères spéciaux, elle doit être encadrée par des guillemets simples. Quand DECODE détecte la valeur spécifiée, il lui attribue le résultat correspondant. Lorsque le code est comparé à la valeur du nom de champ, le code et le nom de champ doivent être au même format.

result

Alphanumérique ou Numérique

est la valeur renvoyée correspondant au code. Si la valeur contient des blancs incorporés, des virgules ou un numéro négatif, elle doit être encadrée par des guillemets simples. Ne pas utiliser les guillemets doubles (").

Si le résultat est présenté au format alphanumérique, il doit s'agir d'une chaîne non nulle, non vide. Le format du résultat doit correspondre au type de données de l'expression.

default

Alphanumérique ou Numérique

est la valeur renvoyée comme résultat pour les codes non correspondants. Le format doit être le même que le format de résultat. Si vous omettez une valeur par défaut, DECODE attribue un blanc ou un zéro aux codes non correspondants.

filename

Alphanumérique

est le nom du fichier dans lequel les paires de code/résultat sont stockées. Chaque enregistrement dans le fichier doit contenir une paire.

Vous pouvez utiliser au maximum 40 lignes pour définir le code et les paires de résultats d'une fonction DECODE, ou 39 lignes si vous utilisez conjointement l'expression ELSE. Utilisez soit une virgule ou un espace blanc pour séparer le code du résultat, ou une paire de l'autre.

Remarque : DECODE n'a pas d'argument de sortie.



Exemple : Fournir les valeurs à l'aide de la Fonction DECODE

EDIT extrait le premier caractère du champ CURR_JOBCODE, ensuite DECODE renvoie soit ADMINISTRATIVE ou DATA PROCESSING en fonction de la valeur extraite.

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 sortie est :

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

Haut de page

x
Référence : Informations à prendre en compte lors de la lecture de valeurs d'un fichier


Exemple : Lecture de valeurs DECODE dans un fichier

L'exemple suivant a deux parties. La première partie crée un fichier avec une liste d'identifiants et lit la source de données EDUCFILE. La seconde partie lit la source de données EMPLOYEE puis affecte 0 aux employés qui ont suivi des cours et 1 à ceux qui n'en ont pas suivi. Le fichier HOLD ne contient qu'une colonne de valeurs, par conséquent DECODE attribue la valeur 0 à un employé dont le EMP_ID apparaît dans le fichier et 1 lorsque EMP_ID n'apparaît pas.

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 sortie est :

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