10 REM **** F I N D V A R **** 20 REM 30 REM 40 REM This program lists all the variables used in a 50 REM MBASIC Ascii program. It does not cross-reference them 60 REM to any line numbers. 70 REM 80 REM cml 90 REM 100 REM ----------------------------------------------------------- 110 REM 120 REM 130 DIM IN$(100),VAR$(400),V$(401) 140 DEF FNEQ(X,X$)=INSTR(X,X$,"=") 150 WIDTH 80 160 WIDTH LPRINT 80 170 FOR I = 1 TO 25 180 PRINT 190 NEXT I 200 INPUT "SOURCE FILE NAME ? ",W$ 210 INPUT "WOULD YOU LIKE THE OUPUT TO GO TO THE PRINTER ? ",ANS$ 220 IF LEFT$(ANS$,1)="Y" THEN LST=1 ELSE LST=0 230 PRINT 240 OPEN "I",1,W$ 250 N=-1 260 PRINT "READING ";W$; 270 MAX = 100 280 PRINT "."; 290 FOR I = 0 TO MAX 300 IF EOF(1)= -1 THEN 370 310 LINE INPUT #1,IN$(I) 320 IF IN$(I)="" THEN 300 330 NEXT I 340 GOTO 410 350 REM -------------------------------------------------------------- 360 REM 370 ENDS=1 380 PRINT 390 REM -------------------------------------------------------------- 400 REM 410 MAX=I-1 420 M=-1 430 M=M+1 440 L$ = IN$(M) 450 EQ = FNEQ(1,L$) 460 IF EQ=0 THEN 580 470 IF INSTR(L$," IF ") > 0 THEN 580 480 IF INSTR(L$," FOR ") > 0 THEN 580 490 IF INSTR(L$," REM ") > 0 THEN 580 500 IF INSTR(L$," DEF ") > 0 THEN 580 510 E = EQ-1 520 GOSUB 1040 530 S=E-1 540 GOSUB 1210 550 N=N+1 560 S=S+1 570 VAR$(N) = MID$(L$,S,E-S+1) 580 IF M 1 THEN 270 980 CLOSE 990 PRINT 1000 PRINT 1010 END 1020 REM -------------------------------------------------------------- 1030 REM 1040 REM THIS RTN. BACK-SCANS TO THE NEXT NON-BLANK FOLLOWED BY A SPACE 1050 IF MID$(L$,E,1) = " " THEN 1060 ELSE 1110 1060 E=E-1 1070 IF E=0 THEN 1080 ELSE 1050 1080 PRINT "NO SPACE DELIMITER FOUND IN LAST CHAR. RTN." 1090 PRINT 1100 STOP 1110 IF MID$(L$,E,1)=")" THEN 1120 ELSE 1180 1120 IF MID$(L$,E,1)<> "(" THEN 1130 ELSE 1180 1130 E=E-1 1140 IF E=0 THEN 1150 ELSE 1120 1150 PRINT "NO MATCHING '(' FOR ')' FOUND." 1160 PRINT 1170 STOP 1180 RETURN 1190 REM -------------------------------------------------------------- 1200 REM 1210 REM THIS RTN. BACK-SCANS TO FIRST NON-BLANK FOLLOWING A SPACE 1220 IF MID$(L$,S,1) = " " THEN 1280 ELSE 1230 1230 S = S-1 1240 IF S = 0 THEN 1250 ELSE 1220 1250 PRINT "NO SPACE DELIMITER FOUND IN FIRST CHAR. RTN. 1260 PRINT 1270 STOP 1280 RETURN 1290 REM -------------------------------------------------------------- 1300 REM 1310 REM THIS RTN. SORTS THE VARIABLE LIST 1320 PRINT 1330 PRINT "SORTING...";K+1;" VARIABLES READ" 1340 PRINT 1350 PRINT 1360 FOR I=0 TO K 1370 FOR J=I+1 TO K 1380 IF V$(J) < V$(I) THEN 1390 ELSE 1410 1390 SWAP V$(J),V$(I) 1400 SWP=SWP+1 1410 NEXT J 1420 NEXT I 1430 RETURN 1440 REM -------------------------------------------------------------- 1450 REM  1410 NEXT J 1420 NEXT I 1430 RETURN 1440 REM -----------------------------------