DGNUMF - traducteurs nombres-mots
12:56:08,74>bin\dgnumf 891222333444580 HUIT CENT QUATRE-VINGT-ONZE MILLE DEUX CENT VINGT DEUX MILLIARDS TROIS CENT TRENTE TROIS MILLIONS QUATRE CENT QUARANTE QUATRE MILLE CINQ CENT QUATRE-VINGTS
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.
Consignes d’installation/lancement sur IBM AS400 / iSeries : voir ci-dessous
Commentaires du listing
/* ****************************************** */
/* DGNUMF - CONVERTISSEUR NOMBRES-MOTS EN LANGUE FRANÇAISE */
/* version 2.0.000 du 2026-08-25 */
/* 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 exemples plus bas */
/* ****************************************** */
/* 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 LENGTH, STRIP, SUBSTR et TRUNC. */
/* La presente version s'applique a des nombres limites de : */
/* - 15 chiffres pour la partie entiere et la partie decimale ; */
/* - Ce nombre peut passer à 14 ou 13 suivant l'utilisation de */
/* virgules ou décimales. */
/* Pour des longeurs superieures, le programme restitue les donnees */
/* fournies en entrée. */
/* ****************************************** */
/* 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. Facultatif si parametre suivant non utilise. */
/* Sinon tout autre caractere. */
/* 3- "casse" : si "min" ou MIN, sortie en caracteres minuscules, */
/* par défaut ce sera en majuscules. Facultatif si parametre */
/* suivant non utilise, sinon tout autre caractere. */
/* 4- "belgosuisse" : "b" ou "B" si belgo-suisse ("septante..."), */
/* (facultatif). */
/* ****************************************** */
/* EXEMPLES */
/* 19.5 -> "DIX NEUF VIRGULE CINQ" */
/* 19.50 x EURO -> "DIX NEUF EUROS CINQUANTE" */
/* 91 f BANANE MIN b -> "nonante et une bananes" */
/* 93 x CHEVAL qsd B -> "NONANTE-TROIS CHEVAUX" */
/* 93 x CHACAL -> "QUATRE-VINGT-TREIZE CHACALS" */
/* -101101 f -> "MOINS CENT UN MILLE CENT UNE" */
/* ****************************************** */
Démonstration sous Windows
16:11:38,34>bin\dgnumf -100.51 MOINS CENT VIRGULE CINQUANTE ET UN 16:09:30,47>bin\dgnumf -0.1 MOINS ZERO VIRGULE UN 16:09:41,35>bin\dgnumf -.1 MOINS ZERO VIRGULE UN
11:40:03,97>bin\dgnumf 97031 f BANANE MIN quatre-vingt-dix-sept mille trente et une bananes
11:36:30,85>bin\dgnumf 777222999444551.111222333444555 f SECONDE qsd 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
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