Fabrication d'un fichier par substitution dans un fichier exemple
Cela se fait par substitution de blocs et de sections dans un fichier exemple.
Supposons que le bloc Storga dont l'identifiant est 'x/y/z' soit un bloc fichier et que le contenu du fichier soit:
<table>«row:
<tr>
<td>«date»</td>
<td>«label»</td>
<td><b>«v»</b></td>
</tr>»
</table>
Alors, le morceau de code suivant:
write_file f "test.html" "template [dq]x/y/z[dq] xml ascii date [dq]dd/mm/yyyy[dq] decimal [dq],[dq]"
f_section "row"
f_value "date" (date 2001 6 20)
f_value "label" "Un évènement"
f_value "v" 12.3
f_section "row"
f_value "date" (date 2002 6 22)
f_value "label" "Un autre évènement"
f_value "v" 45.6
Produira par substitution un fichier dont le contenu est:
<table>
<tr>
<td>20/06/2001</td>
<td>Un evenement</td>
<td><b>12,3</b></td>
</tr>
<tr>
<td>22/06/2002</td>
<td>Un autre evenement</td>
<td><b>45,6</b></td>
</tr>
</table>
Dans le fichier exemple, les balises «un_nom» indiquent les noms des champs,
et les balises «un_nom:le_contenu» indiquent le contenu d'une section.
Dans le programme, l'instruction 'f_value' fourni la valeur à substituer au niveau d'un champ, et l'instruction 'f_section' indique le nom de la section dont on veut un nouvel exemplaire.
Lorsque la spécification du fichier à produire fixe une longeur maximum à un champ, on peut indiquer le nom de ce champ sous la forme «nom_du_champ longueur_maximale» pour qu'une valeur trop longue fournie via l'instruction 'f_value' soit automatiquement tronquée.
Au niveau de l'instruction 'write_file', les options suivantes sont utilisables:
Syntaxe
|
Effet
|
Exemple
|
charset "code_de_charset"
|
Spécifie l'encoding des caractères à utiliser dans le fichier produit.
|
charset "iso8859-1"
|
ascii
|
|
|
exclude "caractères_exclu" replace_with "caractère de remplacement"
|
Specifie les caractères interdit, qui seont remplacé par la chaine fournie via le paramètre 'replace_with'.
|
exclude "[0][cr][lf][dq]" replace_with "?"
|
xml
|
Effectue un encodage XML des chaines de caractères, par exemple '&' sera remplacé par '&' comme prévu dans le standard XML.
|
xml
|
json
|
Effectue un encodage JSON des chaînes de caractères.
|
json
|
edi
|
Effectue un encodage EDI des chaînes de caractères.
|
edi
|
decimal "séparateur_décimal"
|
Spécifie le séparateur décimal à utiliser.
|
decimal ","
|
date "format_de_date"
|
Spécifie le format à utiliser pour les champs date passés via l'instruction 'f_value'.
|
date "dd/mm/yyyy"
|
datetime "format_de_date_et_heure"
|
Idem pour les champs date et heure.
|
datetime "dd/mm/yyyy HH:MM:SS"
|
cr
|
|
|
lf
|
|
|
cr+lf
|
|
|
Enfin, il est possible de déporter certaines options du programme vers le fichier exemple, via une balise ««»» en tête du fichier exemple. Ainsi, dans l'exemple précédent, on aurait obtenu le même résultat avec le fichier exemple suivant:
««xml ascii date "dd/mm/yyyy" decimal ","»»<table>«row:
<tr>
<td>«date»</td>
<td>«label»</td>
<td><b>«v»</b></td>
</tr>»
</table>
et le programme suivant:
write_file f "test.html" "template [dq]x/y/z[dq]"
f_section "row"
f_value "date" (date 2001 6 20)
f_value "label" "Un évènement"
f_value "v" 12.3
f_section "row"
f_value "date" (date 2002 6 22)
f_value "label" "Un autre évènement"
f_value "v" 45.6