Code:
CLS PRINT fValue2Words(3321234.01) FUNCTION fValue2Words ( BYVAL Number AS SINGLE ) AS STRING DIM Cents AS LOCAL INTEGER DIM I AS LOCAL INTEGER DIM Nbr AS LOCAL STRING * 15 DIM Poff AS LOCAL INTEGER DIM Temp AS LOCAL STRING DIM Thou AS LOCAL INTEGER DIM V AS LOCAL INTEGER DIM W(38) AS LOCAL STRING '----------------------------------------------------------------------------- Value2Words: DATA "ONE " , "TWO " , "THREE " , "FOUR " : ' numeric values DATA "FIVE " , "SIX " , "SEVEN " , "EIGHT " : ' DATA "NINE " , "TEN " , "ELEVEN " , "TWELVE " : ' DATA "THIRTEEN " , "FOURTEEN ", "FIFTEEN " , "SIXTEEN " : ' DATA "SEVENTEEN " , "EIGHTEEN ", "NINETEEN ", "TWENTY" : ' DATA "THIRTY" , "FORTY" , "FIFTY" , "SIXTY" : ' DATA "SEVENTY" , "EIGHTY" , "NINETY" , "HUNDRED " : ' DATA "THOUSAND " , "MILLION " , "BILLION " , "TRILLION " : ' 29, 30, 31, 32 DATA "DOLLAR " , "DOLLARS " , "AND " : ' 33, 34, 35 DATA "CENT" , "CENTS" , "00 " : ' 36, 37, 38 '----------------------------------------------------------------------------- RESTORE Value2Words FOR V = 1 TO 38 READ W(V) NEXT Cents = ( 100 * FRAC( Number) ) ' store the decimals IF Number < 1 THEN ' if no whole numbers Temp = W(38) ' load up the "00 " GOTO AddCents ' jump to finish END IF ' RSET Nbr = STR$(FIX(Number)) ' convert value to string Thou = 33 ' TRILLION data pos '-------------------------------------------------------' FOR Poff = 1 TO 13 STEP 3 ' each 3 digit pos DECR Thou ' back off TRILLIONs V = VAL(MID$(Nbr,Poff,3)) ' thousands' values IF V = 0 THEN ITERATE ' nada! IF V > 99 THEN ' if hundreds pos I = ( V \ 100 ) ' # of hundreds V = ( V MOD 100 ) ' remainder 100 Temp = Temp & W(I) & W(28) ' add words END IF ' IF ( V > 19 ) THEN ' tens (21 is lowest) I = ( V \ 10 ) ' # of tens V = ( V MOD 10 ) ' strip tens Temp = Temp & W(I+18) ' add words IF V > 0 THEN ' hyphen or space Temp = Temp & "-" ' ELSE ' Temp = Temp & " " ' END IF ' END IF ' IF V > 0 THEN Temp = Temp & W$(V) ' add more words IF Poff < 13 THEN Temp = Temp & W$(Thou) ' thousands/mills/etc NEXT ' '-------------------------------------------------------' AddCents: ' clean up & finish IF Number = 1 THEN I = 33 ELSE I = 34 ' DOLLARS or DOLLAR IF Cents = 1 THEN V = 36 ELSE V = 37 ' CENTS or CENT Temp = Temp & W(I) & W(35) _ ' tack on "DOLLARS AND" & MID$(STR$(Cents+100),3) & " " _ ' tack on "nn " & W(V) ' tack on "CENTS" '-------------------------------------------------------' FUNCTION = Temp ' RETURN the string END FUNCTION
C'ya
Don
[email protected]