home *** CD-ROM | disk | FTP | other *** search
/ Share Gallery 1 / share_gal_1.zip / share_gal_1 / HR / HR007.ZIP / LFA.BAS < prev    next >
BASIC Source File  |  1985-12-11  |  7KB  |  189 lines

  1. 10 REM   This program reads and interprets the MailBox/GateWay
  2. 20 REM   log file and generates summary statistics. The log 
  3. 30 REM   file must be converted to all upper case before 
  4. 40 REM   processing by this program.
  5. 45 REM   Note: USERS must be replaced by a number to use BASCOM
  6. 50 REM
  7. 60 REM   Written by: Tom Hogan WB7DCH  12/31/84
  8. 70 REM
  9. 80 REM   Log File event code interpretation:
  10. 90 REM
  11. 100 REM   'C' - Connect Event.
  12. 110 REM      'A' - User connected on TNC on COMM port.
  13. 120 REM      'B' - User connected on TNC on printer port.
  14. 130 REM      'L' - User was linked via the station that just connected.
  15. 140 REM
  16. 150 REM   'G' - GateWay event.
  17. 160 REM      'A' - Connection attempted and failed. Path shown.
  18. 170 REM      'C' - Connection attempted and obtained. Path shown.
  19. 180 REM      'E' - End of GateWay event, or use.
  20. 190 REM      'S' - Start of GateWay use.
  21. 200 REM      'U' - Entry to unprotocol mode.
  22. 210 REM
  23. 220 REM   'X' - Exit event.
  24. 230 REM      'B' - User said good bye.
  25. 240 REM      'D' - User disconnected.
  26. 250 REM      'F' - User forced off by system owner.
  27. 260 REM      'T' - Timeout, forced disconnect.
  28. 270 REM
  29. 280 REM   'F' - File event. 
  30. 290 REM      'U' - File has been uploaded.
  31. 300 REM      'D' - File has been downloaded.
  32. 310 REM      'W' - Directory request.
  33. 320 REM
  34. 330 REM   'M' - Message event. 
  35. 340 REM      'F' - Message has been forwarded. Connect path shown.
  36. 350 REM      'K' - Message has been killed.
  37. 360 REM      'L' - Message headers listed.
  38. 370 REM      'R' - Message has been read.
  39. 380 REM      'S' - Message has been sent.
  40. 390 REM
  41. 400 REM        Define Indices
  42. 410    C.TIME=0    :C.A=1    :C.B=2    :X.B=3    :X.D=4    :X.T=5    :X.F=6
  43. 420    G.A=7    :G.C=8    :G.U=9    :M.L=10    :M.S=11    :M.R=12    :F.W=13    :F.U=14
  44. 430    F.D=15
  45. 440 REM
  46. 450 USERS=200
  47. 460 DIM CONNECTS%(31,25),VTOTS%(25),CALS$(USERS),BYUSER%(USERS,16)
  48. 470 INPUT "Input file name ";INFIL$
  49. 480 OPEN "I",#1,INFIL$
  50. 490 INPUT "Output file name ";OUTFIL$
  51. 500 IF OUTFIL$="" THEN 490
  52. 510 OPEN "O",#2,OUTFIL$
  53. 520 INPUT "Report Month ";RPH$
  54. 530 INPUT#1,S$
  55. 540 IF EOF(1) THEN 1210
  56. 550 REM            :REM Parse Input String
  57. 560 ET$=LEFT$(S$,1)        :REM event type
  58. 570 DAY%=VAL(MID$(S$,6,2))    :REM day of the month
  59. 580 HOUR%=VAL(MID$(S$,8,2))    :REM hour during which event occurred
  60. 590 MIN%=VAL(MID$(S$,10,2))    :REM minute at which event occurred
  61. 600 ETIME%=(60*HOUR%)+MIN%    :REM time of event in minutes
  62. 610 EST$=MID$(S$,12,1)        :REM event subtype
  63. 620 IF ET$="C" THEN 680
  64. 630 IF ET$="X" THEN 960
  65. 640 IF ET$="M" THEN 1050
  66. 650 IF ET$="G" THEN 1100
  67. 660 IF ET$="F" THEN 1150
  68. 670 GOTO 530
  69. 680 REM                << Connect Event >> ********
  70. 690 TIMEON%=ETIME%
  71. 700 C$=MID$(S$,14)
  72. 710 L%=LEN(C$)
  73. 720 HCAL$=""                :REM Extract user call
  74. 730 FOR I = 1 TO L%
  75. 740 T$=MID$(C$,I,1)
  76. 750 IF T$=" " THEN 780
  77. 760 HCAL$=HCAL$+T$
  78. 770 NEXT I
  79. 780 REM                 Update user activity or add
  80. 790 REM                call to list if new user.
  81. 800 FOR I = 1 TO USERS
  82. 810 IF CALS$(I)="" THEN 820 ELSE 860
  83. 820 REM                End of call list - add new call
  84. 830 CALS$(I)=HCAL$
  85. 840 NUSERS=I
  86. 850 GOTO 880
  87. 860 IF CALS$(I)=HCAL$ THEN 880 ELSE 870
  88. 870 NEXT I
  89. 880 C.U.I = I
  90. 890 CONNECTS%(DAY%,HOUR%)=CONNECTS%(DAY%,HOUR%)+1
  91. 900 CONNECTS%(DAY%,24)=CONNECTS%(DAY%,24)+1
  92. 910 VTOTS%(HOUR%)=VTOTS%(HOUR%)+1
  93. 920 VTOTS%(24)=VTOTS%(24)+1
  94. 930 IF EST$="A" THEN BYUSER%(C.U.I,C.A)=BYUSER%(C.U.I,C.A)+1
  95. 940 IF EST$="B" THEN BYUSER%(C.U.I,C.B)=BYUSER%(C.U.I,C.B)+1
  96. 950 GOTO 530
  97. 960 REM                << Exit Event >> ********
  98. 970 IF ETIME%>=TIMEON% THEN DT%=ETIME%-TIMEON% ELSE DT%=ETIME%+1440-TIMEON%
  99. 980 BYUSER%(C.U.I,C.TIME)=BYUSER%(C.U.I,C.TIME)+DT%
  100. 990 SYSTEM.TIME=SYSTEM.TIME+DT%
  101. 1000 IF EST$="B" THEN BYUSER%(C.U.I,X.B)=BYUSER%(C.U.I,X.B)+1
  102. 1010 IF EST$="D" THEN BYUSER%(C.U.I,X.D)=BYUSER%(C.U.I,X.D)+1
  103. 1020 IF EST$="F" THEN BYUSER%(C.U.I,X.F)=BYUSER%(C.U.I,X.F)+1
  104. 1030 IF EST$="T" THEN BYUSER%(C.U.I,X.T)=BYUSER%(C.U.I,X.T)+1
  105. 1040 GOTO 530
  106. 1050 REM                << Message Event >> ********
  107. 1060 IF EST$="S"THEN BYUSER%(C.U.I,M.S)=BYUSER%(C.U.I,M.S)+1
  108. 1070 IF EST$="L"THEN BYUSER%(C.U.I,M.L)=BYUSER%(C.U.I,M.L)+1
  109. 1080 IF EST$="R" THEN BYUSER%(C.U.I,M.R)=BYUSER%(C.U.I,M.R)+1
  110. 1090 GOTO 530
  111. 1100 REM                << GateWay Event >> ********
  112. 1110 IF EST$="A" THEN BYUSER%(C.U.I,G.A)=BYUSER%(C.U.I,G.A)+1
  113. 1120 IF EST$="C" THEN BYUSER%(C.U.I,G.C)=BYUSER%(C.U.I,G.C)+1
  114. 1130 IF EST$="U" THEN BYUSER%(C.U.I,G.U)=BYUSER%(C.U.I,G.U)+1
  115. 1140 GOTO 530
  116. 1150 REM                << File Event >> ********
  117. 1160 IF EST$="W" THEN BYUSER%(C.U.I,F.W)=BYUSER%(C.U.I,F.W)+1
  118. 1170 IF EST$="D" THEN BYUSER%(C.U.I,F.D)=BYUSER%(C.U.I,F.D)+1
  119. 1180 IF EST$="U" THEN BYUSER%(C.U.I,F.U)=BYUSER%(C.U.I,F.U)+1
  120. 1190 GOTO 530
  121. 1200 REM        ******** << Print Reports >> ********
  122. 1210 PRINT#2, "WB7DCH MailBox/GateWay Statistics for the Month of ";RPH$
  123. 1220 PRINT#2,
  124. 1230 PRINT#2, "         Connects vs. Time-of-Day vs. Date"
  125. 1240 PRINT#2,
  126. 1250 PRINT#2,"Da 00 01 02 03 04 05";" 06 07 08 09 10 11";
  127. 1260 PRINT#2," 12 13 14 15 16";
  128. 1270 PRINT#2," 17 18 19 20 21 22 23 Totl"
  129. 1280 FOR DAY = 1 TO 31
  130. 1290 IF CONNECTS%(DAY,24)=0 THEN GOTO 1380
  131. 1300 PRINT#2, USING "##";DAY;
  132. 1310 FOR HR = 0 TO 23
  133. 1320 IF CONNECTS%(DAY,HR)<>0 THEN GOTO 1350
  134. 1330 PRINT#2,"  .";
  135. 1340 GOTO 1360
  136. 1350 PRINT#2, USING "###";CONNECTS%(DAY,HR);
  137. 1360 NEXT HR
  138. 1370 PRINT#2, USING "#####";CONNECTS%(DAY,24)
  139. 1380 NEXT DAY
  140. 1390 PRINT#2, "  ";
  141. 1400 FOR HR = 0 TO 23
  142. 1410 PRINT#2, USING "###";VTOTS%(HR);
  143. 1420 NEXT HR
  144. 1430 PRINT#2, USING "#####";VTOTS%(24)
  145. 1440 PRINT#2,
  146. 1450 SYS.HRS%=INT(SYSTEM.TIME/60!)
  147. 1460 SYS.MIN%=INT(SYSTEM.TIME-(SYS.HRS%*60!))
  148. 1470 AVG.CT=SYSTEM.TIME/VTOTS%(24)
  149. 1480 AVG.US=SYSTEM.TIME/NUSERS
  150. 1490 PRINT#2, "Total System Connect Time: ";SYSTEM.TIME;" minutes   (";SYS.HRS%;
  151. 1500 PRINT#2, "hours, ";SYS.MIN%;" minutes )"
  152. 1510 PRINT#2, "Average Time per Connect: ";AVG.CT;" minutes"
  153. 1520 PRINT#2, "Average User Connect Time: ";AVG.US;" minutes"
  154. 1530 PRINT#2,
  155. 1540 REM            ******** << Printout by User >> ********
  156. 1550 PRINT#2, "User      Time  C.x  2m 220 X.B X.D X.T X.F G.A G.C G.U M.L M.S M.R F.W F.U F.D"
  157. 1560 FOR I=1 TO NUSERS
  158. 1570 PRINT#2, USING "\       \##### ####";CALS$(I);BYUSER%(I,0);(BYUSER%(I,C.A)+BYUSER%(I,C.B));
  159. 1580 FOR J=1 TO 15
  160. 1590 IF BYUSER%(I,J)<>0 THEN 1600 ELSE 1620
  161. 1600 PRINT#2, USING "####";BYUSER%(I,J);
  162. 1610 GOTO 1630
  163. 1620 PRINT#2, "   .";
  164. 1630 NEXT J
  165. 1640 PRINT#2,
  166. 1650 NEXT I
  167. 1660 PRINT#2,
  168. 1670 PRINT#2,"        Legend:"
  169. 1680 PRINT#2,"            C.X - Total Connects"
  170. 1690 PRINT#2,"            2m  - Two-meter Connects"
  171. 1700 PRINT#2,"            220 - 220MHz Connects"
  172. 1710 PRINT#2,"            X.B - Exit Event - Bye"
  173. 1720 PRINT#2,"            X.D - Exit Event - Disconnect"
  174. 1730 PRINT#2,"            X.T - Exit Event - Timeout"
  175. 1740 PRINT#2,"            X.F - Exit Event - Forced off by Sysop"
  176. 1750 PRINT#2,"            G.A - GateWay Event - Unsuccessful Connect Attempt"
  177. 1760 PRINT#2,"            G.C - GateWay Event - Successful Connect"
  178. 1770 PRINT#2,"            G.U - GateWay Event - Enter Unproto Mode"
  179. 1780 PRINT#2,"            M.L - Message Event - List Message Headers"
  180. 1790 PRINT#2,"            M.S - Message Event - Send Message"
  181. 1800 PRINT#2,"            M.R - Message Event - Read Message"
  182. 1810 PRINT#2,"            F.W - File Event - List File Directories"
  183. 1820 PRINT#2,"            F.U - File Event - Upload File to MailBox"
  184. 1830 PRINT#2,"            F.D - File Event - Download File from MailBox"
  185. 1840 PRINT#2,
  186. 1850 CLOSE
  187. 1860 SYSTEM
  188. 1870 END
  189.