10 ! GENER- GENERATES THE SOLVE SYSTEM FOR SPECIFIC FILE 20 ! SIZES AND SYSTEM CONFIGURATIONS 30 ! 40 ! WRITTEN JUNE 1973 BY: R BRANTON 60 ! 80 DIM D$(50),D1$(50) 100 !**** BUILD FILE DATA **** 110 READ N% ! NUMBER OF FILES 120 FOR I%=1% TO N% 130 READ D$(I%),D1$(I%) 140 NEXT I% 200 !**** FILE DATA **** 202 ! **** THE FOLLOWING ARE SPECIAL SYMBOLS IN THE DATA USED 203 ! EXPIDITE THE SUBSTITUTION OF NEEDED DIM VARIABLES 205 ! X: DUMMY VARIABLE 206 ! -: MAXIMUM NUMBER OF STUDENTS 207 ! +: MAXIMUM NUMBER OF COURSES 208 ! <: MAXIMUM NUMBER OF STUDENT OVERFLOWS 209 ! >: MAXIMUM NUMBER OF CLASS OVERFLOWS 210 DATA 28 220 DATA MASTER,"X%(100)" 230 DATA STINF,"X$(-)=32" 240 DATA STUDF,"X%(-,2),X%(-,10),X(-)" 250 DATA OVERF,"X%(<,5)" 260 DATA MAILER,"X$(-)=32" 270 DATA VISOR,"X%(-),X%(-)" 280 DATA GRADES,"X%(-,10),X%(<,5),X%(+)" 290 DATA CLINF,"X$(+)=128" 300 DATA EXTRA,"X%(+)" 310 DATA TIME,"X%(+)" 320 DATA CLASF,"X%(+,64)" 330 DATA CLASSO,"X%(>,64)" 340 DATA SCLINF,"X$(+)=16" 350 DATA HASH,"X(+,3),X%(100,2)" 360 DATA ESTAT,"X%(+,2)" 370 DATA STATUS,"X%(+,2)" 380 DATA PRESTS,"X%(+,2)" 390 DATA ADVISR,"X$(300),X$(200)=32" 400 DATA "STINF.KB+NUM$(A%)","X%(500,13),X(500),X$(500)=32" 410 DATA "CLASF.KB+NUM$(A%)","X%(+)" 420 DATA HOURS,"X%(+)" 430 DATA PRINTR,"X%(150,2),X$(50)=32" 440 DATA CK,"X%(+),X$(+)=4" 450 DATA "SORT.TMP","X%(27,500),X%(27)" 460 DATA "STR.TMP","X$(500)=20" 470 DATA "MAIL.KB+NUM$(A%)","X%(500),X$(500)=32" 480 DATA SWITCH,"X%(-)" 490 DATA "LITCLS","X$(+)=32" 600 ! ****ADDITIONAL FILE DATA GOES HERE***************** 1000 ! 1010 !**** OBTAIN FILE SIZE INFORMATION 1015 PRINT "INSTALLATION NAME"; : INPUT I$ 1020 INPUT "MAXIMUM NUMBER OF STUDENTS";Z% 1030 INPUT "MAXIMUM NUMBER OF CLASSES";Z1% 1040 INPUT "MAXIMUM NUMBER OF STUDENT OVERFLOWS";Z2% 1050 INPUT "MAXIMUM NUMBER OF CLASS OVERFLOWS";Z3% 1054 L9%=0 ! LISTING FLAG 1055 INPUT "DO YOU WANT PROGRAM LISTINGS";A$ : IF A$<>"YES" THEN 1070% 1060 INPUT "DEVICE TO LIST PROGRAMS ON";L$ : L9%=1% 1070 INPUT "DISK DRIVE TO HOLD FILES";Z$ 1080 INPUT "PROGRAM INPUT COMING FROM";T1$ 1090 INPUT "PROGRAM OUTPUT TO ";T2$ 1500 ! ADDITIONAL QUESTIONS WILL GO HERE 1600 GOSUB 5000 ! GO FIX DIM STATEMENTS 2000 !**** START ON PROGRAMS **** 2010 ! PROG FILE NEEDS TO BE ON THE SYSTEM DISK 2020 OPEN "PROG" AS FILE 1 2025 DIM #1,F%(100,12),F1%(100,12),F$(100),F1$(100)=32 2030 IF L9%=1% THEN OPEN L$ AS FILE 2 ELSE OPEN "KB:" AS FILE 2 2040 PRINT #2, FOR I%=1 TO 10 2050 PRINT #2,TAB(20);"SOLVE PROGRAM LISTINGS CUSTOM DESIGNED FOR:" : PRINT #2 : PRINT #2,TAB(30);I$ : PRINT #2 2060 PRINT #2 : PRINT #2,TAB(20);DATE$(0);" ";TIME$(0): PRINT #2 2070 PRINT #2,"PROGRAMS STORED ON: ";T2$ : PRINT #2 2080 PRINT #2,"SOLVE SYSTEM DISK: ";Z$ : PRINT #2 2090 PRINT #2,"MAX # OF STUDENTS: ";Z% : PRINT #2 2100 PRINT #2,"MAX # OF CLASSES: ";Z1% 2110 PRINT #2,CHR$(12) 2120 PRINT #2 FOR I=1 TO 15 2130 PRINT #2,TAB(20);"******** GENERAL FILE DIM LAYOUT ********" 2140 PRINT #2 2150 PRINT #2,I;TAB(5);D$(I);TAB(25);D1$(I) FOR I=1 TO N% 2160 PRINT #2,CHR$(12) 2180 ON ERROR GOTO 2900 2190 !**** BUILD PROGRAMS ONE AT A TIME **** 2200 FOR I%=1% TO F%(0,0) 2210 OPEN T1$+F$(I%)+".BAS" FOR INPUT AS FILE 3 2220 OPEN T2$+F$(I%)+".BAS" FOR OUTPUT AS FILE 4 2225 IF L9%=0% THEN 2300% 2230 PRINT #2,TAB(20);"**********";" ";F$(I%);" **********"; DATE$(0) : PRINT #2 2300 J%=1% ! SEARCH FOR THE FIRST FILE 2310 Q$=F1$(I%) : P$=NUM$(F1%(I%,J%)) 2320 P$=MID(P$,2,LEN(P$)-2) 2500 INPUT LINE #3,A$ : A$=LEFT(A$,LEN(A$)-2) 2510 IF J%<=F%(I%,0%) THEN GOSUB 3000 ! MORE FILES 2520 IF L9%=1% THEN & #2,A$ ! PRINT A LISTING LINE 2530 PRINT #4,A$ ! WRITE IT ON TAPE 2540 GOTO 2500 ! GET NEXT LINE 2550 IF L9%=1% THEN & #2,CHR$(12) ! SKIP TO NEXT PAGE 2560 PRINT #4,CHR$(26) ! WRITE END OF FILE 2570 CLOSE 3,4 2600 NEXT I% 2700 !********* ALL THE WORK IS DONE ************ 2710 CLOSE 1,2 2720 STOP 2900 ! ERROR ROUTINE 2910 IF ERR=11 THEN RESUME 2550 2920 PRINT ERR : STOP 2930 RESUME 3000 !**** FILE CHECK SUBROUTINE **** 3010 IF P$<>LEFT(A$,LEN(P$)) THEN RETURN 3020 ! LINE NUMBER IS FOUND 3030 W%=F%(I%,J%)/100% : W1%=F%(I%,J%)-W%*100% 3032 R9=INSTR(1,D$(W1%),"+NUM") 3035 A$=P$+" OPEN "+CHR$(34)+Z$ 3040 IF R9=0 THEN A$=A$+D$(W1%)+CHR$(34) ELSE A$=A$+LEFT(D$(W1%),R9-1)+CHR$(34)+MID(D$(W1%),R9,LEN(D$(W1%))-R9+1) 3045 A$=A$+" AS FILE "+NUM$(W%)+" : DIM#"+NUM$(W%)+"," 3050 B$=D1$(W1%) ! PICK UP DIM STATEMENT 3100 X=INSTR(1,B$,"X") 3110 IF X=0 THEN 3200 ! ALL TRANSLATED 3120 IF MID(Q$,2,1)<="9" AND MID(Q$,2,1)>="0" THEN X1=2 ELSE X1=1 3130 B$=LEFT(B$,X-1)+LEFT(Q$,X1)+MID(B$,X+1,LEN(B$)-X) 3140 Q$=MID(Q$,X1+1,LEN(Q$)-X1) 3150 GOTO 3100 3200 A$=A$+B$ ! FINISH LINE 3210 J%=J%+1% ! ONE MORE FILE 3220 IF J%<=F%(I%,0) THEN P$=NUM$(F1%(I%,J%)) : P$=MID(P$,2,LEN(P$)-2) 3300 RETURN 5000 !**** SUBROUTINE TO FIX DIM STATEMENTS **** 5010 Y$="-" : Y1$=NUM$(Z%) : GOSUB 5500 5020 Y$="+" : Y1$=NUM$(Z1%) : GOSUB 5500 ! MAX # OF CLASSES 5030 Y$="<" : Y1$=NUM$(Z2%) : GOSUB 5500 ! MAX # OF STUDENT OVER 5040 Y$=">" : Y1$=NUM$(Z3%) : GOSUB 5500 !MAX # OF CLASS OVERFLOWS 5050 RETURN 5500 !**** CHANGE DIM **** 5510 FOR K%=1% TO N% 5520 Y=INSTR(1,D1$(K%),Y$) 5530 IF Y=0 THEN 5600 5540 D1$(K%)=LEFT(D1$(K%),Y-1)+Y1$+MID(D1$(K%),Y+1,LEN(D1$(K%))-Y) 5550 GOTO 5520 5600 NEXT K% 5610 RETURN 9999 END