10 ! PROGRAM TO EXTRACT TABLE OF CONTENTS FROM RUNOFF DOCUMENTATION 20 DIM A$[79]V,PG$[4]V,DD$[60],OU$[57],B$[11]V,CK$[1] 30 DD$=". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 32 NF=0 40 B=0 : CALL "SPAWNB"("RNO RUNOFF.TMP=RUNOFF.RNO",B) 50 OPEN #3, "RUNOFF.TMP/RO" 60 IF END #3 THEN 200 70 OPEN #4, "RUNOFF.TOC/WR" 71 PRINT #4, ".PAGE" 72 PRINT #4, ".CENTER" 73 PRINT #4, "^^TABLE OF CONTENTS" 74 PRINT #4, ".FG 1;.NOFILL" 80 INPUT LINE #3, A$ 81 XX=POS(A$,CHR$(123)) : IF XX<1 THEN 83 82 A$=SEG$(A$,1,XX-1)+SEG$(A$,XX+1) 83 XX=POS(A$,CHR$(125)) : IF XX<1 THEN 85 84 A$=SEG$(A$,1,XX-1)+SEG$(A$,XX+1) 85 XX=POS(A$,CHR$(27)) : IF XX<1 THEN 87 86 A$=SEG$(A$,1,XX-1)+SEG$(A$,XX+1) : GOTO 85 87 IF POS(A$,".") = 12 THEN GOSUB 4000 90 IF POS(A$,"PAGE ")>64 THEN GOSUB 1000 100 IF POS(A$,"CHAPTER")>1 THEN GOSUB 2000 110 IF POS(A$,"APPENDIX")>1 THEN GOSUB 3000 130 GOTO 80 200 PRINT #4, "\\" : PRINT #4, ".FILL" 205 CLOSE 210 EXIT 1000 PG$=SBS$(A$,POS(A$,"PAGE ")+5) 1010 RETURN 2000 CK$=SBS$(A$,POS(A$,"CHAPTER")+8,1) 2001 IF ASC(CK$)<48 OR ASC(CK$)>57 THEN RETURN 2002 A$=SBS$(A$,POS(A$,"CH"),9) 2005 PG$=SBS$(A$,9,1)+"-1" 2010 B$=A$+" " 2015 INPUT LINE #3, A$ : INPUT LINE #3, A$ 2016 IF POS(A$,CHR$(13))>1 THEN LET A$=SBS$(A$,1,LEN(A$)-1) 2017 IF POS(A$,CHR$(13))=1 THEN LET A$=SBS$(A$,2) 2018 A$=SBS$(A$,2,LEN(A$)-1) 2019 IF POS(A$," ")=1 THEN 2018 2020 GOSUB 5000 2021 PRINT #4, " " 2022 PRINT #4, OU$;PG$ 2025 PRINT OU$;PG$ 2030 RETURN 3000 CK$=SBS$(A$,POS(A$,"APPENDIX")+9,1) 3001 IF ASC(CK$)<65 OR ASC(CK$)>67 THEN RETURN 3002 A$=SBS$(A$,POS(A$,"APPENDIX"),10) 3005 PG$=SBS$(A$,10,1)+"-1" 3010 B$=A$+" " 3015 INPUT LINE #3, A$ : INPUT LINE #3, A$ 3016 IF POS(A$,CHR$(13))>1 THEN LET A$=SBS$(A$,1,LEN(A$)-1) 3017 IF POS(A$,CHR$(13))=1 THEN LET A$=SBS$(A$,2) 3018 A$=SBS$(A$,2,LEN(A$)-1) 3019 IF POS(A$," ")=1 THEN 3018 3020 GOSUB 5000 3022 PRINT #4, OU$;PG$ 3023 PRINT #4, " " 3025 PRINT OU$;PG$ 3026 NF=1 3030 RETURN 4000 IF POS(A$,CHR$(13))>1 THEN LET A$=SBS$(A$,1,LEN(A$)-1) 4002 IF NF>0 THEN RETURN 4005 A$=SBS$(A$,2,LEN(A$)-1) 4010 IF POS(A$," ")=1 THEN 4005 4015 IF ASC(SBS$(A$,1,1)) > 53 THEN RETURN 4016 IF ASC(SBS$(A$,3,1)) > 53 THEN RETURN 4017 IF SBS$(A$,5,3)="RNO" THEN RETURN 4020 B$=" " 4025 GOSUB 5000 4030 PRINT #4, OU$;PG$ 4035 PRINT OU$;PG$ 4040 RETURN 5000 ! FIX <, > AND & 5005 JJ=POS(A$,"<") : IF JJ<1 THEN 5015 5010 A$=SEG$(A$,1,JJ-1)+"("+SEG$(A$,JJ+1,LEN(A$)) : GOTO 5005 5015 JJ=POS(A$,">") : IF JJ<1 THEN 5025 5020 A$=SEG$(A$,1,JJ-1)+")"+SEG$(A$,JJ+1,LEN(A$)) : GOTO 5015 5022 JJ=POS(A$,"&") : IF JJ<1 THEN 5025 5023 A$=SEG$(A$,1,JJ-1)+"+"+SEG$(A$,JJ+1,LEN(A$)) : GOTO 5015 5025 K=LEN(A$)+LEN(B$) 5030 J=K-2*INT(K/2) 5035 IF J=1 THEN LET A$=A$+" " 5040 OU$=B$+A$+DD$ 5045 RETURN