🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: vmsnet.sources
Article #1

UUCP log summary (UULOG), part 01/01

#1
From: robert
Date: Wed, 28 Oct 1992 00:17
316 lines
12093 bytes
Submitted-by: robert@cpvax.cpses.tu.com
Posting-number: Volume 3, Issue 209
Archive-name: uucp_log_summary/part01

Here's a program to summarize UUCP.LOG that can be used to check your
phone bill. Output looks like this.  When you receive mail, it makes an
attempt to tell you where it's going.

                                 +- received        
                                 |  +- sent
                                 |  |  +- incoming news
                                 |  |  |  +- incoming mail
>   node       start       time  r  s  n  m 
> fallout  10/23-08:11:05   107  2  0  1  0                                    
> uunet    10/23-08:28:17     0  0  0  0  0 BUSY                               
> uunet    10/23-08:44:16     0  0  0  0  0 BUSY                               
> uunet    10/23-09:00:18   133  6  4  0  3                                    
>                                         1     86 robert                       
>                                         1     90 B_LMCGILVE                   
>                                         1     86 fallout!bruns

If you find it useful, drop me a line to give me a warm fuzzy!

-------------------------------------------------------------------------
Robert Eden    817-897-0491                                 Glen Rose, TX
Comanche Peak Steam Electric Station            robert@cpvax.cpses.tu.com
               ^^^^^^^^^^^^^^^^^^^^^ politicese for a nuke plant
