Come: Riferimento: |
Lingue disponibili: reporting, Maintain
La funzione DECODE assegna dei valori in base al valore codificato di un campo di immissione. DECODE è utile per dare un valore più significativo ad un valore codificato in un campo. Per esempio, il campo GENDER potrebbe presentare il codice F per i dipendenti donna e M per i dipendenti uomo, per la memorizzazione efficiente (per esempio, un carattere invece che sei per donna). DECODE espande (decodifica) questi valori per assicurare l'interpretazione corretta su un prospetto.
È possibile utilizzare DECODE, fornendo valori direttamente alla funzione o leggendo valori da un file separato.
DECODE fieldname(code1 result1 code2 result2...[ELSE default ]); DECODE fieldname(filename ...[ELSE default]);
dove:
Alfanumerico o Numerico
Nome del campo di immissione.
Alfanumerico o Numerico
Valore codificato che DECODE paragona al valore corrente di filedname. Se il valore presenta spazi incorporati, virgole o altri caratteri speciali, racchiuderlo nelle virgolette singole. Quando DECODE trova il valore specificato, restituisce il risultato corrispondente. Quando il codice è paragonato al valore del nome del campo, il codice e il nome del campo devono essere nello stesso formato".
Alfanumerico o Numerico
Valore restituito che corrisponde al codice. Se il valore presenta spazi, virgole, o contiene un numero negativo, racchiuderlo nelle virgolette singole. Non usare le virgolette doppie (").
Se il risultato è presentano in formato alfanumerico, deve essere una stringa non-vuota e non-nulla. Il formato del risultato deve corrispondere al tipo di dati nell'espressione.
Alfanumerico o Numerico
Valore restituito come risultato per codici non corrispondenti. Il formato deve essere lo stesso del formato del risultato. Se si omette un valore predefinito, DECODE restituisce uno spazio vuoto o uno zero ai codici non corrispondenti.
Alfanumerico
Il nome del file, la quale coppia codice/risultato viene memorizzata. Ciascun record nel file deve contenere una coppia.
È possibile utilizzare fino a 40 righe per definire il codice e le coppie di risultati per qualsiasi data funzione DECODE, o 39 righe se si utilizza inoltre una frase ELSE. Utilizzare o una virgola o uno spazio per separare il codice dal risultato, o una coppia da un'altra.
Nota: DECODE non presenta argomento di emissione.
EDIT estrae il primo carattere del campo CURR_JOBCODE, quindi DECODE restituisce o ADMINISTRATIVE o DATA PROCESSING, a seconda del valore estratto.
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
L'emissione è:
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
Questo metodo consente di utilizzare il file per mantenere valori letterali di screening riferiti nella condizione screening:
IF field IS (filename)
e come un file di valori letterali per un criterio IF specificato in una espressione computazionale. Per esempio:
TAKE = DECODE SELECT (filename ELSE 1);
VALUE = IF TAKE IS 0 THEN... ELSE...;
TAKE è 0 per valori SELECT trovati nel file di valori lettarali e 1 in tutti gli altri casi. La computazione VALUE è eseguita se l'espressione è stata:
IF SELECT (filename) THEN... ELSE...;
Il seguente esempio presenta due parti. La prima parte crea un file con un elenco di ID e legge l'origine dati EDUCFILE. La seconda parte legge l'origine dati EMPLOYEE e assegna 0 a quei dipendenti che hanno frequentato classi e 1 a quei dipendenti che non le hanno frequentate. Il file HOLD contiene solo una colonna di valori. Quindi, DECODE assegna il valore 0 ad un dipendente, il quale EMP_ID appare nel file e 1, quando EMP_ID non appare nel file.
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
L'emissione è:
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 |