1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        FILIS1:  FILE LISTING PROGRAM/INSTRUCTIONS, PART 2 OF 2
4  REM
5  REM        36272  REV A  --  2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
20  REM  *** FILIS1 *** 1155 WORDS *** VERSION 2 ***
30  FILES *,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*
40  DIM A$[72],B$[64],C$[64],D$[64],E$[64],G$[64],H$[64],I$[72],J[72],T[16,5]
50  I3=3
60  I1=I3/I3
70  U0=16
80  L=I1-I1
90  ASSIGN "ASCII",I1,A
100  READ #I1;B$,C$,D$,E$
110  MAT T=ZER
120  FOR F=I1 TO U0
130  IF L THEN 460
140  PRINT '10"*";
150  ENTER 255,A,A$
160  IF  NOT LEN(A$) THEN 460
170  G$="SREFIL,"
180  FOR F1=I1 TO LEN(G$)
190  IF A$[I1,I1]=G$[F1,F1] THEN 220
200  NEXT F1
210  GOTO 330
220  L=L OR (F1=I3+I3)
230  A$=A$[I1+I1]
240  IF F1=I3+I3 THEN 170
250  IF F1=7 THEN 280
260  T[F,F1]=I1
270  GOTO 170
280  FOR B=I1+I1 TO LEN(A$)
290  IF A$[B,B]="," THEN 350
300  NEXT B
310  ASSIGN A$,F,A
320  IF A<3 THEN 450
330  PRINT '10"TRY AGAIN."
340  GOTO 140
350  ASSIGN A$[I1,B-I1],F,A,A$[B+I1]
360  GOTO 320
370  PRINT '10"NO SUCH RECORD."
380  PRINT '13'10'10"*** RECORD ";
390  ENTER 255,A,B
400  PRINT '10
410  IF A<I1 THEN 380
420  IF  END #A1 THEN 370
430  IF  NOT B THEN 1380
440  GOTO 520
450  NEXT F
460  FOR A1=I1 TO F-I1
470  IF F=I1+I1 THEN 490
480  PRINT '13'10'10'10'10'10"*** FILE"A1
490  IF T[A1,5] THEN 380
500  IF  END #A1 THEN 1380
510  FOR B=I1 TO 1.70141E+38
520  READ #A1,B
530  IF TYP(-A1)=I3+I1 AND T[A1,I1+I1] OR TYP(-A1)=I3 AND T[A1,I3] THEN 1360
540  IF T[A1,5] THEN 560
550  PRINT '13'10'10"*** RECORD"B'10
560  IF  NOT T[A1,I3+I1] THEN 700
570  PRINT "FORMAT:"
580  GOTO TYP(-A1) OF 640,670,610
590  PRINT " EOR"'10
600  GOTO 620
610  PRINT " EOF"'10
620  READ #A1,B
630  GOTO 700
640  PRINT "#";
650  READ #A1;C
660  GOTO 580
670  PRINT "$";
680  READ #A1;A$
690  GOTO 580
700  L1=I1-I1
710  GOTO TYP(-A1) OF 720,760,1330,1350
720  READ #A1;C
730  PRINT C;
740  L1=I1
750  GOTO 710
760  READ #A1;A$
770  PRINT LIN(L1);
780  IF LEN(A$) THEN 810
790  PRINT "H"'13"I NULL STRING"
800  GOTO 700
810  G0=G1=I1-I1
820  I$[I1,72]=""
830  MAT J=CON
840  FOR A=I1 TO LEN(A$)
850  IF A$[A,A]<D$[I1,I1] THEN 950
860  G$=D$
870  H$=B$
880  IF A$[A,A]<E$[I1,I1] THEN 910
890  G$=E$
900  H$=C$
910  GOSUB 1410
920  A$[A,A]=H$[T5,T5]
930  J[A]=I1-I1
940  G1=A
950  IF A$[A,A] >= " " THEN 1020
960  G$=B$
970  GOSUB 1410
980  A$[A,A]=C$[T5,T5]
990  I$[A,A]="'"
1000  G0=A
1010  GOTO 1080
1020  IF A$[A,A]<"`" THEN 1080
1030  G$=C$
1040  GOSUB 1410
1050  A$[A,A]=C$[T5-U0-U0,T5-U0-U0]
1060  I$[A,A]="."
1070  GOTO 1000
1080  NEXT A
1090  PRINT A$;
1100  PRINT  USING "#,A";B$[U0,U0]
1110  IF  NOT G0 THEN 1140
1120  PRINT B$[I1,I1];I$[I1,G0];
1130  PRINT  USING "#,A";B$[U0,U0]
1140  IF  NOT G1 THEN 1270
1150  FOR A=I1 TO I1+I1
1160  PRINT B$[I1,I1];
1170  FOR Y=I1 TO G1
1180  IF A$[Y,Y]#" " THEN 1200
1190  IF  NOT J[Y] THEN 1220
1200  PRINT A$[Y+72*J[Y],Y+72*J[Y]];
1210  GOTO 1240
1220  G$="()"
1230  PRINT G$[A,A];
1240  NEXT Y
1250  PRINT  USING "#,A";B$[U0,U0]
1260  NEXT A
1270  PRINT '10;
1280  IF A$[LEN(A$)]#" " THEN 700
1290  IF  NOT T[A1,I3+I1] THEN 700
1300  PRINT "<"'13"> LENGTH ";
1310  PRINT  USING "DD";LEN(A$)
1320  GOTO 700
1330  PRINT "EOF";
1340  GOTO T[A1,I1]+I1 OF 1360,1380
1350  PRINT "EOR";
1360  IF T[A1,5] THEN 380
1370  NEXT B
1380  NEXT A1
1390  PRINT '10'10'10
1400  STOP 
1410  M4=LEN(G$)
1420  M3=I1
1430  T5=INT((M4-M3)/2)+M3
1440  IF A$[A,A]=G$[T5,T5] THEN 1500
1450  IF A$[A,A]>G$[T5,T5] THEN 1480
1460  M4=T5-I1
1470  GOTO 1430
1480  M3=T5+I1
1490  GOTO 1430
1500  RETURN 
1510  END 
