1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        FILRPT:   REPORTS FILE CONTENTS AND STRUCTURE
4  REM
5  REM        36247 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
1010  FILES *
1020  DIM A$[72],D$[10],F$[7],T$[72],Z$[6],M[7]
1030  D$="0123456789"
1040  L9=0
1050  PRINT "FILENAME? ";
1060  ENTER 255,T,F$
1070  IF T=-256 THEN 1110
1080  PRINT '10;
1090  ASSIGN F$,1,T1
1100  IF T1<3 THEN 1120
1110  STOP 
1120  IF  END #1 THEN 1600
1130  PRINT '10'10'10'10
1140  FOR I=1 TO 32767
1150  F1=F2=F3=F9=0
1160  READ #1,I
1170  GOTO TYP(-1) OF 1180,1220,1260,1270
1180  READ #1;A
1190  F1=F1+1
1200  F9=F9+2
1210  GOTO 1170
1220  READ #1;A$
1230  F2=F2+1
1240  F9=F9+INT((LEN(A$)+1)/2)+1
1250  GOTO 1170
1260  F3=1
1270  L9=L9+F9
1280  T$="RECORD "
1290  Z=I
1300  GOSUB 1810
1310  T$[8]=Z$
1320  T$[LEN(T$)+1]=":  "
1330  IF F1=0 THEN 1410
1340  Z=F1
1350  GOSUB 1810
1360  T$[LEN(T$)+1]=Z$
1370  T$[LEN(T$)+1]=" NUMBER"
1380  IF F1=1 THEN 1400
1390  T$[LEN(T$)+1]="S"
1400  T$[LEN(T$)+1]=", "
1410  IF F2=0 THEN 1490
1420  Z=F2
1430  GOSUB 1810
1440  T$[LEN(T$)+1]=Z$
1450  T$[LEN(T$)+1]=" STRING"
1460  IF F2=1 THEN 1480
1470  T$[LEN(T$)+1]="S"
1480  T$[LEN(T$)+1]=", "
1490  IF F1+F2=0 OR F3=0 THEN 1510
1500  T$[LEN(T$)+1]="EOF, "
1510  Z=F9
1520  GOSUB 1810
1530  T$[LEN(T$)+1]=Z$
1540  T$[LEN(T$)+1]=" WORD"
1550  IF F9=1 THEN 1570
1560  T$[LEN(T$)+1]="S"
1570  T$[LEN(T$)+1]="."
1580  PRINT T$
1590  NEXT I
1600  Z=I-1
1610  GOSUB 1810
1620  T$="TOTAL FILE LENGTH = "
1630  T$[21]=Z$
1640  T$[LEN(T$)+1]=" RECORD"
1650  IF I-1=1 THEN 1670
1660  T$[LEN(T$)+1]="S"
1670  T$[LEN(T$)+1]=", "
1680  Z=L9
1690  GOSUB 1810
1700  T$[LEN(T$)+1]=Z$
1710  T$[LEN(T$)+1]=" WORDS."
1720  PRINT LIN(1);T$
1730  IF I-1=1 THEN 1800
1740  T$="AVERAGE OF "
1750  Z=INT(L9/(I-1)+.5)
1760  GOSUB 1810
1770  T$[12]=Z$
1780  T$[LEN(T$)+1]=" WORDS PER RECORD."
1790  PRINT T$
1800  STOP 
1810  FOR K1=1 TO 7
1820  IF Z<10^K1 THEN 1840
1830  NEXT K1
1840  FOR K2=K1 TO 1 STEP -1
1850  M[K2]=INT(Z/10^(K2-1))
1860  FOR K3=K2 TO K1-1
1870  M[K2]=M[K2]-M[K3+1]*10^(K3+1-K2)
1880  NEXT K3
1890  Z$[K1+1-K2]=D$[M[K2]+1,M[K2]+1]
1900  NEXT K2
1910  RETURN 
1920  END 
