REM --FILE BIBBLD.BAS-- COMMON KEYWD$(1),LIBNAME$,RLEN%,TRUE%,AUTH.LEN%,TITL.LEN% COMMON MAXBIB%,MAXDESC%,MAXDEF%,MAXKEYS%,MAXCON%,CONCEPT$(1) COMMON ISS.LEN%,CLS$,ERR%,JOUR.LEN%,KWD.LEN%,CMD$(1) COMMON LFT%(1),RGHT%(1),CON.KEY%(2),CON.RATE(2),QUERY$,L% GOSUB 6E1 CHAIN "BIBLIO" STOP DEF FN.INT.TWO$(DUM%) HI%=DUM%/16 : LO%=DUM%-16*HI% IF HI%<10 THEN HI%=HI%+48 ELSE HI%=HI%+55 IF LO%<10 THEN LO%=LO%+48 ELSE LO%=LO%+55 FN.INT.TWO$=CHR$(HI%) + CHR$(LO%) RETURN FEND DEF FN.REALONE$(DUM) ONE%=INT%(10.0*DUM) IF ONE%<10 THEN ONE%=ONE%+48 ELSE ONE%=ONE%+55 FN.REALONE$=CHR$(ONE%) RETURN FEND 6E1 REM BUILD/MODIFY BIB FILE PRINT CLS$ PRINT TAB(12);"----BIBLIO BUILD/MODIFY---" PRINT IF END #1 THEN 6.1E1 OPEN LIBNAME$+".VOC" AS 1 IF SIZE(LIBNAME$+".VOC")=0 THEN \ DELETE 1 : GOTO 6.1E1 VOC.LEN%=1 IF END #1 THEN 6.2E1 WHILE TRUE% READ #1;KEYWD$(VOC.LEN%) VOC.LEN%=VOC.LEN%+1 WEND 6.2E1 CLOSE 1 VOC.LEN%=VOC.LEN%-1 IF END #2 THEN 6.3E1 OPEN LIBNAME$+".BIB" RECL RLEN% AS 2 IF SIZE(LIBNAME$+".BIB")=0 THEN \ DELETE 2 : GOTO 6.3E1 INPUT "ADD OR DELETE ARTICLES (A/D)?";ANS$ ANS$=UCASE$(LEFT$(ANS$,1)) IF ANS$="D" THEN 4E1 IF END #2 THEN 6.37E1 READ #2,1; LINE BUFF$ BIB.LEN%=VAL(BUFF$) READ #2,BIB.LEN%-2; WHILE TRUE% READ #2;BUFF$ WEND GOTO 6.37E1 6.3E1 REM BUILD IT BIB.LEN%=0 CREATE LIBNAME$+".BIB" RECL RLEN% AS 2 PRINT USING "######"; #2,1; BIB.LEN% 6.37E1 BLANK$=" " PRINT "PRESSING RETURN IN RESPONSE TO THE PROMPT 'AUTHOT'" PRINT "TERMINATES THIS ROUTINE." PRINT WHILE TRUE% IF BIB.LEN%>=MAXBIB% THEN 6.34E1 BUFF$="" INPUT "AUTHOR : ";LINE AUTHOR$ IF LEN(AUTHOR$)=0 THEN\ PRINT USING "&"; #2; CHR$(26) :\ GOTO 6.32E1 INPUT "TITLE : "; LINE TITLE$ INPUT "JOURNAL : ";LINE JOURNAL$ INPUT "ISSUE : "; LINE ISSUE$ AUTHOR$=LEFT$(AUTHOR$+BLANK$,AUTH.LEN%) TITLE$=LEFT$(TITLE$+BLANK$,TITL.LEN%) JOURNAL$=LEFT$(JOURNAL$+BLANK$,JOUR.LEN%) ISSUE$=LEFT$(ISSUE$+BLANK$,ISS.LEN%) 6.33E1 BUFF$=AUTHOR$+TITLE$+JOURNAL$+ISSUE$ PRINT "ENTER KEYWORDS AND RATINGS,I.E.,KEYWORD 0.5 " CMD$="" : KEY%=0 : ERR%=0 INPUT ">"; LINE CMD$ IF (LEN(CMD$)=0) THEN 6.31E1 SW%=-1 : I%=1 : W.NUM%=0 WHILE (I%=MAXDESC% THEN 6.39E1 WHILE (MID$(CMD$,I%,1)=" ") I%=I%+1 WEND DUM$=RIGHT$(CMD$,LEN(CMD$)-I%+1) IF NOT SW% THEN 6.36E1 W.NUM%=W.NUM%+1 GOSUB 19E1 IF ERR% THEN 6.33E1 BUFF$=BUFF$+FN.INT.TWO$(KB%) SW%=0 GOTO 6.38E1 6.36E1 CH$=LEFT$(DUM$,1) IF (CH$<>".") AND ((CH$<"0") OR (CH$>"9")) THEN \ PRINT "KEYWORD MAY NOT CONTAIN BLANKS-RE-ENTER LINE":\ GOTO 6.33E1 IF LEFT$(DUM$,1)="." THEN \ RAT=VAL("0"+DUM$) \ ELSE RAT=VAL(DUM$) BUFF$=BUFF$+FN.REALONE$(RAT) KEY%=KEY%+1 SW%=-1 6.38E1 WHILE (MID$(CMD$,I%,1)<>" ") AND (I%' WITH AT LEAST" PRINT "TWO #'S, THEN RETURN. DEPRESS ONLY THE RETURN" PRINT "TO SAVE, ENTER E THEN RETURN TO EXIT TO MENU" PRINT IF END #2 THEN 4.4E1 WHILE TRUE% READ #2,R.REC%; LINE BUFF$ PRINT MID$(BUFF$,AUTH.LEN%+TITL.LEN%+1,JOUR.LEN%); PRINT TAB(JOUR.LEN%+2); MID$(BUFF$,AUTH.LEN%+1,TITL.LEN%) PRINT MID$(BUFF$,AUTH.LEN%+TITL.LEN%+JOUR.LEN%+1,ISS.LEN%); PRINT TAB(JOUR.LEN%+2); LEFT$(BUFF$,AUTH.LEN%) PRINT INPUT "> ";LINE ANS$ IF UCASE$(LEFT$(ANS$,1))="E" THEN 4.4E1 IF LEFT$(ANS$,2)="##" THEN \ PRINT USING "&"; #2,R.REC%;"ZZZZZ"+RIGHT$(BUFF$,RLEN%-7) :\ DEL%=DEL%+1 R.REC%=R.REC%+1 WEND 4.4E1 PRINT DEL%; "ARTICLES MARKED DELETED" CLOSE 2 GOTO 6.7E1 6.34E1 PRINT "FILE FULL- NO MORE ARTS CAN BE WRITTEN" 6.32E1 PRINT BIB.LEN%; " ARTICLES ON FILE" PRINT USING "######"; #2,1; BIB.LEN% CLOSE 2 GOTO 6.7E1 6.1E1 PRINT "NO VOCAB FILE NAMED ";LIBNAME$ 6.7E1 INPUT "PRESS RETURN TO GO BACK TO MENU ";LINE ANS$ RETURN 6.39E1 REM TOO KEY%=0 BUFF$=LEFT$(BUFF$,AUTH.LEN%+TITL.LEN%+JOUR.LEN%+ISS.LEN%) PRINT "NO MORE THAN ";MAXDESC%;" KEYWORDS PER ART CAN" PRINT "BE ENTERED. SHORTEN LIST AND RE-ENTER" GOTO 6.33E1 19E1 REM BREAKOUT IR%=1 WHILE MID$(DUM$,IR%,1)<>" " : IR%=IR%+1 : WEND WORD$=LEFT$(DUM$,IR%-1)+BLANK$ WORD$=LEFT$(WORD$,KWD.LEN%) WORD$=UCASE$(WORD$) IB%=1 : JB%=VOC.LEN% 19.1E1 REM BLABLA KB%=(IB%+JB%)/2 IF WORD$<=KEYWD$(KB%) THEN JB%=KB%-1 ELSE IB%=KB%+1 IF (WORD$<>KEYWD$(KB%)) AND (IB%<=JB%) THEN 19.1E1 IF WORD$<>KEYWD$(KB%) THEN 19.3E1 I%=IR%+I%-1 RETURN 19.3E1 PRINT USING "CANNOT FIND KEYWORD \####";W.NUM% INPUT "PRESS RETURN TO RE-ENTER COMPLETE LINE ";LINE ANS$ ERR%=-1 : RETURN