100 ! GRDC49 -- CREATE NEW CUM GPA FILE ! FROM SEMESTER GRADES. 120 ! THREE INPUT FILES ARE REQUIRED: ! (1) SUBJECT FILE (4 R/B) 140 ! (2) CLASS LIST FILE (CONTAINING GRADES) ! (3) PREV SEMESTER GPA FILE (4 R/B) 160 ! BOTH 4 AND 9 POINT GRADES ARE COMPUTED FOR ! CLASSES OF 74,75,76; 9 PT ONLY FOR 77. 180 ! 07-FEB-74 J. WARDEN WABASH COLLEGE 200 PRINT"CREATE NEW GPA FILE -- 4 & 9 POINT SYSTEM" : PRINT 220 DIM M%(30%) 240 READ F3$,F$,F0$ 260 DATA "DK0:SUBS74","DK3:GPAF73","DK0:CLS74" 280 PRINT"STANDARD FILES: ";F3$;" ";F$;" ";F0$ 300 INPUT"CORRECT (Y/N)";G1$ : IF ASCII(G1$)<>89% THEN F3$,F$,F0$="" 320 DEF FNC(X%)=CVT$F(MID(B$(B%),X%,4%)) 340 C9$=CHR$(13%)+CHR$(10%) : H0=120./32. ! HR/CRED 360 N%=4% : N6%=3% : N1%=510%/N% 380 ON ERROR GO TO 1940 400 DIM G$(9%),P4$(20%),P$(100%) 420 READ G$(I%) FOR I%=1% TO 9% 440 DATA "D ","C-","C ","C+","B-","B ","B+","A-","A " 460 READ G4%(I%) FOR I%=0% TO 9% 480 DATA 0,1,2,2,2,3,3,3,4,4 500 F9%=0% : F7%=0% ! INITIALIZE FLAGS 520 IF LEN(F3$)=0% THEN INPUT"SUBJECT FILE";F3$ 540 OPEN F3$ FOR INPUT AS FILE 1% 560 FIELD #1%, 127%*S% AS Z$, 127% AS S$(S%) FOR S%=0% TO 3% 580 DIM S%(400) 600 I%=1% 620 IF S%<3% THEN S%=S%+1% ELSE S%=0% : GET #1% 640 IF ASCII(S$(S%))=92% THEN S%(0%)=I%-1% : GO TO 680 660 J%=VAL(MID(S$(S%),8%,3%)) : S%(J%)=I% : I%=I%+1% : GO TO 620 680 & I%;"SUBJECT CODES ON FILE" 700 IF LEN(F$)=0% THEN INPUT"GPA FILE";F$ 720 OPEN F$ FOR INPUT AS FILE 6% 740 FIELD #6%,127%*B% AS Z$, 127% AS B$(B%) FOR B%=0% TO 3% 760 IF LEN(F0$)=0% THEN INPUT"CLASS LIST FILE";F0$ 780 OPEN F0$ FOR INPUT AS FILE 3% 800 CHANGE SYS(CHR$(6%)+CHR$(-8%)+CHR$(3%)) TO M% : D0%=M%(7%)+SWAP%(M%(8%)) 820 FIELD #3%,127%*A% AS Z$,127% AS A$(A%) FOR A%=0% TO 3% 840 INPUT"OUTPUT TO (DEV:FILE)";Z$ : IF Z$="" THEN Z$="LP:" 860 OPEN Z$ FOR OUTPUT AS FILE 4% 880 PUT #4%, RECORD D0% 900 FIELD #4%,127%*D% AS Z$, 127% AS D$(D%) FOR D%=0% TO 3% 920 D%,D0%=0% !!! 940 IF A%<3% THEN A%=A%+1% ELSE A%=0% : GET #3% 960 IF ASCII(A$(A%))=92% THEN 2040 ELSE I$=LEFT(A$(A%),6%) 980 U0%=U0%+1% : PRINT "*"; 1000 GOSUB 1740 ! LOOK UP PREV SEM GPA 1020 U%=(INSTR(40%,A$(A%)," ")-35%)/7% 1040 Q,Q0,H,H2,H4,H5 = 0. 1060 IF U%=0% THEN I%=0% : GO TO 1520 1080 FOR I%=1% TO U% 1100 C1$=MID(A$(A%),41%+(I%-1%)*7%,7%) 1120 C%=VAL(LEFT(C1$,3%)) : C%=S%(C%) 1140 S1%=(C%+N6%)/N% : S%=C%-1%-(S1%-1%)*N% : GET #1%, RECORD S1% 1160 G1$=MID(C1$,6%,2%) 1180 FOR J%=1% TO 9% 1200 IF G1$=G$(J%) THEN 1260 1220 NEXT J% 1240 J%=0% ! IF GRADE NOT FOUND QP=0 1260 H3=VAL(MID(C1$,4%,1%))/2. 1280 G9=J% : G4=G4%(J%) : Q1=G9*H3 : Q2=G4*H3 1300 IF LEFT(S$(S%),2%)<>"PE" THEN 1360 1320 IF J% OR G1$="CR" OR G1$="P " OR G1$="S " THEN H2=H2+H3 ! CREDITS PASSED 1340 Q1,Q2=0. : GO TO 1400 ! FOR PE, NO QP 1360 IF J%+INSTR(1%,"P S CR",G1$) THEN H2=H2+H3 : IF G1$<>"CR" AND G1$<>"S " THEN H5=H5+H3 : Q=Q+Q1 : Q0=Q0+Q2 ! CR TWD GRD QP9 QP4 1380 IF J%+INSTR(1%,"COF WF",G1$) THEN H4=H4+H3 ! CRED TWD CUM 1400 H=H+H3 ! CRED ATTEMPTED 1420 S6%=26% 1440 IF G1$="CO" THEN G1$="CON" 1460 IF G1$="P " THEN G1$="PAS" 1480 IF G1$="IN" THEN G1$="INC" 1500 NEXT I% 1520 IF H4<.01 THEN C0,C5=0. : GO TO 1560 1540 C0=Q/H4 : C5=Q0/H4 ! SEM GPA 9,4 1560 T7=H7+H2 : T8=H8+H5 : T9=H9+H4 1580 ! ACCUM GRAD GPA CREDITS 1600 IF T9<.01 THEN C9,C4=0. : GO TO 1640 1620 C9=(Q+Q9)/T9 : C4=(Q0+Q4)/T9 ! CUM GPA 9,4 1640 ! === CONSTRUCT NEW GPA RECORD === 1660 LSET D$(D%)=LEFT(A$(A%),40%)+CVTF$(C0)+CVTF$(C9)+ CVTF$(Q1)+CVTF$(H0*T7)+CVTF$(H0*T9)+CVTF$(H0*T8)+ CVTF$(C5)+CVTF$(C4)+CVTF$(Q2)+CVTF$(T7)+CVTF$(T9)+ CVTF$(T8)+" "+CVTF$(H4)+" "+RIGHT(A$(A%),101%) 1680 IF D%C5$ THEN 1900 1820 H7=FNC(77%) : H8=FNC(85%) : H9=FNC(81%) 1840 Q9=H9*FNC(45%) : Q4=H9*FNC(69%) 1860 ! CC PASSED, CC TWD GRAD, CC TWD CUM, QP9, QP4 1880 F9%=0% : RETURN ! (SET FLAG TO READ ANOTHER GPA) 1900 IF C5$5% THEN ON ERROR GO TO 0 1960 IF ERL=540% THEN &"CAN'T FIND ";F3$ : F3$="" : RESUME 520 1980 IF ERL=620% THEN & : &"RUN 'SUBIN' TO CREATE "; "A SUBJECT INDEX FILE" : GO TO 2120 2000 IF ERL=720% THEN &"CAN'T FIND ";F$ : F$="" : RESUME 700 2020 IF ERL=780% THEN &"CAN'T FIND ";F0$ : F0$="" : RESUME 760 2040 LSET D$(D%)="\\\\\\"+SPACE$(119%)+C9$ FOR D%=D% TO 3% 2060 D0%=D0%+1% : PUT #4%, RECORD D0% 2080 CLOSE 1%,2%,3%,4%,5%,6%,7% 2100 PRINT : PRINT U0%;"STUDENT RECORDS PROCESSED" 2120 END