10 REM ************** 20 REM BookFinder 30 REM By Tim Surtell 40 REM ************** 50 REM NC200 Version 2 : 29/5/95 60 REM Downloaded from Tim's NC Users' Site 70 REM http://www.ncus.org.uk 80 CLS:PRINTTAB(35,0)CHR$19"BookFinder"CHR$20:MOVE190,126:DRAW1,126:DRAW1,1:DRAW478,1:DRAW478,126:DRAW290,126 90 DIMnum(200),tit$(200),aut$(200),sub$(200),isbn$(200),pub$(200),date(200),SRT(200) 100 PRINTTAB(24,4)"Loading in books, please wait..." 110 ONERRORCLOSE#0:K=OPENOUT("BOOKS.BF"):PRINT#K,0:CLOSE#0:GOTO120 120 K=OPENIN("BOOKS.BF") 130 INPUT#K,NUM 140 IF NUM=0 GOTO200 150 FORI=1 TO NUM 160 PRINTTAB(24,6)"Loaded ";I;" out of ";NUM 170 INPUT#K,num(I),tit$(I),aut$(I),sub$(I),isbn$(I),pub$(I),date(I) 180 NEXT 190 CLOSE#K 200 ONERRORGOTO220 210 PRINTTAB(24,4)SPC40TAB(24,6)SPC40TAB(76,1)"V.2" 220 PRINTTAB(1,2)SPC78TAB(1,2)"Press S for search, A to add a new book or Q to quit..."TAB(1,4)CHR$14SPC78CHR$15 230 G$=GET$ 240 IF G$="S" PROCSEARCH:GOTO220 250 IF G$="A" PROCADD:GOTO220 260 IF G$="Q" END:GOTO220 270 GOTO230 280 DEF PROCSAVE 290 PRINTTAB(1,2)SPC78TAB(1,2)"Please wait...saving books..." 300 K=OPENOUT("BOOKS.BF") 310 PRINT#K,NUM 320 FORI=1 TO NUM 330 PRINT#K,num(I),tit$(I),aut$(I),sub$(I),isbn$(I),pub$(I),date(I) 340 NEXT 350 CLOSE#K 360 ENDPROC 370 DEF PROCADD 380 PRINTTAB(1,2)SPC78:NUM=NUM+1 390 INPUTTAB(1,2),"ADD NEW BOOK : Book number : "num(NUM):PRINTTAB(1,2)SPC78 400 INPUTTAB(1,2),"ADD NEW BOOK : Title : "tit$(NUM):PRINTTAB(1,2)SPC78 410 INPUTTAB(1,2),"ADD NEW BOOK : Author : "aut$(NUM):PRINTTAB(1,2)SPC78 420 INPUTTAB(1,2),"ADD NEW BOOK : Subject : "sub$(NUM):PRINTTAB(1,2)SPC78 430 INPUTTAB(1,2),"ADD NEW BOOK : ISBN Number : "isbn$(NUM):PRINTTAB(1,2)SPC78 440 INPUTTAB(1,2),"ADD NEW BOOK : Publisher : "pub$(NUM):PRINTTAB(1,2)SPC78 450 INPUTTAB(1,2),"ADD NEW BOOK : Published in : "date(NUM) 460 PROCSAVE 470 ENDPROC 480 DEF PROCSEARCH 490 PRINTTAB(1,2)SPC78:INPUTTAB(1,2),"SEARCH FOR BOOK : Type in some text about the book : "ser$ 500 PRINTTAB(1,2)SPC78 510 sernum=1 520 PRINTTAB(1,2)"Searching for book :" 530 FORI=1 TO NUM 540 s$=STR$(num(I))+tit$(I)+aut$(I)+sub$(I)+isbn$(I)+pub$(I)+STR$(date(I)) 550 IF INSTR(s$,ser$)>0 PRINTTAB(1,2)"Searching for book : ";sernum;" found.":SRT(sernum)=I:sernum=sernum+1 560 NEXT 570 sernum=sernum-1 580 IF sernum=0 PRINTTAB(1,2)SPC78TAB(1,2)CHR$7"No book found...press any key...":G=GET:ENDPROC 590 PRINTTAB(1,2)SPC78TAB(1,2)"Sorting list..." 600 E%=LOG(sernum)/LOG(2) 610 F%=2^E% 620 FORG%=1 TO E% 630 F%=F%/2:M%=sernum-F% 640 REPEAT:C%=0 650 FORN%=1 TO M% 660 IF num(SRT(N%))>num(SRT(N%+F%)) T%=SRT(N%):SRT(N%)=SRT(N%+F%):SRT(N%+F%)=T%:C%=1 670 NEXT 680 M%=M%-1 690 UNTILC%=0 700 NEXT 710 PRINTTAB(1,2)SPC78TAB(1,2)"SEARCH COMPLETE : Use cursor keys and ENTER to select book, Q to quit..." 720 FORI=5 TO 14:PRINTTAB(1,I)SPC78;:NEXT 730 PRINTTAB(1,5)STRING$(78,CHR$196)TAB(1,7)STRING$(78,CHR$196)TAB(1,5)CHR$218TAB(1,7)CHR$195TAB(78,5)CHR$191TAB(78,7)CHR$180TAB(40,5)CHR$194TAB(40,7)CHR$197TAB(71,5)CHR$194TAB(71,7)CHR$197 740 PRINTTAB(1,6)CHR$179;"Title"TAB(40,6)CHR$179;"Author(s)"TAB(71,6)CHR$179;"Number";CHR$179 750 S=1:Y=1 760 PROCSCREEN 770 PRINTTAB(2,Y+7)CHR$17LEFT$(tit$(SRT(S+Y-1)),36)TAB(41,Y+7)LEFT$(aut$(SRT(S+Y-1)),28)TAB(72,Y+7);num(SRT(S+Y-1))CHR$18 780 IF LEN(tit$(SRT(S+Y-1)))>36 PRINTTAB(39,Y+7);:VDU27,26 790 IF LEN(aut$(SRT(S+Y-1)))>28 PRINTTAB(70,Y+7);:VDU27,26 800 G=GET 810 PRINTTAB(39,Y+7)" "TAB(70,Y+7)" " 820 PRINTTAB(2,Y+7)LEFT$(tit$(SRT(S+Y-1)),36)TAB(41,Y+7)LEFT$(aut$(SRT(S+Y-1)),28)TAB(72,Y+7);num(SRT(S+Y-1)) 830 IF G=240 AND Y>1 Y=Y-1:GOTO770 840 IF G=241 AND Y<6 AND S+Y-11 S=S-1:PROCSCREEN 860 IF G=241 AND Y=6 AND S+6"" PRINTaut$(SRT(S+Y-1)) ELSE PRINT"(Not known)" 1050 PRINTTAB(1,10)"Subject : "sub$(SRT(S+Y-1)) 1060 PRINTTAB(1,11)"Publisher : "pub$(SRT(S+Y-1)) 1070 PRINTTAB(1,12)"Published in : ";:IF date(SRT(S+Y-1))>0 PRINT;date(SRT(S+Y-1)) ELSE PRINT"(Not known)" 1080 PRINTTAB(1,13)"ISBN number : ";:IF isbn$(SRT(S+Y-1))<>"" PRINTisbn$(SRT(S+Y-1)) ELSE PRINT"(Not known)" 1090 PRINTTAB(1,14)CHR$17"Book number : ";num(SRT(S+Y-1))CHR$18 1100 G=GET 1110 PRINTTAB(1,2)SPC78TAB(1,2)"SEARCH COMPLETE : Use cursor keys and ENTER to select book, Q to quit..." 1120 FORI=5 TO 14:PRINTTAB(1,I)SPC78;:NEXT 1130 PRINTTAB(1,5)STRING$(78,CHR$196)TAB(1,7)STRING$(78,CHR$196)TAB(1,5)CHR$218TAB(1,7)CHR$195TAB(78,5)CHR$191TAB(78,7)CHR$180TAB(40,5)CHR$194TAB(40,7)CHR$197TAB(71,5)CHR$194TAB(71,7)CHR$197 1140 PRINTTAB(1,6)CHR$179;"Title"TAB(40,6)CHR$179;"Author(s)"TAB(71,6)CHR$179;"Number";CHR$179 1150 ENDPROC 1160 DEF PROCEDIT 1170 FORI=5 TO 14:PRINTTAB(1,I)SPC78:NEXT 1180 PRINTTAB(1,2)SPC78TAB(1,2)"EDIT BOOK : Enter new data..." 1190 INPUTTAB(1,6),"New book number : "num(SRT(S+Y-1)) 1200 INPUTTAB(1,7),"New title : "tit$(SRT(S+Y-1)) 1210 INPUTTAB(1,8),"New author : "aut$(SRT(S+Y-1)) 1220 INPUTTAB(1,9),"New subject : "sub$(SRT(S+Y-1)) 1230 INPUTTAB(1,10),"New ISBN number : "isbn$(SRT(S+Y-1)) 1240 INPUTTAB(1,11),"New publisher : "pub$(SRT(S+Y-1)) 1250 INPUTTAB(1,12),"New publication date : "date(SRT(S+Y-1)) 1260 PROCSAVE 1270 PRINTTAB(1,2)SPC78TAB(1,2)"SEARCH COMPLETE : Use cursor keys and ENTER to select book, Q to quit..." 1280 FORI=5 TO 14:PRINTTAB(1,I)SPC78;:NEXT 1290 PRINTTAB(1,5)STRING$(78,CHR$196)TAB(1,7)STRING$(78,CHR$196)TAB(1,5)CHR$218TAB(1,7)CHR$195TAB(78,5)CHR$191TAB(78,7)CHR$180TAB(40,5)CHR$194TAB(40,7)CHR$197TAB(71,5)CHR$194TAB(71,7)CHR$197 1300 PRINTTAB(1,6)CHR$179;"Title"TAB(40,6)CHR$179;"Author(s)"TAB(71,6)CHR$179;"Number";CHR$179 1310 ENDPROC