Manuel §1.6.28    

Fonction Format

La fonction FORMAT permet de formater une chaîne de caractère suivant un format particulier. Le format utilisé est le format standard du langage C. Cette implémentation limite à 8 le nombre d ’expression à formater simultanément.

Format( FormatChaine, Expression1, Expression2, Expression3, ..., Expression8) : ChaineRésultat

Exemple :

Message( Format( " Il fait chaud : %d °C ",  Four.Temperature)) ;

La chaîne de format contient du texte qui est recopié tel que dans la chaîne résultante et des marques de conversions correspondant à chaque paramètre à convertir. Si le nombre de paramètre est inférieur au nombre de marques de conversions, le résultat est imprévisible et pourra même être catastrophique.

Les marques de conversions ont la syntaxe suivante

% [drapeaux] [largeur] [.précision] [F|N|h|l|L] type_char

Chaque marque de conversion commence par le caractère " % ". Après ce caractère on a les indicateurs optionnels ou non suivants

Indicateur

Requis ou optionnel

Signification

Drapeaux

Optionnel

Justification de la sortie, signe, décimales,... cf. Drapeaux

Largeur

Optionnel

Le nombre minimum de caractère imprimé, le remplissage complémentaire est fait par des blancs ou des zéros.

précision

Optionnel

Précise le nombre maximum de caractères à imprimer, pour les entiers précise le nombre minimum de chiffres à imprimer.

Type_char

Requis

Type de conversion

Les drapeaux peuvent être :

Flags

-

Le résultat est cadré à gauche, remplissage à droite par des espaces. Si omis, le résultat est cadré à droite, remplissage à gauche avec des zéros ou des espaces.

+

Les résultats sont signés et commencent donc toujours par ‘+ ’ ou ‘-‘.

Espace

Si la valeur n ’est pas négative, le résultat commence par un espace plutôt qu ’un plus ; les valeurs négatives commencent toujours par un moins

#

Précise que l ’argument doit être converti en utilisant une autre forme.

L ’indicateur de largeur précise la largeur minimum d ’un champ.

L ’absence d ’indicateur de largeur ou son insuffisance ne provoque pas la troncation du champ. Si le résultat d ’une conversion est plus grand que le champ, le champ est rallongé afin de pouvoir contenir le résultat de la conversion.

Largeur

N

Au moins n caractères sont imprimés. Si la valeur de sortie a moins de n caractères, la sortie est complétée avec des espaces ( à droite si le drapeau - a été précisé, à gauche autrement).

0n

Au moins n caractères sont imprimés. Si la valeur de sortie a moins de n caractères, la sortie est complétée avec des zéros à gauche.

L ’indicateur de précision précise le nombre maximum de caractères (ou le nombre minimum de chiffre) à imprimer. Un indicateur de précision commence toujours par un point ‘. ’ pour le différencier d ’un éventuel indicateur de largeur.

Précision

Description

Aucun

La précision par défaut est utilisée. C ’est à dire :

1 pour les types d, i, o, u, x, X

6 pour les types e, E et f

. 0

Pour les types d, i, o, u et x la précision par défaut est utilisée [1] pour les types e, E et f le point décimal n ’est pas utilisé

.n

n caractères ou n décimales sont imprimés. Si la valeur résultante a plus de n caractères, la sortie peut être tronquée ou arrondis (cela dépend du type de conversion).

Suivant le type de conversion l ’indicateur de précision ‘.n ’ a les effets suivants.

Type

Description

d, i, o, u, x, X

Au moins n chiffres seront imprimés. Si l ’argument a moins de n chiffres, la valeur de sortie est complétée à gauche avec des zéros. Si l ’argument a plus de n chiffres, la valeur de sortie n ’est pas tronquée.

e, E, f

Précise que n chiffres seront imprimés après la virgule, le dernier étant arrondi.

g, G

Au plus n chiffres seront imprimés.

C

N ’a aucun effet

s

Au plus n caractères seront imprimés

Les types de conversion dépendent du type des paramètres. Sisal s ’efforce de transformer chacun des arguments dans le type précisé par le type de conversion. Si cela n ’est pas possible il transforme les arguments dans des valeurs conventionnelles (0).

Type de conversion

Type d ’argument attendu

Format résultant

d

entier

entier décimal signé

i

entier

entier décimal signé

o

entier

entier octal non-signé

u

entier

entier décimal non-signé

x

entier

entier hexadécimal non-signé (utilisation de a, b, c, d, e et f)

X

entier

entier hexadécimal non-signé (utilisation de A, B, C, D, E et F)

f

flottant

signé au format [-]dddd.dddd

e

flottant

signé au format (-)d.dddd ou e[+/-]ddd

g

flottant

signé au format e ou f en fonction de la valeur et de la précision. Les zéros de queue et le point décimal sont imprimés si nécessaire.

E

flottant

Comme e mais avec E comme indicateur d ’exposant

G

flottant

Comme g mais avec E comme indicateur d ’exposant éventuel

c

Caractère

un seul caractère

s

Chaîne de caractère

Imprime la chaîne de caractère jusqu ’à ce que l ’on atteigne le caractère de fin de chaîne (0) ou que la précision soit atteinte.

t

Date et heure

Imprime la date et/ou l ’heure en fonction de la précision interprété comme un champ de bit : 1 Impression de la date, 2 Impression de l ’heure, 4 Impression du jour de la semaine, 8 Impression détaillée et 16 Impression concise.

%

Rien

Imprime le caractère %

Les flottants de valeurs infinis sont imprimés +INF ou -INF, les flottants IEEE de valeur " Not-A-Number " sont imprimés +NAN ou -NAN.

[1] Dans ce cas si la valeur à imprimer est nulle, aucun caractère ne sera imprimé dans le champ.