home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 December / simtel1292_SIMTEL_1292_Walnut_Creek.iso / msdos / rbbs_pc / calllog.arc / CALLLOG.BAS < prev    next >
BASIC Source File  |  1989-03-09  |  4KB  |  133 lines

  1. REM James J. Eager     1-(407)-678-3145   Ver 1.00    8 Mar 1989
  2. REM (C)opyright James J. Eager 1989
  3. REM ------------------------------------------------------------------
  4. REM The program requires the /E and /N compiler switches.  I recommend
  5. REM the /D and /O switches also.
  6. REM
  7. REM Filenames may not be fully qualified file/path names.
  8. REM
  9. DIM CMD$(10),EM$(76)
  10. REM load error messages into an array
  11. CALL LOADERR(EM$())
  12. ON ERROR GOTO PRTERR
  13. PRINT "(C)opyright James J. Eager 1989  Release 1.00"
  14. PRINT
  15. PRINT "Call log extract program"
  16. PRINT
  17. REM calculate today's julian date
  18. TODAY$ = DATE$
  19. CALL GREGJUL ( TODAY$, JULYEAR%, JULDAY%)
  20. IF JULDAY% = 0 THEN_
  21.     END
  22. CALL PARSE((COMMAND$),CMD$()," ","X")
  23. REM did we get command line input?
  24. REM force running in correct directory so rename will work later
  25. CALL VALFILE (CMD$(1),"N","N","Y",RETCODE%):_
  26. IF RETCODE% <> 0 THEN_
  27.     PRINT "Invalid parameters entered - aborting":_
  28.     PRINT:_
  29.     PRINT "Parameters should be - CALLLOG <filename> #":_
  30.     PRINT "Where <filename> is the name of the callers log file":_
  31.     PRINT "and # is the number of days (from 1 to 365) to keep":_
  32.     PRINT:_
  33.     PRINT "No paths, directories, or device names are allowed in":_
  34.     PRINT "the filename":_
  35.     END
  36. OLDFILE$ = CMD$(1)
  37. OFFSET% = VAL(CMD$(2))
  38. IF OFFSET% < 1 OR OFFSET% > 365 THEN_
  39.     PRINT "Invalid parameters entered - aborting":_
  40.     PRINT:_
  41.     PRINT "Parameters should be - CALLLOG <filename> #":_
  42.     PRINT "Where <filename> is the name of the callers log file":_
  43.     PRINT "and # is the number of days (from 1 to 365) to keep":_
  44.     PRINT:_
  45.     PRINT "No paths, directories, or device names are allowed in":_
  46.     PRINT "the filename":_
  47.     END
  48. PRINT "Keeping";OFFSET%;"day";
  49. IF OFFSET% > 1 THEN_
  50.     PRINT "s":_
  51. ELSE_
  52.     PRINT
  53. PRINT
  54. PRINT "This process will require some time"
  55. PRINT "Please be patient..."
  56. PRINT
  57. OFFSET% = - OFFSET%
  58. REM calculate earliest keep day
  59. CALL CALCJUL (JULYEAR%, JULDAY%, OFFSET%)
  60. TARGETYEAR% = JULYEAR%
  61. TARGETDAY% = JULDAY%
  62. REM open up files and lets go to work
  63. OPEN CMD$(1) FOR RANDOM AS #1 LEN = 64
  64. FIELD #1, 64 AS OLDLOG$
  65. OPEN "WORKFILE.$$$" FOR RANDOM AS #2 LEN = 64
  66. FIELD #2, 64 AS NEWLOG$
  67. REM how long is the input file?
  68. LASTREC% = LOF(1) / 64
  69. J% = 1
  70. REM ok loop for it
  71. FOR I% = 1 TO LASTREC%
  72.     GET #1,I%
  73.     IF J% > 1 THEN_
  74.         LSET NEWLOG$ = OLDLOG$:_
  75.         PUT #2,J%:_
  76.         J% = J% + 1
  77.     IF J% = 1 THEN_
  78.         CALL PARSE ((OLDLOG$),CMD$()," ","X"):_
  79.         IF CMD$(1) = "SYSOP" THEN_
  80.             TEMP$ = CMD$(4):_
  81.         ELSE_
  82.             TEMP$ = CMD$(5)
  83.     IF J% = 1 THEN_
  84.         CALL PARSE (TEMP$,CMD$(),",","X"):_
  85.         CALL GREGJUL (CMD$(1), JULYEAR%, JULDAY%):_
  86. REM ok now we have the date in this line, do we keep the line?
  87.     IF J% = 1 THEN_
  88.         IF JULYEAR% => TARGETYEAR% AND_
  89.             JULDAY% => TARGETDAY% THEN_
  90.             LSET NEWLOG$ = OLDLOG$:_
  91.             PUT #2,J%:_
  92.             J% = J% + 1
  93. NEXT I%
  94. REM found end of file now close out and quit
  95. REM lets log ourselves in for posterity
  96. LOGNOTE$ = DATE$ + " " + TIME$ + " Call log extract program - keeping"
  97. LOGNOTE$ = LOGNOTE$ + STR$(-OFFSET%) + " day"
  98. IF OFFSET% < -1 THEN _
  99.     LOGNOTE$ = LOGNOTE$ + "s"
  100. LSET NEWLOG$ = LOGNOTE$
  101. REM for some reason the last 2 lines in the callers log are blank, so use
  102. REM them over again
  103. PUT #2,J% - 2
  104. LOGNOTE$ = "(C)opyright James J. Eager 1989  Release 1.00"
  105. LSET NEWLOG$ = LOGNOTE$
  106. PUT#2,J% - 1
  107. CLOSE #1
  108. CLOSE #2
  109. KILL OLDFILE$
  110. NAME "WORKFILE.$$$" AS OLDFILE$
  111. END
  112. PRTERR:
  113. REM error routine to print error messages in case of error
  114.      CLS
  115.      CLOSE
  116.      PRINT "An error has been encountered"
  117.      PRINT
  118.      PRINT "The error code is ";ERR
  119.      PRINT
  120.      IF ERR < 76 THEN _
  121.          PRINT "which means: ";EM$(ERR):_
  122.      ELSE_
  123.          PRINT "unknown error"
  124.      PRINT
  125.      IF ERDEV$<>"" THEN _
  126.          PRINT "The device causing the error is: ";ERDEV$:_
  127.          PRINT:_
  128.          PRINT "The device error code is: ";ERDEV:_
  129.          PRINT
  130.      CLOSE
  131.      END
  132. RETURN
  133.