1: DECLARE FUNCTION TRIM$ (s$) 2: DECLARE SUB SetVars (v$) 3: DECLARE FUNCTION RefStr! (varnam$) 4: DECLARE SUB Print2 (v$) 5: DECLARE FUNCTION RefNum! (varnam$) 6: DECLARE SUB AddVars (v$) 7: DIM SHARED NVars(1 TO 100) AS INTEGER 8: DIM SHARED SVars(1 TO 100) AS STRING 9: DIM SHARED NRefs(1 TO 100) AS STRING 10: DIM SHARED SRefs(1 TO 100) AS STRING 11: nm = 1 12: st = 1 13: s$ = "" 14: IF s$ = "" THEN s$ = "mt.dsa"'end 15: OPEN s$ FOR INPUT AS #1 16: DO UNTIL EOF(1) 17: LINE INPUT #1, b$ 18: IF INSTR(b$, " ") = 0 THEN c$ = UCASE$(b$): GOTO 10 19: d$ = MID$(b$, 4, LEN(b$) - 2) 20: c$ = UCASE$(MID$(b$, 1, INSTR(b$, " ") - 1)) 21: 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 22: IF c$ = "ADD" THEN AddVars d$: GOTO 112 23: IF c$ = "SET" THEN SetVars d$: GOTO 112 24: IF c$ = "PRN" THEN Print2 d$: GOTO 112 25: IF c$ = "SRN" THEN SCREEN VAL(TRIM$(d$)): GOTO 112 26: IF c$ = "END" THEN END: GOTO 112 27: 10 IF c$ = "CLS" THEN CLS : GOTO 112 28: IF c$ = "SLP" THEN SLEEP 29: 112 LOOP 30: 31: SUB AddVars (v$) 32: NVars(1) = 2 33: m = 0 34: d = 1 35: FOR q = 2 TO LEN(v$) + 1 36: IF MID$(v$, q, 1) = "," THEN m = m + 1: q = q + 1 37: IF m = 0 THEN n1$ = n1$ + MID$(v$, q, 1) 38: IF m = 1 THEN n2$ = n2$ + MID$(v$, q, 1) 39: IF m = 2 THEN n3$ = n3$ + MID$(v$, q, 1) 40: NEXT q 41: 'PRINT n1$; "="; LEN(n1$); ":"; n2$; "="; LEN(n2$) 42: DO UNTIL UCASE$(NRefs(d)) = UCASE$(n1$) OR UCASE$(NRefs(d)) = "" 43: d = d + 1 44: LOOP 45: 'd = d - 1 46: IF UCASE$(NRefs(d)) = "" AND STR$(VAL(n1$)) = " " + n1$ + " " THEN PRINT "Variable not defined "; n1$: EXIT SUB 47: IF UCASE$(NRefs(d)) <> "" THEN n1$ = STR$(NVars(d)) 48: 'PRINT "Ref #="; LTRIM$(RTRIM$(STR$(d))); "|Cur value="; LTRIM$(RTRIM$(STR$(NVars(d)))); "|Stored Name="; NRefs(d) 49: d = 1 50: DO UNTIL UCASE$(NRefs(d)) = UCASE$(n2$) OR UCASE$(NRefs(d)) = "" 51: d = d + 1 52: LOOP 53: 'd = d -1 54: IF UCASE$(NRefs(d)) = "" AND STR$(VAL(n2$)) = " " + n2$ + " " THEN PRINT "Variable not defined :"; n2$ 55: IF UCASE$(NRefs(d)) <> "" THEN n2$ = STR$(NVars(d))': 'PRINT UCASE$(NRefs(d)) 56: 'PRINT "Ref #="; LTRIM$(RTRIM$(STR$(d))); "|Cur value="; LTRIM$(RTRIM$(STR$(NVars(d)))); "|Stored Name="; NRefs(d) 57: a = RefNum(n3$) 58: 'PRINT n1$, n2$, n3$, a 59: NVars(a) = VAL(v1$) + VAL(n2$) 60: END SUB 61: 62: SUB Print2 (v$) 63: v$ = TRIM$(v$) 64: a = 0 65: var1$ = "" 66: FOR q = 1 TO LEN(v$) 67: IF MID$(v$, q, 1) = CHR$(34) AND qt = 0 THEN qt = 1: q = q + 1 68: IF MID$(v$, q, 1) = CHR$(34) AND qt = 1 THEN qt = 0: q = q + 1 69: IF qt = 1 THEN PRINT MID$(v$, q, 1); 70: IF (q = LEN(v$) OR MID$(v$, q, 1) = ";") AND RIGHT$(var1$, 1) = "$" THEN PRINT var1$: s = RefStr(var1$): IF s = 0 THEN EXIT SUB ELSE PRINT SVars(s): var1$ = "" 71: IF (q = LEN(v$) OR MID$(v$, q, 1) = ";") AND RIGHT$(var1$, 1) <> "$" THEN PRINT var1$: s = RefNum(var1$): PRINT var1$: IF s = 0 THEN EXIT SUB ELSE PRINT NVars(s): var1$ = "" 72: IF qt = 0 THEN var1$ = var1$ + MID$(v$, q, 1) 73: NEXT q 74: END SUB 75: 76: FUNCTION RefNum (varnam$) 77: d = 1 78: DO UNTIL UCASE$(NRefs(d)) = UCASE$(varnam$) OR UCASE$(NRefs(d)) = "" 79: d = d + 1 80: 'PRINT "If "; UCASE$(NRefs(d)); "="; UCASE$(varnam$); " then D="; d 81: IF UCASE$(NRefs(d)) = UCASE$(varnam$) THEN RefNum = d 82: LOOP 83: IF UCASE$(NRefs(d)) = "" THEN d = 0 84: RefNum = d 85: END FUNCTION 86: 87: FUNCTION RefStr (varnam$) 88: d = 1 89: DO UNTIL UCASE$(SRefs(d)) = UCASE$(varnam$) OR UCASE$(SRefs(d)) = "" 90: d = d + 1 91: IF UCASE$(SRefs(d)) = UCASE$(varnam$) THEN RefStr = d 92: LOOP 93: IF UCASE$(SRefs(d)) = "" THEN d = 0 94: RefStr = d 95: END FUNCTION 96: 97: SUB SetVars (v$) 98: FOR q = 2 TO LEN(v$) + 1 99: IF MID$(v$, q, 1) = "," THEN m = m + 1: q = q + 1 100: IF m = 0 THEN n1$ = n1$ + MID$(v$, q, 1) 101: IF m = 1 THEN n2$ = n2$ + MID$(v$, q, 1) 102: NEXT q 103: IF RIGHT$(n1$, 1) = "$" THEN s = RefStr(n1$): z = 1 ELSE s = RefNum(n1$): z = 2 104: IF s = 0 THEN PRINT "Variable not defined :"; n1$: EXIT SUB 105: IF z = 1 THEN SVars(s) = n2$ ELSE NVars(s) = VAL(n2$) 106: END SUB 107: 108: FUNCTION TRIM$ (s$) 109: TRIM$ = LTRIM$(RTRIM$(s$)) 110: END FUNCTION 111: |