home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / b / baswiz19.zip / BW$BAS.ZIP / BCDMUL.BAS < prev    next >
BASIC Source File  |  1993-01-29  |  2KB  |  45 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        BASWIZ  Copyright (c) 1990-1993  Thomas G. Hanlin III         |
  4. '   |                                                                      |
  5. '   |                      The BASIC Wizard's Library                      |
  6. '   |                                                                      |
  7. '   +----------------------------------------------------------------------+
  8.  
  9.    DECLARE FUNCTION BCDAdd$ (Nr1 AS STRING, Nr2 AS STRING)
  10.    DECLARE FUNCTION BCDSet$ (NumSt$)
  11.    DECLARE SUB BCDGetSize (LeftDigits AS INTEGER, RightDigits AS INTEGER)
  12.  
  13.    DECLARE SUB BCDMul1 (Num1 AS STRING, BYVAL Num2 AS INTEGER)
  14.  
  15.    DEFINT A-Z
  16.  
  17. FUNCTION BCDMul$ (Nr1 AS STRING, Nr2 AS STRING)
  18.    BCDGetSize LeftD, RightD
  19.    TotalD = LeftD + RightD
  20.    IF LEFT$(Nr1, 1) = LEFT$(Nr2, 1) THEN
  21.       Sign$ = " "
  22.    ELSE
  23.       Sign$ = "-"
  24.    END IF
  25.    N1$ = MID$(Nr1, 2)
  26.    N2$ = MID$(Nr2, 2)
  27.    Total$ = BCDSet$("0")
  28.    FOR tmp2 = LEN(N2$) TO 1 STEP -1
  29.       ch = ASC(MID$(N2$, tmp2, 1))
  30.       IF ch THEN
  31.          St$ = N1$
  32.          BCDMul1 St$, ch
  33.          IF tmp2 > TotalD - RightD THEN
  34.             ShiftVal = RightD - (TotalD - tmp2)
  35.             St$ = " " + STRING$(ShiftVal, 0) + LEFT$(St$, LEN(St$) - ShiftVal)
  36.          ELSE
  37.             ShiftVal = LeftD - tmp2
  38.             St$ = " " + MID$(St$, ShiftVal + 1) + STRING$(ShiftVal, 0)
  39.          END IF
  40.          Total$ = BCDAdd$(Total$, St$)
  41.       END IF
  42.    NEXT
  43.    BCDMul$ = Sign$ + MID$(Total$, 2)
  44. END FUNCTION
  45.