1 ! EXAMPL -- EXAMPLE OF RECORD I/O PROGRAM ! USING THE STANDARD ATRIBUTES SUBROUTINE. 2 ! CHANGE TO SUIT YOUR PURPOSE. 100 PRINT"CLASS FILE TALLY" 110 C%=75% ! SENIOR CLASS 115 C%=C%-70%+48%-1% 120 READ C$(I%) FOR I%=0% TO 5% 122 DATA UNCLASSIFIED,SENIORS,JUNIORS,SOPHOMORES,FRESHMEN,TOTAL 124 READ C%(I%) FOR I%=0% TO 5% 126 DATA 4,3,2,1,0,5 130 W$="\"+SPACE$(12%)+"\ " 132 W$=W$+" #### #### #### #### ####" 133 V$="CLASS " 134 V$=V$+" ENROLLED NOT ENR TOTAL OFF CPS TRANSFER" 136 U$="----- " 138 U$=U$+" -------- ------- ----- ------- --------" 140 N5%=1% : GOSUB 4000 180 ON ERROR GO TO 300 200 INPUT"CLASS FILE";F1$ 220 INPUT"OUTPUT TO";F2$ 240 OPEN F1$ FOR INPUT AS FILE 1% 250 FIELD #1%,N1%*A% AS Z$,N1% AS A$(A%) FOR A%=0% TO N6% 260 OPEN F2$ FOR OUTPUT AS FILE 2% 280 B%=0% 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 400 IF A%4% THEN Y%=0% 430 IF MID(A$(A%),41%,2%)=" " THEN R2%(Y%)=R2%(Y%)+1% ELSE R1%(Y%)=R1%(Y%)+1% 440 IF MID(A$(A%),123%,1%)="X" THEN R3%(Y%)=R3%(Y%)+1% 450 IF MID(A$(A%),122%,1%)="T" THEN R4%(Y%)=R4%(Y%)+1% 460 R0%(Y%)=R0%(Y%)+1% 480 ! - - - - - - - - - - - - - 520 GO TO 400 900 IF ERR<>11% THEN ON ERROR GO TO 0 1000 ! FINISH 1050 FOR I%=0% TO 4% 1052 R0%(5%)=R0%(5%)+R0%(I%) 1054 R1%(5%)=R1%(5%)+R1%(I%) 1056 R2%(5%)=R2%(5%)+R2%(I%) 1058 R3%(5%)=R3%(5%)+R3%(I%) : R4%(5%)=R4%(5%)+R4%(I%) 1060 NEXT I% 1080 PRINT #2%,"WABASH COLLEGE ENROLLMENT ON ";DATE$(0%);" AT ";TIME$(0%) 1090 PRINT #2% FOR I%=1% TO 3% 1100 PRINT #2%,V$ : PRINT #2%,U$ : PRINT #2% 1120 FOR I%=0% TO 5% 1125 R2%(I%)=R2%(I%)-R3%(I%) : R1%(I%)=R1%(I%)+R3%(I%) 1130 J%=C%(I%) 1140 PRINT #2%,USING W$,C$(J%),R1%(J%),R2%(J%),R0%(J%),R3%(J%),R4%(J%) 1150 PRINT #2% 1160 PRINT #2% IF I%=4% 1190 NEXT I% 1200 PRINT #2%,CHR$(10%)+CHR$(10%) 1220 PRINT #2%,"NOTE: STUDENTS STUDYING OFF CAMPUS ARE COUNTED "; "AS ENROLLED" 1240 PRINT #2%,CHR$(26%); 1300 CLOSE 1%,2% 1400 GO TO 9999 3900 ! === FILE ATTRIBUTES LOOKUP SUBROUTINE === 4000 DIM V2$(50),V2%(2,50) 4020 ON ERROR GO TO 4320 4030 F$="CLI" 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