Comment : Référence : |
La fonction FPRINT convertit tout type de champ excepté pour un champ texte à son équivalent alphanumérique pour l'affichage. La représentation alphanumérique comprendra toute option d'affichage spécifiée dans le format du champ d'origine.
Langages disponibles : reporting
FPRINT(in_value, 'usageformat', output)
où :
Tout format excepté TX
est la valeur à convertir.
Alphanumérique
Le format d'utilisation de la valeur à convertir, y compris les options d'affichage. La valeur doit figurer entre guillemets simples.
Alphanumérique
est le nom du champ de sortie ou son format entre guillemets simples.
Le format de sortie doit être suffisamment long pour contenir le nombre converti même, avec un signe et point décimal et les caractères supplémentaires générés par les options d'affichage, tels que des virgules, un symbole monétaire, ou un signe de pourcentage.
Par exemple, le format D12.2 est converti en A14 car il émet deux chiffres après la virgule, une décimale fixe, possiblement un signe moins, jusqu'à huit chiffres entiers et deux virgules. Si le format de sortie n'est pas assez grand, les caractères de trop du côté droit seront possiblement tronquées.
La requête suivante contre la source de données EMPLOYEE utilise FPRINT pour convertir les champs CURR_SAL, ED_HRS, et BANK_ACCT en format alphanumérique pour l'affichage sur la sortie du rapport. La fonction STRREP remplace ensuite les espaces vides dans la représentation alphanumérique de CURR_SAL avec des astérisques. CURR_SAL est au format D12.2M, la représentation alphanumérique est donc au format A15. Le champ ED_HRS est au format F6.2, la représentation alphanumérique est donc au format A6. Le champ BANK_ACCT est au format I9S, la représentation alphanumérique est donc au format A9. Les représentations alphanumériques des champs numériques sont justifiées à droite. Les options /R dans la commande PRINT entraînent la justification des titres des colonnes au-dessus des valeurs :
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
La sortie est :
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
La requête suivante, qui utilise la source de données EMPLOYEE convertit le champ HIRE_DATE au format alphanumérique. Est également créé un champ de date nommé ADATE et sa représentation est convertie en alphanumérique. Le champ HIRE_DATE est au format I6YMD et le champ ADATE est au format A6YMD, pour que les représentations alphanumériques soient au format A8 pour prendre compte des barres obliques entre les composants de date. L'option /R justifie les titres de colonne au-dessus des valeurs de champ :
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
La sortie est :
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
La requête suivante, qui utilise la source de données VIDEOTRK convertit le champ TRANSDATE (YMD) au format alphanumérique. La représentation alphanumérique est au format A8 pour prendre en compte les barres obliques entre les composants de date :
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
La sortie est :
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
La requête suivante, qui utilise la source de données VIDEOTR2 convertit le champ TRANSDATE (HYYMDI) au format alphanumérique. La représentation alphanumérique est au format A16 pour prendre en compte une année à quatre chiffres, un mois à deux chiffres, un jour à deux chiffres, deux barres obliques entre les composants de date, un espace entre la date et l'heure, une heure à deux chiffres, deux points entre les composants heure et minute, et une minute à deux chiffres :
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
La sortie est :
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
Si vous conservez la sortie dans un fichier de sortie alphanumérique ou délimité par une virgule, vous pouvez voir qu'alors que le champ d'origine ne propage que la représentation numérique de la valeur, le champ convertit propage aussi les options d'affichage :
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
Le fichier HOLD suit. Le premier champ représente les données d'origine, le second champ contient les valeurs converties avec les options d'affichage :
"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"
Information Builders |