100 *THIS IS BASIC PROGRAM "BOOK"
110 U$='ABCDEFGHIJKLMNOPQRSTUVWXYZ' &*UPPERCASE LETTERS
120 L$='abcdefghijklmnopqrstuvwxyz' &*LOWERCASE LETTERS
130 ;'DOCUMENT NUMBER';
140 INPUT D$
150 D$='$'+D$, L=LEN(D$)
160 FOR I=2 TO L
170 IF D$(:I,1)<>' ' THEN 190
180 D$=D$(:1,I-1)+D$(:I+1)
190 IF D$(:I,1)<'0' THEN 130
200 NEXT I
210 OPEN D$:"X" TO :1, INPUT
220 ENDFILE :1, 240
230 INPUT :1;9999.999,N
240 N=INT(KEY(1)*10)
250 OPEN D$:"X" TO :1, INPUT
260 ENDFILE :1, 450
270 ;'HOW MANY LINES PER DISPLAY';
280 INPUT L
290 IF L<>ABS(INT(L)) THEN 320
300 IF L<>0 THEN 320
310 L=54
320 P=INT(N/L)
330 IF P=N/L THEN 350
340 P=P+1
350 ;'THE DOCUMENT HAS'N' LINES, OR'P' PAGES AT'L' LINES PER PAGE.'
360 INPUT=$
370 ;'LIST CONTENTS'; & INPUT D
380 IF D><'YES' THEN 410
390 ;
400 GOSUB 660
410 ;'CONSULT INDEX'; & INPUT D
420 IF D><'YES' THEN 450
430 GOSUB 790
440 IF F2=1 THEN 490
450 ;'*** DISPLAY ***';
460 INPUT D1
470 IF D1='END' THEN 650
480 IF D1='INDEX' THEN 430
490 IF D1=>1 THEN 520
500 D=D+1
510 GOTO 530
520 D=D1
530 IF D>P THEN 350
540 ;'(PAGE'D')'
550 ;
560 K=((D-1)*L+1)/10
570 INPUT :1;K,R$
580 ;R$
590 FOR I=2 TO L
600 INPUT :1, R$
610 ;R$
620 NEXT I
630 ;
640 GOTO 450
650 END
660 *LIST TABLE OF CONTENTS
670 OPEN "T"+D$:"X" TO :2, INPUT
680 ENDFILE :2, 780
690 INPUT :2, R$
700 L2=LEN(R$), P1=''
710 IF L2<65 THEN 760
720 L1=VAL(R$(:65))
730 P1=INT(L1*10/L)
740 IF P1=L1*10/L THEN 760
750 P1=P1+1
760 ;R$(:1,64)''P1
770 GOTO 690
780 RETURN
790 *SUBR TO USE INDEX
800 F2=0
810 ;'TYPE A WORD OR SHORT PHRASE.'
820 ;'TYPE A PAGE NUMBER OR "END" TO EXIT INDEX.'
830 INPUT I$
840 L4=LEN(I$)
850 FOR I=1 TO L4
860 IF I$(:I,1)<'0' THEN 910
870 NEXT I
880 D1=VAL(I$)
890 F2=1
900 GOTO 1230
910 IF I$='END' THEN 1230
920 F1=0
930 K1=.001
940 ENDFILE :3, 1080
950 OPEN "I"+D$:"X" TO :3, INPUT
960 FOR I=1 TO 26
970 IF I$(:1,1)=U$(:I,1) THEN 1010
980 IF I$(:1,1)=L$(:I,1) THEN 1010
990 NEXT I
1000 GOTO 1020
1010 K1=I*100
1020 INPUT :3;K1,J$
1030 GOTO 1060
1040 INPUT :3, J$
1050 IF INT(KEY(3))><INT(K1) THEN 1080
1060 IF I$=J$(:1,64) THEN 1130
1070 GOTO 1040
1080 IF F1=0 THEN 1110
1090 ;'.'
1100 GOTO 830
1110 ;I$' NOT INDEXED, TRY A RELATED TERM.'
1120 GOTO 830
1130 C=VAL(J$(:65))
1140 P1=INT(C*10/L)
1150 IF P1=C*10/L THEN 1170
1160 P1=P1+1
1170 IF F1=1 THEN 1210
1180 ;'SEE'P1''TAB(0)
1190 F1=1
1200 GOTO 1040
1210 ;','P1''TAB(0)
1220 GOTO 1040
1230 RETURN
