10 MODE7:PROCload2:PROCoff:PROCinit:PROCmenu 20 DEFPROCtitle:VDU26:CLS:VDU132,157,141:PRINT"†BBC DBASE BY†A.S.SHAKOOR 1992 ";CHR$(156):VDU132,157,141:PRINT"†BBC DBASE BY†A.S.SHAKOOR 1992 ";CHR$(156):VDU28,0,24,39,3:ENDPROC 30 DEFPROCmenu:PROCtitle:ONERRORPROCoff:VDU28,0,24,39,3:CLS:GOTO40 40 PROChead 50 GT$=INKEY$(1):IF GT$="F" OR GT$="f" PROCload 60 IF quit=1 OR ch1=1 GOTO 120 70 IF GT$="1" AND fields=15 PROCno:PROCmenu:ENDPROC ELSE IF GT$="!" AND fields=15 PROCno:PROCmenu:ENDPROC 80 IF GT$="1" OR GT$="!" PROCcreate ELSE IF GT$="J" OR GT$="j" END ELSE IF GT$="I" OR GT$="i" PROCstamp 90 IF ch=1 GOTO 110 100 IF GT$="5" OR GT$="%" PROCclear ELSE IF GT$="7" OR GT$="'" PROCamend ELSE IF GT$="6" OR GT$="&" PROCdel 110 IF fields=0 GOTO160 120 IF GT$="E" OR GT$="e" PROCsave ELSE IF GT$="2" OR GT$=CHR$(34) PROCpfields 130 IF quit=1 GOTO 150 140 IF GT$="3" OR GT$="#" PROCsort 150 IF GT$="4" OR GT$="$" PROClist 160 IF GT$="H" OR GT$="h" PROCconnect ELSE IF GT$="G" OR GT$="g" PROCcon ELSE IF GT$="I" OR GT$="i" PROCstamp ELSE IF GT$="J" OR GT$="j" END 170 IF ch=1 GOTO50 180 IF record=50 GOTO 210 190 IF GT$="8" OR GT$="(" PROCenter 200 IF ch1=0 GOTO 220 210 IF GT$="9" OR GT$=")" PROCview ELSE IF GT$="C" OR GT$="c" PROCalter ELSE IF GT$="B" OR GT$="b" PROCdrec ELSE IF GT$="A" OR GT$="a" PROCprec ELSE IF GT$="D" OR GT$="d" PROCcrec 220 GOTO50:ENDPROC 230 DEFPROCcreate:PROCtitle:ch=0 240 fields=fields+1:PRINTTAB(0,2);:VDU132,157:PRINT"ƒNEW FIELD ";TAB(16)"ƒFIELD NO.‡";fields;TAB(35);CHR$(156) 250 PRINTTAB(0,10)"‡NOTE : MAXIMUM NO.OF CHARACTERS"'"‡FOR EACH FIELD ISƒ13" 260 PRINTTAB(2,5)"†":PROCon:INPUTTAB(2,5)"†"fld$(fields):PROCoff 270 IF fld$(fields)="" fields=fields-1:PROCmenu:ENDPROC 280 IF LENfld$(fields)>13 PROCshort(fields):PRINTTAB(0,10);STRING$(80," "):PRINTTAB(0,10);:VDU132,157:PRINT"‡FIELD SHORTENED TO 13 CHARACTERS ";CHR$(156):VDU132,157:PRINT"†";fld$(fields);TAB(35);CHR$(156) 290 IF fields=11 PROCno 300 PRINTTAB(0,18);:VDU132,157:PRINT"‡PRESS†*‡TO RETURN TO MENU,OR PRESS ":VDU132,157:PRINT"‡ANY OTHER KEY":Y$=GET$:IF Y$="*" OR Y$=":" PROCmenu:ENDPROC 310 CLS:GOTO 240 320 DEFPROCinit:DIM fld$(11),a$(11,50):OSCLI"FX210,0":ENDPROC 330 DEFPROCenter:PROCtitle:IF ch2=1 GOTO 350 340 IF ch1<>1 PROCwarn 350 ch1=1:record=record+1:CLS:PRINTTAB(0,0);:VDU132,157:PRINT"ƒDATA FILE‡";record;" ";CHR$(156)'' 360 FOR j=1 TO fields:PRINT"ƒ";fld$(j)"‡:";:INPUT""a$(j,record):NEXT 370 PRINT':VDU132,157:PRINT"‡PRESS*‡TO RETURN TO MENU,OR PRESS":VDU132,157:PRINT"‡ANY OTHER KEY":Y$=GET$:IF Y$=":" OR Y$="*" PROCmenu:ENDPROC 380 IFrecord=max CLS:PRINT':VDU132,157:PRINT"‡END OF FILE REACHED ";CHR$(156):Y$=GET$:GOTO400 390 GOTO350 400 PROCmenu:ENDPROC 410 DEFPROCwarn:PRINTTAB(0,3);:quit=0 420 VDU132,157:PRINT"‡WARNING : IF YOU WISH TO CONTINUE":VDU132,157:PRINT"‡WITH THIS OPTION,NO MOREƒNEW‡FIELDS":VDU132,157:PRINT"‡CAN BE CREATED":PRINT':VDU132,157:PRINT"‡DO YOU WISH TO CONTINUE(Y/N)‡?" 430 G$=GET$ 440 IF G$="Y" OR G$="y" ch1=1:quit=1:ENDPROC ELSE PROCmenu:ENDPROC 450 DEFPROClist:PROCtitle:VDU132,157:PRINT"‡FIELDS CREATED ... ";CHR$(156)':FORt=1TOfields:PRINT"ƒ";t")";TAB(5);fld$(t):NEXT:IF amend=1 ENDPROC 460 PROCkey:ENDPROC 470 DEFPROCno:quit=0:ch1=0:CLS:VDU132,157:PRINT"‡SORRY,NO MORE FIELDS CAN BE CREATED":PROCkey:ENDPROC 480 DEFPROCview:PROCtitle:view=1 490 PRINTTAB(0,0);:VDU132,157:PRINT"ƒDATA FILE‡";view;" ";CHR$(156)':FORj=1 TO fields:PRINTfld$(j)"‡:";a$(j,view):NEXT 500 PRINT':VDU132,157:PRINT"‡PRESS†*‡TO RETURN TO THE MAIN MENU":VDU132,157:PRINT"‡OR PRESS ANY OTHER KEY":G$=GET$:IF G$="*" OR G$=":" PROCmenu:ENDPROC 510 IF view=record PROCmenu:ENDPROC ELSE view=view+1:CLS:GOTO 490 520 DEFPROCamend:amend=1:PROClist 530 PRINT'"ƒWHICH FIELD DO YOU WISH TO "'"ƒCHANGE (1-";fields;")"; 540 INPUT"?‡"chan:IF chan<1 OR chan>fields PROCkey:ENDPROC 550 PRINTTAB(4,1+chan)" ? ":INPUTTAB(4,1+chan)"†"fld$(chan):VDU7:CLS:IF LENfld$(chan)>13 CLS:PROCshort(chan):PRINT:VDU132,157:PRINT"‡FIELD SHORTENED TO 13 CHARACTERS ";CHR$(156):VDU132,157:PRINT"†";fld$(chan);TAB(38);CHR$(156) 560 PROCkey:ENDPROC 570 DEFPROCshort(l):VDU7:fld$(l)=LEFT$(fld$(l),13):ENDPROC 580 DEFPROCcon:IF snd$="‡ON" snd$="‡OFF":OSCLI"FX210,1":GOTO600 590 IF snd$="‡OFF" snd$="‡ON":OSCLI"FX210,0" 600 PROCmenu:ENDPROC 610 DEFPROCconnect:IF print=0 print=1:print$="‡ON":GOTO630 620 IF print=1 print=0:print$="‡OFF" 630 PROCmenu:ENDPROC 640 DEFPROCclear:PROCtitle 650 PRINT:VDU132,157:PRINT"‡DO YOU WISH TO CLEAR ALL THE FIELDS":VDU132,157:PRINT"‡(Y/N) ?":H$=GET$:IF H$="Y" OR H$="y" GOTO670 660 PROCmenu:ENDPROC 670 quit=0:ch=1:ch1=0:fields=0:FORt=1TO15:fld$(t)="":NEXT:PRINT':VDU132,157:PRINT"‡ALL FIELDS ARE CLEARED":PROCkey:ENDPROC 680 DEFPROCsort:PROCtitle:FORt=1TOfields:PRINT"ƒ";t")";TAB(5);fld$(t):NEXT 690 PRINT':VDU132,157:PRINT"‡DO YOU WISH TO SORT THE FIELDS IN":VDU132,157:PRINT"‡ALPHABETICAL ORDER (Y/N) ?":t$=GET$:IF t$="Y" OR t$="y" GOTO 710 700 PROCkey:ENDPROC 710 PRINT'"‡SORTING ...":FORt=1TOfields:FOR t1=1TOfields:IF fld$(t)fields PROCmenu:ENDPROC 800 fld$(df)="z":VDU13,132,157:PRINT"‡DELETED..PRESS ANY KEY TO SORT":VDU132,157:PRINT"‡CURRENT FIELDS INTO ORDER":G$=GET$:FORt=1 TO fields:FOR t1=1 TO fields:IF fld$(t)>>"t:IF t<1 OR t>2 PROCkey:ENDPROC 840 IF t=1 pch=0 ELSE pch=1:GOTO 880 850 PRINT:VDU132,157:PRINT"‡WHICH RECORD DO YOU WISH TO PRINT":VDU132,157:PRINT"‡(1-";record") ?";:INPUT"ƒ"G 860 IF G<1 OR G>record PROCkey 870 IF a$(1,G)="" CLS:VDU132,157:PRINT"‡THERE IS NO DATA IN THIS RECORD ";CHR$(156):PROCkey:ENDPROC 880 CLS:VDU132,157:PRINT"‡PRINTING ... ";CHR$(156):VDU2,1,27,1,87,1,0,1,27,1,77,1,27,1,69 890 PRINT:IF pch=0 FOR t=1 TO fields:PRINTfld$(t);TAB(20)": ";a$(t,G):NEXT:GOTO920 900 FOR t1=1 TO record:FOR t=1 TO fields:PRINTfld$(t);TAB(20)": ";a$(t,t1) 910 NEXT:VDU3:PRINT''"‡PRESS ANY KEY TO CONTINUE ":GT$=GET$:VDU2:PRINT:NEXT 920 VDU3:PROCkey:ENDPROC 930 DEFPROCdrec:PROCtitle:IF record=1 PRINT':VDU132,157:PRINT"‡SORRY..2 RECORDS ARE NEEDED MINIMUM.":PROCkey:ENDPROC 940 IF record=1 PRINT''"†SORRY..2 RECORDS ARE NEEDED MINIMUM.":PROCkey:ENDPROC 950 VDU132,157:PRINT"‡WHICH RECORD DO YOU WISH TO":VDU132,157:PRINT"‡DELETE (1-";record;") ?ƒ";:INPUT ""t 960 IF t<1 OR t>record PROCkey:ENDPROC 970 FORd=1TOfields:a$(d,t)="NO DATA":NEXT:PRINT':VDU132,157:PRINT"‡DELETED.. ";CHR$(156):PROCkey:ENDPROC 980 DEFPROCcrec:PROCtitle:VDU132,157:PRINT"‡DO YOU WISH TO CLEAR ALL THE":VDU132,157:PRINT"‡RECORDS PRESENT IN MEMORY (Y/N) ?";:G$=GET$:IF G$="Y" OR G$="y" GOTO 1000 990 PROCkey:ENDPROC 1000 FORx=1TOfields:FORt=1TOrecord:a$(x,t)="":NEXT:NEXT:record=0:ch1=0:ch2=1:PRINT:VDU132,157:PRINT"‡ALL RECORDS CLEARED ";CHR$(156):PROCkey:ENDPROC 1010 DEFPROCalter:PROCtitle:VDU132,157:PRINT"‡WHICH RECORD‡DO YOU WISH TO ":VDU132,157:PRINT"‡ALTER ? (1-";record;") :ƒ";:INPUT""alter 1020 IF alter<1 OR alter>record PROCkey:ENDPROC 1030 m=1:t=alter:CLS:VDU132,157:PRINT"‡DATA FILE‡";alter;" ";CHR$(156)' 1040 CLS:VDU132,157:PRINT"‡DATA FILEƒ";alter;" ";CHR$(156)':FOR j=1 TO fields:PRINT"ƒ";j;")‡";fld$(j);TAB(18)"‡";a$(j,t):NEXT 1050 PRINT''"ƒINPUT NUMBER (1-";fields;") :‡";:INPUT""change:IF change<1 OR change>fields PROCmenu:ENDPROC 1060 PRINTTAB(18,change+1)" ? ":VDU7:INPUTTAB(18,change+1)"…"a$(change,t) 1070 CLS:PROCkey:ENDPROC 1080 DEFPROCsave:PROCtitle:PRINT:VDU132,157:PRINT"‡FILENAME : ";CHR$(156);:INPUT""file$ 1090 IF LEN(file$)>7 VDU7:file$=LEFT$(file$,7):PRINT:VDU132,157:PRINT"‡FILENAME HAS BEEN SHORTENED":VDU132,157:PRINT"‡TOƒ";file$ 1100 PRINT:VDU132,157:PRINT"‡DO YOU WISH TO RETURN TO THE":VDU132,157:PRINT"‡MAIN MENU (Y/N) ?ƒ";:G$=GET$:IF G$="Y" OR G$="y" PROCkey:ENDPROC 1110 X=OPENOUT(file$):FOR g=1 TO 11:FOR g1=1 TO 50:PRINT#X,a$(g,g1):NEXT:NEXT:FOR t=1 TO 11:PRINT #X,fld$(t):NEXT:PRINT#X,fields,record,ch,quit,ch1,amend,max,snd$,del,print$,print,date$:CLOSE#0 1120 CLOSE#0 1130 PRINT:VDU132,157:PRINT"‡SAVED ";CHR$(156):PROCkey:ENDPROC 1140 DEFPROCload:PROCtitle:PRINT:VDU132,157:PRINT"‡FILENAME TO LOAD FROM :ƒ";:INPUT""file$ 1150 IF LEN(file$)>7 VDU7:file$=LEFT$(file$,7):PRINT:VDU132,157:PRINT"‡FILENAME HAS BEEN SHORTENED":VDU132,157:PRINT"‡TOƒ";file$ 1160 PRINT:VDU132,157:PRINT"‡DO YOU WISH TO RETURN TO THE":VDU132,157:PRINT"‡MAIN MENU (Y/N) ? ";:G$=GET$:IF G$="Y" OR G$="y" PROCkey:ENDPROC 1170 X=OPENIN(file$):FOR g=1 TO 11:FOR g1=1 TO 50:INPUT#X,a$(g,g1):NEXT:NEXT:FOR t=1 TO 11:INPUT#X,fld$(t):NEXT:INPUT#X,fields,record,ch,quit,ch1,amend,max,snd$,del,print$,print,date$:CLOSE#0 1180 PRINT:VDU132,157:PRINT"‡LOADED ";CHR$(156):PROCkey:ENDPROC 1190 DEFPROCfields:VDU28,0,24,39,6:CLS:VDU132,157:PRINTTAB(25);CHR$(156):VDU132,157:PRINT"ƒFIELDS :‡";fields;"ƒCREATED ";TAB(25);CHR$(156):VDU132,157:PRINT"‘``````‡";TAB(25);CHR$(156) 1200 IF quit=1 GOTO 1220 1210 VDU132,157:PRINT"‡1)ƒCREATE FIELDS";TAB(25);CHR$(156):IF quit=1 GOTO 1250 1220 VDU132,157:PRINT"‡2)ƒPRINT FIELDS";TAB(25);CHR$(156) 1230 IF quit=1 GOTO 1250 1240 VDU132,157:PRINT"‡3)ƒSORT FIELDS";TAB(25);CHR$(156) 1250 VDU132,157:PRINT"‡4)ƒVIEW FIELDS";TAB(25);CHR$(156) 1260 IF quit=1 GOTO 1270 ELSE VDU132,157:PRINT"‡5)ƒCLEAR FIELDS";TAB(25);CHR$(156) 1270 IF quit=1 GOTO 1290 1280 VDU132,157:PRINT"‡6)ƒDELETE A FIELD";TAB(25);CHR$(156):VDU132,157:PRINT"‡7)ƒALTER FIELDS";TAB(25);CHR$(156) 1290 VDU132,157:PRINTTAB(25);CHR$(156) 1300 ENDPROC 1310 DEFPROCrecords 1320 VDU28,0,24,39,6:CLS 1330 VDU132,157:PRINTTAB(25);CHR$(156) 1340 VDU132,157:PRINT"ƒRECORDS :‡";record;"ƒCREATED";TAB(25);CHR$(156) 1350 VDU132,157:PRINT"‘```````‡";TAB(25);CHR$(156) 1360 VDU132,157:PRINT"‡8)ƒENTER RECORDS";TAB(25);CHR$(156) 1370 IF ch1=0 GOTO 1400 1380 VDU132,157:PRINT"‡9)ƒVIEW RECORDS";TAB(25);CHR$(156):VDU132,157:PRINT"‡A)ƒPRINT RECORDS";TAB(25);CHR$(156):VDU132,157:PRINT"‡B)ƒDELETE RECORDS";TAB(25);CHR$(156):VDU132,157:PRINT"‡C)ƒALTER RECORDS";TAB(25);CHR$(156) 1390 VDU132,157:PRINT"‡D)ƒCLEAR RECORDS";;TAB(25);CHR$(156) 1400 VDU132,157:PRINTTAB(25);CHR$(156):ENDPROC 1410 DEFPROCoptions:VDU28,0,24,39,6:CLS:VDU132,157:PRINTTAB(25);CHR$(156):VDU132,157:PRINT"ƒOPTIONS";TAB(25);CHR$(156) 1420 VDU132,157:PRINT"‘```````‡";TAB(25);CHR$(156):VDU132,157:PRINT"‡E)ƒSAVE ALL DATA";TAB(25);CHR$(156):VDU132,157:PRINT"‡F)ƒLOAD NEW DATA";TAB(25);CHR$(156):VDU132,157:PRINT"‡G)ƒSOUND IS";snd$;TAB(25);CHR$(156) 1430 VDU132,157:PRINT"‡H)ƒPRINTER IS";print$;TAB(25);CHR$(156):VDU132,157:PRINT"‡I)ƒDATE :‡";date$;TAB(25);CHR$(156):VDU132,157:PRINT"‡J)ƒEND";TAB(25);CHR$(156):VDU132,157:PRINTTAB(25);CHR$(156):ENDPROC 1440 DEFPROChead:PRINTTAB(0,0)"‘pppppppppppppppppppppppppppppppppppppp":VDU132,157:PRINT"ƒ(F)ield (R)ecord (O)ptions ";CHR$(156);:PRINT"‘``````````````````````````````````````" 1450 G$=GET$:IF G$="F" OR G$="f" PROCfields:ENDPROC ELSE IF G$="R" OR G$="r" PROCrecords:ENDPROC ELSE IF G$="O" OR G$="o" PROCoptions:ENDPROC 1460 GOTO 1450:ENDPROC 1470 DEFPROCstamp:PROCtitle:PRINTTAB(0,3);:VDU132,157:PRINT"‡ENTER DATE ... ";CHR$(156):PRINTTAB(0,15);:VDU132,157:PRINT"‡OLD DATE :‡";date$;" ";CHR$(156):date$="" 1480 PRINTTAB(10,5)"??/??/??";:FORt=10 TO 16 STEP 3:PRINTTAB(t,5);:G$=GET$:PRINTTAB(t,5);G$:date$=date$+G$:PRINTTAB(t+1,12);:G$=GET$:PRINTTAB(t+1,5);G$:date$=date$+G$+"." 1490 NEXT:PROCkey:ENDPROC 1500 DEFPROCon:VDU23,0,10,12,0,0,0,0,0,0:ENDPROC 1510 DEFPROCoff:VDU23;8202;0;0;0;:ENDPROC 1520 DEFPROCkey:PRINT':VDU132,157:PRINT"PRESS ANY KEY TO CONTINUE ";CHR$(156):GT$=GET$:PROCmenu:ENDPROC 1530 DEFPROCload2:X=OPENIN("INFO"):INPUT#X,fields,record,ch,quit,ch1,amend,max,snd$,del,ch2,date$,print$,print:CLOSE#0:ENDPROC