REM --FILE BIBSRCH.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% DIM LFT%(MAXCON%),CONCEPT$(MAXCON%),CON.KEY%(MAXCON%,MAXDEF%+1) DIM CON.RATE(MAXCON%,MAXDEF%+1),RGHT%(MAXCON%),CMD$(MAXCON%) CONSOLE ERR%=0 BLANK$=" " PRINT CLS$ PRINT TAB(12);"--BIBLIOGRAPHY SEARCH--" PRINT IF END #1 THEN 34E1 OPEN LIBNAME$+".VOC" AS 1 IF SIZE(LIBNAME$+".VOC")=0 THEN \ DELETE 1 : GOTO 34E1 IF END #1 THEN 33E1 VOC.LEN%=1 WHILE TRUE% READ #1; LINE KEYWD$(VOC.LEN%) VOC.LEN%=VOC.LEN%+1 WEND 33E1 CLOSE 1 VOC.LEN%=VOC.LEN%-1 IF END #2 THEN 34E1 OPEN LIBNAME$+".BIB" AS 2 IF SIZE(LIBNAME$+".BIB")=0 THEN \ DELETE 2 : GOTO 34E1 CLOSE 2 GOSUB 1E1 GOSUB 18E1 CHAIN "BIBSR2" STOP DEF FNSPEC.CH%(DUM$,POSIT%) CH$=MID$(DUM$,POSIT%,1) FNSPEC.CH%=0 IF (CH$="#") OR ((CH$>="'") AND (CH$<="+")) THEN FNSPEC.CH%=-1 RETURN FEND 1E1 ERR%=0 1.2E1 QUERY$="" PRINT "ENTER INTERROGATION PHRASE" INPUT ">";LINE QUERY$ QUERY$=UCASE$(QUERY$) I%=1 IF LEFT$(QUERY$,1)<>"(" THEN \ ERR%=3 : GOSUB 9E1 : ERR%=0 : GOTO 1.2E1 PAREN%=0 WHILE I%<=LEN(QUERY$) IF MID$(QUERY$,I%,1)="(" THEN PAREN%=PAREN%+1 IF MID$(QUERY$,I%,1)=")" THEN PAREN%=PAREN%-1 I%=I%+1 WEND IF PAREN% THEN ERR%=4 : GOSUB 9E1 : ERR%=0 : GOTO 1.2E1 PTR.ONE%=1 : PTR.TWO%=1 : L%=0 1.1E1 WHILE (FNSPEC.CH%(QUERY$,PTR.ONE%)) AND (PTR.ONE%=LEN(QUERY$) THEN RETURN L%=L%+1 LFT%(L%)=PTR.ONE% PTR.TWO%=PTR.ONE% WHILE NOT FNSPEC.CH%(QUERY$,PTR.TWO%) PTR.TWO%=PTR.TWO%+1 WEND RGHT%(L%)=PTR.TWO% CONCEPT$(L%)=MID$(QUERY$,LFT%(L%),RGHT%(L%)-LFT%(L%)) PTR.ONE%=PTR.TWO% GOTO 1.1E1 RETURN 9E1 REM ERROR ON ERR% GOTO 9.1E1,9.2E1,9.4E1,9.5E1,9.6E1 9.1E1 PRINT "AN ILLEGAL KEYWORD INPUT--"; GOTO 9.3E1 9.2E1 PRINT "RATINGS MUST BE IN RANGE 0.0...1.0--"; GOTO 9.3E1 9.4E1 PRINT "ENTIRE PHRASE MUST BE ENCLOSED IN PARENS--"; GOTO 9.3E1 9.5E1 PRINT "RIGHT AND LEFT PARENS MUST BE BALANCED--"; GOTO 9.3E1 9.6E1 PRINT "KEYWORDS MAY NOT CONTAIN BLANKS--"; 9.3E1 PRINT "RE-ENTER PHRASE" RETURN 18E1 REM DEFINE PRINT "DEFINE EACH OF THE CONCEPTS YOU HAVE ENTERED" PRINT "IN TERMS OF KEYWORDS AND APPLICABILITY" PRINT "EXAMPLE: THEORY 0.6 APPLICATIONS 0.8" PRINT FOR J%=1 TO L% 18.3E1 KEY%=0 PRINT CONCEPT$(J%); INPUT ": ";LINE CMD$(J%) CMD$(J%)=UCASE$(CMD$(J%)) SW%=-1 : I%=1 WHILE (I%".") AND ((CH$<"0") OR (CH$>"9")) THEN \ ERR%=5 : GOSUB 9E1 : ERR%=0 : GOTO 18.3E1 IF CH$="." THEN \ CON.RATE(J%,KEY%)=VAL("0"+DUM$) \ ELSE CON.RATE(J%,KEY%)=VAL(DUM$) IF (CON.RATE(J%,KEY%)>1.0) OR (CON.RATE(J%,KEY%)<0.0) THEN \ ERR%=2 : GOSUB 9E1 : \ ERR%=0 : GOTO 18.3E1 SW%=-1 18.8E1 WHILE (MID$(CMD$(J%),I%,1)<>" ") AND (I%" " : IR%=IR%+1 : WEND WORD$=LEFT$(DUM$,IR%-1) + BLANK$ WORD$=LEFT$(WORD$,KWD.LEN%) IB%=1 : JB%=VOC.LEN% 8.1E1 KB%=(JB%+IB%)/2 IF WORD$>KEYWD$(KB%) THEN \ IB%=KB%+1 \ ELSE JB%=KB%-1 IF (WORD$<>KEYWD$(KB%)) AND (IB%<=JB%) THEN 8.1E1 IF (WORD$<>KEYWD$(KB%)) THEN \ ERR%=1 : GOSUB 9E1 : ERR%=0 : \ GOTO 18.3E1 I%=IR%+I%-1 RETURN 34E1 PRINT "NO LIBRARY FILE NAMED ";LIBNAME$ INPUT "PRESS RETURN TO EXIT TO SYSTEM ";LINE ANS$ STOP