1  REM  ************* HP TIME-SHARED BASIC PROGRAM LIBRARY **************
2  REM
3  REM                FC: ANALYSIS OF LOG TAPE
4  REM
5  REM              36120  REV A         3/72
6  REM    
7  REM  ****************** CONTRIBUTED PROGRAM ****************************
8  REM
9  REM
10  PRINT "INSERT THE PAPER TAPE"
20  DIM A$[22],M[20,3],C$[11],D$[10],L[12,24]
30  DIM N[12,24],W[24,2]
40  MAT N=ZER
50  MAT L=ZER
80  MAT W=ZER
90  C$="BCDEFGJKNPS"
100  D$="0123456789"
110  Z1=I=T1=T2=0
120  MAT M=ZER
130  LET I=I+1
140  FOR I5=1 TO 24
150  W[I5,1]=0
160  NEXT I5
170  LET C5=0
180  INPUT A$
190  IF A$="*" THEN 1110
200  IF A$="CRASH" THEN 120
210  K=1
220  GOTO 320
230  FOR K=1 TO 11
240  IF A$[10,10]=C$[K,K] THEN 320
250  NEXT K
260  PRINT "ERROR.STOP READER.RETYPE DATUM"
270  PRINT '7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7
280  PRINT 
290  FOR J=1 TO 5000
300  NEXT J
310  GOTO 170
320  IF A$[9,9]=" " THEN 340
330  GOTO 260
340  LET M[I,1]=K
350  LET C=1
360  FOR K=1 TO 10
370  IF A$[14+C,14+C]=D$[K,K] THEN 390
380  NEXT K
390  LET M[I,2]=M[I,2]+10^(4-C)*(K-1)
400  IF C=4 THEN 430
410  LET C=C+1
420  GOTO 360
430  C=1
440  IF M[I,2]<Z1 THEN 1120
450  Z1=M[I,2]
460  FOR K=1 TO 10
470  IF A$[20+C,20+C]=D$[K,K] THEN 490
480  NEXT K
490  M[I,3]=M[I,3]+10^(2-C)*(K-1)
500  IF C=2 THEN 540
510  LET C=C+1
520  GOTO 460
530  IF I=1 THEN 540
540  IF A$[7,7]="N" THEN 940
550  IF I=1 THEN 590
560  FOR K=(I-1) TO 1 STEP -1
570  IF M[I,3]=M[K,3] THEN 700
580  NEXT K
590  T=INT(M[I,2]/100)
600  T=T*60+M[I,2]-T*100
610  PRINT T
620  H=1
630  K=I
640  GOSUB 800
650  FOR K=1 TO 3
660  LET M[I,K]=0
670  NEXT K
680  LET I=I-1
690  GOTO 130
700  LET U1=INT(M[K,2]/100)
710  U2=M[K,2]-U1*100
720  U3=INT(M[I,2]/100)
730  U4=M[I,2]-U3*100
740  T=U3*60+U4-U1*60-U2
750  IF U1=0 AND U2=0 THEN 590
760  PRINT T
770  GOSUB 790
780  GOTO 830
790  H=INT(M[K,2]/100) MAX 1
800  L[M[K,1],H]=L[M[K,1],H]+1
810  N[M[K,1],H]=N[M[K,1],H]+T
820  RETURN 
830  FOR V=1 TO 3
840  LET M[K,V]=M[I,V]=0
850  NEXT V
860  FOR K1=I TO 19
870  GOSUB 1640
880  NEXT K1
890  FOR K1=K TO 19
900  GOSUB 1640
910  NEXT K1
920  LET I=I-2
930  GOTO 130
940  FOR I5=I-1 TO 1 STEP -1
950  IF M[I5,3]=M[I,3] THEN 980
960  NEXT I5
970  GOTO 990
980  M[I5,1]=M[I5,2]=M[I5,3]=0
990  FOR K=1 TO 19
1000  IF M[K,1]=M[I,1] AND M[I,1] <> 0 THEN 1020
1010  GOTO 1030
1020  LET C5=C5+1
1030  NEXT K
1040  H=INT(M[I,2]/100) MAX 1
1050  FOR L=I TO 1 STEP -1
1060  W[H,1]=W[H,1]+1
1070  NEXT L
1080  IF W[H,1]<W[H,2] THEN 130
1090  W[H,2]=W[H,1]
1100  GOTO 130
1110  IF I=1 THEN 1180
1120  FOR K=1 TO I-1
1130  IF M[K,1]=0 THEN 1170
1140  T=24*60-INT(M[K,2]/100)*60-(M[K,2]-INT(M[K,2]/100)*100)
1150  PRINT "LOGOFF  ";C$[M[K,1],M[K,1]];"   #";M[K,3],T;"MINUTES"
1160  GOSUB 790
1170  NEXT K
1180  FOR I=1 TO 24
1190  FOR J=1 TO 11
1200  L[12,I]=L[12,I]+L[J,I]
1210  N[12,I]=N[12,I]+N[J,I]
1220  NEXT J
1230  NEXT I
1240  FOR C=1 TO 5
1250  FOR I=1 TO 12
1260  L[I,6]=L[I,6]+L[I,C]
1270  N[I,6]=N[I,6]+N[I,C]
1280  NEXT I
1290  NEXT C
1300  FOR I=1 TO 11
1310  FOR J=1 TO 24
1320  IF L[I,J]=0 THEN 1340
1330  LET N[I,J]=N[I,J]/L[I,J]
1340  NEXT J
1350  NEXT I
1360  PRINT '3'10'10'10'10'13'10'10'10
1370  PRINT "FIRST LINE  : NUMBER OF CALLS IN THE HOUR"
1380  PRINT "SECOND LINE : AVERAGE LENGTH OF EACH CALL"
1390  PRINT 
1400  PRINT 
1410  PRINT "         *********USER IDENTIFICATION**********"
1420  PRINT 
1430  PRINT " ";
1440  FOR I=1 TO 11
1450  PRINT C$[I,I];"     ";
1460  NEXT I
1470  PRINT ""
1480  PRINT 
1490  C=6
1500  PRINT "FROM MIDNIGHT TO 6 AM"
1510  GOTO 1530
1520  PRINT "HOUR # ";C;"  MAX : ";W[C,2]
1530  FOR I=1 TO 12
1540  PRINT L[I,C];
1550  NEXT I
1560  PRINT 
1570  FOR I=1 TO 12
1580  PRINT INT(N[I,C]+.5);
1590  NEXT I
1600  PRINT 
1610  LET C=C+1
1620  IF C=24 THEN 1680
1630  GOTO 1520
1640  FOR K2=1 TO 3
1650  LET M[K1,K2]=M[K1+1,K2]
1660  NEXT K2
1670  RETURN 
1680  FOR I=6 TO 23
1690  T1=T1+L[12,I]
1700  T2=T2+N[12,I]
1710  NEXT I
1720  PRINT 
1730  PRINT "TOTAL NUMBER OF CALLS DURING THE DAY : ";T1;"****************"
1740  PRINT "TOTAL CONNECTION TIME DURING THE DAY : ";T2;"****************"
1750  END 
