'===========================================================================
' Subject: ADD/SUBTRACT USING STRINGS         Date: 10-02-97 (12:04)       
'  Author: John Bull                          Code: QB, QBasic, PDS        
'  Origin: flyhigh@prodigy.com              Packet: ALGOR.ABC
'===========================================================================
SUB m (z$, what$, cash)

' This is a sub to get by that pesky numeric limit of 32767 or -32767
' it uses a string to keep the numbers in and then splits them up into
' 2 variables to add/subtract them.  So you can have a number up to
' 999999 now.  This can be very useful. Have fun!

math1:
IF LEN(z$) = 1 THEN z1 = VAL(RIGHT$(z$, 1)): z2 = 0
IF LEN(z$) = 2 THEN z1 = VAL(RIGHT$(z$, 2)): z2 = 0
IF LEN(z$) = 3 THEN z1 = VAL(RIGHT$(z$, 3)): z2 = 0
IF LEN(z$) = 4 THEN z1 = VAL(RIGHT$(z$, 3)): z2 = VAL(LEFT$(z$, 1))
IF LEN(z$) = 5 THEN z1 = VAL(RIGHT$(z$, 3)): z2 = VAL(LEFT$(z$, 2))
IF LEN(z$) = 6 THEN z1 = VAL(RIGHT$(z$, 3)): z2 = VAL(LEFT$(z$, 3))

z$ = RIGHT$((STR$(cash)), LEN(STR$(cash)) - 1)

IF LEN(z$) = 1 THEN z3 = VAL(RIGHT$(z$, 1)): z4 = 0
IF LEN(z$) = 2 THEN z3 = VAL(RIGHT$(z$, 2)): z4 = 0
IF LEN(z$) = 3 THEN z3 = VAL(RIGHT$(z$, 3)): z4 = 0
IF LEN(z$) = 4 THEN z3 = VAL(RIGHT$(z$, 3)): z4 = VAL(LEFT$(z$, 1))
IF LEN(z$) = 5 THEN z3 = VAL(RIGHT$(z$, 3)): z4 = VAL(LEFT$(z$, 2))
IF LEN(z$) = 6 THEN z3 = VAL(RIGHT$(z$, 3)): z4 = VAL(LEFT$(z$, 3))

IF what$ = "+" THEN

        z1 = z1 + z3
      
        DO
                IF z1 >= 1000 THEN
                        z1 = z1 - 999
                        z2 = z2 + 1
                        x$ = "*"
                END IF
        LOOP UNTIL z1 <= 1000
        IF x$ = "*" THEN z1 = z1 - 1

        z2 = z2 + z4

        IF z2 >= 999 THEN z2 = 999

        z1$ = RIGHT$((STR$(z1)), LEN(STR$(z1)) - 1)
        z2$ = RIGHT$((STR$(z2)), LEN(STR$(z2)) - 1)

        IF LEN(z1$) = 1 THEN z1$ = "00" + z1$
        IF LEN(z1$) = 2 THEN z1$ = "0" + z1$
        IF LEN(z2$) = 1 THEN z2$ = "00" + z2$
        IF LEN(z2$) = 2 THEN z2$ = "0" + z2$

        z$ = z2$ + z1$
 
END IF




IF what$ = "-" THEN
    
        z1 = z1 - z3

        IF z1 <= -1 OR z1 <= -1 THEN
                z1 = z1 + 1000
                z2 = z2 - 1
        END IF

        z2 = z2 - z4
        IF z2 = -1 OR z2 <= -1 THEN
                IF z1 = 0 THEN
                        z2 = 0
                        z1 = 999
                ELSE
                        z1 = 0
                        z2 = 0
                END IF
        END IF

        z1$ = RIGHT$((STR$(z1)), LEN(STR$(z1)) - 1)
        z2$ = RIGHT$((STR$(z2)), LEN(STR$(z2)) - 1)

        IF LEN(z1$) = 1 THEN z1$ = "00" + z1$
        IF LEN(z1$) = 2 THEN z1$ = "0" + z1$
        IF LEN(z2$) = 1 THEN z2$ = "00" + z2$
        IF LEN(z2$) = 2 THEN z2$ = "0" + z2$

        z$ = z2$ + z1$
 
END IF

END SUB
