1 ! 3 ! HELP V1.0 Thomas Jevon April 6,1979 10 EXTEND 20 ! MODIFICATION HISTORY 100 ! PROGRAM DESCRIPTION: 110 ! This program searches through an index for matches 120 ! When it finds a match it prints out the appropriate file or list of more specific choices. 300 ! I/O CHANNELS 310 ! Channel #1 Is used for accessing the Help index file Channel #2 Used to print out a specific file 400 ! VARIABLE DEFINITION: 410 ! HLPACT$ The Help account HIND$ The HELP Index DELIN$ The delineator used in the Help Index File 430 ! REQUEST$ The user's request for help FILE$ Filename on index line TITLE$ Title name on index line CAT$ Category of the file 440 ! FLAGS: SIMP%-THE USER'S REQUEST EXACTLY MATCHES ENTRY IN INDEX FLG%--WE HAVE FOUND ONE MATCH IN INDEX 450 ! FG%---THERE IS MORE THAT ONE MATCH (AMBIGUOUS REQUEST) CTR%--NUMBER OF LINES PRINTED ON TERMINAL FLAG%-A FILE RATHER THAN A LIST HAS BEEN PRINTED OUT 460 ! NREQ$ USER'S RESPONSE TO THE CONTINUE PROMPT TIT1$,TYP1$,FIL1$ SAVED FROM FIRST MATCH OF FILE,TITLE,CATEG 470 ! RTIT$,RTYP$,RFIL$ SAVED IF EXACT MATCH OF " " " 800 ! FUNCTION AND SUBROUTINE DESCRIPTIONS 810 ! 15500 SUBROUTINE TO BREAK DOWN INDEX LINE 16000 SUBROUTINE TO ASK USER IF HE WANTS TO CONTINUE 1000 ON ERROR GOTO 19000 ! SET UP STANDARD TRAP 1010 PRINT "RUN HELP VIA THE CCL COMMAND: HELP"\GOTO 32767 1020 ! PROGRAM STARTS HERE 1030 EXTEND 1035 HLPACT$="HELP: or [1,112]" 1040 DELIN$="/"\HIND$="HELP:HELP.IDX" 1050 ON ERROR GOTO 19000 1100 REQUEST$=RIGHT(SYS(CHR$(7%)),6%) 1110 REQUEST$=CVT$$(REQUEST$,32%) 1120 LNG=LEN(REQUEST$)\PRINT 1140 SIMP%,FLG%,FLAG%,FG%,CTR%=0% 1180 IF LNG=0 THEN FIL1$="HELP:HELP.HLP"\TIT1$=""\GOTO 7500 1200 IF MID(REQUEST$,1%,1%)="*" THEN 7200 1220 R$=LEFT(REQUEST$,LNG) 1290 ! BEGIN SEARCH THROUGH INDEX 1300 ON ERROR GOTO 2000 1310 OPEN HIND$ FOR INPUT AS FILE #1% 1320 INPUT LINE#1, LIN$ 1330 IF LEFT(LIN$,LNG)<>R$ THEN 1320 1340 GOSUB 15500 1360 TYP1$=TYPE$\TIT1$=TITLE$\FIL1$=FILE$ !SAVE INFO 1370 FLG%=1% 1380 ! WHEN THERE IS AN INITIAL MATCH 1400 TYP1$=TYPE$\TIT1$=TITLE$\FIL1$=FILE$\ !SAVE THIS INFO 1410 IF TITLE$<>REQUEST$ THEN 1450 1420 RTYP$=TYPE$\RTIT$=TITLE$\RFIL$=FILE$\SIMP%=1% !USER'S REQUEST 1430 ! EXACTLY MATCHES ENTRY IN INDEX 1450 INPUT LINE #1,LIN$ 1460 IF LEFT(LIN$,1)>=LEFT(TIT1$,1%) THEN 1500 1470 PRINT "Your HELP INDEX is out of order!!!!"\PRINT\PRINT "Check in the vicinity of this line:"\PRINT\PRINT LIN$\PRINT 1480 GOTO 32767 1500 IF LEFT(LIN$,1%)<>LEFT(R$,1%) THEN 2040 1510 IF LEFT(LIN$,LNG)<>R$ THEN 1450 1520 GOSUB 15500 1540 IF FILE$=FIL1$ THEN 1450 1550 ! WHEN THERE IS A SECOND MATCH 1570 IF TITLE$<>REQUEST$ THEN 1600 1580 RTIT$=TITLE$\RTYP$=TYPE$\RFIL$=FILE$\SIMP%=1% 1600 IF FG%=1% THEN 1670 1610 PRINT "Your request for HELP on: ";REQUEST$;" is ambiguous!!" 1620 PRINT "The following information is available:"\PRINT 1640 FG%=1%\CTR%=7% 1650 PRINT TIT1$ 1670 PRINT TITLE$\CTR%=CTR%+1% 1680 TYP1$=TYPE$\TIT1$=TITLE$\FIL1$=FILE$ 1700 IF CTR%=18% THEN GOSUB 16000 ELSE 1450 1710 IF NREQ$="H" THEN 1120 1730 IF NREQ$="N" THEN 9000 1750 GOTO 1450 1990 ! THE DECISION MODULE 2000 IF ERR<>11% THEN GOTO 19000 ELSE RESUME 2040 2040 IF FLG%=1% AND FG%<>1% THEN 7500 2050 IF FG%=1% THEN IF SIMP%<>1% THEN 2100 ELSE 2150 2060 PRINT\PRINT "Sorry, I don't have information about: ";REQUEST$ 2070 GOTO 32767 2100 GOSUB 16000\IF NREQ$="H" THEN 1120 ELSE 9000 2150 PRINT\PRINT "I assume you want just the basic"; " information on: ";RTIT$ 2170 GOSUB 16000\IF NREQ$="H" THEN 1120 2180 IF NREQ$="N" THEN 9000 2190 TIT1$=RTIT$\TYP1$=RTYP$\FIL1$=RFIL$\GOTO 7500 2200 GOTO 2170 3900 ! LISTING BY CATEGORY 3910 ! 4000 OPEN HIND$ FOR INPUT AS FILE 1% 4010 ON ERROR GOTO 4500 4020 CHK$=LEFT(TIT1$,3%) 4040 PRINT\PRINT TAB(30);"LIST OF ";TIT1$\PRINT 4050 PRINT TAB(10);"TOPIC";TAB(57);"FILE"\PRINT 4060 INPUT LINE #1,LIN$ 4080 GOSUB 15500 4090 IF CHK$<>TYPE$ THEN 4060 4100 PRINT TITLE$;TAB(57);FILE$ 4120 CTR%=CTR%+1%\IF CTR%<18% THEN 4060 4140 GOSUB 16000 4150 IF NREQ$="H" THEN 1120 4160 IF NREQ$="N" THEN 9000 ELSE 4060 4500 IF ERR<>11 THEN 19000 ELSE RESUME 4510 4510 GOSUB 16000 4520 IF NREQ$="H" THEN 1120 ELSE 9000 7190 ! ROUTINE TO PRINT OUT ALL HELP AVAILABLE 7200 OPEN HIND$ FOR INPUT AS FILE 1% 7205 ON ERROR GOTO 7400 7210 CTR%=5% 7220 PRINT\PRINT TAB(20);"LIST OF ALL HELP INFORMATION AVAILABLE"\PRINT 7230 PRINT "CATEGORY";TAB(12);"TOPIC";TAB(57);"FILE"\PRINT 7240 INPUT LINE #1,LIN$ 7250 GOSUB 15500 7300 PRINT TYPE$;TAB(12);TITLE$;TAB(57);FILE$ 7320 CTR%=CTR%+1%\IF CTR%=18% THEN GOSUB 16000 ELSE 7240 7340 IF NREQ$="H" THEN GOTO 1120 7350 IF NREQ$="Y" THEN 7240 ELSE 9000 7400 IF ERR<>11 THEN 19000 ELSE RESUME 7410 7410 GOSUB 16000 7420 IF NREQ$="H" THEN GOTO 1120 ELSE 9000 7500 ! ROUTINE TO PRINT OUT A FILE 7510 ON ERROR GOTO 7800 7520 CTR%=0% 7530 IF REQUEST$=TIT1$ THEN 7580 7540 PRINT "I assume you want help on: ";TIT1$\PRINT\PRINT 7550 CTR%=10% 7580 IF LEFT(TYP1$,1)="*" THEN 4000 7590 OPEN FIL1$ FOR INPUT AS FILE 2%\PRINT\PRINT 7600 FLAG%=1% 7610 INPUT LINE #2%, IN.LINE$ 7620 PRINT IN.LINE$;\CTR%=CTR%+1% 7640 IF CTR%=18% THEN GOSUB 16000 ELSE 7610 7650 IF NREQ$="H" THEN 1120 7660 IF NREQ$="Y" THEN 7610 ELSE 9000 7800 IF ERR<>11 THEN 19000 ELSE RESUME 7820 7820 GOSUB 16000 7830 IF NREQ$="H" THEN 1120 ELSE 9000 9000 ! 9010 ! END OF PROGRAM CODE 9040 ! 9050 IF FLAG%<>1% THEN FIL1$=HIND$ 9070 Y%=INSTR(1,FIL1$,"]") 9090 IF Y%<>0% THEN 9110 9100 AT$=HLPACT$\NM$=RIGHT(FIL1$,6%)\GOTO 9140 9110 AT$=LEFT(FIL1$,Y%)\NM$=RIGHT(FIL1$,Y%+1) 9140 PRINT\PRINT "------------This information is located in: ";NM$ 9150 PRINT "------------account: ";AT$;\PRINT TAB(13);\PRINT 9170 GOTO 32767 10000 ! SUBROUTINE DESCRIPTIONS 15500 ! SUBROUTINE TO BREAK DOWN INDEX LINE 15520 Y%=INSTR(1,LIN$,DELIN$) 15540 IF Y%=0 THEN 15800 ELSE TITLE$=LEFT(LIN$,Y%-1%) 15560 Z%=INSTR(Y%+1%,LIN$,DELIN$) 15570 IF Z%=0% THEN 15800 ELSE FILE$=MID(LIN$,Y%+1%,Z%-Y%-1%) 15590 IF INSTR(Z%+1%,LIN$,DELIN$)<>0 THEN 15800 15600 TYPE$=MID(LIN$,Z%+1,3)\TYPE$=CVT$$(TYPE$,4%) 15620 GOTO 15950 15800 PRINT\PRINT "You have an error in your index file on this line:" 15810 PRINT\PRINT LIN$\PRINT\GOTO 32767 15950 RETURN 16000 ! SUBROUTINE TO ASK IF CONTINUE? 16100 PRINT\PRINT "-----------CONTINUE";\INPUT LINE Q$ 16120 PRINT\Q$=CVT$$(Q$,164%) 16130 CTR%=0% 16140 NREQ$=LEFT(Q$,4%)\IF NREQ$<>"HELP" THEN 16160 16150 REQUEST$=RIGHT(Q$,6%)\NREQ$="H"\GOTO 16190 16160 NREQ$=LEFT(Q$,1%)\IF NREQ$<>"N" THEN NREQ$="Y" 16190 RETURN 19000 ! ERROR ROUTINES 19010 PRINT\PRINT "Your request for HELP on: ";REQUEST$ 19020 PRINT "failed because of: "; 19030 PRINT RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)),4%)\PRINT 19050 PRINT "When I stopped looking I was investigating: ";TITLE$ 19070 PRINT "and I was looking for file: ";FILE$ 19100 IF ERR<>10 THEN 19200 19110 PRINT\PRINT "You can get HELP on ";REQUEST$;" however." 19120 PRINT "Either log in under a privileged account or ask the" 19130 PRINT "owner of: ";FILE$;" to change his file's protection code." 19200 PRINT\PRINT "Sorry about that!!" 19250 RESUME 32767 ! 30000 GOTO 1030 !CCL ENTRY 32767 END