20  DIM C$[10],I$[20]
30  REM SGFMS, HP 36832A, 6/74
40  REM ARRAYS B AND C MUST BE IDENTICAL IN SIZE TO ARRAYS B AND C
60  REM IN THE STUDENT GRADE FILE MANAGEMENT SYSTEM
80  REM ARRAY B CONTAINS RX GRADE, ARRAY C CONTAINS THE CRITERIA
100  DIM C[40],B[40],Y$[25]
120  DIM K[3],D$[25],Z$[4]
140  DIM O$[65],S[100]
160  F1=1
180  F2=2
200  PRINT "PASSWORD";
220  INPUT C$
240  REM PASSWORD = CONTROL GO
260  IF C$='7'13 THEN 300
280  GOTO 200
300  REM FILEA CONTAINS STUDENT GRADES, FILEB--CRITERIA
320  FILES FILEA,FILEB
340  IF  END #F1 THEN 4200
360  B9=40
380  MAT S=ZER
400  PRINT "CRITERIA OCCURANCE REPORT PROGRAM"
420  REM N4--NUMBER OF STUDENTS REGISTERED ON SYSTEM
440  REM L8--MAX RECORDS ALLOCATED
460  REM C9--MAX NUMBER OF CRITERIA RECORDS ALLOCATED
480  REM Y$--CONTAINS COURSE NAME
500  READ #F1,1;N4,L8,C9,Y$
520  PRINT "PRINT REPORT BY PUPIL, EXERCISE OR SUMMARY";
540  INPUT C$
560  IF C$="PUPIL" THEN 2220
580  IF C$[1,3]="EXE" THEN 660
600  IF C$="SUMMARY" THEN 3240
620  GOTO 520
640  REM-----------------------ANALYSIS BY RX#
660  PRINT "PRINT SINGLE OR ALL";
680  INPUT C$
700  IF C$ <> "SINGLE" THEN 740
720  GOTO 840
740  IF C$="ALL" THEN 1380
760  GOTO 660
780  MAT S=ZER
800  LET B0=0
820  REM---------------------
840  PRINT "SELECT EXERCISE #";
860  INPUT I1
880  PRINT LIN(3),"CRITERIA ANALYSIS   ",Y$
900  LET B0=0
920  FOR R1=2 TO N4
940  REM READ A STUDENT RECORD
960  GOSUB 4080
980  IF B[I1]<0 THEN 1100
1000  GOSUB 3760
1020  FOR I=1 TO I9
1040  J=K[I]
1060  S[J]=S[J]+1
1080  NEXT I
1100  NEXT R1
1120  PRINT "EXERCISE #";I1
1140  FOR C1=1 TO C9
1160  IF  END #F2 THEN 1320
1180  REM READ CRITERIA FROM DISC
1200  GOSUB 4140
1220  PRINT 
1240  L0=LEN(O$)
1260  PRINT C1;O$[1,L0]
1280  PRINT "CRITERION OCCURANCE -- ";S[C1]
1300  NEXT C1
1320  PRINT LIN(4)
1340  PRINT '13'10'10'10"REPORT COMPLETE"
1360  STOP 
1380  REM--------------------
1400  PRINT "INSTRUCTOR";
1420  INPUT I$
1440  PRINT "QUARTER";
1460  INPUT C$
1480  FOR I1=1 TO B9
1500  LET B0=0
1520  MAT S=ZER
1540  PRINT LIN(3),"-----"
1560  PRINT LIN(3),"CRITERIA ANALYSIS   ",Y$
1580  PRINT C$,SPA(15),I$
1600  FOR R1=2 TO N4
1620  REM READ A STUDENT RECORD
1640  REM FOR SOME WEIRD REASON THIS PROGRAM BOMBS IF A GOSUB
1660  REM IS USED TO READ THE DISC AFTER THE 10TH LOOP 
1680  REM-----------------------DISC READ
1700  READ #F1,R1;D$,Z$
1720  MAT  READ #F1;B,C
1740  REM-----------------------
1760  IF B[I1]<0 THEN 1880
1780  GOSUB 3760
1800  FOR I=1 TO I9
1820  J=K[I]
1840  S[J]=S[J]+1
1860  NEXT I
1880  NEXT R1
1900  PRINT 
1920  PRINT TAB(15),"--------------"
1940  PRINT TAB(15),"EXERCISE #";I1
1960  PRINT TAB(15),"--------------"
1980  FOR C1=1 TO C9
2000  IF  END #F2 THEN 2160
2020  REM READ CRITERIA FROM DISC
2040  GOSUB 4140
2060  PRINT 
2080  L0=LEN(O$)
2100  PRINT C1;O$[1,L0]
2120  PRINT "CRITERION OCCURANCE -- ";S[C1]
2140  NEXT C1
2160  NEXT I1
2180  PRINT LIN(4),"REPORT COMPLETE"
2200  STOP 
2220  REM--------------------------------ANALYSIS BY PUPIL
2240  PRINT "PRINT CRITERIA";
2260  INPUT C$
2280  IF C$="N" THEN 2540
2300  IF C$="NO" THEN 2540
2320  IF C$="YES" THEN 2380
2340  IF C$="Y" THEN 2380
2360  GOTO 1880
2380  PRINT LIN(5),"CRITERIA     ",Y$,LIN(1)
2400  FOR C1=1 TO C9
2420  IF  END #F2 THEN 2520
2440  GOSUB 4140
2460  LET L0=LEN(O$)
2480  PRINT C1;O$[1,L0]
2500  NEXT C1
2520  PRINT LIN(4)
2540  PRINT LIN(3),"CRITERIA ANALYSIS   ",Y$
2560  PRINT LIN(2)
2580  FOR R1=2 TO N4
2600  REM READ A STUDENT RECORD
2620  GOSUB 4080
2640  MAT S=ZER
2660  LET K9=0
2680  FOR I1=1 TO B9
2700  IF B[I1]<0 THEN 2880
2720  LET K9=K9+1
2740  GOSUB 3760
2760  REM COUNT THE CRITERIA IN THE RECORD
2780  FOR I=1 TO I9
2800  J=K[I]
2820  S[J]=S[J]+1
2840  NEXT I
2860  NEXT I1
2880  PRINT  USING 2900;R1-1,D$,K9
2900  IMAGE 3D,3X,25A," N -- ",3D
2920  LET I=J=0
2940  LET I=I+1
2960  IF I>C9 THEN 3160
2980  IF S[I]<1 THEN 2940
3000  PRINT  USING 3020;I,S[I]
3020  IMAGE #,"    C",2D,"--",3D
3040  LET J=J+1
3060  REM IF J>=5 THEN RETURN THE CARRAGE
3080  IF J<5 THEN 2940
3100  PRINT '13
3120  LET J=0
3140  GOTO 2940
3160  PRINT '13'10'10
3180  NEXT R1
3200  PRINT LIN(4),"REPORT COMPLETE"
3220  STOP 
3240  REM-------------------------------SUMMARY PRINT
3260  PRINT LIN(4)
3280  PRINT "CRITERIA SUMMARY      ";Y$
3300  FOR R1=2 TO N4
3320  GOSUB 4080
3340  FOR I1=1 TO B9
3360  IF B[I1]<0 THEN 3500
3380  GOSUB 3760
3400  FOR I=1 TO I9
3420  LET J=K[I]
3440  LET S[J]=S[J]+1
3460  NEXT I
3480  NEXT I1
3500  NEXT R1
3520  FOR C1=1 TO C9
3540  IF  END #F2 THEN 3700
3560  REM READ CRITERIA FROM DISC
3580  GOSUB 4140
3600  PRINT 
3620  LET L0=LEN(O$)
3640  PRINT C1;O$[1,L0]
3660  PRINT "CRITERION OCCURANCE -- ";S[C1]
3680  NEXT C1
3700  PRINT LIN(3)
3720  PRINT "SUMMARY REPORT COMPLETE"'13'10
3740  STOP 
3760  IF C[I1]>99 THEN 3840
3780  LET K[1]=C[I1]
3800  LET I9=1
3820  GOTO 4040
3840  IF C[I1]>9999 THEN 3940
3860  LET K[2]=INT(C[I1]/100)
3880  LET K[1]=C[I1]-(K[2]*100)
3900  LET I9=2
3920  GOTO 4040
3940  LET K[3]=INT(C[I1]/10000)
3960  LET X1=INT(C[I1]-(K[3]*10000))
3980  LET K[2]=INT(X1/100)
4000  LET K[1]=X1-(K[2]*100)
4020  LET I9=3
4040  RETURN 
4060  REM -------------------------------STUDENT RECORD READ
4080  READ #F1,R1;D$,Z$
4100  MAT  READ #F1;B,C
4120  RETURN 
4140  REM--------------------CRITERIA READ
4160  READ #F2,C1;O$
4180  RETURN 
4200  PRINT "STUDENT GRADE FILE HAS NOT BEEN SET-UP"
4220  PRINT "THIS IS PERFORMED BY THE STUDENT GRADE FILE"
4240  PRINT "MANAGEMENT PROGRAM (SGFMS)"
4260  END 
