Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

Value to tetxt

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Value to tetxt

    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).]
    C'ya
    Don

    http://www.ImagesBy.me
Working...
X