DGNUMF - traducteurs nombres-mots
12:56:08,74>bin\dgnumf 891210987654321 HUIT CENT QUATRE-VINGT-ONZE MILLE DEUX CENT DIX MILLIARDS NEUF CENT QUATRE-VINGT SEPT MILLIONS SIX CENT CINQUANTE QUATRE MILLE TROIS CENT VINGT ET UN
Présentation
Cette page propose un module de traduction d’un nombre en une expression en français. Écrit en langage REXX, il est portable sur à peu près tous les types d’ordinateurs et systèmes d’exploitation.
Ce programme, conçu en 2002 comme simple démonstration, a été révisé en 2026. Il permet de traiter des nombres de 15 chiffres pour la partie entière, autant pour la partie décimale. Pour les nombres égaux ou supérieurs à 10 puissance 12 (1.000.000.000.000) il utilise l’expression « mille milliard(s) » et non pas « billion(s) », en raison de la confusion possible avec le billion au sens de l’anglais américain (10 puissance 9).
Ce programme est respectueux de l’orthographe française et des conventions typographiques. Il conserve le nombre des décimales (.50 donnera "VIRGULE (ou unité paramétrée) CINQUANTE", et non pas "VIRGULE CINQ"), règle obligatoire pour certaines applications comme l’édition de chèques. Des paramètres facultatifs offrent plusieurs options :
- Application du féminin (“…et une”)
- Support de la notion d’unité (exemple : “EURO”), utilisé par ailleurs en place du terme “virgule” s’il y a des décimales.
- Sortie du résultat au choix en caractères minuscules ou majuscules.
- Application de la terminologie belgo-suisse (nonante, septante).
Pour plus d’informations et exemples, voir les commentaires dans le listing.
Téléchargement / Downloading
Suivre ce lien. Le fichier dgnumf.rex.txt doit être renommé en .rex.
Consignes d’installation/lancement sur IBM AS400 / iSeries : voir ci-dessous
Commentaires du listing
DGNUMF - CONVERTISSEUR NOMBRES-MOTS EN LANGUE FRANÇAISE
version 2.1.000 du 2026-09-11
Copyright 2002 2005 2026 Dominique Guebey
https://www.dg77.net/tekno/manuel/dgnumf.htm
COMMENTAIRES SUPPLEMENTAIRES : voir en fin de listing
MORE COMMENTS : see at the bottom
******************************************
Ce programme a pour fonction la conversion d'un nombre en
une proposition en francais. Voir des exemples dans les
"commentaires" à la fin.
******************************************
CONDITIONS D'UTILISATION
Ce programme est offert sans garantie de fonctionnement.
Ce programme est librement utilisable, modifiable et diffusable,
meme contre paiement, sous la condition que les memes termes seront
applicables a la version ainsi distribuee.
******************************************
PARTICULARITES : language REXX, utilisation des fonctions
integrees POS, LENGTH, STRIP, SUBSTR et TRUNC.
La presente version s'applique a des nombres limité à
15 chiffres pour la partie entiere et autant pour la partie décimale.
Pour des longueurs superieures, le programme restitue les donnees
fournies en entrée.
******************************************
REGLES
- Séparateur pour décimales : on peut utiliser indifféremment
le point ou la virgule.
******************************************
PARAMETRES EN ENTREE
0- "num" : nombre a traiter.
1- "fem" : "f" ou "F" si feminin ("une"), facultatif si parametre
suivant non utilise. Sinon tout autre caractere.
2- "unite" : unite ("EURO", "KILO", "BANANE"), par defaut
le mot "VIRGULE" sera insere s'il y a lieu entre les unites et
decimales. ATTENTION : si inutilisé mais présence d'un des
paramètres suivants, alors mettre '*'.
3- "casse" : par défaut, sortie en majuscules. Facultatif, sauf
si paramètre suivant utilisé, dans ce cas n'importe quel caractère
convient si sortie en majuscule. Sinon :
"min", "MIN", "low" ou "LOW" pour des caracteres minuscules.
Cas particulier : unités et symboles
- qui ne prennent pas la marque du pluriel,
- conservent la casse, que les nombres soient en
majuscules ou minuscules. Ex. : kg, km/h, USD, kWh, MWh.
- nombres en minuscules : "min0", "MIN0", "low0" ou "LOW0",
- nombres en majuscules : "maj0", "MAJ0", "upp0" ou "UPP0".
4- Cas particulier de 70, 90 (éventuellement 80) :
- "b" ou "B" ("belgo-suisse") 70 -> "septante", 90 -> "nonante"
- "r" ou "R" comme b et : 80 -> "huitante" (suisse romande)
- "a" ou "A" comme b et : 80 -> "octante" (attesté en Acadie)
Démonstration sous Windows
11:40:03,97>bin\dgnumf 97031 f BANANE MIN quatre-vingt-dix-sept mille trente et une bananes 18:20:41,72>bin\dgnumf 97031 x cheval maj b NONANTE-SEPT MILLE TRENTE ET UN CHEVAUX
11:40:03,97>bin\dgnumf 670 x KWh MIN0 six cent soixante dix KWh
11:36:30,85>bin\dgnumf 777222999444551.111222333444555 f SECONDE * b SEPT CENT SEPTANTE SEPT MILLE DEUX CENT VINGT DEUX MILLIARDS NEUF CENT NONANTE-NEUF MILLIONS QUATRE CENT QUARANTE QUATRE MILLE CINQ CENT CINQUANTE ET UNE SECONDES CENT ONZE MILLE DEUX CENT VINGT DEUX MILLIARDS TROIS CENT TRENTE TROIS MILLIONS QUATRE CENT QUARANTE QUATRE MILLE CINQ CENT CINQUANTE CINQ
16:11:38,34>bin\dgnumf -100.51 MOINS CENT VIRGULE CINQUANTE ET UN
Installation et lancement sur IBM AS400 / iSeries
Attention : en cas de modification du source sur PC : il ne doit y avoir aucun caractère de tabulation, mais uniquement des espaces. Noter que certains éditeurs (Jext, Notetab) ont une fonction de remplacement des tabulations par des espaces.
Sur l’AS400 création éventuelle du fichier source (sinon un fichier physique sera créé au lieu d’un membre source) : CRTSRCPF FILE([nom bibliothèque]/QREXSRC) [Entrée] Nota : La valeur RCDLEN=132 n’est plus nécessaire depuis la version 0.9.99 (la valeur par défaut (92) tronquait les lignes auparavant).
Sur le PC : envoi à l’AS400 par FTP : Sous DOS/"invite de commande" :
- a- Se positionner dans le répertoire où se trouve le fichier à tranférer : cd [chemin] [Entrée]
- b- puis :
- ftp [nom de machine] [Entrée]
- ou : ftp [adresse IP] [Entrée]
- ou :
- ftp [Entrée]
- open [nom de machine ou adresse IP] [Entrée]
- c- Entrer un id utilisateur AS400 puis le mot de passe quand il est demandé,
- d-transfert PC-AS400 :
- Présupposé : on a créé (CRTSRCPF) un fichier source nommé (par ex.) QREXSRC.
- put dgnumf400.rex /qsys.lib/[nom biblio].lib/qrexsrc.file/dgnumf400.mbr [Entrée]
- e-sortie de ftp :
- quit [Entrée]
- exit [Entrée]
Sur l’AS400 : Sous PDM, changer le type du membre, de blanc en "REXX".
Lancement : Exemple ci-dessous, à l’aide d’un CL :
/* PARAMETRE 1 (ENTREE) UNIQUE ZONE CONTENANT LES PARAMETRES */
/* PASSES AU MODULE REXX, SEPARES PAR UN BLANC : */
/* - NOMBRE, EXEMPLE : -124.2 (OBLIGATOIRE) */
/* - BELGO/SUISSE : "B" SINON AUTRE NON BLANC ("X") (OBLIGATOIRE) */
/* - FEMININ : "F" SINON AUTRE NON BLANC ("X") (OBLIGATOIRE) */
/* - UNITE AU SINGULIER (FACULTATIF) SINON OU AURA "VIRGULE" */
/* PARAMETRE 2 (PHRASE) BLANC EN ENTREE */
PGM PARM(&ENTREE &PHRASE)
DCL &ENTREE TYPE(*CHAR) LEN(32)
DCL &PHRASE TYPE(*CHAR) LEN(128)
DCL &BLANC TYPE(*CHAR) LEN(128)
CHGDTAARA DTAARA(*LDA (201 128)) VALUE(&BLANC)
STRREXPRC DGNUMF400 SRCFILE(MGNEW/QREXSRC) PARM(&ENTREE)
MONMSG CPF0000
RTVDTAARA DTAARA(*LDA (201 128)) RTNVAR(&PHRASE)
/* POUR DEMONSTRATION */
DSPDTAARA DTAARA(*LDA)
ENDPGM