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 2 Words for PB DOS

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

  • Value 2 Words for PB DOS

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

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