10 REM COPYRIGHT 1993 - COMPUTE PUBLICATIONS INTL LTD - ALL RIGHTS RESERBED 20 POKE53280,6:POKE53281,6:PRINT"[147]" 100 REM SIMPLE FLAT FILE DATA BASE 110 N9=50 120 DIM A$(N9),B$(N9),C$(N9),D(N9) 130 S$=" " 140 M9$="..JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" 200 OPEN 15,8,15 210 OPEN 1,8,3,"0:MYDATA,S,R" 220 INPUT#15,E,E$ 230 IF E=0 GOTO 300 240 CLOSE 1:CLOSE 15 250 PRINT "I CANNOT FIND FILE 'MYDATA'" 260 INPUT "CONTINUE";X$ 270 IF X$="Y" OR X$="YES" GOTO 400 280 END 300 N=N+1 310 INPUT#1,A$(N),B$(N),C$(N),D(N) 320 IF ST=0 GOTO 300 330 CLOSE 1:CLOSE 15 340 PRINT N;"RECORDS FOUND ON FILE." 350 IF N+10>N9 THEN PRINT "FILE ALMOST FULL!" 400 IF N>0 THEN PRINT "SHOW, "; 410 IF N0 THEN PRINT "DELETE, CHANGE, "; 430 PRINT "QUIT?" 440 INPUT X$:X$=LEFT$(X$,1) 450 IF N=0 GOTO 490 460 IF X$="S" GOTO 4000 470 IF X$="D" GOTO 2000 480 IF X$="C" GOTO 3000 490 IF N=N9 GOTO 510 500 IF X$="A" GOTO 1000 510 IF X$<>"Q" GOTO 400 520 REM QUIT .. BUT PERHAPS WRITE FILE 530 IF F9=0 OR N=0 THEN END 540 PRINT "READY TO WRITE FILE!" 550 PRINT "PRESS ANY KEY." 560 GET X$,X$,X$ 570 GET X$:IF X$="" GOTO 570 580 REM DELETE ARCHIVE IF PRESENT 590 OPEN 15,8,15 600 PRINT#15,"S0:MYDATA.OLD" 610 REM RENAME PREVIOUS DATA FILE 620 PRINT#15,"R0:MYDATA.OLD=0:MYDATA" 630 REM WRITE NEW MASTER FILE 640 OPEN 1,8,3,"0:MYDATA,S,W" 650 INPUT#15,E,E$ 660 IF E<>0 THEN PRINT E;E$:CLOSE 1:CLOSE 15:END 670 FOR J=1 TO N 680 PRINT#1,A$(J) 690 PRINT#1,B$(J) 700 PRINT#1,C$(J) 710 PRINT#1,D(J) 720 NEXT J 730 INPUT#15,E,E$,E1,E2 740 IF E<>0 THEN PRINT E;E$ 750 CLOSE 1:CLOSE 15 760 END 1000 REM ADD A RECORD 1010 INPUT "LAST NAME";A$(N+1) 1020 INPUT "FIRST NAME";B$(N+1) 1030 V=N+1:GOSUB 8000 : REM GET DATE 1040 INPUT "HIGH SCORE";D(N+1) 1050 PRINT 1060 PRINT A$(N+1) 1070 PRINT B$(N+1) 1080 PRINT C$(N+1) 1090 PRINT D(N+1) 1100 INPUT "IS THE ABOVE OK";X$ 1110 IF X$="Y" OR X$="YES" GOTO 1140 1120 PRINT ">>> RECORD CANCELLED! <<<" 1130 GOTO 400 1140 N=N+1:F9=1 1150 PRINT N;"RECORDS TOTAL." 1160 GOTO 400 2000 REM DELETE A RECORD 2010 GOSUB 5000 2020 IF X=0 GOTO 400 2030 PRINT "READY TO DELETE RECORD:" 2040 PRINT " ";A$(X) 2050 PRINT " ";B$(X) 2060 M=VAL(MID$(C$(X),5,2)) 2065 PRINT " ";LEFT$(C$(X),4);MID$(M9$,M*3,3);RIGHT$(C$(X),2) 2070 PRINT " ";D(X) 2080 INPUT "OK TO DELETE";X$ 2090 IF X$="Y" OR X$="YES" GOTO 2120 2100 PRINT "RECORD >>>NOT<<< DELETED!" 2110 GOTO 400 2120 N=N-1 2130 IF X>N GOTO 2220 2140 FOR J=X TO N 2150 A$(J)=A$(J+1) 2160 B$(J)=B$(J+1) 2170 C$(J)=C$(J+1) 2180 D(J)=D(J+1) 2190 NEXT J 2200 F9=1 2210 PRINT ">>> RECORD DELETED! <<<" 2220 GOTO 400 3000 REM CHANGE A RECORD 3010 GOSUB 5000 3020 IF X=0 GOTO 400 3030 PRINT "READY TO CHANGE RECORD:" 3040 PRINT "1:";A$(X) 3050 PRINT "2:";B$(X) 3060 M=VAL(MID$(C$(X),5,2)) 3065 PRINT "3:";LEFT$(C$(X),4);MID$(M9$,M*3,3);RIGHT$(C$(X),2) 3070 PRINT "4:";D(X) 3080 INPUT "CHANGE WHICH FIELD (0=NONE)";J 3090 J=INT(J):IF J<1 OR J>4 THEN J=0 3100 ON J GOTO 3120,3140,3160,3180 3110 GOTO 400 3120 INPUT "LAST NAME";A$(X) 3130 F9=1:GOTO 3040 3140 INPUT "FIRST NAME";B$(X) 3150 F9=1:GOTO 3040 3160 V=X:GOSUB 8000 : REM GET DATE 3170 F9=1:GOTO 3040 3180 INPUT "HIGH SCORE";D(X) 3190 F9=1:GOTO 3040 4000 REM SHOW - DISPLAY OR PRINT 4010 INPUT "SCREEN OR PRINTER";X$ 4020 X$=LEFT$(X$,1) 4030 IF X$="P" GOTO 4190 4040 IF X$<>"S" GOTO 4010 4050 J=1 4060 K=J+20:IF K=N THEN K=N+1 4070 PRINT LEFT$(A$(J)+S$,13); 4080 PRINT LEFT$(B$(J)+S$,10); 4090 M=VAL(MID$(C$(J),5,2)) 4100 PRINT LEFT$(C$(J),4);MID$(M9$,M*3,3);RIGHT$(C$(J),2); 4110 PRINT RIGHT$(S$+STR$(D(J)),7) 4120 J=J+1:IF J<>K GOTO 4170 4130 PRINT " >> MORE - PRESS ANY KEY <<";CHR$(145) 4140 GET X$,X$,X$,X$ 4150 GET X$:IF X$="" GOTO 4150 4160 GOTO 4060 4170 IF J<=N GOTO 4070 4180 GOTO 400 4190 REM SEND TO PRINTER 4200 OPEN 4,4 4210 FOR J=1 TO N 4220 PRINT#4,LEFT$(A$(J)+S$,20); 4230 PRINT#4,LEFT$(B$(J)+S$,15); 4240 M=VAL(MID$(C$(J),5,2)) 4250 PRINT#4,LEFT$(C$(J),4);MID$(M9$,M*3,3);RIGHT$(C$(J),2); 4260 PRINT#4,RIGHT$(S$+STR$(D(J)),10) 4270 NEXT J 4280 CLOSE 4 4290 GOTO 400 5000 PRINT "SELECT WHICH RECORD:" 5010 J=1 5020 K=J+20:IF K>N THEN K=N 5030 FOR S=J TO K 5040 PRINT RIGHT$(S$+STR$(S),3);": ";LEFT$(A$(S)+S$,12); 5050 PRINT LEFT$(B$(S)+S$,6); 5060 PRINT LEFT$(C$(S)+S$,8); 5070 PRINT RIGHT$(S$+STR$(D(S)),7) 5080 NEXT S 5090 PRINT ">> SELECT RECORD NUMBER, OR 0 "; 5100 IF K<>N THEN PRINT "FOR MORE <<" 5110 IF K=N THEN PRINT "TO QUIT <<" 5120 INPUT X 5130 X=INT(X):IF X>N THEN X=0 5140 J=K 5150 IF X=0 AND K<>N GOTO 5020 5160 RETURN 8000 INPUT "YEAR";Y 8010 IF Y<1900 OR Y>9999 GOTO 8000 8020 INPUT "MONTH";M$ 8030 M=VAL(M$):IF M>0 AND M<13 GOTO 8050 8040 M$=LEFT$(M$+S$,3) 8050 FOR J=1 TO 12 8060 IF M$=MID$(M9$,J*3,3) THEN M=J 8070 NEXT J 8080 IF M<1 OR M>12 GOTO 8020 8090 INPUT "DAY";D 8100 IF D<1 OR D>31 GOTO 8090 8110 C$(V)=RIGHT$(STR$(Y),4)+RIGHT$(STR$(M+100),2)+RIGHT$(STR$(D+100),2) 8120 RETURN