=========================================================================== BBS: The Abacus * HST/DS * Potterville, MI Date: 03-08-93 (07:01) Number: 208 From: DAVID COLSTON Refer#: NONE To: KIRK MESSNER Recvd: NO Subj: Basic Routine Conf: (35) Quick Basi --------------------------------------------------------------------------- KM > Does anyone have a Basic/QuickBasic routine to convert inputted values > to word form? > > EXAMPLE: > > 1,725.15 = One Thousand Seven Hundred Twenty Five & 15/100 > > Any responses would be appreciated. Here you go. It's a little sloppy, but.... ----------------------------Cut Here With Exacto Knife----------------- DECLARE SUB SpellNumbers (A!, SpellNumber$) DECLARE SUB Units (X!, X$) DECLARE SUB Teens (X!, X$) DECLARE SUB TwentyOrMore (X!, X$) A! = 123.4 SpellNumbers A!, A$ PRINT A$ SUB SpellNumbers (A!, SpellNumber$) STATIC DIM W$(2) W$(1) = "" W$(2) = "" DIM SpellNumber$(2) SpellNumber$ = "" SpellNumber$(1) = "" SpellNumber$(2) = "" Work$ = LTRIM$(RTRIM$(STR$(INT(A!)))) Cent$ = RIGHT$(STR$(INT(A! * 100)), 2) Q = LEN(Work$) IF Q > 3 THEN W$(1) = RIGHT$(Work$, 3) W$(2) = LEFT$(Work$, LEN(Work$) - 3) WHILE LEN(W$(2)) < 3 W$(2) = "0" + W$(2) WEND Count = 2 ELSE W$(1) = Work$ Count = 1 WHILE LEN(W$(1)) < 3 W$(1) = "0" + W$(1) WEND END IF FOR I = 1 TO Count P1 = VAL(LEFT$(W$(I), 1)) Units P1, X$ SpellNumber$(I) = SpellNumber$(I) + X$ IF X$ > "" THEN SpellNumber$(I) = SpellNumber$(I) + "Hundred " IF MID$(W$(I), 2, 1) <> "1" THEN TwentyOrMore VAL(MID$(W$(I), 2, 1)), X$ SpellNumber$(I) = SpellNumber$(I) + X$ Units VAL(RIGHT$(W$(I), 1)), X$ SpellNumber$(I) = SpellNumber$(I) + X$ ELSE Teens VAL(RIGHT$(W$(I), 2)), X$ SpellNumber$(I) = SpellNumber$(I) + X$ END IF NEXT IF SpellNumber$(2) > "" THEN SpellNumber$(2) = SpellNumber$(2) + "Thousand " END IF IF SpellNumber$(1) = "" AND Count = 1 THEN SpellNumber$(1) = "Zero " END IF SpellNumber$ = SpellNumber$(2) + SpellNumber$(1) + "Dollars and " + Cent$ END SUB SUB Teens (X, X$) STATIC X$ = "" SELECT CASE X CASE 10 X$ = "Ten " CASE 11 X$ = "Eleven " CASE 12 X$ = "Twelve " CASE 13 X$ = "Thirteen " CASE 14 X$ = "Fourteen " CASE 15 X$ = "Fifteen " CASE 16 X$ = "Sixteen " CASE 17 X$ = "Seventeen " CASE 18 X$ = "Eighteen " CASE 19 X$ = "Nineteen " CASE ELSE X$ = "" END SELECT END SUB SUB TwentyOrMore (X, X$) STATIC SELECT CASE X CASE 2 X$ = "Twenty " CASE 3 X$ = "Thirty " CASE 4 X$ = "Forty " CASE 5 X$ = "Fifty " CASE 6 X$ = "Sixty " CASE 7 X$ = "Seventy " CASE 8 X$ = "Eighty " CASE 9 X$ = "Ninety " CASE ELSE X$ = "" END SELECT END SUB SUB Units (X, X$) STATIC SELECT CASE X CASE 1 X$ = "One " CASE 2 X$ = "Two " CASE 3 X$ = "Three " CASE 4 X$ = "Four " CASE 5 X$ = "Five " CASE 6 X$ = "Six " CASE 7 X$ = "Seven " CASE 8 X$ = "Eight " CASE 9 X$ = "Nine " CASE ELSE X$ = "" END SELECT END SUB * JABBER v1.1 * ATH0=1, One Ring to Rule Them All.