Code:
FUNCTION fValue2Words ALIAS "fValue2Words" ( BYVAL Number AS CUX ) EXPORT AS STRING DIM Cents AS LOCAL LONG DIM I AS LOCAL LONG DIM Nbr AS LOCAL STRING * 15 DIM N_ptr AS STRING PTR * 3 DIM Poff AS LOCAL LONG DIM Temp AS LOCAL STRING DIM Thou AS LOCAL LONG DIM V AS LOCAL LONG '----------------------------------------------------------------------------- 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 '----------------------------------------------------------------------------- Cents = ( 100 * FRAC( Number) ) ' store the decimals IF Number < 1 THEN ' if no whole numbers Temp = READ$(38) ' load up the "00 " GOTO AddCents ' jump to finish END IF ' Nbr = RSET$(STR$(FIX(Number)),15) ' convert value to string N_ptr = VARPTR(Nbr) ' set the pointer Thou = 33 ' TRILLION data pos '-------------------------------------------------------' FOR Poff = 0 TO 4 ' each 3 digit pos DECR Thou ' back off TRILLIONs V = VAL( @N_ptr[Poff] ) ' value of 3chars 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 & READ$(I) & READ$(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 & READ$(I+18) ' add words Temp = Temp & IIF$(V>0,"-",$SPC) ' hyphen or space! END IF ' IF V > 0 THEN Temp = Temp & READ$(V) ' add more words IF Poff < 4 THEN Temp = Temp & READ$(Thou) ' thousands/mills/etc NEXT ' '-------------------------------------------------------' AddCents: ' clean up & finish I = IIF(Number = 1,33,34) ' DOLLARS or DOLLAR V = IIF(Cents = 1,36,37) ' CENTS or CENT Temp = Temp & READ$(I) & READ$(35) _ ' tack on "DOLLARS AND" & FORMAT$(Cents,"00 ") _ ' tack on "nn " & READ$(V) ' tack on "CENTS" '-------------------------------------------------------' FUNCTION = Temp ' RETURN the string END FUNCTION
C'ya
Don
[email protected]
[This message has been edited by Don Schullian (edited September 17, 2003).]