Le web de Dominique Guebey – Bazar informatique
https://www.dg77.net/tekno/manuel/dgnumf.htm

   D o m i n i q u e   G u e b e y    J u n g l e      Bazar informatique

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 :

Pour plus d’informations et exemples, voir les commentaires dans le listing.

Téléchargement / Downloading.

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

Nombres négatifs
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
 
paramétrages divers
11:40:03,97>bin\dgnumf 97031 f BANANE MIN
 quatre-vingt-dix-sept mille trente et une bananes
Nombre belgo-suisse très long avec décimales et unité de genre féminin
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" :

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