10 REM Simple Data Base 20 REM By Andrew York 30 REM For Model B and for Master. 40 : 50 ON ERROR IF ERR=17 THEN PROCclose ELSE PROCerror:END 60 MODE1:VDU23,1,0;0;0;0;:*FX4,2 70 REM 80 *FX200,1 90 GCOL0,1 100 COLOUR 2 110 VDU19,1,1,0;0 120 CLS 130 MOVE50,990 140 DRAW1260,990 150 DRAW1260,30 160 DRAW50,30 170 DRAW50,990 180 MOVE55,985 190 DRAW1256,985 200 DRAW1256,35 210 MOVE1255,35 220 DRAW55,35 230 DRAW55,985 240 MOVE50,900 250 DRAW1260,900 260 : 270 hello$="Simple Data Base" 280 : 290 REM"Change hello$ to your own 300 REM"title if you want. 310 : 320 PRINTTAB(12,2);hello$ 330 PRINTTAB(9,10);"1. Create a new file" 340 PRINTTAB(9,12);"2. Update a file" 350 PRINTTAB(9,14);"3. Display a file" 360 PRINTTAB(9,16);"4. Print a file" 370 PRINTTAB(14,7);"Main Menu" 380 PRINTTAB(9,18);"5. OS Command" 390 PRINTTAB(9,22);"Enter your choice"; 400 VDU28,2,29,38,4:COLOUR 7 410 REPEAT 420 A$=GET$ 430 IF A$="1" THEN PROCcreate 440 IF A$="2" THEN PROCupdate 450 IF A$="3" THEN PROCdisplay 460 IF A$="4" THEN PROCprint 470 IF A$="5" THEN PROCcommand 480 UNTIL FALSE 490 END 500 DEFPROCbox(title$) 510 GCOL0,1 520 COLOUR 2 530 VDU19,1,6,0;0 540 VDU26:CLS 550 MOVE50,990 560 DRAW1260,990 570 DRAW1260,30 580 DRAW50,30 590 DRAW50,990 600 MOVE55,985 610 DRAW1256,985 620 DRAW1256,35 630 MOVE1255,35 640 DRAW55,35 650 DRAW55,985 660 REM 670 MOVE50,900 680 DRAW1260,900 690 MOVE50,120 700 DRAW1260,120 710 PRINTTAB(12,2);title$ 720 IF title$="Displaying a file" THEN PRINTTAB(2,29);" Shift-Scrolls. Esc-Exit to Menu.":VDU14:ELSE PRINTTAB(2,29);" Esc-Exit to Menu." 730 VDU28,2,27,38,4:COLOUR 7 740 ENDPROC 750 DEFPROCfile(name$):COLOUR 2 760 VDU28,2,27,38,20:CLS:VDU23,1,1;0;0;0; 770 PRINTTAB(7,4);"File to ";name$;" ?"; 780 INPUTLINE""file$ 790 IF LEN(file$) >8 THEN PRINTTAB(5,6);"File name to long press any key";:A$=GET$:GOTO 760 800 CLS:VDU23,1,0;0;0;0;:ENDPROC 810 DEFPROCcreate 820 PROCfile("create"):A=0 830 PROCwait:CH=OPENOUT(file$) 840 PROCbox("Creating a file."):ON ERROR IF ERR=17 THEN PROCclose ELSE PROCerror:END 850 PRINT:*FX200,1 860 VDU23,1,1;0;0;0;:REPEAT:*FX200,0 870 PROCinput 880 PRINT:PRINT#CH,Name$,Address$,Telephone,Post$:SOUND1,28,90,1 890 A=A+1:UNTIL A >3150 900 CLOSE# CH:RUN:ENDPROC 910 DEFPROCupdate 920 PROCfile("update"):A=0 930 PROCwait:CH=OPENUP(file$) 940 IF CH=0 THEN PROCnotfound 950 PROCbox("Updating a file."):ON ERROR IF ERR=17 THEN PROCclose ELSE PROCerror:END 960 *FX200,0 970 REPEAT 980 INPUT#CH,Name$,Address$,Telephone,Post$ 990 REM PROCoutput 1000 A=A+1:UNTIL EOF#CH 1010 A=0:VDU23,1,1;0;0;0;:REPEAT:*FX200,0 1020 PROCinput 1030 PRINT:PRINT#CH,Name$,Address$,Telephone,Post$:SOUND1,28,90,1 1040 A=A+1:UNTIL A>3150 1050 CLOSE# CH:RUN:ENDPROC 1060 DEFPROCdisplay:PROCfile("display"):CLS:PRINTTAB(7,4);"Whole file ?":REPEAT:A$=GET$:UNTIL A$="Y" OR A$="y" OR A$="N" OR A$="n":IF A$="N"OR A$="n" THEN PROCdisplayone 1070 PROCwait:CH=OPENUP(file$) 1080 IF CH=0 THEN PROCnotfound 1090 PROCbox("Displaying a file"):ON ERROR IF ERR=17 THEN PROCclose ELSE PROCerror:END 1100 *FX200,0 1110 REPEAT 1120 INPUT#CH,Name$,Address$,Telephone,Post$:SOUND1,28,90,1 1130 PROCoutput 1140 PRINT:UNTIL EOF#CH 1150 CLOSE# CH 1160 PROCspace:RUN:ENDPROC 1170 DEFPROCspace:VDU3:VDU15:COLOUR2:PRINT:PRINTTAB(7);"Press space":VDU23,1,0;0;0;0;:COLOUR 7:REPEAT:A$=GET$:UNTIL A$=" ":ENDPROC 1180 DEFPROCprint 1190 PROCfile("print") 1200 COLOUR 2 1210 PRINTTAB(4,3)"When you are ready to print" 1220 PRINTTAB(10,5)"Press space.";:REPEAT:A$=GET$:UNTIL A$=" " 1230 PROCwait:CH=OPENUP(file$):PROCbox("Printing a file"):ON ERROR IF ERR=17 THEN PROCclose ELSE PROCerror:END 1240 IF CH=0 THEN PROCnotfound 1250 VDU2:*FX200,0 1260 GOTO1110 1270 ENDPROC 1280 DEFPROCcommand:VDU23,1,1;0;0;0;:ON ERROR IF ERR=17 THEN PROCclose ELSE PROCerror:END 1290 CLS:INPUTLINE"*"COMMAND$ 1300 IF COMMAND$="" THEN RUN 1310 CLS:$&900=COMMAND$:X%=0:Y%=9:CLS:CALL&FFF7:PROCspace:RUN:ENDPROC 1320 DEFPROCwait 1330 CLS 1340 PRINTTAB(7,3);"Please wait..."; 1350 ENDPROC 1360 DEFPROCerror 1370 REM Put here :'CLOSE#0' for Model B 1380 ON ERROR OFF 1390 *FX200,1 1400 IF ERR=17 THEN RUN 1410 PRINT 1420 COLOUR2 1430 REPORT 1440 PROCspace 1450 RUN 1460 ENDPROC 1470 DEFPROCdisplayone:VDU23,1,1;0;0;0; 1480 CLS:PRINTTAB(3,3);" Enter persons name:"; 1490 INPUTLINE""name$ 1500 CLS:VDU23,1,0;0;0;0;:PROCwait:CH=OPENIN(file$) 1510 IF CH=0 THEN PROCnotfound 1520 REPEAT 1530 INPUT#CH,Name$,Address$,Telephone,Post$ 1540 UNTIL name$=Name$ OR EOF# CH 1550 VDU23,1,0;0;0;0;:CLOSE#CH 1560 IF Name$<> name$ CLS:PRINTTAB(6,4);"Name not found":PROCspace:CLOSE#0:RUN 1570 PROCbox("Displaying details") 1580 PROCoutput 1590 PRINT:PROCspace:RUN:ENDPROC 1600 ENDPROC 1610 DEFPROCnotfound 1620 CLS:VDU23,1,0;0;0;0;:VDU3 1630 COLOUR 2 1640 PRINTTAB(7,4);"Sorry the file ":PRINTTAB(7,5);file$;" does not exist":PROCspace:RUN:ENDPROC 1650 DEFPROCinput 1660 PRINT 1670 *FX200,0 1680 INPUTLINE"Name :"Name$ 1690 *FX200,1 1700 INPUTLINE"Address :"Address$ 1710 INPUTLINE"Telephone:"Telephone 1720 INPUTLINE"Post code:"Post$ 1730 ENDPROC 1740 DEFPROCoutput 1750 PRINT 1760 PRINT"Name :";Name$ 1770 PRINT"Address :";Address$ 1780 PRINT"Telephone:";Telephone 1790 PRINT"Post code:";Post$ 1800 ENDPROC 1810 DEFPROCclose:VDU3:VDU14 1820 IF ERL=1680 OR ERL=1760 THEN CLOSE# CH 1830 IF ERL>1060 AND ERL<1150 THEN CLOSE# CH 1831 IF ERL>1750 AND ERL<1810 THEN CLOSE# CH 1840 RUN:ENDPROC 1850 REM The above five lines close 1860 REM the file. 1870 REM (well I hope so!!)