100 ! RECORD -- GRADE RECORDING PROGRAM FOR WABASH COLLEGE 120 ! OPTIONAL TALLY OF GRADES RECORDED IS AVAILABLE. 140 ! 21-DEC-73 J. WARDEN WABASH COLLEGE 160 ON ERROR GO TO 2320 180 DIM M%(30) 200 S$=SYS(CHR$(6%)+CHR$(-7%)) 220 N%=4% : N6%=3% : N1%=510%/N% 240 PRINT CHR$(29%)+CHR$(31%) : PRINT"GRADE RECORDING PROGRAM VO2B" 260 INPUT"WANT INSTRUCTIONS (Y/N)";Y$ 280 IF ASCII(Y$)<>89% THEN 560 300 PRINT"(1) IF THIS IS A STANDARD SEMESTER GRADE RECORDING," : PRINT" ANSWER 'Y' OR 'YES' TO 'WANT STANDARD FILES?' ." 320 PRINT" OTHERWISE ENTER THE NAMES OF THE CLASS & SUBJECT" : PRINT" FILES THAT YOU ARE USING." 340 PRINT"(2) IN ANSWER TO 'COURSE?' TYPE THE 6-DIGIT ID CODE" 360 PRINT" FOR THE COURSE TO BE RECORDED (EX:PI02B )" 380 PRINT"(3) NORMALLY JUST HIT 'RETURN' IN ANSWER TO 'START AT?' 400 PRINT"(4) TO STOP A GIVEN LIST ENTER 'EX'" : PRINT" OR ENTER '/L' AFTER LAST GRADE." 440 PRINT" EXAMPLE: DOE JOHN P B+/L" 460 PRINT"(5) TO HALT THE PROGRAM HIT 'RETURN' IN ANSWER TO" 480 PRINT" 'COURSE?' ." 500 PRINT"(6) TO ADD C/NC STATUS, ENTER 'ADC' INSTEAD": PRINT" OF A GRADE; TO REMOVE, ENTER 'DEC'." 520 PRINT"(7) TO CHANGE COURSE CREDITS, ENTER 'CC' PLUS": PRINT" NO. OF CREDITS TIMES 2. FOR EXAMPLE:" : PRINT" 1/2 COURSE - CC1 . 540 PRINT 560 READ F$,X9$ 580 DATA "DK0:CLF73","DK0:SUBF73" 600 PRINT"WANT STANDARD FILES "+F$+" AND "+X9$; : INPUT Y$ : IF ASCII(Y$)=89% THEN 660 620 INPUT"CLASS LIST FILE";F$ 640 INPUT"SUBJECT FILE";X9$ 660 OPEN F$ AS FILE 1% 680 FIELD #1%,N1%*A% AS Z$, N1% AS A$(A%) FOR A%=0% TO N6% 700 CHANGE SYS(CHR$(6%)+CHR$(-8%)+CHR$(1%)) TO M% : C0%=N%*(M%(7%)+SWAP%(M%(8%))) 720 OPEN X9$ FOR INPUT AS FILE 4% 740 FIELD #4%, N1%*V% AS Z$, N1% AS V$(V%) FOR V%=0% TO 3% 760 CHANGE SYS(CHR$(6%)+CHR$(-8%)+CHR$(4%)) TO M% : S9%=N%*(M%(7%)+SWAP%(M%(8%))) ! ## COURSES 780 OPEN "KB:" FOR INPUT AS FILE 3% 800 PRINT"COURSE";:INPUT LINE C1$ 820 IF LEN(C1$)<=3% THEN 2380 840 C1$=LEFT( LEFT(C1$,LEN(C1$)-2%)+SPACE$(6%),6% ) 860 M%=S9%+1% : B%=1% 880 FOR I3%=1% TO 10% 900 J1%=(M%+B%)/2% : V1%=(J1%+N6%)/N% : V%=J1%-1%-(V1%-1%)*N% 920 GET #4%,RECORD V1% 940 T1$=LEFT(V$(V%),6%) 960 IF T1$=C1$ THEN 1080 980 IF T1$>C1$ THEN 1020 1000 B%=J1% : GO TO 1040 1020 M%=J1% 1040 NEXT I3% 1060 PRINT"** NO SUCH COURSE **" : GO TO 800 1080 A$=V$(V%) ! FOUND! 1100 A1$=MID(A$,8%,3%) ! COURSE CODE 1120 A2$=MID(A$,36%,16%)+" "+MID(A$,3%,3%) : IF MID(A$,6%,1%)=" " THEN A2$=A2$+SPACE$(6%) ELSE A2$=A2$+" ["+MID(A$,6%,1%)+"] " 1140 K%=0% : PRINT CHR$(29%)+CHR$(31%) 1160 PRINT A2$+MID(A$,12%,2%)+":"+MID(A$,14%,2%)+" "; MID(A$,16%,3%)+" "+MID(A$,20%,16%)+CHR$(10%) 1180 INPUT"START AT (LAST NM)";C1$ : IF LEN(C1$)<3% THEN A%=N6% : A1%=0% : GO TO 1500 1200 C1$=LEFT(C1$+" ",3%) 1220 M%=C0%+1% : B%=1% 1240 FOR I3%=1% TO 10% 1260 J1%=(M%+B%)/2% : A1%=(J1%+N6%)/N% : A%=J1%-1%-(A1%-1%)*N% 1280 GET #1%, RECORD A1% : T1$=LEFT(A$(A%),3%) 1300 IF T1$=C1$ THEN 1440 1320 IF T1$>C1$ THEN 1360 1340 B%=J1% : GO TO 1380 1360 M%=J1% 1380 NEXT I3% 1400 PRINT"STUDENT ";C1$;"--- IS NOT ENROLLED" : GO TO 1180 1420 IF Y%<1% THEN Y%=1% 1440 Y%=J1% ! FOUND! 1480 GO TO 1510 1500 IF A%4. THEN C5=0. 1700 PRINT MID(S$,13%,16%); : PRINT USING" ##.# ",C5/2.; : PRINT P$+" "+MID(S$,I2%+1%,2%)+" "; 1720 Q%=0% ! NOT LAST STU 1740 INPUT LINE #3%,G1$ 1760 IF ASCII(G1$)=10% THEN 1980 1780 G1%=ASCII(RIGHT(G1$,LEN(G1$))) : IF G1%=13% OR G1%=10% THEN G1$=LEFT(G1$,LEN(G1$)-1%) : GO TO 1780 1800 IF INSTR(1%,G1$,"/")>0% THEN GOSUB 2140 1820 IF LEN(G1$)<1% THEN 1980 1840 IF G1$="EX" THEN 2060 1860 IF LEFT(G1$,2%)="CC" THEN 2260 1880 IF LEN(G1$)>2% THEN 2180 1900 G1$=LEFT(G1$+" ",2%) 1920 U%=46%+(I%-1%)*7% 1940 S$=LEFT(S$,U%-1%)+G1$+RIGHT(S$,U%+2%) 1960 LSET A$(A%)=S$ : PUT #1%, RECORD A1% 1980 K%=K%+1% 2000 IF Q%>0% THEN 2060 ! IF LAST STU THEN STOP 2020 IF I4%=1% THEN I4%=I%+1% : GO TO 1560 2040 GO TO 1500 2060 PRINT CHR$(10)+"** TOTAL ";K%;"**"+CHR$(10) 2080 GO TO 800 2100 GO TO 2060 2120 ! REMOVE LAST STUDENT WARNING TAG 2140 G1$=LEFT(G1$,INSTR(1%,G1$,"/")-1%) 2160 Q%=2% : RETURN 2180 IF G1$="ADC" THEN G1$="C" ELSE IF G1$="DEC" THEN G1$=" " ELSE GO TO 2240 2200 U%=45%+(I%-1%)*7% : S$=LEFT(S$,U%-1%)+G1$+RIGHT(S$,U%+1%) 2220 GO TO 1660 2240 IF LEFT(G1$,2%)<>"CC" THEN PRINT "-> BAD ENTRY - RETYPE!" : GO TO 1700 2260 IF LEN(G1$)=2% THEN G1$=" " : GO TO 2300 2280 G1%=ASCII(RIGHT(G1$,3%)) : IF G1%>=48% AND G1%<=57% THEN G1$=CHR$(G1%) ELSE PRINT"-> BAD ENTRY - RETYPE!" : GO TO 1700 2300 U%=44%+(I%-1%)*7% : S$=LEFT(S$,U%-1%)+G1$+RIGHT(S$,U%+1%) : GO TO 2220 2320 IF ERR=28% THEN RESUME 2380 2340 IF ERR=5% AND ERL=720% THEN PRINT "CAN'T FIND '";X9$;"'" : INPUT"SUBJECT FILE";X9$ : RESUME 720 2360 ON ERROR GO TO 0 2380 CLOSE 3%,4% 2400 S$=SYS(CHR$(0%)) 2420 INPUT"WANT A TALLY OF GRADES RECORDED (Y/N)";Y$ 2440 IF LEFT(Y$,1%)<>"Y" THEN 3080 2460 PRINT"(THIS WILL TAKE A MINUTE OR TWO.)":PRINT 2480 ! TALLYING ROUTINE 2500 ON ERROR GO TO 2880 2520 S0%=0% 2540 X$="###### \ \" 2580 DIM N%(10) 2600 N%(I2%)=0% FOR I2%=0% TO 10% 2620 T%,T1%,G%,H%,I2%,I3% = 0% 2640 IF A%" " THEN G%=G%+1% ELSE H%=H%+1% 2840 NEXT I% 2860 GO TO 2640 2880 IF ERR=11% AND ERL=2640% THEN RESUME 2900 ELSE ON ERROR GO TO 0 2900 &:&"TALLY AT ";TIME$(0%);" ON ";DATE$(0%) : & 2920 T1%=T1%+N%(I%)*I% FOR I%=0% TO 10% 2940 PRINT USING X$,T%,"STUDENTS" 2960 PRINT USING X$,T1%,"COURSES" 2980 PRINT USING X$,G%,"GRADES RECORDED" 3000 PRINT USING X$,H%,"GRADES NOT RECORDED" 3020 P=100*G%/(G%+H%) 3040 PRINT USING"###.#% RECORDED",P 3060 PRINT:PRINT USING X$,I2%,"INCOMPLETES" 3070 PRINT USING X$,I3%,"NO CREDITS (TO BE REMOVED)" 3080 CLOSE 1% 3100 END