FPRINT: Conversione campi in formato alfanumerico

Come:

Riferimento:

La funzione FPRINT converte qualsiasi tipo di campo La rappresentazione alfanumerica includerà qualsiasi opzione di visualizzazione specificata nel formato del campo originale.

Lingue disponibili: reporting


Inizio pagina

x
Sintassi: Come convertire i campi usando FPRINT
FPRINT(in_value, 'usageformat', output)

dove:

in_value

Qualsiasi formato tranne TX

Valore da convertire.

usageformat

Alfanumerico

Il formato in uso per il valore da convertire, incluse le opzioni di visualizzazione. Il formato deve essere racchiuso in virgolette singole.

emissione

Alfanumerico

Il nome del campo di emissione o del suo formato racchiuso tra virgolette singole.

Il formato di emissione deve essere abbastanza lungo per contenere il numero convertito stesso, con un simbolo e punto decimale, più qualsiasi carattere aggiuntivo generato dalle opzioni di visualizzazione, come virgole, un simbolo di valuta o un simbolo percentuale.

Per esempio, il formato D12.2 viene convertito in A14, poiché emette due cifre decimali, un punto decimale, un possibile simbolo meno, fino a otto cifre intere e due virgole. Se il formato di emissione non risulta lungo abbastanza, i caratteri in eccesso sul lato destro potrebbero essere troncati.


Inizio pagina

x
Riferimento: Note per l'uso per la funzione FPRINT


Esempio: Conversione di campi numerici in formato alfanumerico

La seguente richiesta rispetto all'origine dati EMPLOYEE usa FPRINT per convertire i campi CURR_SAL, ED_HRS e BANK_ACCT in formato alfanumerico per la visualizzazione sull'emissione di prospetto. Quindi, la funzione STRREP sostituisce gli spazi vuoti nella rappresentazione alfanumerica di CURR_SAL con degli asterischi. CURR_SAL presenta il formato D12.2M, per dare alla rappresentazione alfanumerica il formato A15. Il formato ED_HRS presenta il formato F6.2, per dare alla rappresentazione alfanumerica il formato A6. Il campo BANK_ACCT presenta il formato I9S, per dare alla rappresentazione alfanumerica il formato A9. Le rappresentazioni alfanumeriche dei campi numerici vengono giustificate a destra. Le opzioni /R nel comando PRINT causano la giustificazione a destra sui i valori dei titoli di colonna:

DEFINE FILE EMPLOYEE
ASAL/A15 = FPRINT(CURR_SAL, 'D12.2M', ASAL);
ASAL/A15 = STRREP(15, ASAL, 1, ' ', 1, '*', 15, ASAL);
AED/A6 = FPRINT(ED_HRS, 'F6.2', AED);
ABANK/A9 = FPRINT(BANK_ACCT, 'I9S', ABANK);
END
TABLE FILE EMPLOYEE 
PRINT CURR_SAL ASAL
ED_HRS AED/R
BANK_ACCT ABANK/R
WHERE BANK_NAME NE ' '
ON TABLE SET PAGE NOPAGE
END

L'emissione è:

  CURR_SAL  ASAL             ED_HRS     AED  BANK_ACCT      ABANK
  --------  ----             ------  ------  ---------  ---------
$18,480.00  *****$18,480.00   50.00   50.00   40950036   40950036
$29,700.00  *****$29,700.00     .00     .00     160633     160633
$26,862.00  *****$26,862.00   30.00   30.00  819000702  819000702
$21,780.00  *****$21,780.00   75.00   75.00  122850108  122850108
$16,100.00  *****$16,100.00   50.00   50.00  136500120  136500120
$27,062.00  *****$27,062.00   45.00   45.00  163800144  163800144


Esempio: Conversione di campi data alfanumerici e numerici in formato alfanumerico

La seguente richiesta rispetto all'origine dati EMPLOYEE converte il campo HIRE_DATE in formato alfanumerico. Crea, inoltre, un campo data alfanumerico chiamato ADATE e lo converte nella sua rappresentazione alfanumerica. Il campo HIRE_DATE presenta il formato I6YMD e il campo ADATE il formato A6YMD, per consentire alle rappresentazioni alfanumeriche di avere il formato A8, per tenere conto delle sbarre tra i componenti data. L'opzione /R giustifica a destra i titoli di colonna sopra i valori campo:

DEFINE FILE EMPLOYEE 
AHDATE/A8 = FPRINT(HIRE_DATE,'I6YMD', AHDATE);
ADATE/A6YMD = EDIT(HIRE_DATE);
AADATE/A8 = FPRINT(ADATE,'A6YMD', AADATE);
END
TABLE FILE EMPLOYEE
PRINT HIRE_DATE AHDATE/R 
ADATE AADATE/R
ON TABLE SET PAGE NOPAGE
END

L'emissione è:

