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 >
Wrap
BASIC Source File
|
1993-01-29
|
2KB
|
45 lines
' +----------------------------------------------------------------------+
' | |
' | BASWIZ Copyright (c) 1990-1993 Thomas G. Hanlin III |
' | |
' | The BASIC Wizard's Library |
' | |
' +----------------------------------------------------------------------+
DECLARE FUNCTION BCDAdd$ (Nr1 AS STRING, Nr2 AS STRING)
DECLARE FUNCTION BCDSet$ (NumSt$)
DECLARE SUB BCDGetSize (LeftDigits AS INTEGER, RightDigits AS INTEGER)
DECLARE SUB BCDMul1 (Num1 AS STRING, BYVAL Num2 AS INTEGER)
DEFINT A-Z
FUNCTION BCDMul$ (Nr1 AS STRING, Nr2 AS STRING)
BCDGetSize LeftD, RightD
TotalD = LeftD + RightD
IF LEFT$(Nr1, 1) = LEFT$(Nr2, 1) THEN
Sign$ = " "
ELSE
Sign$ = "-"
END IF
N1$ = MID$(Nr1, 2)
N2$ = MID$(Nr2, 2)
Total$ = BCDSet$("0")
FOR tmp2 = LEN(N2$) TO 1 STEP -1
ch = ASC(MID$(N2$, tmp2, 1))
IF ch THEN
St$ = N1$
BCDMul1 St$, ch
IF tmp2 > TotalD - RightD THEN
ShiftVal = RightD - (TotalD - tmp2)
St$ = " " + STRING$(ShiftVal, 0) + LEFT$(St$, LEN(St$) - ShiftVal)
ELSE
ShiftVal = LeftD - tmp2
St$ = " " + MID$(St$, ShiftVal + 1) + STRING$(ShiftVal, 0)
END IF
Total$ = BCDAdd$(Total$, St$)
END IF
NEXT
BCDMul$ = Sign$ + MID$(Total$, 2)
END FUNCTION