home *** CD-ROM | disk | FTP | other *** search
- *********************************** LIBFIND.CMD
- ********** Pull out records with certain subjects.
-
- ********** First, ask for sort order.
- ERASE
- STORE 1 TO ORDER
- ?
- ? " How do you want references sorted? "
- ?
- ? " 1. Alphabetically by Author "
- ? " 2. Chronologically by Date"
- ? " 3. Original Order"
-
- @ 9,4 SAY "Enter choice (1-3) " GET ORDER PICT "9"
- READ
-
- *********** Use appropriate index.
- DO CASE
-
- CASE ORDER = 1
- USE LIBRARY INDEX AUTHORS
-
- CASE ORDER = 2
- USE LIBRARY INDEX DATES
-
- CASE ORDER = 3
- USE LIBRARY
-
- OTHERWISE
- RETURN
-
- ENDCASE
-
- ************************* Next, get search criteria.
- ERASE
- STORE " " TO K1,K2,K3,K4,K5,K6,K7,K8
- @ 3,5 SAY "Keyword 1 " GET K1
- @ 4,5 SAY "Keyword 2 " GET K2
- @ 5,5 SAY "Keyword 3 " GET K3
- @ 6,5 SAY "Keyword 4 " GET K4
- @ 7,5 SAY "Keyword 5 " GET K5
- @ 8,5 SAY "Keyword 6 " GET K6
- @ 9,5 SAY "Keyword 7 " GET K7
- READ
-
- *********************** Count how many keywords to search on.
- *********************** and store to the variable kcount.
- STORE 0 TO KCOUNT
- STORE "1" TO MAC
- DO WHILE K&MAC <> " "
- STORE KCOUNT+1 TO KCOUNT
- STORE STR(KCOUNT+1,1) TO MAC
- ENDDO
-
-
- ************** Now, set up search condition into
- ************** a memory variable called CND.
-
- ************** First, set up initial search condition.
- STORE CHR(34)+" "+!(TRIM(K1))+","+CHR(34)+" $KEYWORDS" TO CND
-
-
- ************** If many keywords to search on,
- ************** ask about the logic of the search.
- STORE "0" TO LOGIC
- IF KCOUNT > 1
- ?
- @ 12,2 SAY " References with 1) ALL keywords or 2) ANY keyword " GET LOGIC
- READ
- IF LOGIC = "1"
- STORE " .AND. " TO LOGIC
- ELSE
- STORE " .OR. " TO LOGIC
- ENDIF (logic=1)
-
- *********** Then finish the 'condition' string (CND).
- STORE 2 TO COUNT
- DO WHILE COUNT <= KCOUNT
- STORE STR(COUNT,1) TO MAC
- STORE CND+LOGIC+CHR(34)+" "+!(trim(K&MAC))+","+CHR(34)+" $KEYWORDS" TO CND
- STORE COUNT+1 TO COUNT
- ENDDO (count <=kcount)
-
- ENDIF (kcount > 1)
-
- *********** Ask about hardcopy.
- ERASE
- STORE " " TO LP
- @ 5,5 SAY " Send report to printer (Y/N) " GET LP
- READ
-
- ************ Prepare printer if necessary.
- IF !(LP)="Y"
- @ 7,5 SAY "Ready printer, then press any key..."
- WAIT
- SET PRINT ON
- ENDIF (LP = Y)
-
- ************ Use LF to count line-feeds for formatting
- ************ On the screen and printer.
- STORE 0 TO LF
-
-
- ************ Finally, print the report, listing only
- ************ references for whom &CND is true.
- ERASE
- DO WHILE .NOT. EOF
- IF &CND
- ? "Author:",AUTHOR
- ? "Title :",TITLE
- ? "Pub. :",PUB
- ? "Date :",DATE," Pages : ",PAGES
- ?
- ? "Keywords : "+KEYWORDS
- ? "Abstract : "
- STORE LF+7 TO LF
- ****************** Break off long abstract at space
- ****************** Nearest the right margin.
- STORE TRIM(ABSTRACT) TO STRING
- STORE LEN(TRIM(STRING)) TO TLEN
- DO WHILE TLEN > 60
- **************** Find space nearest right margin
- STORE 60 TO SPOT
- DO WHILE $(STRING,SPOT,1)<>" "
- STORE SPOT-1 TO SPOT
- ENDDO (while not " ")
- **************** Print sub-string and break off section.
- ? $(STRING,1,SPOT-1)
- STORE LEN(TRIM(STRING))-SPOT TO TLEN
- STORE $(STRING,SPOT+1,TLEN) TO STRING
- STORE LF+1 TO LF
- ENDDO (while len > 60)
- ? STRING
- ?
- ?
- STORE LF+3 TO LF
- ************* Count line feeds, and start on
- ************* new page, if necessary.
- IF LF >= 55
- EJECT
- STORE 0 TO LF
- ENDIF (lf > 55)
-
- ENDIF (cnd)
- SKIP
- ENDDO (while not eof)
-
- SET PRINT OFF
- USE
- RETURN