1 ! HZSCOR -- COMPUTES MEAN & S.D HONORS EXAM ! SCORE FOR EACH CATEGORY; THEN WRITES Z-SCORES ! BACK INTO MASTER FILE. 2 ! 'SCO' FORMAT IS ASSUMED. 4 ! 12-MAR-74 J. WARDEN WABASH COLLEGE 50 PRINT"HONORS EXAM SCORING PROGRAM" 60 DIM S(10),S2(10),C(10) 70 READ E$(I%) FOR I%=1% TO 7% 72 DATA "AMERICAN HISTORY",ENGLISH,"WORLD HISTORY" 74 DATA BIOLOGY,CHEMISTRY,MATHEMATICS,PHYSICS 80 R1$="EXAMINATION NUMBER MEAN STD DEV" 82 R3$="----------- ------ ----- -------" 84 R2$="\ \ ##### ####.# #####.#" 100 DEF FNA$(X%)=MID(A$(A%),V2%(1%,X%),V2%(2%,X%)) 110 DEF FNA(X%)=CVT$F(MID(A$(A%),V2%(1%,X%),4%)) 120 DEF FNA%(X%)=CVT$%(MID(A$(A%),V2%(1%,X%),2%)) 140 N5%=1% : GOSUB 4000 180 ON ERROR GO TO 300 200 INPUT"INPUT FILE (DEV:FILE)";F1$ 210 OPEN F1$ FOR INPUT AS FILE 1% ! IS IT THERE? 220 CLOSE 1% ! YEP 240 OPEN F1$ AS FILE 1% 250 FIELD #1%,N1%*A% AS Z$,N1% AS A$(A%) FOR A%=0% TO N6% 280 P%=1% : PRINT"PASS 1" 290 GO TO 390 300 IF ERR<>5% THEN ON ERROR GO TO 0 340 PRINT CHR$(7%)+"** CAN'T FIND "+F1$+" **" : RESUME 360 360 INPUT"INPUT FILE (DEV:FILE)";F1$ ! TRY FOR INPUT FILE AGAIN 380 GO TO 240 390 ON ERROR GO TO 900 395 A0%=0% 400 IF A%89% THEN 400 ! NO EXAM 440 E1%=INSTR(1%,"AEW",FNA$(3%)) : E2%=INSTR(1%," BCMP",FNA$(4%)) 445 IF E1%*E2%=0% OR E2%<4% THEN 400 450 IF P%=2% THEN 470 ! THIS IS PASS 2 SO COMPUTE Z'S 452 E1=FNA(9%) : S(E1%)=S(E1%)+E1 : S2(E1%)=S2(E1%)+E1^2 454 E2=FNA(10%): S(E2%)=S(E2%)+E2 : S2(E2%)=S2(E2%)+E2^2 456 C(E1%)=C(E1%)+1% : C(E2%)=C(E2%)+1% 460 GO TO 400 470 Z1$=CVTF$( (FNA(9%)-M(E1%)) / D(E1%) ) 472 Z2$=CVTF$( (FNA(10%)-M(E2%)) / D(E2%) ) 474 A0$=A$(A%) 480 LSET A$(A%)=LEFT(A0$,69%)+Z1$+Z2$+RIGHT(A0$,78%) 500 PUT #1%, RECORD A0% 510 Q%=Q%+1% 520 GO TO 400 900 IF ERR<>11% THEN ON ERROR GO TO 0 950 RESUME 1000 1000 ! END OF FILE 1100 IF P%=2% THEN 1300 1150 P%=2% : A%=N6% 1155 PRINT : PRINT R1$ : PRINT R3$ 1160 FOR I%=1% TO 7% 1165 IF C(I%)==0. THEN M(I%),D(I%)=0. : GO TO 1185 1170 M(I%)=S(I%)/C(I%) 1180 D(I%)=SQR(S2(I%)/C(I%) - M(I%)^2) 1185 PRINT USING R2$,E$(I%),C(I%),M(I%),D(I%) 1190 NEXT I% 1200 PRINT : PRINT"PASS 2" : GO TO 395 1300 CLOSE 1%,2% 1350 PRINT Q%;"RECORDS PROCESSED" 1400 GO TO 9999 3900 ! === FILE ATTRIBUTES LOOKUP SUBROUTINE === 4000 DIM V2$(50),V2%(2,50) 4020 ON ERROR GO TO 4320 4030 F$="SCO" 4040 OPEN V1$+"$ATRIB" FOR INPUT AS FILE 1% 4060 FIELD #1%, 255%*A% AS Z$, 255% AS A$(A%) FOR A%=0% TO 1% 4080 IF A%<1% THEN A%=A%+1% ELSE A%=0% : GET #1% 4100 IF LEFT(A$(A%),3%)="\\\" THEN PRINT"NO SUCH FILE TYPE" : GO TO 9999 4120 IF LEFT(A$(A%),3%)<>F$ THEN 4080 4140 V2%(2%,0%),N%=VAL(MID(A$(A%),4%,2%)) : N9%=VAL(MID(A$(A%),6%,1%))*2% 4160 N1%=510%/N% : N2%=N1%-8% : N3%=N%*N1% : N6%=N%-1% 4180 FOR V%=1% TO 50% 4200 V2$(V%)=MID(A$(A%),42%+(V%-1%)*4%,2%) : IF V2$(V%)=" " THEN 4280 4220 V5%=CVT$%(MID(A$(A%),44%+(V%-1%)*4%,2%)) 4240 V2%(1%,V%)=ASCII(CHR$(V5%)) : V2%(2%,V%)=ASCII(CHR$(SWAP%(V5%))) 4260 NEXT V% 4280 V2%(1%,0%)=V%-1% : IF N5% THEN 4300 ELSE PRINT"CODES: "; : PRINT V2$(I%)+" "; FOR I%=1% TO V%-1% : PRINT 4300 CLOSE 1% : ON ERROR GO TO 0 : RETURN 4320 IF ERR<>5% AND ERR<>21% THEN 4380 ELSE RESUME 4340 4340 IF V1$="" THEN V1$="DK1:" : GO TO 4040 4380 PRINT"THE FILE '$ATRIB' HAS BEEN DELETED;" : PRINT"IT MUST BE REPLACED TO PROCEED." 9999 END