FPRINT : Convertir les champs au format alphanumérique

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


Haut de page

x
Syntaxe : Convertir des champs avec FPRINT
FPRINT(in_value, 'usageformat', output)

où :

in_value

Tout format excepté TX

est la valeur à convertir.

usageformat

Alphanumérique

Le format d'utilisation de la valeur à convertir, y compris les options d'affichage. La valeur doit figurer entre guillemets simples.

output

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.


Haut de page

x
Référence : Notes d'utilisation sur la fonction FPRINT


Exemple : Convertir les champs numériques au format alphanumérique

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


Exemple : Convertir les champs Date numériques et alphanumériques au format alphanumérique

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


Exemple : Convertir un champ date-heure à un format alphanumérique

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


Exemple : Convertir un champ date-heure à un format alphanumérique et Créer un fichier HOLD

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