home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib21a.dsk / SEPTEMBER.1984 / GRADE.BOOK.bas < prev    next >
BASIC Source File  |  2023-02-26  |  33KB  |  568 lines

  1. 10  REM  **********************
  2. 20  REM  * NIBBLE GRADE BOOK  *
  3. 30  REM  * BY NEWTON S. LEE   *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80  DIM MA$(10),NM$(10),T$(10),NO(10),X$(80),M%(15,80),TT$(15),TX$(10),MM%(15,80),TD$(15),P6(15),P8(15)
  9. 90 X1 = 0:SL = 1: REM  SL IS PRINTER SLOT
  10. 100 D$ =  CHR$(4)
  11. 110  GOSUB 5500
  12. 120 P1 = 0:S$ = " OFF "
  13. 130  REM  READ IN CLASSES
  14. 140  ONERR  GOTO 5530
  15. 150  PRINT D$;"OPEN CLASS": PRINT D$;"READ CLASS": INPUT N
  16. 160  IF N = 0  THEN  PRINT D$"CLOSE": GOSUB 5120: GOTO 130
  17. 170  FOR I = 1 TO N: INPUT T$(I): INPUT NO(I): NEXT : PRINT D$;"CLOSE CLASS"
  18. 180  HOME : VTAB 22: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 2: HTAB 11: PRINT "-------------------": HTAB 11: INVERSE : PRINT " NIBBLE GRADE BOOK ": NORMAL : HTAB 11: PRINT "-------------------": PRINT : PRINT : REM  19 -'S
  19. 190  PRINT " CLASS #     DESCRIPTION": PRINT 
  20. 200  ONERR  GOTO 5670
  21. 210  FOR I = 1 TO N: PRINT "   ";I;")";: HTAB 11: PRINT T$(I): NEXT 
  22. 220  PRINT : PRINT "  "; CHR$(91);" ENTER 0 FOR OTHER OPTIONS ]": PRINT : PRINT : INPUT "  WHICH? ";F: IF F = 0  THEN 4510
  23. 230 Z$ = MA$(F): GOSUB 340
  24. 240  HOME : PRINT : PRINT "             ------------": PRINT "             ";: INVERSE : PRINT " MAIN  MENU ": NORMAL : PRINT "             ------------": REM  13 SPACES & 12 -'S
  25. 250  PRINT : PRINT "OPTIONS:": PRINT : PRINT "(1) ENTER GRADES     (6) ANALYSIS": PRINT "(2) CHANGE GRADES    (7) RETRIEVE CLASS": PRINT "(3) CHANGE TEST          INFORMATION ": PRINT "    CONTENTS         (8) UPDATE RECORDS"
  26. 260  PRINT "(4) CHANGE STUDENT   (9) QUIT WITHOUT": PRINT "    IDENTIFICATIONS      UPDATE": PRINT "(5) CHANGE NUMBER": PRINT "    OF STUDENTS": PRINT "                     WHICH ? ": REM  21 SPACES
  27. 270  VTAB 22: HTAB 1: PRINT "< CLASS # ";F;" : ";T$(F);" >"
  28. 280  VTAB 16: HTAB 30: GET W$: PRINT  CHR$(7);W$:W =  ASC(W$) - ASC("0"): IF W >9  OR W <1  THEN 280
  29. 290  ON W GOSUB 660,760,4140,4250,850,1350,4420,310,320
  30. 300  GOTO 240
  31. 310  GOSUB 440: GOTO 180
  32. 320  VTAB 16: HTAB 22: PRINT  CHR$(7);"UPDATE(Y/N) ? ";: GET NP$: IF NP$ = "N"  THEN 180
  33. 330  GOTO 310
  34. 340  REM  READ ITEMS
  35. 350  HOME : VTAB 10: PRINT "  CLASS # ";F;" : ";T$(F): VTAB 14: PRINT "  ";: INVERSE : PRINT " READING ";: NORMAL : PRINT " ..."
  36. 360  PRINT D$;"OPEN ";Z$: PRINT D$;"READ ";Z$
  37. 370  FOR I = 1 TO 15
  38. 380  FOR J = 1 TO NO(F)
  39. 390  INPUT M%(I,J): NEXT : NEXT 
  40. 400  PRINT D$;"CLOSE ";Z$
  41. 410  IF R$ = "RETURN"  THEN  RETURN 
  42. 420  PRINT D$;"OPEN ";TX$(F): PRINT D$;"READ ";TX$(F): FOR I = 1 TO 15: INPUT TT$(I): NEXT : PRINT D$;"CLOSE ";TX$(F)
  43. 430  RETURN 
  44. 440  REM  WRITE ITEMS
  45. 450  HOME : VTAB 10: PRINT "  CLASS # ";F;" : ";T$(F): VTAB 14: PRINT "  ";: INVERSE : PRINT " WRITING ";: NORMAL : PRINT " ..."
  46. 460  PRINT D$;"OPEN ";Z$: PRINT D$;"WRITE ";Z$
  47. 470  FOR II = 1 TO 15
  48. 480  FOR J = 1 TO NO(F)
  49. 490  PRINT M%(II,J): NEXT : NEXT 
  50. 500  PRINT D$;"CLOSE ";Z$
  51. 510  PRINT D$;"OPEN ";TX$(F): PRINT D$;"WRITE ";TX$(F)
  52. 520  FOR II = 1 TO 15: PRINT TT$(II): NEXT : PRINT D$;"CLOSE ";TX$(F)
  53. 530  RETURN 
  54. 540  REM  SUBROUTINE
  55. 550  IF (J/20) =  INT(J/20)  THEN  VTAB 24: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$: HOME : PRINT "    STUDENT #     PERCENTAGE     GRADE": PRINT 
  56. 560  RETURN 
  57. 570  REM  SUBROUTINE
  58. 580  IF (J/20) < > INT(J/20)  THEN  RETURN 
  59. 590  VTAB 24: HTAB 1: PRINT "R) RIGHT PAGE   C) CONTINUE  -->";: GET BW$
  60. 600  IF BW$ = "C"  THEN  HOME : PRINT "TEST";: FOR I = 1 TO 9: PRINT  SPC( 3);I;: NEXT : FOR I = 1 TO 40: PRINT "-";: NEXT : RETURN 
  61. 610  IF BW$ < >"R"  THEN 590
  62. 620  HOME : PRINT "TEST";: FOR I = 10 TO 15: PRINT  SPC( 2);I;: NEXT : PRINT : FOR I = 1 TO 28: PRINT "-";: NEXT : PRINT : GOTO 4010
  63. 630  REM  SUBROUTINE
  64. 640  IF (II/20) < > INT(II/20)  THEN  RETURN 
  65. 650  VTAB 24: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$: HOME : PRINT "    STUDENT NUMBER      IDENTIFICATION": PRINT : RETURN 
  66. 660  REM  ENTER GRADES
  67. 670  HOME : PRINT "           --------------": PRINT "           ";: INVERSE : PRINT " ENTER GRADES ": NORMAL : PRINT "           --------------": PRINT : PRINT : REM  11 SPACES & 14 -'S
  68. 680  PRINT " CLASS # ";F;" : ";T$(F): PRINT : PRINT 
  69. 690  INPUT " TEST NUMBER (1-15) ? ";TX: IF TX <1  OR TX >15  THEN 670
  70. 700  PRINT : INPUT " TEST DESCRIPTION: ";TD$(TX): PRINT : IF TD$(TX) = "QUIT"  THEN  RETURN 
  71. 710 TT$(TX) = TD$(TX): PRINT : PRINT " ENTER GRADES :": PRINT 
  72. 720  FOR I = 1 TO NO(F)
  73. 730  VTAB 16: CALL  -958: PRINT " STUDENT # ";I;") : ";: INPUT M%(TX,I)
  74. 740  NEXT 
  75. 750  RETURN 
  76. 760  REM  CHANGE GRADES
  77. 770  HOME : PRINT "          ---------------": PRINT "          ";: INVERSE : PRINT " CHANGE GRADES ": NORMAL : PRINT "          ---------------": PRINT : PRINT : REM  10 SPACES & 15 -'S
  78. 780  PRINT " CLASS # ";F;" : ";T$(F): PRINT : PRINT 
  79. 790  VTAB 9: CALL  -958: INPUT "TEST NUMBER : ";TX: INPUT "STUDENT NUMBER : ";SN: IF TX >15  OR SN >NO(F)  THEN 770
  80. 800  PRINT : PRINT "OLD GRADE: ";M%(TX,SN)
  81. 810  INPUT "NEW GRADE: ";M%(TX,SN)
  82. 820  PRINT : PRINT "ANY MORE? (Y/N) ";: GET AY$
  83. 830  IF AY$ = "Y" GOTO 760
  84. 840  RETURN 
  85. 850  REM  CHANGE NO. OF STUDENTS
  86. 860  HOME : PRINT "        ------------------------": PRINT "        ";: INVERSE : PRINT " CHANGE NO. OF STUDENTS ": NORMAL : PRINT "        ------------------------": PRINT : PRINT : REM  8 SPACES & 24 -'S
  87. 870  PRINT " (A) ADD ONE STUDENT": PRINT " (D) DELETE ONE STUDENT": PRINT " (Q) QUIT": PRINT : PRINT " WHICH ? ";: GET CS$: PRINT : PRINT 
  88. 880  IF CS$ = "Q"  THEN  RETURN 
  89. 890  IF CS$ = "A"  THEN 1180
  90. 900  INPUT "DELETE STUDENT NO? --> ";DS: IF DS >NO(F)  THEN  PRINT  CHR$(7);"ERROR: GREATER THAN ";NO(F): FOR I = 1 TO 300: NEXT : RETURN 
  91. 910 NO(F) = NO(F) -1
  92. 920  PRINT : PRINT " PLEASE WAIT ...": IF DS = 0  THEN NO(F) = NO(F) +1: RETURN 
  93. 930  PRINT D$;"OPEN ";Z$: PRINT D$;"WRITE ";Z$
  94. 940  FOR II = 1 TO 15
  95. 950  IF DS = 1  THEN 1010
  96. 960  FOR K = 1 TO DS -1
  97. 970  PRINT M%(II,K): NEXT 
  98. 975  IF DS >NO(F)  THEN 1020
  99. 980  FOR K = DS +1 TO NO(F) +1
  100. 990  PRINT M%(II,K): NEXT 
  101. 1000  GOTO 1020
  102. 1010  FOR K = 2 TO NO(F) +1: PRINT M%(II,K): NEXT 
  103. 1020  NEXT 
  104. 1030  PRINT D$;"CLOSE ";Z$
  105. 1040  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS"
  106. 1050  PRINT N: FOR I = 1 TO N: PRINT T$(I): PRINT NO(I): NEXT 
  107. 1060  PRINT D$;"CLOSE CLASS"
  108. 1070 NO(F) = NO(F) +1: GOSUB 3940:NO(F) = NO(F) -1
  109. 1080  PRINT D$;"OPEN ";NM$(F): PRINT D$;"WRITE ";NM$(F)
  110. 1090  IF DS = 1  THEN 1150
  111. 1100  FOR L = 1 TO DS -1
  112. 1110  PRINT X$(L): NEXT 
  113. 1120  FOR L = DS +1 TO NO(F) +1
  114. 1130  PRINT X$(L): NEXT 
  115. 1140  GOTO 1160
  116. 1150  FOR L = 2 TO NO(F) +1: PRINT X$(L): NEXT 
  117. 1160  PRINT D$;"CLOSE ";NM$(F)
  118. 1170 R$ = "RETURN": GOSUB 360:R$ = " ": RETURN 
  119. 1180  PRINT " ADD STUDENT NO. ";NO(F) +1: PRINT 
  120. 1190  INPUT " STUDENT'S INITIAL --> ";X$(NO(F) +1)
  121. 1200  FOR II = 1 TO 15:M%(II,NO(F) +1) = 0: NEXT : PRINT : PRINT " PLEASE WAIT ..."
  122. 1210 NO(F) = NO(F) +1: PRINT D$;"OPEN ";Z$: PRINT D$;"WRITE ";Z$
  123. 1220  FOR II = 1 TO 15
  124. 1230  FOR J = 1 TO NO(F)
  125. 1240  PRINT M%(II,J): NEXT : NEXT 
  126. 1250  PRINT D$;"CLOSE ";Z$
  127. 1260  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS"
  128. 1270  PRINT N: FOR I = 1 TO N: PRINT T$(I): PRINT NO(I): NEXT 
  129. 1280  PRINT D$;"CLOSE CLASS"
  130. 1290 NO(F) = NO(F) -1: GOSUB 3940:NO(F) = NO(F) +1
  131. 1300  PRINT D$;"OPEN ";NM$(F): PRINT D$;"WRITE ";NM$(F)
  132. 1310  FOR L = 1 TO NO(F)
  133. 1320  PRINT X$(L): NEXT 
  134. 1330  PRINT D$;"CLOSE ";NM$(F)
  135. 1340  RETURN 
  136. 1350  HOME : REM  ANALYSIS
  137. 1360  PRINT "               ----------": PRINT "               ";: INVERSE : PRINT " ANALYSIS ": NORMAL : PRINT "               ----------": REM  15 SPACES & 10 -'S
  138. 1370  PRINT "OPTIONS:": PRINT : PRINT "PRINT:              (8) CURRENT DATE": PRINT "(1) TEST GRADES     (9) MESSAGE": PRINT "(2) TEST CONTENTS  ": PRINT "(3) ACCUMULATED     OR DO:": PRINT "    POINTS          (A) DROP TEST"
  139. 1380  PRINT "(4) LETTER GRADES   (B) ERASE AND": PRINT "    AND % TOTALS        GET TOTALS": PRINT "(5) STUDENTS'       (C) ADJUST SCORES": PRINT "    IDENTIFICATIONS (D) CHANGE PRINTER": PRINT "(6) MEAN OF A TEST      STATUS"
  140. 1390  PRINT "(7) STANDARD        (E) RETURN TO": PRINT "    DEVIATION           MAIN MENU"
  141. 1400  VTAB 23: HTAB 1: PRINT "PRINTER STATUS: ";: FLASH : PRINT S$;: NORMAL : IF P1 = 0  THEN  HTAB 17: INVERSE : PRINT S$;: NORMAL 
  142. 1410  VTAB 21: HTAB 1: PRINT "< CLASS # ";F;" : ";T$(F);" >"
  143. 1420  VTAB 19: HTAB 1: PRINT "WHICH ? ";: GET W$:W =  ASC(W$) - ASC("0")
  144. 1430  PRINT  CHR$(7);W$: IF W <1  OR W >21  OR (W <17  AND W >9)  THEN 1420
  145. 1440  IF W = 21  THEN  RETURN 
  146. 1450  ON W GOSUB 1470,1820,1920,2070,2550,2690,2780,3650,3780,80,80,80,80,80,80,80,2910,3230,3340,3960
  147. 1460  GOTO 1350
  148. 1470  REM  PRINT TESTS GRADES
  149. 1480  IF P1 = 0  THEN 1680
  150. 1490  PRINT D$"PR#"SL: PRINT : PRINT T$(F): PRINT : PRINT : PRINT "ALL TESTS GRADES:": PRINT : PRINT "TEST";
  151. 1500  FOR I = 1 TO 9: PRINT  SPC( 3);I;: NEXT 
  152. 1510  FOR I = 10 TO 15: PRINT  SPC( 2);I;: NEXT 
  153. 1520  PRINT " "
  154. 1530  FOR I = 1 TO 64: PRINT "-";: NEXT : PRINT " "
  155. 1540  FOR J = 1 TO NO(F): IF J <10  THEN  PRINT " (";J;")";
  156. 1550  IF J >9  THEN  PRINT "(";J;")";
  157. 1560  FOR I = 1 TO 15
  158. 1570  IF M%(I,J) <0  THEN 1610
  159. 1580  IF M%(I,J) <10  THEN  PRINT  SPC( 3);M%(I,J);: NEXT : PRINT " ": NEXT : GOTO 1660
  160. 1590  IF M%(I,J) <100  THEN  PRINT  SPC( 2);M%(I,J);: NEXT : PRINT " ": NEXT : GOTO 1660
  161. 1600  PRINT " ";M%(I,J);: NEXT : PRINT " ": NEXT : GOTO 1660
  162. 1610  IF M%(I,J) > -10  THEN  PRINT  SPC( 2);M%(I,J);: NEXT : PRINT " ": NEXT : GOTO 1660
  163. 1620  IF M%(I,J) > -100  THEN  PRINT " ";M%(I,J);: NEXT : PRINT " ": NEXT : GOTO 1660
  164. 1630  PRINT M%(I,J);: NEXT 
  165. 1640  PRINT " "
  166. 1650  NEXT 
  167. 1660  PRINT : PRINT : PRINT D$"PR#0"
  168. 1670  RETURN 
  169. 1680  HOME : PRINT "TEST";: FOR I = 1 TO 9: PRINT  SPC( 3);I;: NEXT : FOR I = 1 TO 40: PRINT "-";: NEXT :JC = 19
  170. 1690  FOR J = 1 TO NO(F): IF J <10  THEN  PRINT " (";J;")";
  171. 1700  IF J >9  THEN  PRINT "(";J;")";
  172. 1710  FOR I = 1 TO 9
  173. 1720  IF M%(I,J) <0  THEN 1760
  174. 1730  IF M%(I,J) <10  THEN  PRINT  SPC( 3);M%(I,J);: NEXT : GOSUB 570: NEXT : GOTO 1790
  175. 1740  IF M%(I,J) <100  THEN  PRINT  SPC( 2);M%(I,J);: NEXT : GOSUB 570: NEXT : GOTO 1790
  176. 1750  PRINT " ";M%(I,J);: NEXT : GOSUB 570: NEXT : GOTO 1790
  177. 1760  IF M%(I,J) > -10  THEN  PRINT  SPC( 2);M%(I,J);: NEXT : GOSUB 570: NEXT : GOTO 1790
  178. 1770  IF M%(I,J) > -100  THEN  PRINT " ";M%(I,J);: NEXT : GOSUB 570: NEXT : GOTO 1790
  179. 1780  PRINT M%(I,J);: NEXT : GOSUB 570: NEXT 
  180. 1790  IF NO(F) <20  THEN JC = NO(F) -1:J = NO(F): GOSUB 590: RETURN 
  181. 1800 J = NO(F):JC = NO(F) -20 * INT(NO(F)/20) -1: GOSUB 590: RETURN 
  182. 1810  REM  PRINT TEST CONTENTS
  183. 1820  PRINT D$"PR#0": IF P1 = 1  THEN  PRINT D$"PR#"SL: GOTO 1840
  184. 1830  HOME : PRINT 
  185. 1840  PRINT : PRINT "TEST CONTENTS:": PRINT 
  186. 1850  FOR II = 1 TO 15: IF  LEN(TT$(II)) = 0  THEN 1890
  187. 1860  IF II <10  THEN  PRINT "TEST # ";II;": ";TT$(II)
  188. 1870  IF II >9  THEN  PRINT "TEST #";II;": ";TT$(II)
  189. 1880  NEXT 
  190. 1890  PRINT : PRINT : PRINT D$"PR#0"
  191. 1900  IF P1 = 0  THEN  VTAB 23: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$
  192. 1910  RETURN 
  193. 1920  REM  PRINT ACCUM. PTS.
  194. 1930  VTAB 23: INPUT "POINTS ACCUMULATED UP TO TEST # -->";KK: PRINT D$"PR#0": IF P1 = 1  THEN  PRINT D$"PR#"SL
  195. 1940  PRINT : PRINT "ACCUMULATED POINTS UP TO TEST # ";KK;":": PRINT : IF P1 = 0  THEN  HOME : PRINT "ACCUMULATED POINTS UP TO TEST # ";KK;":": PRINT 
  196. 1950  FOR J = 1 TO NO(F):MP% = 0
  197. 1960  IF J <10  THEN  PRINT  SPC( 5);"(";J;")",
  198. 1970  IF J >9  THEN  PRINT  SPC( 4);"(";J;")",
  199. 1980  FOR II = 1 TO KK
  200. 1990 MP% = MP% +M%(II,J): NEXT 
  201. 2000  PRINT MP%
  202. 2010  IF P1 = 1  THEN 2030
  203. 2020  IF (J/20) =  INT(J/20)  THEN  VTAB 24: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$: HOME : PRINT "ACCUMULATED POINTS UP TO TEST # ";KK: PRINT 
  204. 2030  NEXT 
  205. 2040  PRINT D$"PR#0"
  206. 2050  IF P1 = 0  THEN  VTAB 23: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$
  207. 2060  RETURN 
  208. 2070  REM  LETTER & % GRADES
  209. 2080  HOME : PRINT : PRINT : INPUT "GRADES CALCULATED UP TO TEST # -> ";KK: IF KK >15  THEN 2080
  210. 2090 P5 = 1: PRINT : PRINT "DO YOU WANT TO ENTER A WEIGHT FOR": PRINT "EACH TEST SCORE (Y/N) ? ";: GET Y$: PRINT Y$
  211. 2100  IF Y$ = "N"  THEN P5 = 0: GOTO 2140
  212. 2110  IF Y$ < >"Y"  THEN  GOTO 2080
  213. 2120  PRINT : PRINT "ENTER PERCENTAGE WEIGHT & TOTAL POINTS"
  214. 2130  FOR I = 1 TO KK: VTAB 9: HTAB 1: PRINT "FOR TEST # ";I;" (E.G. 25,100)            ";: HTAB 9:: HTAB 29: INPUT ": ";P6(I),P8(I): NEXT : GOTO 2150
  215. 2140  PRINT : INPUT "ENTER TOTAL POSSIBLE POINTS -> ";PP
  216. 2150  PRINT : PRINT "PERCENTAGES FOR LETTER GRADES": INPUT "(A,B,C,D) -> ";A,B,C,D: IF P1 = 0  THEN 2400
  217. 2160  IF P5 = 0  THEN 2190
  218. 2170  IF P5 = 1  THEN  PRINT D$"PR#"SL: PRINT : PRINT "GRADES CALCULATED UP TO TEST # ";KK: PRINT "PERCENTAGES FOR LETTER GRADES (A,B,C,D): ";A;",";B;",";C;",";D
  219. 2180  PRINT "PERCENTAGE WEIGHT FOR EACH TEST :": PRINT : PRINT " TEST #    TOTAL POINTS    % WEIGHT": FOR I = 1 TO KK: HTAB (4): PRINT I;: HTAB (16): PRINT P8(I);: HTAB (31): PRINT P6(I);"%": NEXT : GOTO 2200
  220. 2190  PRINT D$"PR#"SL: PRINT : PRINT : PRINT "GRADES CALCULATED UP TO TEST # ";KK: PRINT "TOTAL POSSIBLE POINTS: ";PP: PRINT "PERCENTAGE FOR LETTER GRADES (A,B,C,D): ";A;",";B;",";C;",";D
  221. 2200  PRINT : PRINT : PRINT "PERCENTAGES AND LETTER GRADES:": PRINT : PRINT "    STUDENT #     PERCENTAGE     GRADE"
  222. 2210  FOR J = 1 TO NO(F):MP% = 0
  223. 2220  IF J <10  THEN  PRINT  SPC( 9);J;
  224. 2230  IF J >9  THEN  PRINT  SPC( 8);J;
  225. 2240  IF P5 = 1  THEN M2 = 0: FOR II = 1 TO KK:M2 = M2 +M%(II,J)/P8(II) *P6(II): NEXT :PZ =  INT(M2 *100.0)/100.0: GOTO 2290
  226. 2250  FOR II = 1 TO KK
  227. 2260 MP% = MP% +M%(II,J): NEXT 
  228. 2270 PZ = MP%/PP *10000.00
  229. 2280 PZ =  INT(PZ)/100.00
  230. 2290  IF PZ > = 100.0  THEN  PRINT  SPC( 10);PZ;
  231. 2300  IF PZ > = 10.0  AND PZ <100.0  THEN  PRINT  SPC( 11);PZ;
  232. 2310  IF PZ <10.0  THEN  PRINT  SPC( 12);PZ;
  233. 2320  HTAB 36
  234. 2330  IF PZ > = (A)  THEN  PRINT "A": NEXT : GOTO 2380
  235. 2340  IF PZ > = (B)  THEN  PRINT "B": NEXT : GOTO 2380
  236. 2350  IF PZ > = (C)  THEN  PRINT "C": NEXT : GOTO 2380
  237. 2360  IF PZ > = (D)  THEN  PRINT "D": NEXT : GOTO 2380
  238. 2370  IF PZ <(D)  THEN  PRINT "F": NEXT 
  239. 2380  PRINT : PRINT : PRINT D$"PR#0"
  240. 2390  RETURN 
  241. 2400  HOME : PRINT "    STUDENT #     PERCENTAGE     GRADE": PRINT 
  242. 2410  FOR J = 1 TO NO(F):MP% = 0
  243. 2420  HTAB 8: PRINT J;
  244. 2430  IF P5 = 1  THEN M2 = 0: FOR II = 1 TO KK:M2 = M2 +M%(II,J)/P8(II) *P6(II): NEXT :PZ =  INT(M2 *100.0)/100.0: GOTO 2480
  245. 2440  FOR II = 1 TO KK
  246. 2450 MP% = MP% +M%(II,J): NEXT 
  247. 2460 PZ = MP%/PP *10000.00
  248. 2470 PZ =  INT(PZ)/100.00
  249. 2480  HTAB 21: PRINT PZ;: HTAB 36
  250. 2490  IF PZ > = (A)  THEN  PRINT "A": GOSUB 550: NEXT : GOTO 2540
  251. 2500  IF PZ > = (B)  THEN  PRINT "B": GOSUB 550: NEXT : GOTO 2540
  252. 2510  IF PZ > = (C)  THEN  PRINT "C": GOSUB 550: NEXT : GOTO 2540
  253. 2520  IF PZ > = (D)  THEN  PRINT "D": GOSUB 550: NEXT : GOTO 2540
  254. 2530  IF PZ <(D)  THEN  PRINT "F": GOSUB 550: NEXT 
  255. 2540  VTAB 24: HTAB 1: PRINT "PRESS SPACEBAR TO CONTINUE --> ";: GET BW$: RETURN 
  256. 2550  REM  PRINT STUDENT'S INITIALS
  257. 2560  PRINT D$;"OPEN ";NM$(F): PRINT D$;"READ ";NM$(F)
  258. 2570  FOR II = 1 TO NO(F)
  259. 2580  INPUT X$(II): NEXT 
  260. 2590  PRINT D$;"CLOSE ";NM$(F)
  261. 2600  PRINT D$"PR#0": IF P1 = 1  THEN  PRINT D$"PR#"SL
  262. 2610  PRINT : PRINT : PRINT "    STUDENT NUMBER      IDENTIFICATION": PRINT : IF P1 = 0  THEN  HOME : PRINT "    STUDENT NUMBER      IDENTIFICATION": PRINT 
  263. 2620  FOR II = 1 TO NO(F)
  264. 2630  IF II <10  THEN  PRINT  SPC( 12);II; SPC( 11);X$(II)
  265. 2640  IF II >9  THEN  PRINT  SPC( 11);II; SPC( 11);X$(II)
  266. 2650  IF P1 = 0  THEN  GOSUB 640
  267. 2660  NEXT : PRINT : PRINT : PRINT D$"PR#0"
  268. 2670  IF P1 = 0  THEN  VTAB 24: PRINT "PRESS SPACE BAR ---> ";: GET BW$
  269. 2680  RETURN 
  270. 2690  REM  MEAN OF A TEST
  271. 2700  HOME : PRINT : PRINT : INPUT "WHICH TEST (1-15) ? ";KK: IF KK >15  OR KK <1  THEN 2700
  272. 2710 ME% = 0
  273. 2720  FOR II = 1 TO NO(F)
  274. 2730 ME% = ME% +M%(KK,II)
  275. 2740  NEXT : PRINT D$"PR#0": IF P1 = 1  THEN  PRINT D$"PR#"SL
  276. 2750  PRINT : PRINT : PRINT "MEAN OF TEST # ";KK;" IS: "; INT(ME%/NO(F) *100)/100: PRINT : PRINT : PRINT D$"PR#0"
  277. 2760  IF P1 = 0  THEN  PRINT : PRINT "PRESS SPACE BAR ---> ";: GET BW$
  278. 2770  RETURN 
  279. 2780  REM  STANDARD DEVIATION
  280. 2790  HOME : PRINT : PRINT : INPUT "OF WHICH TEST? ";KK: IF KK >15  OR KK <1  THEN 2790
  281. 2800 ME% = 0
  282. 2810  FOR II = 1 TO NO(F)
  283. 2820 ME% = ME% +M%(KK,II): NEXT 
  284. 2830 MM = ME%/NO(F):AA = 0
  285. 2840  FOR II = 1 TO NO(F)
  286. 2850 AA = (M%(KK,II) -MM) *(M%(KK,II) -MM) +AA
  287. 2860  NEXT 
  288. 2870  PRINT D$"PR#0": IF P1 = 1  THEN  PRINT D$"PR#"SL
  289. 2880  PRINT : PRINT "THE STANDARD DEVIATION OF TEST # ";KK;" IS:  "; INT( SQR(AA/NO(F)) *100)/100: PRINT : PRINT : PRINT D$"PR#0"
  290. 2890  IF P1 = 0  THEN  PRINT : PRINT "PRESS SPACE BAR ---> ";: GET BW$
  291. 2900  RETURN 
  292. 2910  REM  DROPPING TEST
  293. 2920  HOME : PRINT : PRINT : INPUT " DROP ONE TEST FROM HOW MANY TESTS ? ";TD
  294. 2930  PRINT : INPUT "TEST # -->  ";TM(1)
  295. 2940  FOR II = 2 TO TD
  296. 2950  PRINT : INPUT " & TEST # --> ";TM(II)
  297. 2960  NEXT 
  298. 2970  HOME : PRINT : PRINT " CHOOSE ONE:": PRINT : PRINT " (A) ASSIGN LOWEST TEST GRADE TO 0": PRINT " (B) ASSIGN A MINUS GRADE FOR THE ": PRINT "     LOWEST TEST": PRINT : PRINT " WHICH ? ";: GET WW$: PRINT  CHR$(7);WW$
  299. 2980  IF WW$ = "B"  THEN 3110
  300. 2990  IF WW$ = "A"  THEN 3010
  301. 3000  RETURN 
  302. 3010  FOR J = 1 TO NO(F)
  303. 3020 MI = TM(1)
  304. 3030 CP% = M%(TM(1),J)
  305. 3040  FOR II = 2 TO TD
  306. 3050 I = TM(II)
  307. 3060  IF M%(I,J) <CP%  THEN CP% = M%(I,J):MI = I
  308. 3070  NEXT 
  309. 3080 M%(MI,J) = 0
  310. 3090  NEXT 
  311. 3100  RETURN 
  312. 3110  PRINT : INPUT " ENTER THE MINUS GRADE TO TEST # ? ";TX
  313. 3120  PRINT : PRINT " ENTER TEST # ";TX;" DESCRIPTION : ": PRINT " (E.G. LOWEST TEST GRADE DROPPED FROM": PRINT " TEST #2 AND #8)": PRINT : INPUT "-> ";TT$(TX)
  314. 3130  FOR J = 1 TO NO(F)
  315. 3140 MI = TM(1)
  316. 3150 CP% = M%(TM(1),J)
  317. 3160  FOR II = 2 TO TD
  318. 3170 I = TM(II)
  319. 3180  IF M%(I,J) <CP%  THEN CP% = M%(I,J):MI = I
  320. 3190  NEXT 
  321. 3200 M%(TX,J) =  -M%(MI,J)
  322. 3210  NEXT 
  323. 3220  RETURN 
  324. 3230  REM  ERASE AND RECORD
  325. 3240  VTAB 23: INPUT "ERASE AND GET TOTALS? (Y/N) ";ER$: IF (ER$ < >"Y")  AND (ER$ < >"YES")  THEN  RETURN 
  326. 3250  FOR J = 1 TO NO(F):MP% = 0
  327. 3260  FOR II = 1 TO 15
  328. 3270 MP% = MP% +M%(II,J)
  329. 3280 M%(II,J) = 0
  330. 3290  NEXT 
  331. 3300 M%(1,J) = MP%
  332. 3310  NEXT 
  333. 3320 TT$(1) = "TOTAL POINTS FOR THE LAST 15 TESTS": FOR X = 2 TO 15:TT$(X) = "": NEXT 
  334. 3330  RETURN 
  335. 3340  REM  ADJUST SCORES
  336. 3350  HOME : PRINT "           ---------------": PRINT "           ";: INVERSE : PRINT " ADJUST SCORES ": NORMAL : PRINT "           ---------------": REM  11 SPACES & 15 -'S
  337. 3360  PRINT : PRINT "CLASS # ";F;" : ";T$(F)
  338. 3370  VTAB 8: INPUT "WHICH TEST ? (1-15) ";TX
  339. 3380  IF TX >15  OR TX <1  THEN 3370
  340. 3390 CP% = M%(TX,1):BP% = M%(TX,1)
  341. 3400  FOR J = 2 TO NO(F)
  342. 3410  IF M%(TX,J) <CP%  THEN CP% = M%(TX,J)
  343. 3420  IF M%(TX,J) >BP%  THEN BP% = M%(TX,J)
  344. 3430  NEXT : PRINT 
  345. 3440  PRINT "HIGHEST SCORE : ";BP%: PRINT "LOWEST SCORE : ";CP%
  346. 3450  PRINT : INPUT "ENTER LOWER RAW SCORE:";X1: INPUT "ENTER LOWER ADJUSTED SCORE:";Y1
  347. 3460  PRINT : INPUT "ENTER UPPER RAW SCORE:";X2: INPUT "ENTER UPPER ADJUSTED SCORE:";Y2
  348. 3470  HOME : PRINT " STUDENT #    RAW SCORE   ADJUSTED SCORE": PRINT 
  349. 3480  IF X1 -X2 = 0  THEN  RETURN 
  350. 3490  FOR J = 1 TO NO(F)
  351. 3500 MM%(TX,J) =  INT((M%(TX,J) -X1) *(Y1 -Y2)/(X1 -X2) +Y1 +.5)
  352. 3510  GOSUB 3540: HTAB 5: PRINT J;: HTAB 19: PRINT M%(TX,J);: HTAB 32: PRINT MM%(TX,J)
  353. 3520  NEXT 
  354. 3530  GOTO 3580
  355. 3540  IF J/20 < > INT(J/20)  THEN  RETURN 
  356. 3550  VTAB 24: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$
  357. 3560  HOME : PRINT " STUDENT #   RAW SCORE   ADJUSTED SCORE": PRINT 
  358. 3570  RETURN 
  359. 3580  VTAB 24: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$
  360. 3590  HOME : PRINT : PRINT "PRINT ADJUSTED SCORE? (Y/N) ";: GET BW$: IF BW$ < >"Y"  THEN 3620
  361. 3600  PRINT D$"PR#"SL: PRINT : PRINT : PRINT "TEST # ";TX: PRINT : PRINT " STUDENT #    RAW SCORE    ADJUSTED SCORE"
  362. 3610  PRINT : FOR J = 1 TO NO(F): HTAB 6: PRINT J;: HTAB 18: PRINT M%(TX,J);: HTAB 33: PRINT MM%(TX,J): NEXT : PRINT : PRINT D$"PR#0"
  363. 3620  PRINT : PRINT : PRINT "REPLACE THE RAW SCORES BY THE ADJUSTED": PRINT "SCORES? (Y/N) ";: GET BW$
  364. 3630  IF BW$ = "Y"  THEN  FOR J = 1 TO NO(F):M%(TX,J) = MM%(TX,J): NEXT 
  365. 3640  RETURN 
  366. 3650  REM  CURRENT DATE
  367. 3660  HOME : PRINT "                 ------": PRINT "                 ";: INVERSE : PRINT " DATE ": NORMAL : PRINT "                 ------": REM  17 SPACES & 6 -'S
  368. 3670  PRINT : PRINT : PRINT " CURRENT DATE IS : ";CD$
  369. 3680  PRINT : PRINT " OPTIONS:": PRINT : PRINT " (1) PRINT CURRENT DATE": PRINT " (2) ENTER CURRENT DATE": PRINT " (3) QUIT": PRINT : PRINT " WHICH? ";: GET BW$: PRINT BW$
  370. 3690  IF BW$ < >"1"  THEN 3750
  371. 3700  IF P1 = 1  THEN 3740
  372. 3710  PRINT : INVERSE : PRINT  CHR$(7);" ERROR: PRINTER STATUS IS 'OFF'": NORMAL 
  373. 3720  VTAB 22: HTAB 2: PRINT "PRESS <RET> KEY TO CLEAR ";: GET WW$: IF WW$ < > CHR$(13)  THEN 3720
  374. 3730  GOTO 3660
  375. 3740  PRINT D$"PR#"SL: PRINT : PRINT "CURRENT DATE: ";CD$: PRINT : PRINT : PRINT D$"PR#0"
  376. 3750  IF BW$ = "2"  THEN  PRINT : PRINT : INPUT " CURRENT DATE : ";CD$
  377. 3760  IF BW$ = "3"  THEN  RETURN 
  378. 3770  GOTO 3650
  379. 3780  REM  MESSAGE/PROVERB
  380. 3790  HOME : PRINT "    ---------------------": NORMAL : PRINT "    ";: INVERSE : PRINT " MESSAGES / PROVERBS ": NORMAL : PRINT "    ---------------------"
  381. 3800  PRINT : PRINT : PRINT " TODAY'S MESSAGE / PROVERB :": PRINT : PRINT " ";PB$: PRINT 
  382. 3810  PRINT : PRINT " OPTIONS:": PRINT : PRINT " (1) PRINT MESSAGE": PRINT " (2) ENTER/CHANGE MESSAGE": PRINT " (3) QUIT": PRINT : PRINT " WHICH? ";: GET BW$: PRINT BW$
  383. 3820  IF BW$ < >"1"  THEN 3890
  384. 3830  IF P1 = 1  THEN 3870
  385. 3840  PRINT : INVERSE : PRINT  CHR$(7);" ERROR: PRINTER STATUS IS 'OFF' "
  386. 3850  NORMAL : VTAB 22: HTAB 2: PRINT "PRESS <RET> KEY TO CLEAR ";: GET WW$: IF WW$ < > CHR$(13)  THEN 3850
  387. 3860  GOTO 3790
  388. 3870  PRINT D$"PR#"SL: PRINT : FOR A1 = 1 TO 70: PRINT "-";: NEXT A1: PRINT "": PRINT PB$
  389. 3880  IF BW$ = "1"  THEN A1 = A1: FOR A1 = 1 TO 70: PRINT "-";: NEXT A1: PRINT "": PRINT D$"PR#0"
  390. 3890  IF BW$ = "2"  THEN  PRINT : PRINT : PRINT " ENTER PROVERB : ": PRINT : INPUT " ";PB$
  391. 3900  IF BW$ = "3"  THEN  RETURN 
  392. 3910  GOTO 3780
  393. 3920  REM  RETURN
  394. 3930  RETURN 
  395. 3940  PRINT D$;"OPEN ";NM$(F): PRINT D$;"READ ";NM$(F): FOR L = 1 TO NO(F): INPUT X$(L): NEXT : PRINT D$;"CLOSE ";NM$(F)
  396. 3950  RETURN 
  397. 3960  REM  CHANGE PRINTER STATUS
  398. 3970  VTAB 23: HTAB 1: INPUT "NEW STATUS: (ON/OFF) -> ";S1$
  399. 3980  IF S1$ = "ON"  THEN S$ = " ON ":P1 = 1
  400. 3990  IF S1$ = "OFF"  THEN S$ = " OFF ":P1 = 0
  401. 4000  RETURN 
  402. 4010  REM  SHOWING GRADES
  403. 4020  FOR JK = (J -JC) TO J: IF JK <10  THEN  PRINT " (";JK;")";
  404. 4030  IF JK >9  THEN  PRINT "(";JK;")";
  405. 4040  FOR I = 10 TO 15
  406. 4050  IF M%(I,JK) <0  THEN 4090
  407. 4060  IF M%(I,JK) <10  THEN  PRINT  SPC( 3);M%(I,JK);: NEXT : PRINT : NEXT : GOTO 4120
  408. 4070  IF M%(I,JK) <100  THEN  PRINT  SPC( 2);M%(I,JK);: NEXT : PRINT : NEXT : GOTO 4120
  409. 4080  PRINT " ";M%(I,JK);: NEXT : PRINT : NEXT : GOTO 4120
  410. 4090  IF M%(I,JK) > -10  THEN  PRINT  SPC( 2);M%(I,JK);: NEXT : PRINT : NEXT : GOTO 4120
  411. 4100  IF M%(I,JK) > -100  THEN  PRINT " ";M%(I,JK);: NEXT : PRINT : NEXT : GOTO 4120
  412. 4110  PRINT M%(I,JK);: NEXT : PRINT : NEXT 
  413. 4120  VTAB 24: PRINT "C) CONTINUE --> ";: GET BW$
  414. 4130  HOME : PRINT "TEST";: FOR I = 1 TO 9: PRINT  SPC( 3);I;: NEXT : FOR I = 1 TO 40: PRINT "-";: NEXT : RETURN 
  415. 4140  REM  CHANGE TEST CONTENT
  416. 4150  HOME : PRINT "         ---------------------": PRINT "         ";: INVERSE : PRINT " CHANGE TEST CONTENT ": NORMAL : PRINT "         ---------------------": PRINT : REM  9 SPACES & 21 -'S
  417. 4160  PRINT "CLASS # ";F;" : ";T$(F): PRINT : PRINT 
  418. 4170  VTAB 8: INPUT "TEST NUMBER : ";TN
  419. 4180  IF TN >15  THEN 4170
  420. 4190  PRINT : INVERSE : PRINT "OLD";: NORMAL : PRINT " TEST CONTENT : ": PRINT TT$(TN)
  421. 4200  PRINT : INVERSE : PRINT "NEW";: NORMAL : PRINT " TEST CONTENT : ": INPUT TT$(TN)
  422. 4210  PRINT : PRINT : PRINT "ANY MORE? (Y/N) ";: GET BW$
  423. 4220  IF BW$ = "N"  THEN  RETURN 
  424. 4230  GOTO 4150
  425. 4240  REM  CHANGE STUDENT IDENTIFICATION
  426. 4250  PRINT D$;"OPEN ";NM$(F): PRINT D$;"READ ";NM$(F): FOR II = 1 TO NO(F): INPUT X$(II): NEXT : PRINT D$;"CLOSE ";NM$(F)
  427. 4260  HOME : PRINT : PRINT " OPTIONS:": PRINT : PRINT " (A) CHANGE ALL IDENTIFICATIONS": PRINT " (B) CHANGE ONLY SOME IDENTIFICATIONS": PRINT : PRINT " WHICH? ";: GET BW$
  428. 4270  HOME : PRINT "   -------------------------------": PRINT "   ";: INVERSE : PRINT " CHANGE STUDENT IDENTIFICATION ": NORMAL : PRINT "   -------------------------------": REM  3 SPACES & 31 -'S
  429. 4280  PRINT : PRINT "CLASS # ";F;" : ";T$(F): PRINT : PRINT 
  430. 4290  IF BW$ = "A"  THEN 4370
  431. 4300  VTAB 9: INPUT "STUDENT NUMBER : ";ST
  432. 4310  IF ST >NO(F)  THEN 4300
  433. 4320  PRINT : PRINT "OLD DATA : ";X$(ST)
  434. 4330  INPUT "NEW DATA : ";X$(ST)
  435. 4340  PRINT : PRINT : PRINT "ANYMORE? (Y/N) ";: GET BW$: PRINT BW$
  436. 4350  IF BW$ = "Y"  THEN 4270
  437. 4360  GOTO 4380
  438. 4370  FOR I = 1 TO NO(F): VTAB 9: PRINT "ENTER IDENTIFICATIONS:": PRINT : PRINT " # ";I;") :                      ";: HTAB 10: INPUT X$(I): NEXT : REM  22 SPACES BETWEEN QUOTES
  439. 4380  PRINT D$;"OPEN ";NM$(F): PRINT D$;"WRITE ";NM$(F)
  440. 4390  FOR II = 1 TO NO(F): PRINT X$(II): NEXT 
  441. 4400  PRINT D$;"CLOSE ";NM$(F)
  442. 4410  RETURN 
  443. 4420  REM  RETRIEVE CLASS INFORMATION
  444. 4430  HOME : PRINT : PRINT "THIS IS :": INVERSE : PRINT "CLASS # ";F;" : ";T$(F)
  445. 4440  NORMAL : PRINT : PRINT "NO. OF STUDENTS IS :": INVERSE : PRINT NO(F)
  446. 4450  FOR II = 1 TO 15
  447. 4460  IF  LEN(TT$(II)) = 0  THEN 4480
  448. 4470  NEXT 
  449. 4480  NORMAL : PRINT : PRINT "NO. OF TESTS ALREADY ENTERED IS :": INVERSE : PRINT II -1: NORMAL 
  450. 4490  VTAB 24: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$
  451. 4500  RETURN 
  452. 4510  REM  OTHER OPTIONS
  453. 4520  HOME : VTAB 2: HTAB 11: PRINT "-------------------": HTAB 11: INVERSE : PRINT " NIBBLE GRADE BOOK ": NORMAL : HTAB 11: PRINT "-------------------": PRINT : PRINT : REM  19 -'S
  454. 4530  PRINT "  OPTIONS:": PRINT : PRINT "  (1) CHANGE NO. OF CLASSES": PRINT "  (2) CHANGE CLASS TITLES": PRINT "  (3) RETRIEVE GENERAL CLASS INFO.": PRINT "  (4) RENEW": PRINT "  (5) RETURN": PRINT "  (6) QUIT"
  455. 4540  PRINT : PRINT : PRINT "  WHICH? ";: GET BW$: PRINT BW$
  456. 4550  IF BW$ <"1"  OR BW$ >"6"  THEN 4520
  457. 4560 W =  ASC(BW$) - ASC("0")
  458. 4570  ON W GOSUB 4590,4900,5010,5100,4580,5080
  459. 4580  GOTO 130
  460. 4590  REM  CHANGE # OF CLASSES
  461. 4600  HOME : PRINT "        ---------------------": PRINT "        ";: INVERSE : PRINT " CHANGE # OF CLASSES ": NORMAL : PRINT "        ---------------------": PRINT : PRINT : REM  8 SPACES & 21 -'S
  462. 4610  PRINT "OPTIONS: ": PRINT "(A) ADD ONE CLASS": PRINT "(D) DELETE ONE CLASS": PRINT "(Q) QUIT": PRINT : PRINT : PRINT " WHICH? ";: GET WH$: PRINT WH$
  463. 4620  IF WH$ = "A"  THEN 4660
  464. 4630  IF WH$ = "D"  THEN 4750
  465. 4640  IF WH$ = "Q"  THEN  RETURN 
  466. 4650  GOTO 4590
  467. 4660  IF N = 10  THEN  PRINT  CHR$(7)" SORRY, IMPOSSIBLE!": PRINT : PRINT " MAX. NUMBER OF CLASSES IS 10": FOR IH = 1 TO 3000: NEXT : RETURN 
  468. 4670 N = N +1: PRINT : PRINT " ADD CLASS # ";N: PRINT : PRINT " ENTER CLASS TITLE :": INPUT " --> ";T$(N)
  469. 4680  PRINT : INPUT " ENTER NO. OF STUDENTS : ";NO(N): IF NO(N) >80  THEN  PRINT " MAX. NUMBER OF STUDENTS IS 80": FOR IH = 1 TO 3000: NEXT : RETURN 
  470. 4690  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS": PRINT N: FOR I = 1 TO N: PRINT T$(I): PRINT NO(I): NEXT 
  471. 4700  PRINT D$;"CLOSE CLASS"
  472. 4710  PRINT D$;"OPEN ";NM$(N): PRINT D$;"WRITE ";NM$(N): FOR L = 1 TO NO(N): PRINT "": NEXT 
  473. 4720  PRINT D$;"CLOSE ";NM$(N)
  474. 4730 F = N:Z$ = MA$(N): GOSUB 440
  475. 4740  RETURN 
  476. 4750  PRINT : INPUT "DELETE CLASS # --> ";CX: IF CX >N  THEN  RETURN 
  477. 4760  PRINT : PRINT "CLASS # ";CX;" : ";T$(CX): PRINT : INPUT "DO YOU WANT TO DELETE THIS CLASS? ";Y$
  478. 4770  IF Y$ = "Y"  THEN 4790
  479. 4780  RETURN 
  480. 4790  PRINT : PRINT "DELETE ..."
  481. 4800  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS": PRINT N -1
  482. 4810  IF CX = 1  THEN 4840
  483. 4820  FOR I = 1 TO CX -1: PRINT T$(I): PRINT NO(I): NEXT 
  484. 4830  FOR I = CX +1 TO N: PRINT T$(I): PRINT NO(I): NEXT : GOTO 4850
  485. 4840  FOR I = 2 TO N: PRINT T$(I): PRINT NO(I): NEXT 
  486. 4850  PRINT D$;"CLOSE CLASS"
  487. 4860  PRINT D$;"DELETE ";MA$(CX): PRINT D$;"DELETE ";NM$(CX): PRINT D$;"DELETE ";TX$(CX): PRINT "RENAME ..."
  488. 4870  IF CX = N  THEN 130
  489. 4880  FOR I = CX +1 TO N: PRINT D$;"RENAME ";MA$(I);",";MA$(I -1): PRINT D$;"RENAME ";NM$(I);",";NM$(I -1): PRINT D$;"RENAME ";TX$(I);",";TX$(I -1): NEXT 
  490. 4890  GOTO 130
  491. 4900  REM  CHANGE CLASS TITLE
  492. 4910  HOME : PRINT "        --------------------": PRINT "        ";: INVERSE : PRINT " CHANGE CLASS TITLE ": NORMAL : PRINT "        --------------------"
  493. 4920  PRINT : PRINT : INPUT " CLASS NUMBER : ";CC
  494. 4930  IF CC >N  OR CC <1  THEN 4900
  495. 4940  PRINT : PRINT " ";: INVERSE : PRINT "OLD";: NORMAL : PRINT " TITLE : ";T$(CC)
  496. 4950  PRINT : PRINT " ";: INVERSE : PRINT "NEW";: NORMAL : INPUT "TITLE : ";T$(CC)
  497. 4960  PRINT : PRINT : PRINT " ANYMORE? (Y/N) ";: GET BW$: PRINT BW$
  498. 4970  IF BW$ = "Y"  THEN 4900
  499. 4980  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS": PRINT N: FOR I = 1 TO N: PRINT T$(I): PRINT NO(I): NEXT 
  500. 4990  PRINT D$;"CLOSE CLASS"
  501. 5000  RETURN 
  502. 5010  REM  RETRIEVE
  503. 5020  HOME : PRINT "     ----------------------------": PRINT "     ";: INVERSE : PRINT " RETRIEVE CLASS INFORMATION ": NORMAL : PRINT "     ----------------------------": REM  5 SPACES & 28 -'S
  504. 5030  PRINT : PRINT "CLASS #   TITLE            # OF STUDENT": PRINT : REM  12 SPACES
  505. 5040  FOR I = 1 TO N
  506. 5050  PRINT "   ";I;: HTAB 11: PRINT T$(I);: HTAB 34: PRINT NO(I): NEXT 
  507. 5060  VTAB 22: PRINT "PRESS SPACE BAR TO CONTINUE --> ";: GET BW$: PRINT BW$
  508. 5070  RETURN 
  509. 5080  HOME : VTAB 12: HTAB 1: PRINT "          ";: INVERSE : PRINT " PROGRAM TERMINATED ": NORMAL : PRINT : PRINT : PRINT "          TO RESTART :": PRINT : PRINT "          TYPE IN 'RUN' &"
  510. 5090  PRINT "          PRESS <RETURN>": VTAB 24: END 
  511. 5100  VTAB 20: HTAB 1: PRINT " NEW/RENEW WILL ";: INVERSE : PRINT "DESTROY";: NORMAL : PRINT " ALL DATA FILES!": INPUT " DO YOU REALLY WANT TO DO SO? ";AD$
  512. 5110  IF  LEFT$(AD$,1) = "N"  THEN  RETURN 
  513. 5120  REM  NEW/RENEW
  514. 5130  HOME : PRINT : PRINT "            -------------": PRINT "            ";: INVERSE : PRINT " NEW / RENEW ": NORMAL : PRINT "            -------------": PRINT : PRINT : PRINT : REM   12 SPACES & 13 -'S
  515. 5140  IF N = 0  THEN 5170
  516. 5150  PRINT "PLEASE WAIT ...": PRINT 
  517. 5160  FOR I = 1 TO N: PRINT D$;"DELETE ";MA$(I): PRINT D$;"DELETE ";NM$(I): PRINT D$;"DELETE ";TX$(I): NEXT 
  518. 5170  PRINT D$;"DELETE CLASS"
  519. 5180  VTAB 7: CALL  -958: PRINT "HOW MANY CLASSES DO YOU WANT TO HAVE": INPUT "IN YOUR GRADE BOOK? ";K$:N =  VAL(K$): IF N <1  OR N >10  THEN 5180
  520. 5190  FOR I = 1 TO N
  521. 5200  VTAB 11: CALL  -958: PRINT "ENTER IDENTIFIER (CLASS TITLE ETC.)": PRINT "FOR CLASS # ";I;" :": INPUT "->";T$(I)
  522. 5210  VTAB 14: CALL  -958: PRINT "NO. OF STUDENTS IN THE CLASS: ";: INPUT "";K$:NO(I) =  VAL(K$): IF NO(I) <1  OR NO(I) >80  THEN 5210
  523. 5220  NEXT 
  524. 5230  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS"
  525. 5240  PRINT N: FOR I = 1 TO N: PRINT T$(I): PRINT NO(I): NEXT 
  526. 5250  PRINT D$;"CLOSE CLASS"
  527. 5260  FOR I = 1 TO N
  528. 5270  HOME : PRINT : PRINT "             -------------": PRINT "             ";: INVERSE : PRINT " NEW / RENEW ": NORMAL : PRINT "             -------------": PRINT : PRINT : PRINT : REM  13 SPACES & 13 -'S
  529. 5280  VTAB 11: PRINT "ENTER STUDENTS' IDENTIFICATIONS FOR": PRINT "CLASS # ";I;" : ":K = NO(I)
  530. 5290  VTAB 22: CALL  -958: PRINT "SET VERIFY MODE ON (Y/N)? ";: INPUT "";WW$: IF   NOT (WW$ = "Y"  OR WW$ = "N")  THEN  HTAB 1: GOTO 5290
  531. 5300  IF WW$ = "Y"  THEN VM = 1
  532. 5310  IF WW$ = "N"  THEN VM = 0
  533. 5320  FOR J = 1 TO K
  534. 5330  VTAB 14: HTAB 1: CALL  -958: VTAB 22: PRINT "VERIFY MODE : ";: INVERSE : IF VM = 1  THEN  PRINT " ON ";: NORMAL : PRINT "  "
  535. 5340  IF VM = 0  THEN  PRINT " OFF ": NORMAL 
  536. 5350  VTAB 14: PRINT J;") : ";: INPUT X$(J): IF X$(1) = ""  THEN 5440
  537. 5360  IF VM = 0  THEN 5420
  538. 5370  VTAB 14: CALL  -958: PRINT J;") : ";X$(J): PRINT : PRINT "VERIFY -> CONFIRM <RETURN>": PRINT "          REENTER <ESCAPE>": PRINT : PRINT "ENTER <RET> OR <ESC> ";: REM  10 SPACES
  539. 5380  GET WW$: IF   NOT (WW$ =  CHR$(13)  OR WW$ =  CHR$(27))  THEN 5380
  540. 5390  VTAB 16: HTAB 1: PRINT  SPC( 158): PRINT 
  541. 5400  IF WW$ =  CHR$(13)  THEN 5420
  542. 5410  GOTO 5350
  543. 5420  NEXT J
  544. 5430  GOTO 5450
  545. 5440  FOR J = 1 TO K:X$(J) = "": NEXT 
  546. 5450  PRINT D$;"OPEN ";NM$(I): PRINT D$;"WRITE ";NM$(I): FOR L = 1 TO K: PRINT X$(L): NEXT : PRINT D$;"CLOSE ";NM$(I)
  547. 5460 F = I:Z$ = MA$(I): GOSUB 440
  548. 5470  VTAB 16: PRINT  SPC( 22): PRINT : PRINT : PRINT  SPC( 25): PRINT 
  549. 5480  NEXT 
  550. 5490  RETURN 
  551. 5500  REM  FILL ARRAYS
  552. 5510  FOR I = 1 TO 10:MA$(I) = "MARK" + STR$(I):NM$(I) = "NAME" + STR$(I):TX$(I) = "TEXT" + STR$(I): NEXT 
  553. 5520  RETURN 
  554. 5530 ER =  PEEK(222)
  555. 5540  IF ER = 5  THEN 5630
  556. 5550  IF ER = 4  THEN  PRINT "DISK WRITE PROTECTED": GOTO 5620
  557. 5560  IF ER = 8  THEN  PRINT "DISK I/O ERROR": GOTO 5620
  558. 5570  IF ER = 9  THEN  PRINT "DISK FULL": GOTO 5620
  559. 5580  IF ER = 10  THEN  PRINT "FILE LOCKED": GOTO 5620
  560. 5590  IF ER = 11  THEN  PRINT "ILLEGAL FILE NAME": GOTO 5620
  561. 5600  IF ER = 13  THEN  PRINT "FILE TYPE MISMATCH": GOTO 5620
  562. 5610  PRINT "ERROR #";ER" IN LINE "; PEEK(218) + PEEK(219) *256
  563. 5620  PRINT "PRESS ANY KEY TO CONTINUE": GET K$: PRINT : GOTO 140
  564. 5630  PRINT D$"CLOSE": HOME : PRINT : INVERSE : PRINT  CHR$(7); CHR$(7); CHR$(7)" SYSTEM RE-INITIALIZING ": NORMAL 
  565. 5640  PRINT D$;"OPEN CLASS": PRINT D$;"WRITE CLASS": PRINT 0: PRINT D$;"CLOSE CLASS"
  566. 5650  ONERR  GOTO 5670
  567. 5660  GOTO 150
  568. 5670  RESUME