-------------------------------------------------------------------------

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 7.2-007  22-FEB-1990
$!   On 23-OCT-1992 09:55:38.75   By user ROBERT 
$!
$! This VMS_SHARE Written by:
$!    Andy Harper, Kings College London UK
$!
$! Acknowledgements to:
$!    James Gray       - Original VMS_SHARE
$!    Michael Bednarek - Original Concept and implementation
$!
$! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
$! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
$!
$! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
$!       1. AAAREADME.TXT;1
$!       2. UULOG.FOR;1
$!
$set="set"
$set symbol/scope=(nolocal,noglobal)
$f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID"))
$e="write sys$error  ""%UNPACK"", "
$w="write sys$output ""%UNPACK"", "
$ if f$trnlnm("SHARE_LOG") then $ w = "!"
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto START
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$UNPACK: SUBROUTINE ! P1=filename, P2=checksum
$ if f$search(P1) .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped."
$ delete 'f'*
$ exit
$file_absent:
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'."
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn'. File skipped."
$ delete 'f'*
$ exit
$dirok:
$ w "-I-PROCESS, Processing file ''P1'."
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='P1'
PROCEDURE Unpacker ON_ERROR ENDON_ERROR;SET(FACILITY_NAME,"UNPACK");SET(
SUCCESS,OFF);SET(INFORMATIONAL,OFF);f:=GET_INFO(COMMAND_LINE,"file_name");b:=
CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(b));
LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION(
BEGINNING_OF(b));g:=0;LOOP EXITIF MARK(NONE)=END_OF(b);x:=ERASE_CHARACTER(1);
IF g=0 THEN IF x="X" THEN MOVE_VERTICAL(1);ENDIF;IF x="V" THEN APPEND_LINE;
MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);ENDIF;IF x="+" THEN g:=1;
ERASE_LINE;ENDIF;ELSE IF x="-" THEN IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+")=
1 THEN g:=0;ENDIF;ENDIF;ERASE_LINE;ENDIF;ENDLOOP;t:="0123456789ABCDEF";
POSITION(BEGINNING_OF(b));LOOP r:=SEARCH("`",FORWARD);EXITIF r=0;POSITION(r);
ERASE(r);x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,ERASE_CHARACTER(1))-1;
COPY_TEXT(ASCII(16*x1+x2));ENDLOOP;WRITE_FILE(b,GET_INFO(COMMAND_LINE,
"output_file"));ENDPROCEDURE;Unpacker;QUIT;
$ delete/nolog 'f'*
$ CHECKSUM 'P1'
$ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT
$ e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ ENDSUBROUTINE
$START:
$ create 'f'
XHere's a program to summarize UUCP.LOG that can be used to check your
Xphone bill. Output looks like this.  When you receive mail, it makes an
Xattempt to tell you where it's going.
X
X                                 +- received        r `20
X                                 `7C  +- sent
X                                 `7C  `7C  +- incoming news
X                                 `7C  `7C  `7C  +- incoming mail
X>   node       start       time  r  s  n  m`20
X> fallout  10/23-08:11:05   107  2  0  1  0
V                                   `20
X> uunet    10/23-08:28:17     0  0  0  0  0 BUSY
V                              `20
X> uunet    10/23-08:44:16     0  0  0  0  0 BUSY
V                              `20
X> uunet    10/23-09:00:18   133  6  4  0  3
V                                   `20
X>                                         1     86 robert
V                      `20
X>                                         1     90 B_LMCGILVE
V                  `20
X>                                         1     86 fallout!bruns
X
XIf you find it useful, drop me a line to give me a warm fuzzy!
X`20
X-------------------------------------------------------------------------
XRobert Eden    817-897-0491                                 Glen Rose, TX
XComanche Peak Steam Electric Station            robert@cpvax.cpses.tu.com
X               `5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`5E`
V5E politicese for a nuke plant
X-------------------------------------------------------------------------
X
$ CALL UNPACK AAAREADME.TXT;1 526526495
$ create 'f'
X      PROGRAM uulog
X      IMPLICIT NONE
XC+
XC`20
XC ABSTRACT:`20
XC`20
XC        This procedure summarizes the contents of the file pointed to
XC        by the logical name UULOG.  If setup as a foreign command, the
XC        parameter is used to display info only about that node.
XC`20
XC        uulog :== $uucp_bin:uulog
XC        $ uulog
XC        $ uulog uunet
XC
XC        I know this procedure is not as good as it should be, this is
XC        a quick-and-dirty job.  I may update it later.
XC
XC
XC AUTHOR(S):`20
XC`20
XC        Robert Eden - robert@cpvax.tu.com
XC                      Comanche Peak Steam Electric Station
XC                      Texas Utilities
XC                      POB 1002 (MZ E29)
XC                      Glen Rose, TX 76043
XC                      (817) 897-0491
XC
XC        If you use this procedure, drop me a line... I'd like to know!
XC        (It's good to feel useful sometimes)
XC`20
XC CREATION DATE:`20
XC`20
XC        23-OCT-1992
XC`20
XC`20
XC MODIFICATION HISTORY:
XC`20
XC        Date     `7C Name  `7C Description
XC ----------------+-------+-------------------------------------------------
V----
XC `5Bchange_entry`5D
XC-
XCDEC$ IDENT '1.0'
X
X      STRUCTURE /call_type/
X          character*14 begin
X          character*8  node
X          integer      sent,receive,secs,mail,news
X          character*40 status
X          END STRUCTURE    !call_type
X
X      STRUCTURE /rmail_type/
X          character*40 add
X          integer count,size
X          END STRUCTURE    !rmail_type
X
X
X      RECORD /call_type/  call        ! call info
X      RECORD /rmail_type/ rmail(50)   ! rmail command info
X
X      character*255 line   `20
X      character*14  time
X      character*40  add, cur_file
X      character*8   onlynode,upnode
X      integer rmail_count, i, cur_size, status, lib$get_foreign
X
X      status = lib$get_foreign(line,%val(0),i,%val(0))
X      if (.not.status) call lib$signal(%val(status))
X
X      onlynode = line(1:i)
X
X      open (unit=1, file='uulog', status='old', readonly)
X
X      write(6,*) '  node       start       time  r  s  n  m '
X5     rmail_count = 0
X      rmail(1).add = ' '`20
X      call.begin   = ' '
X      call.status  = ' '
X      call.sent    = 0
X      call.receive = 0
X      call.secs    = 0
X      call.mail    = 0
X      call.news    = 0
X`20
XC
XC main loop
XC
X10    READ (UNIT=1, FMT='(A)', END=600) line     `20
X
X      IF  (line(49:56).eq.'Calling' ) THEN
X          if (call.begin .ne.' ') write(6,*) '**** missing end of call'
X          call.begin = line(22:35)
X          call.node  = line(13:20)
X
X      ELSE IF (line(49:65).eq.'They want to send') THEN
X          call.status = ' '
X          call.receive = call.receive + 1
X          cur_file     = line(70:69+INDEX (line(70:),' '))
X
X      ELSE IF ((line(49:60)  .eq.'File rcvd ok').and.
X     +         (cur_file(1:1).eq.'D'           )) then
X          READ (UNIT=line(65:), FMT=*) cur_size
X          call.status = ' '
X
X      ELSE IF (line(49:63).eq.'We want to send') THEN
X          call.sent = call.sent + 1
X
X      ELSE IF (line(49:69).eq.'Executing      (rmail') THEN
X          add = line(71:70+INDEX (line(71:),' '))
X          i = 1
X          DO WHILE ((rmail(1).add .ne. add).and.(i .lt. rmail_count))
X              i = i + 1
X              END DO
X          if (rmail(i).add .ne. add) then
X              rmail_count = rmail_count + 1
X              i = rmail_count
X              rmail(i).add = add
X              rmail(i).count   = 0
X              rmail(i).size    = 0
X              endif
X          rmail(i).count   = rmail(i).count + 1
X          rmail(i).size    = rmail(i).size + cur_size
X          call.mail = call.mail + 1
X
X      ELSE IF (line(49:69).eq.'Executing      (rnews') THEN
X          call.news = call.news+1
X
X      ELSE IF (line(49:62).eq.'Protocol stats') THEN
X          call.status = line(65:64+index(line(65:),')')-1)
X
X      ELSE IF (line(49:59).eq.'End of call') THEN
X          READ (UNIT=line(75:), FMT=*) call.secs
X          goto 500
X
X      ELSE IF (line(47:59).eq.'* Script log ') THEN
X          call.status = line(65:64+index(line(65:),')')-1)
X
X      ELSE IF (line(47:58).eq.'* Other end ')  THEN
X          call.status = line(69:68+index(line(69:),')')-1)
X
X      ELSE IF (line(47:55).eq.'* No ROK ')  THEN
X          call.status = line(49:60)
X
X      ELSE IF (line(49:59).eq.'Call failed') THEN
X          goto 500
X
X      ELSE
XD         write (7,*) 'unprocessed: '//line(1:70)
X          END IF     `20
X
X      goto 10
XC
XC generate report
XC
XC123456789 123456789 123456789 123456789 123456789 123456789 123
XC  node       start           stop      s   r time  m  n`20
XCnnnnnnnn aaaaaaaaaaaaaa bbbbbbbbbbbbbb ii ii iiii ii ii status
XC                                       ii iiiiii add
X510    format(x,a8,x,a14,x,i5,4i3,x,a35)
X520    format(t40,i3,i7,x,a29)
X
X500   if (call.begin .eq.' ') goto 5
X
X      call str$upcase(upnode , call.node)
X      if ((onlynode.ne.' ').and.(onlynode.ne. upnode)) goto 5
X
X      WRITE (6,510) call.node, call.begin,
X     +              call.secs, call.receive, call.sent,
X     +              call.news, call.mail, call.status
X      IF (rmail_count.gt.0) THEN
X          DO i=1,rmail_count
X              write(6,520) rmail(i).count, rmail(i).size, rmail(i).add
X              END DO
X          rmail_count  = 0
X          rmail(1).add = ' '
X          END IF
XC      write (6,*) ' '
X      goto 5
X
X600   close (1)
X      END
$ CALL UNPACK UULOG.FOR;1 2000121200
$ v=f$verify(v)
$ EXIT
Technical Details
Message-ID: <8847237@MVB.SAIC.COM>
Path: arc1-ca.pugleaf.net!sparky!uunet!think.com!sdd.hp.com!hamblin.math.byu.edu!arizona.edu!mvb.saic.com!vmsnet-sources

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!think.com!sdd.hp.com!hamblin.math.byu.edu!arizona.edu!mvb.saic.com!vmsnet-sources
Newsgroups: vmsnet.sources
Subject: UUCP log summary (UULOG), part 01/01
Message-ID: <8847237@MVB.SAIC.COM>
From: robert@cpvax.cpses.tu.com
Date: Wed, 28 Oct 1992 00:17:06 GMT
Organization: Texas Utilities, Glen Rose TX 
Approved: Mark.Berryman@Mvb.Saic.Com
Lines: 316