PROGRAM ACCDSP C+ C .IDEND /2/ C C This program will display the contents of LB:[1,4]SYSLOG.DAT C or any account container file. The output is in an easily C understood format but requires an 132 output character line. C The displayed lines are chosen at the beginning of the run C and only those lines chosen are displayed. C Also included is a summary of activity at the end. C This program requires the DAOFWK macro routine. C C AUTHOR: JEFF HAMILTON C E-SYSTEMS C GREENVILLE DIVISION C P.O.BOX 1056 C GREENVILLE, TEXAS 75401 C (214)454-4175 C MODIFIED: C 11-FEB-81 J. Downward Optional spooling C Buildable with F4PRES C Document & restructure C- BYTE FILE(80),INP(30) LOGICAL*1 WEEKND,FRSTDT,HELLO,BYE,UPD,GLB LOGICAL*1 LANS ! Y/N TOKEN LOGICAL*1 START,STOP,DAYFLG,MEM,COPKT,TSK ! RECORD VALUES LOGICAL*1 SPOOL,DELTA ! INTEGER*2 LINE(13),DAY,MONTH,YEAR,DAOFWK ! INTEGER*2 RECTYP ! ACNTG PKT TYPE INTEGER*4 QIC,CPU,CLK,NULL,TKNM,TQIC,TCPU,TNAMER! BYTE SYSDV(4),TERNUM(2),UIC(2),TASK(6),TNAMEA(6)! EQUIVALENCE (RECTYP,LINE(1)) ! TYPE OF PACKET EQUIVALENCE (TERNUM(1),LINE(5)) ! # OF TERNINAL EQUIVALENCE (TKNM,LINE(11)) ! TASK NAME(RAD50) EQUIVALENCE (UIC(1),LINE(7)) ! UIC OF TERMINAL EQUIVALENCE (QIC,LINE(10)) ! QIO COUNT (2 WORD) EQUIVALENCE (CLK,LINE(8)) ! CLK TIME(TASK ACNTG) EQUIVALENCE (CPU,LINE(8)) ! TICS CPU TIME EQUIVALENCE (TCPU,LINE(10)) ! TICS CPU(TASK ACNTG) EQUIVALENCE (TQIC,LINE(12)) ! QIO COUNT(TSK ACNTG) EQUIVALENCE (TNAMER,LINE(6)) ! TASK NAME(TSK ACNTG) EQUIVALENCE (NULL,LINE(5)) ! NULL TICS EQUIVALENCE (SYSDV(1),LINE(6)) ! SYSTEM DEVICE EQUIVALENCE (IHOUR,LINE(2)) ! HOUR EQUIVALENCE (IMIN,LINE(3)) ! MIN C C MAIN CODE FOLLOWS C C INITIALIZE VARIABLES C HELL0=.FALSE. ! NOT A HELLO PACKET BYE=.FALSE. ! OR A BYE PACKET START=.FALSE. ! OR START " STOP=.FALSE. ! OR STOP " DAYFLG=.FALSE. ! OR NEWDAY " MEM=.FALSE. ! OR MEMORY " COPKT=.FALSE. ! OR CO: " DELTA=.FALSE. ! OR DELTA " UPD=.FALSE. ! OR UPDATE " TSK=.FALSE. ! OR TASK " GLB=.FALSE. ! OR GLOBAL " SPOOL=.FALSE. ! OR SPOOL " LUNTI=5 ! TERMINAL LUN LUNSPL=5 ! SET SPOOL LUN TO TI: ! later, maybe output ! to a file. C C GET COMMAND LINE C WRITE(LUNTI,2007) ! A HEADER WRITE(LUNTI,2003) ! display report optns READ(LUNTI,2004,END=99)NN,(INP(I),I=1,NN) ! READ SELECTION DO 3,I=1,NN ! PARSE LINE IF(INP(I).EQ.',') GOTO 3 ! SKIP IF COMMA IF(I.EQ.1) GOTO 2 ! SKIP ON FIRST ENTRY IF(INP(I-1).NE.',') GOTO 3 ! SKIP IF NOT COMMA 2 CONTINUE ! IF(INP(I) .EQ.'1' .AND. ! Besure optn #1 is - INP(I+1).NE.'0' .AND. ! not confused with 10 - INP(I+1).NE.'1') START=.TRUE. ! or 11. Start pkt rpt IF(INP(I).EQ.'2') GLB =.TRUE. ! Want global rpt IF(INP(I).EQ.'3') MEM =.TRUE. ! Want memory use rpt IF(INP(I).EQ.'4') DELTA=.TRUE. ! Want change delta IF(INP(I).EQ.'5') HELLO=.TRUE. ! Want logon rpt IF(INP(I).EQ.'6') BYE =.TRUE. ! Want logoff rpt IF(INP(I).EQ.'7') UPD =.TRUE. ! Want Disk update rpt IF(INP(I).EQ.'8') COPKT=.TRUE. ! Want Co: use report IF(INP(I).EQ.'9') TSK =.TRUE. ! Report TSKLOG pkts IF(INP(I).EQ.'0') DAYFLG=.TRUE. ! Report newday pkts IF(I.EQ.NN) GOTO 3 ! IF LAST CHARACTER IF(INP(I) .EQ.'1' .AND. - INP(I+1).EQ.'0') SPOOL=.TRUE. ! Want spooler rpt IF(INP(I) .EQ.'1' .AND. - INP(I+1).EQ.'1') STOP =.TRUE. ! Stop acntg pkts ! optn #11 3 CONTINUE C C GET FILE NAME C WRITE(LUNTI,2001) ! PROMPT FOR NAME READ(LUNTI,2002,END=99)NC,(FILE(I),I=1,NC) ! NAME WRITE(LUNTI,2005) ! SPOOL OUTPUT? READ(LUNTI,2006)LANS ! YES OR NO IF(LANS.NE.'Y') GOTO 4 ! NO, OUTPUT TO TI: LUNSPL=2 ! YES,CREATE SPL FILE OPEN(UNIT=LUNSPL, ! - NAME='LP.LST', ! - DISPOSE='PRINT', ! SPOOL ON OUTPUT - CARRIAGECONTROL='LIST', ! - ERR=115) ! IF CAN'T OPEN 4 CONTINUE ! C C OPEN USER ENTERED FILE C IF(NC.NE.0) ! ONLY OPEN IF USER - OPEN(UNIT=1, ! ENTERED A NAME - NAME=FILE, ! USE THAT NAME - ACCESS='SEQUENTIAL', ! AND OPEN AS A SEQ, - FORM='UNFORMATTED', ! UNFORMATTED, OLD - TYPE='OLD', ! FILE, FOR SHARED - ERR=110, ! READONLY USE - SHARED, ! - READONLY) ! C C DEFAULT IS SYSLOG C IF(NC.EQ.0) ! However, if user - OPEN(UNIT=1, ! types , default - NAME='LB:[1,4]SYSLOG.DAT;1', ! file to SYSLOG.DAT - ACCESS='SEQUENTIAL', ! again requireing it - FORM='UNFORMATTED', ! to be a seq. shared - TYPE='OLD', ! unformatted file - ERR=110, ! with readonly access - READONLY, ! - SHARED) ! C C INITIALIZE COUNTING VARIABLES C IAFT=0 ! # after hours logins ILEGAL=0 ! # illegal login attempts ISTRT=0 ! # accounting startups ISTOP=0 ! # accounting stops IDLT=0 ! # of change interval pkts IHEL=0 ! # of login pkts IBYE=0 ! # of logoff pkts IUPD=0 ! # of disk update pkts IWKND=0 ! # of weekend logins FRSTDT=.TRUE. ! WRITE(LUNSPL,2008) ! Write header 5 READ(1,ERR=100,END=20)LINE ! Read a line from file CALL R50ASC(6,TKNM,TASK) ! Convert a task name (if CALL R50ASC(6,TNAMER,TNAMEA) ! present to ASCII) IF(RECTYP.EQ.1) ISTRT=ISTRT+1 ! Count if start pkt IF(RECTYP.EQ.-1) ISTOP=ISTOP+1 ! Count if stop pkt IF(RECTYP.EQ.4) IDLT =IDLT+1 ! Count if change delta pkt IF(RECTYP.EQ.5) IHEL =IHEL+1 ! Count if logon pkt IF(RECTYP.EQ.5 .AND. ! If logon pkt has flagged - LINE(8).GT.1) ILEGAL=ILEGAL+LINE(8)! an illegal logon IF(RECTYP.EQ.6) IBYE =IBYE+1 ! Count if logoff pkt IF(RECTYP.EQ.7) IUPD =IUPD+1 ! Count if dsk update pkt IF(RECTYP.EQ.5 .AND. ! Check if login occured after - IHOUR .GE.16 .AND. ! 4:30 - IMIN .GT.30) IAFT=IAFT+1 ! If yes, count as late login IF(RECTYP.GT.1 .OR. ! Skip over if not START or - RECTYP.LT.0) GOTO 6 ! NEWDAY packet DAY=LINE(7) ! Set the DAY, MONTH, and YEAR MONTH=LINE(6) ! of start of accounting YEAR=LINE(5) ! 6 CONTINUE ! IF(RECTYP.EQ.5) ! If logon pkt, calc the day - NDAY=DAOFWK(MONTH,DAY,YEAR) ! of week (1-7) IF(RECTYP.EQ.5 .AND. ! If logon pkt - (NDAY .EQ.1 .OR. ! and either SUN or SAT - NDAY .EQ.7)) IWKND=IWKND+1 ! count as weekend login C -- create output lines C IF(RECTYP.EQ.1.AND.START)WRITE(LUNSPL,1000) LINE(6) 1,LINE(7),LINE(5),LINE(2),LINE(3),LINE(4) 2,LINE(8),LINE(9),LINE(10),LINE(13),LINE(11) IF(RECTYP.EQ.-1.AND.STOP)WRITE(LUNSPL,1001)LINE(6) 1,LINE(7),LINE(5),LINE(2),LINE(3),LINE(4) 2,LINE(8),LINE(9),LINE(10),LINE(13),TASK TN=1 ! ASSUME SMALL TERMINAL # IF(TERNUM(2).GT."7) TN=2 ! LEAVE 2 SPACES FOR PRINT IF(RECTYP.EQ.5.AND.HELLO)WRITE(LUNSPL,1002)LINE(2) 1,LINE(3),LINE(4),TERNUM(1),TERNUM(2),LINE(6) 2,UIC(2),UIC(1),LINE(8) IF(RECTYP.EQ.6.AND.BYE)WRITE(LUNSPL,1003)LINE(2) 1,LINE(3),LINE(4),TERNUM(1),TERNUM(2),LINE(6) 2,UIC(2),UIC(1),LINE(8),LINE(9),LINE(12) 3,LINE(13),FLOAT(QIC) IF(RECTYP.EQ.7.AND.UPD)WRITE(LUNSPL,1004)LINE(2) 1,LINE(3),LINE(4),SYSDV,LINE(5),LINE(8) 2,LINE(9),LINE(10) IF(RECTYP.EQ.0.AND.DAYFLG)WRITE(LUNSPL,1005),LINE(6) 1,LINE(7),LINE(5),LINE(2),LINE(3),LINE(4) 2,LINE(8),LINE(9),LINE(10),LINE(13) IF(RECTYP.EQ.2.AND.GLB)WRITE(LUNSPL,1006),LINE(2) 1,LINE(3),LINE(4),FLOAT(NULL),LINE(7),LINE(8) 2,LINE(9),LINE(12),FLOAT(QIC) IF(RECTYP.EQ.3.AND.MEM)WRITE(LUNSPL,1007)LINE(2) 1,LINE(3),LINE(4),LINE(5),LINE(6),LINE(7) 2,LINE(8),LINE(9),LINE(10),LINE(11),LINE(12) IF(RECTYP.EQ.8.AND.COPKT)WRITE(LUNSPL,1008)LINE(2) 1,LINE(3),LINE(4),FLOAT(CPU),FLOAT(QIC),LINE(12) IF(RECTYP.EQ.9.AND.TSK)WRITE(LUNSPL,1009)TNAMEA,LINE(2) 1,LINE(3),LINE(4),LINE(5),FLOAT(TCPU)/60.,FLOAT(TQIC) 2,FLOAT(CLK)/60. IF(RECTYP.EQ.10.AND.SPOOL)WRITE(LUNSPL,1010)LINE(2) 1,LINE(3),LINE(4),LINE(5),LINE(6),LINE(7),TASK IF(RECTYP.EQ.4.AND.DELTA)WRITE(LUNSPL,1011)LINE(6) 1,LINE(7),LINE(5),LINE(2),LINE(3),LINE(4) 2,LINE(8),LINE(9),LINE(10),LINE(13),TASK 1000 FORMAT(1X,'START:',1X,2(I2,'/'),I2,1X,3(I2 1,':'),I2,2X,'TICS/SEC=',I3,T45,'DELTA=',I3 2,T56,'$ACMSK=',O7,3X,'START STATUS=',O7) 1001 FORMAT(1X,'STOP:',2X,2(I2,'/'),I2,1X,3(I2,':') 1,I2,2X,'TICS/SEC=',I3,T45,'DELTA=',I3,T56 2,'$ACMSK=',O7,2X,'TASK:',6A1) 1002 FORMAT(1X,'HELLO:',T18,2(I2,':'),I2,T31,'TERMINAL=',A1 1,'T',O,':',T46,'ACCNT=',I2,T55,'UIC=[',O3,',',O3,']' 2,1X,'#ILEGAL=',I3) 1003 FORMAT(1X,'BYE:',T18,2(I2,':'),I2,T31,'TERMINAL=',A1 1,'T',O,':',T46,'ACCNT=',I2,T55,'UIC=[',O3,',',O3,']' 2,T69,'CPU-TICS=',I5,T84,'ATCMD=',I4,T95,'RUNCMD=',I5 3,T108,'INSCMD=',I5,T121,'QIO=',1PE8.2) 1004 FORMAT(1X,'UPDAT:'T18,2(I2,':'),I2,T31,'SYS-DEV =',4A1 1,':',T46,'ACCNT=',I2,T55,'#FILES=',I3,T69,'USED=',I4 2,T84,'ALLOC=',I4) 1005 FORMAT(1X,'DAFLG:',1X,2(I2,'/'),I2,1X,3(I2,':'),I2,T31 1,'TICS/SEC=',I3,T45,'DELTA=',I3,T56,'$ACMSK=',O7) 1006 FORMAT(1X,'GLBL:',T18,2(I2,':'),I2,T31,'NULLTICS=' 1,1PE8.2,T54,'#SHF=',I5,T68,'#CKP=',I5,T83,'#LDR=' 2,I5,T95,'#RUN=',I5,T121,'QIO=',1PE8.2) 1007 FORMAT(1X,'MEM:',T18,2(I2,':'),I2,T31,'#TASNCOR=',I3 1,1X,'CORUSD=',I5,1X,'#TASCKP=',I3,1X,'CORCKP=' 2,I5,1X,'TOTPOL=',I5,1X,'LRGFRG=',I5,1X,'#FRAG=',I4 3,1X,'#NOSND=',I5) 1008 FORMAT(1X,'COPKT:',T18,2(I2,':'),I2,T31,'CPUTICS=' 1,1PE8.2,2X,'QIOS=',1PE8.2,2X,'#RUNS=',I5) 1009 FORMAT(1X,'TASK:',1X,6A1,T18,2(I2,':'),I2,T31,'ACCNT=' 1,I2,T45,'CPUSEC=',1PE8.2,T63,'QIOS=',1PE8.2,'CLKSEC=' 2,1PE8.2) 1010 FORMAT(1X,'SPOOL:',T18,2(I2,':'),I2,T31,'ACCNT=' 1,I2,T45,'TOTPGS=',I3,T54,'COPYS=',I2,T68,'TASK:',6A1) 1011 FORMAT(1X,'DELTA:',1X,2(I2,'/'),I2,1X,3(I2,':'),I2 1,T31,'TICS/SEC=',I3,T45,'DELTA=',I3,T56,'$ACMSK=',O7 2,T72,'TASK:',6A1) 2000 FORMAT(1X,13(I7,2X)) 2001 FORMAT($,1X,'FILE:') 2002 FORMAT(Q,80A1) 2003 FORMAT(1X,'Choose what you want to see:',/ 1,1X,'0 DAYFLG',/ 1,1X,'1 START',/ 2,1X,'2 GLB',/ 3,1X,'3 MEM',/ 4,1X,'4 DELTA',/ 5,1X,'5 HELLO',/ 6,1X,'6 BYE',/ 7,1X,'7 UPD',/ 8,1X,'8 COPKT',/ 9,1X,'9 TASK',/ 1,1X,'10 SPOOL',/ 2,1X,'11 STOP',/ 3,3X,'Enter number(s): ',$) 2004 FORMAT(Q,30A1) 2005 FORMAT(' Spool output to printer (Y/N): ',$) 2006 FORMAT(1A1) 2007 FORMAT(' ACCDSP: SYSLOG Accounting Records Display') 2008 FORMAT(' 'T40,'ACCDSP -- SYSLOG Account Record Summary',/) GO TO 5 20 CLOSE(UNIT=1) WRITE(LUNSPL,2100)ISTRT 2100 FORMAT(' NUMBER OF STARTS =',I5) WRITE(LUNSPL,2105)ISTOP 2105 FORMAT(' NUMBER OF STOPS =',I5) WRITE(LUNSPL,2110)IDLT 2110 FORMAT(' NUMBER OF DELTAS =',I5) WRITE(LUNSPL,2115)IHEL 2115 FORMAT(' NUMBER OF LOGINS =',I5) WRITE(LUNSPL,2120)IBYE 2120 FORMAT(' NUMBER OF LOGOUTS=',I5) WRITE(LUNSPL,2125)IUPD 2125 FORMAT(' NUMBER OF UPDATES=',I5) WRITE(LUNSPL,2130)ILEGAL 2130 FORMAT(' # OF ILEGAL LOGIN ATTEMPTS =',I5) WRITE(LUNSPL,2135)IAFT 2135 FORMAT(' NUMBER OF AFTER HOURS LOGINS=',I5) WRITE(LUNSPL,2140)IWKND 2140 FORMAT(' NUMBER OF WEEKEND LOGINS =',I5) GOTO 99 ! EXIT WITH MESSAGE 100 WRITE(LUNTI,2150) 2150 FORMAT(' ACCDSP -- Error reading SYSLOG data file') GOTO 99 110 WRITE(LUNTI,2155) 2155 FORMAT(' ACCDSP -- Error opening SYSLOG data file') GOTO 99 115 WRITE(LUNTI,2156) 2156 FORMAT(' ACCDSP -- Error opening LP.LST file for printing') GOTO 99 99 WRITE(LUNTI,2160) 2160 FORMAT(' ACCDSP -- EXIT') IF(LANS.EQ.'Y')CLOSE(UNIT=LUNSPL) CALL EXIT END