DECLARE FUNCTION TRIM$ (s$) DECLARE SUB SetVars (v$) DECLARE FUNCTION RefStr! (varnam$) DECLARE SUB Print2 (v$) DECLARE FUNCTION RefNum! (varnam$) DECLARE SUB AddVars (v$) DIM SHARED NVars(1 TO 100) AS INTEGER DIM SHARED SVars(1 TO 100) AS STRING DIM SHARED NRefs(1 TO 100) AS STRING DIM SHARED SRefs(1 TO 100) AS STRING nm = 1 st = 1 s$ = "" IF s$ = "" THEN s$ = "mt.dsa"'end OPEN s$ FOR INPUT AS #1 DO UNTIL EOF(1) LINE INPUT #1, b$ IF INSTR(b$, " ") = 0 THEN c$ = UCASE$(b$): GOTO 10 d$ = MID$(b$, 4, LEN(b$) - 2) c$ = UCASE$(MID$(b$, 1, INSTR(b$, " ") - 1)) IF c$ = "VAR" THEN IF RIGHT$(b$, 1) = "$" THEN SRefs(st) = MID$(b$, 5, LEN(b$) - 3): st = st + 1: GOTO 112 ELSE NRefs(nm) = MID$(b$, 5, LEN(b$) - 4): nm = nm + 1: GOTO 112 IF c$ = "ADD" THEN AddVars d$: GOTO 112 IF c$ = "SET" THEN SetVars d$: GOTO 112 IF c$ = "PRN" THEN Print2 d$: GOTO 112 IF c$ = "SRN" THEN SCREEN VAL(TRIM$(d$)): GOTO 112 IF c$ = "END" THEN END: GOTO 112 10 IF c$ = "CLS" THEN CLS : GOTO 112 IF c$ = "SLP" THEN SLEEP 112 LOOP SUB AddVars (v$) NVars(1) = 2 m = 0 d = 1 FOR q = 2 TO LEN(v$) + 1 IF MID$(v$, q, 1) = "," THEN m = m + 1: q = q + 1 IF m = 0 THEN n1$ = n1$ + MID$(v$, q, 1) IF m = 1 THEN n2$ = n2$ + MID$(v$, q, 1) IF m = 2 THEN n3$ = n3$ + MID$(v$, q, 1) NEXT q 'PRINT n1$; "="; LEN(n1$); ":"; n2$; "="; LEN(n2$) DO UNTIL UCASE$(NRefs(d)) = UCASE$(n1$) OR UCASE$(NRefs(d)) = "" d = d + 1 LOOP 'd = d - 1 IF UCASE$(NRefs(d)) = "" AND STR$(VAL(n1$)) = " " + n1$ + " " THEN PRINT "Variable not defined "; n1$: EXIT SUB IF UCASE$(NRefs(d)) <> "" THEN n1$ = STR$(NVars(d)) 'PRINT "Ref #="; LTRIM$(RTRIM$(STR$(d))); "|Cur value="; LTRIM$(RTRIM$(STR$(NVars(d)))); "|Stored Name="; NRefs(d) d = 1 DO UNTIL UCASE$(NRefs(d)) = UCASE$(n2$) OR UCASE$(NRefs(d)) = "" d = d + 1 LOOP 'd = d -1 IF UCASE$(NRefs(d)) = "" AND STR$(VAL(n2$)) = " " + n2$ + " " THEN PRINT "Variable not defined :"; n2$ IF UCASE$(NRefs(d)) <> "" THEN n2$ = STR$(NVars(d))': 'PRINT UCASE$(NRefs(d)) 'PRINT "Ref #="; LTRIM$(RTRIM$(STR$(d))); "|Cur value="; LTRIM$(RTRIM$(STR$(NVars(d)))); "|Stored Name="; NRefs(d) a = RefNum(n3$) 'PRINT n1$, n2$, n3$, a NVars(a) = VAL(v1$) + VAL(n2$) END SUB SUB Print2 (v$) v$ = TRIM$(v$) a = 0: var1$ = "": usrtxt = 0 FOR q = 1 TO LEN(v$) IF MID$(v$, q, 1) = CHR$(34) AND usrtxt = 0 THEN usrtxt = 1: GOTO 21 ELSEIF MID$(v$, q, 1) = CHR$(34) AND usrtxt = 1 THEN usrtxt = 0 END IF IF usrtxt = 1 THEN PRINT MID$(v$, q, 1); IF usrtxt = 0 THEN IF INSTR(v$, ";") = 0 THEN cr$ = MID$(v$, q, LEN(v$) - q) ELSE cr$ = MID$(v$, q, INSTR(v$, ";") - 1) ' PRINT cr$ END IF 21 NEXT q END SUB FUNCTION RefNum (varnam$) d = 1 DO UNTIL UCASE$(NRefs(d)) = UCASE$(varnam$) OR UCASE$(NRefs(d)) = "" d = d + 1 'PRINT "If "; UCASE$(NRefs(d)); "="; UCASE$(varnam$); " then D="; d IF UCASE$(NRefs(d)) = UCASE$(varnam$) THEN RefNum = d LOOP IF UCASE$(NRefs(d)) = "" THEN d = 0 RefNum = d END FUNCTION FUNCTION RefStr (varnam$) d = 1 DO UNTIL UCASE$(SRefs(d)) = UCASE$(varnam$) OR UCASE$(SRefs(d)) = "" d = d + 1 IF UCASE$(SRefs(d)) = UCASE$(varnam$) THEN RefStr = d LOOP IF UCASE$(SRefs(d)) = "" THEN d = 0 RefStr = d END FUNCTION SUB SetVars (v$) FOR q = 2 TO LEN(v$) + 1 IF MID$(v$, q, 1) = "," THEN m = m + 1: q = q + 1 IF m = 0 THEN n1$ = n1$ + MID$(v$, q, 1) IF m = 1 THEN n2$ = n2$ + MID$(v$, q, 1) NEXT q IF RIGHT$(n1$, 1) = "$" THEN s = RefStr(n1$): z = 1 ELSE s = RefNum(n1$): z = 2 IF s = 0 THEN PRINT "Variable not defined :"; n1$: EXIT SUB IF z = 1 THEN SVars(s) = n2$ ELSE NVars(s) = VAL(n2$) END SUB FUNCTION TRIM$ (s$) TRIM$ = LTRIM$(RTRIM$(s$)) END FUNCTION