HIRE_DATE    AHDATE  ADATE       AADATE
---------  --------  -----     --------
 80/06/02  80/06/02  80/06/02  80/06/02
 81/07/01  81/07/01  81/07/01  81/07/01
 82/05/01  82/05/01  82/05/01  82/05/01
 82/01/04  82/01/04  82/01/04  82/01/04
 82/08/01  82/08/01  82/08/01  82/08/01
 82/01/04  82/01/04  82/01/04  82/01/04
 82/07/01  82/07/01  82/07/01  82/07/01
 81/07/01  81/07/01  81/07/01  81/07/01
 82/04/01  82/04/01  82/04/01  82/04/01
 82/02/02  82/02/02  82/02/02  82/02/02
 82/04/01  82/04/01  82/04/01  82/04/01
 81/11/02  81/11/02  81/11/02  81/11/02


Esempio: Conversione di un campo data in formato alfanumerico

La seguente richiesta rispetto all'origine dati VIDEOTRK converte il campo TRANSDATE (YMD) in formato alfanumerico. La rappresentazione alfanumerica presenta il formato A8, per tenere conto delle sbarre tra i componenti data:

DEFINE FILE VIDEOTRK
ALPHA_DATE/A8  = FPRINT(TRANSDATE,'YMD', ALPHA_DATE);
END 
TABLE FILE VIDEOTRK
PRINT TRANSDATE ALPHA_DATE
WHERE TRANSDATE LE '91/06/20'
ON TABLE SET PAGE NOPAGE 
END

L'emissione è:

TRANSDATE  ALPHA_DATE
---------  ----------
91/06/19   91/06/19
91/06/17   91/06/17
91/06/20   91/06/20
91/06/19   91/06/19
91/06/18   91/06/18
91/06/17   91/06/17
91/06/17   91/06/17
91/06/17   91/06/17
91/06/20   91/06/20
91/06/19   91/06/19
91/06/18   91/06/18
91/06/19   91/06/19
91/06/18   91/06/18
91/06/20   91/06/20
91/06/18   91/06/18
91/06/20   91/06/20
91/06/19   91/06/19
91/06/17   91/06/17


Esempio: Conversione di un campo Data-Ora in formato alfanumerico e creazione di un file HOLD

La seguente richiesta rispetto all'origine dati VIDEOTR2 converte il campo TRANSDATE (HYYMDI) in formato alfanumerico. La rappresentazione alfanumerica presenta il formato A16, per tenere conto di un anno a quattro cifre, un mese a due cifre, un giorno a due cifre, due sbarre tra i componenti data, uno spazio tra la data e l'ora, un'ora a due cifre, i due punti i componenti ora e minuto e un minuto a due cifre:

DEFINE FILE VIDEOTR2 
DATE/I4 = HPART(TRANSDATE, 'YEAR', 'I4');
ALPHA_DATE/A16 = FPRINT(TRANSDATE,'HYYMDI', ALPHA_DATE);
END
TABLE FILE VIDEOTR2
PRINT TRANSDATE ALPHA_DATE/R
WHERE DATE EQ '1991'
ON TABLE SET PAGE NOPAGE
END

L'emissione è:

TRANSDATE               ALPHA_DATE
---------         ----------------
1991/06/27 02:45  1991/06/27 02:45
1991/06/20 05:15  1991/06/20 05:15
1991/06/21 07:11  1991/06/21 07:11
1991/06/21 01:10  1991/06/21 01:10
1991/06/19 07:18  1991/06/19 07:18
1991/06/19 04:11  1991/06/19 04:11
1991/06/25 01:19  1991/06/25 01:19
1991/06/24 04:43  1991/06/24 04:43
1991/06/24 02:08  1991/06/24 02:08
1991/06/25 01:17  1991/06/25 01:17
1991/06/27 01:17  1991/06/27 01:17
1991/11/17 11:28  1991/11/17 11:28
1991/06/24 10:27  1991/06/24 10:27

Se mantiene l'emissione di un file di emissione delimitato da virgole o da un'altra emissione alfanumerica, è possibile osservare che mentre il campo originale propaga solo la rappresentazione numerica del valore, il campo convertito propaga anche le opzioni di visualizzazione:

DEFINE FILE VIDEOTR2 
DATE/I4 = HPART(TRANSDATE, 'YEAR', 'I4');
ALPHA_DATE/A16 = FPRINT(TRANSDATE,'HYYMDI', ALPHA_DATE);
END 
TABLE FILE VIDEOTR2
PRINT TRANSDATE ALPHA_DATE/R
WHERE DATE EQ '1991'
ON TABLE HOLD FORMAT COMMA
END

Segue il file HOLD. Il primo campo rappresenta i dati originali e il secondo campo contiene i valori convertiti con le opzioni di visualizzazione:

"19910627024500000","1991/06/27 02:45"
"19910620051500000","1991/06/20 05:15"
"19910621071100000","1991/06/21 07:11"
"19910621011000000","1991/06/21 01:10"
"19910619071800000","1991/06/19 07:18"
"19910619041100000","1991/06/19 04:11"
"19910625011900000","1991/06/25 01:19"
"19910624044300000","1991/06/24 04:43"
"19910624020800000","1991/06/24 02:08"
"19910625011700000","1991/06/25 01:17"
"19910627011700000","1991/06/27 01:17"
"19911117112800000","1991/11/17 11:28"
"19910624102700000","1991/06/24 10:27"

WebFOCUS