Domino Code Fragment

Code Name*
Number to Written Expression
Date*
02/13/1999
Source (or email address if you prefer)*
RLatulippe@romac.com
IP address:.
Description*
Translates a number value to the equivalent written text
Type*
Formula
Categories*
Numeric Processing, User Interface (Notes), User Interface (Web)
Implementation:
Modify constants
Required Client:
Server:
Limitations:
Nine Hundred Trillion!
Comments:
Files/Graphics attachments (if applicable): Code:
REM "Test range";
@If(NUMBER<0;Return("Negative Number");NUMBER > 999999999999999; @Return("Quadrillion Plus!"); "");
REM "Parse, format fixed with 2 decimals";
money := @Text(NUMBER; "F2");
c := @Word(money; "."; 2);
d := @Right("000000000000000" + @Word(money; "."; 1); 15);
REM "Constants";
n := "" : "One" : "Two" : "Three" : "Four" : "Five" : "Six" : "Seven" : "Eight" : "Nine" : "Ten" : "Eleven" : "Twelve" : "Thirteen" : "Fourteen" : "Fifteen" : "Sixteen" : "Seventeen" : "Eighteen" : "Nineteen";
m := "" : "" : "Twenty " : "Thirty " : "Forty " : "Fifty " : "Sixty " : "Seventy " : "Eighty " : "Ninety ";
REM "Ones";
d0 := @Middle(d; 12; 3);
h0 := @Subset(@Subset(n; @TextToNumber(@Left(d0; 1)) + 1); -1);
v0 := @TextToNumber(@Right(d0; 2));
t0 := @Trim(@If(h0 = ""; ""; h0 + " Hundred ") + @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d0; 1; 1))); -1) + @Subset(@Subset(n;
@If(v0 > 19; @TextToNumber(@Right(d0; 1)); v0) + 1); -1));
REM "Thousands";
d1 := @Middle(d; 9; 3);
h1 := @Subset(@Subset(n; @TextToNumber(@Left(d1; 1)) + 1); -1);

v1 := @TextToNumber(@Right(d1; 2));
t1 := @Trim(@If(h1 = ""; ""; h1 + " Hundred ") + @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d1; 1; 1))); -1) + @Subset(@Subset(n; @If(v1 > 19; @TextToNumber(@Right(d1; 1)); v1) + 1); -1));
REM "Millions";
d2 := @Middle(d; 6; 3);
h2 := @Subset(@Subset(n; @TextToNumber(@Left(d2; 1)) + 1); -1);
v2 := @TextToNumber(@Right(d2; 2));
t2 := @Trim(@If(h2 = ""; ""; h2 + " Hundred ") + @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d2; 1; 1))); -1) + @Subset(@Subset(n; @If(v2 > 19; @TextToNumber(@Right(d2; 1)); v2) + 1); -1));
REM "Billions";
d3 := @Middle(d; 3; 3);
h3 := @Subset(@Subset(n; @TextToNumber(@Left(d3; 1)) + 1); -1);
v3 := @TextToNumber(@Right(d3; 2));
t3 := @Trim(@If(h3 = ""; ""; h3 + " Hundred ") + @Subset(@Subset(m; 1 + @TextToNumber(@Middle(d3; 1; 1))); -1) + @Subset(@Subset(n; @If(v3 > 19; @TextToNumber(@Right(d3; 1)); v3) + 1); -1));
REM "Trillions";
d4 := @Left(d; 3);
h4 := @Subset(@Subset(n; @TextToNumber(@Left(d4; 1)) + 1); -1);
v4 := @TextToNumber(@Right(d4; 2));

t4 := @Trim(@If(h4 = ""; ""; h4 + " Hundred ") + @Subset(@Subset(m; 1 +
@TextToNumber(@Middle(d4; 1; 1))); -1) + @Subset(@Subset(n;
@If(v4 > 19; @TextToNumber(@Right(d4; 1)); v4) + 1); -1));
REM "Put it together";
@Trim(@If(t0 + t1 + t2 + t3 + t4 = ""; "Zero"; @If(t4 = ""; ""; t4 + " Trillion ") + @If(t3 = ""; ""; t3 + " Billion ") + @If(t2 = ""; ""; t2 + " Million ") + @If(t1 = ""; ""; t1 + " Thousand ") + t0)) + " Dollars and " + @If(c = ""; "00"; c) + " Cents"