Kbase 21482: How To Convert Numbers to Strings (Spanish Version)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  1/29/2005 |
|
Status: Unverified
GOAL:
Sometimes when developing an application it is necessary to
display numeric values in their string equivalent value. This
Solution provides sample code that can be used as a guide for
doing this number-to-string conversion.
FIX:
The code shown here accomplishes this task in the Spanish language. For the English language version, see Progress Knowledge Base Solution 21481.
FUNCTION numberToStringSP RETURNS CHAR (INPUT number AS INTEGER) :
DEF VAR cad AS CHAR .
DEF VAR units AS CHAR EXTENT 10 INIT ["UNO","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE","DIEZ"].
DEF VAR teens AS CHAR EXTENT 9 INIT ["ONCE","DOCE","TRECE","CATORCE","QUINCE","DIESISEIS","DIESISIETE","DIESIOCHO","DIESINUEVE"].
DEF VAR decens AS CHAR EXTENT 9 INIT ["DIEZ","VEINTI","TREINTA Y ","CUARENTA Y ","CINCUENTA Y ","SESENTA Y ","SETENTA Y ","OCHENTA Y ","NOVENTA Y "].
DEF VAR cents AS CHAR INIT "CIENTOS".
DEF VAR miles AS CHAR INIT "MIL".
DEF VAR resu AS INTEGER.
DEF VAR i AS INTEGER.
IF number >= 1000 THEN DO:
resu = TRUNC (number / 1000,0).
IF resu = 1 THEN cad = "UN".
ELSE cad = cad + numberToStringSP(resu).
number = number MOD 1000.
cad = cad + " " + miles + " " + numberToStringSP(number).
END.
ELSE IF number >= 100 THEN DO:
resu = TRUNC(number / 100,0).
IF resu = 1 THEN cad ="CIENTO" .
ELSE IF resu = 5 THEN cad ="QUINIENTOS" .
ELSE IF resu = 7 THEN cad ="SETECIENTOS" .
ELSE IF resu= 9 THEN cad = "NOVECIENTOS".
ELSE cad = cad + numberToStringSP(resu).
number = number MOD 100.
IF (resu <> 1) AND (resu <> 5) AND (resu <> 7) AND (resu <> 9) THEN cad = cad + cents + " " + numberToStringSP(number).
ELSE cad = cad + " " + numberToStringSP(number).
END.
ELSE IF number > 10 THEN DO:
resu = TRUNC(number / 10 , 0).
IF number < 20 THEN DO i = 1 TO 9:
IF number = i + 10 THEN cad = cad + teens[i].
END.
ELSE DO i = 1 TO 9 :
IF resu = i THEN cad = cad + decens[i].
END.
IF number > 20 THEN DO:
number = number MOD 10.
cad = cad + numberToStringSP(number).
END.
END.
ELSE IF number >= 1 THEN DO:
DO i=1 TO 10:
IF number = i THEN cad= cad + units[i].
END.
number = number MOD 1.
END.
RETURN cad.
IF (number > 0) THEN numberToStringSP(number).
END.
To call this function, use the following code:
DEF VAR cad1 AS CHAR.
cad1 = numberToStringSP (555). /* Any number from 1 to 99999 */
MESSAGE cad1 VIEW-AS ALERT-BOX.
References to Written Documentation:
Progress Knowledge Base Solution 21481, "How To Convert Numbers to Strings (English Version)"