SysIII/usr/src/man/docs/account

.ds :? The P\s-1WB\s+1/\s-1UNIX\s+1 Accounting System
.tr ~
.TL 82117-140
The P\s-1WB\s+1/\s-1UNIX\s+1 Accounting System
.AU "Henry S. McCreary" HSM PY 3784 7827 1J-251
.AS 1
.P
The P\s-1WB\s0/\s-1UNIX\s0* 
.FS *
U\s-1NIX\s+1 is a Trademark of Bell Laboratories.
.FE
Accounting System provides
methods to collect per-process
resource utilization data,
record connect sessions,
monitor disk utilization,
and charge fees to specific logins.
A set of C programs and shell procedures is
provided to reduce this
accounting data into summary files
and reports.
This memorandum describes the
structure, implementation, and management
of this accounting system.
.AE
.MT 4
.PH "''''"
.OH "'\s9\f2\*(:?\fP''\\\\n%\s0'"
.EH "'\s9\\\\n%''\f2\*(:?\^\fP\s0'"
.H 1 "Introduction"
The P\s-1WB\s0/\s-1UNIX\s0* 
.FS *
U\s-1NIX is a Trademark of Bell Laboratories.
.FE
accounting system was originally
designed by John Mashey.
Several modifications and additions have been made to
make the system easier to manage,
and to make it less susceptible to
corrupted data or system errors.
The following list is a synopsis of the actions
of the accounting system:
.BL
.LI
At process termination the \s-1UNIX\s0 Kernal writes one record per process in
.B /usr/adm/pacct
in the form of
.I acct.h .\*F
.FS
See Attachment 2 for a description of data files.
.FE
.LI
The
.I login
and
.I init
programs record connect sessions by writing
records into
.B /usr/adm/wtmp .
Date changes, reboots, and shutdowns
are also recorded in this file.
.LI
The disk utilization program
.I acctdusg,
breaks down disk usage by login.
.LI
Fees for file restores, etc, can be charged to
specific logins with the
.I chargefee
shell procedure.
.LI
Each day the
.I runacct
shell procedure is executed via
.I cron
to reduce accounting data, produce summary files
and reports.\*F
.FS
See Attachment 3 for a sample report output.
.FE
.LI
The
.I monacct
procedure can be
executed on a monthly or fiscal period basis.
It saves and restarts summary files,
generates a report,
and cleans up the
.B sum
directory.
These saved summary files could be used
to charge users for \s-1UNIX\s0 usage.
.LE
.H 1 "Files and Directories"
The
.B /usr/lib/acct
directory contains all of the C programs and
shell procedures necessary to run the accounting system.
The
.B adm
login (\s-1UID\s0 4)
is used by the accounting system and has the following directory structure:
.DS 2 0

.B /usr/adm
|
.B acct
|
-----------------------
|          |          |
\fBnite~~~~~~~sum~~~~~~fiscal\fP

.DE
.P
The 
.B /usr/adm
directory contains the active data collection files.\*F
.FS
For a complete explanation of the files used by the
accounting system, see Attachment 1.
.FE
The 
.B nite
directory contains files that are re-used daily
by the
.I runacct
procedure.
The
.B sum
directory contains the cumulative summary files updated by  
.I runacct .
The
.B fiscal
directory contains periodic summary files
created by
.I monacct .
.H 1 "Daily Operation"
When \s-1UNIX\s0 is switched into multi-user mode,
.B /usr/lib/acct/startup
is executed which does the following:
.AL 1
.LI
The
.I acctwtmp
program adds a ``boot'' record to
.B /usr/adm/wtmp .
This record is signified by using the
system name
as the login name in the
.B wtmp
record.
.LI
Process accounting is started via
.I turnacct .
.I "Turnacct on"
executes the
.I accton
program with the argument
.B /usr/adm/pacct .
.LI
The
.I remove
shell procedure is executed to cleanup the saved
.B pacct
and
.B wtmp
files left in the 
.B sum
directory by
.I runacct.
.LE
.P
The
.I ckpacct
procedure is run via
.I cron 
every hour of the day to check the size of
.B /usr/adm/pacct .
If the file grows past 1000 blocks (default),
.I "turnacct switch"
is executed.
While
.I ckpacct
is not absolutely necessary,
the advantage of having several smaller
.B pacct
files becomes apparent when trying to
restart 
.I runacct 
after a failure processing these records.
.P
The
.I chargefee
program can be used to bill users for
file restores,
etc.
It adds records to
.B /usr/adm/fee
which are picked up and processed by the
next execution of
.I runacct
and merged into the total accounting records.
.P
.I Runacct
is executed via
.I cron
each night.
It processes the active accounting files,
.B /usr/adm/pacct \fI?\fP,
.B /usr/adm/wtmp ,
.B /usr/adm/acct/nite/disktacct ,
and
.B /usr/adm/fee .
It produces command summaries
and usage summaries by login.
.P
When the system is shut down using
.I shutdown ,
the
.I shutacct 
shell procedure is executed.
It writes a shutdown reason record into
.B /usr/adm/wtmp
and turns process accounting off.
.P
After the first re-boot each morning,
the computer operator is instructed
by
.I /etc/rc
to execute
.B /usr/lib/acct/prdaily
to print the previous day's accounting report.
.H 1 "Setting up the Accounting System"
In order to automate the operation of this
accounting system, several things need to be done:
.AL 1
.LI
If not already present, add this line to the
.B /etc/rc
file in the state 2 section:
.br
.B "/bin/su \- adm \-c /usr/lib/acct/startup"
.LI
If not already present, add this line to
.I /etc/shutdown
to turn off the accounting before the
system is brought down:
.br
.B  /usr/lib/acct/shutacct
.LI
Three entries should be made in 
.B /usr/lib/crontab
so that
.I cron
will automatically start some shell procedures.
.B
.ps -2
 0 4 * * 1-6 /bin/su - adm -c "/usr/lib/acct/runacct  2>  /usr/adm/acct/nite/fd2log"
 0 2 * * 4 /bin/su - adm -c "/usr/lib/acct/sdisk"
 5 * * * * /bin/su - adm -c "/usr/lib/acct/ckpacct"
.ps +2
.R
.LI
The
.B \s-1PATH\s0
shell variable in
.B adm 's
.B .profile
should be set to:
.br
.B \s-1PATH\s0=/usr/lib/acct:/bin:/usr/bin
.LE
.H 1 "Runacct"
.I Runacct
is the main daily accounting shell procedure.
It is normally initiated via
.I cron
during non-prime time hours.
.I Runacct
processes connect, fee, disk,
and process accounting files.
It also prepares daily and cumulative
summary files for use by
.I prdaily
or for billing purposes.
The following files produced by
.I runacct
are of particular interest.
.VL 20 2
.LI \fBnite/lineuse\fP
Produced by
.I acctcon1 ,
which reads the
.B wtmp
file,
and produces usage statistics for
each terminal line on the system.
This report is especially useful for
detecting bad lines.
If the ratio between the
number of logoffs to logins
exceeds about 3/1, there is
a good possibility that the
line is failing.
.LI \fBnite/daytacct\fP
This file is the total accounting file
for the previous day in \fItacct.h\fP format.
.LI \fBsum/tacct\fP
This file is the
accumulation of each day's
.B nite/daytacct ,
which can be used for billing
purposes.
It is restarted each month or fiscal by the
.I monacct 
procedure. 
.LI \fBsum/daycms\fP
Produced by the
.I acctcms 
program,
it contains the daily command summary.
The
\s-1ASCII\s0
version of this file is
.B nite/daycms .
.LI \fBsum/cms\fP
The accumulation of each day's
command summaries.
It is restarted by the execution of
.I monacct .
The
\s-1ASCII\s0
version is
.B nite/cms .
.LI \fBsum/loginlog\fP
Produced by the
.I lastlogin 
shell procedure,
it maintains a record of the last time
each login was used.
.LI \fBsum/rprt.\fP\fI\s-1MMDD\s0\fP
Each execution of
.I runacct 
saves
a copy of the output of
.I prdaily .
.LE
.P
.I Runacct
takes care not to damage files in the event of errors.
A series of protection mechanisms are used that
attempt to recognize an error,
provide intelligent diagnostics,
and terminate processing
in such a way that
.I runacct 
can be restarted with
minimal intervention.
It records its progress by writing
descriptive messages into the file
.B active.\*F 
.FS
Files used by
.I runacct
are assumed to be in the
.B nite
directory unless otherwise noted.
.FE
All diagnostic output during the execution of
.I runacct
is written into
.B fd2log .
To prevent multiple invocations, in the event of
two crons or other problems,
.I runacct
will complain if the files
.B lock
and
.B lock1
exist when invoked.
The
.B lastdate
file contains the month and day
.I runacct
was last invoked,
and is used to prevent more than one execution per day.
If 
.I runacct 
detects an error, a message is written to
.B /dev/console ,
mail is sent to
.B root
and 
.B adm ,
the locks are removed,
diagnostic files are saved,
and execution is terminated.
.P
In order to allow
.I runacct
to be restartable,
processing is broken down into
separate reentrant states.
This is accomplished by using a
.B case
statement inside an endless 
.B while
loop.
Each state is one
case
of the
.B case 
statement.
A file
is used to remember the last
state completed.
When each state completes,
.B statefile
is updated to reflect the next state.
In the next loop through the
.B while ,
.B statefile
is read
and the
.B case
falls through to the next state.
When
.I runacct
reaches the
.B \s-1CLEANUP\s0
state, it removes the locks and terminates.
.I States 
are executed in the following order:
.VL 20 2
.LI \fB\s-1SETUP\s0\fP
The command
.B turnacct~switch
is executed.
The process accounting files,
.B /usr/adm/pacct\fI?\fP ,
are moved to
.B /usr/adm/Spacct\fI?.\s-1MMDD\s0\fP .
The
.B /usr/adm/wtmp
file is moved to 
.B /usr/adm/acct/nite/wtmp.\fI\s-1MMDD\s0\fP
with the current time added on the end.
.LI \fB\s-1WTMPFIX\s0\fP
The
.B wtmp
file
in the
.B nite
directory is checked for
correctness by
the
.I wtmpfix
program.
Some date changes will cause
.I acctcon1
to fail, so
.I wtmpfix
attempts to adjust the
time stamps in the
.B wtmp
file if a date change record appears.
.LI \fB\s-1CONNECT\s01\fP
Connect session records are written to
.B ctmp
in the form of
.I ctmp.h .
The
.B lineuse
file is created,
and the
.B reboots
file is created showing all of the
boot records found in the
.B wtmp 
file.
.LI \fB\s-1CONNECT\s02\fP
.B Ctmp
is converted to
.B ctacct.\fI\s-1MMDD\s0\fP
which are connect accounting records.\*F 
.FS
Accounting records are in
.I tacct.h
format.
.FE
.LI \fB\s-1PROCESS\s0\fP
The
.I acctprc1
and
.I acctprc2
programs are used to convert the
process accounting files,
.B /usr/adm/Spacct\fI?.\s-1MMDD\s0\fP ,
into total accounting records in
.B ptacct\fI?.\s-1MMDD\s0\fP .
The
.B Spacct
and
.B ptacct
files are correlated by number so that
if
.I runacct
fails, the
unnecessary reprocessing of
.B Spacct
files will not occur.
One precaution should be noted;
when restarting
.I runacct
in this state,
remove the last
ptacct
file because it will not be complete.
.LI \fB\s-1MERGE\s0\fP
Merge the process accounting records with
the connect accounting records to form
.B daytacct .
.LI \fB\s-1FEES\s0\fP
merge in any
\s-1ASCII\s0
.I tacct
records from the file
.B fee
into
.B daytacct .
.LI \fB\s-1DISK\s0\fP
On the day after the 
.I sdisk
procedure runs,
merge
.B disktacct
with
.B daytacct .
.LI \fB\s-1MERGETACCT\s0\fP
Merge
.B daytacct
with
.B sum/tacct ,
the cumulative total accounting file.
Each day,
.B daytacct
is saved in
.B sum/tacct\fI\s-1MMDD\s0\fP ,
so that
.B sum/tacct
can be recreated in the event
it becomes corrupted or lost.
.LI \fB\s-1CMS\s0\fP
Merge in today's command summary with
the cumulative command summary file
.B sum/cms .
Produce
\s-1ASCII\s0
and internal format command
summary files.
.LI \fB\s-1USEREXIT\s0\fP
Any installation dependent (local) accounting programs can
be included here.
.LI \fB\s-1CLEANUP\s0\fP
Clean up temporary files,
run
.I prdaily 
and save its output in
.B sum/rprt\fI\s-1MMDD\s0\fP ,
remove the locks,
then exit.
.LE
.H 1 "Recovering from failure"
.P
The
.I runacct
procedure can fail for a variety of reasons;
usually due to a system crash,
.B /usr
running out of space, 
or a corrupted
.B wtmp
file.
If the
.B active\fI\s-1MMDD\s0\fP
file exists, check it first for
error messages.
If the
.B active 
file and lock files exist, check
.B fd2log
for any mysterious messages.
The following are error messages produced by
.I runacct ,
and the recommended recovery actions:
.sp
.B \s-1ERROR\s0:~locks~found,~run~aborted
.br
The files
.B lock
and
.B lock1
were found.
These files must be removed before
.I runacct
can restart.
.sp
.B \s-1ERROR\s0:~acctg~already~run~for~\fIdate\fP~:~check~/usr/adm/acct/nite/lastdate
.br
The date in
.B lastdate
and today's date are the same.
Remove
.B lastdate .
.sp
.B \s-1ERROR\s0:~turnacct~switch~returned~rc=\fI?\fP
.br
Check the integrity of
.I turnacct
and
.I accton .
The
.I accton 
program must be owned by 
.B root ,
and have the setuid bit set.
.sp
.B \s-1ERROR\s0:~Spacct\fI?.\s-1MMDD\s0\fP~already~exists
.br
.B file~setups~probably~already~run
.br
Check status of files, then run setups manually.
.sp
.B \s-1ERROR\s0:~/usr/adm/acct/nite/wtmp.\fI\s-1MMDD\s0\fP~already~exists,~run~setup~manually
.br
Self-explanatory.
.sp
.B \s-1ERROR\s0:~wtmpfix~errors~~see~/usr/adm/acct/nite/wtmperror
.br
.I Wtmpfix
detected a corrupted
.B wtmp
file.
Use
.I fwtmp
to correct the corrupted file.
.sp
.B \s-1ERROR\s0:~connect~acctg~failed:~check~/usr/adm/acct/nite/log
.br
The
.I acctcon1
program encountered a bad
.B wtmp
file.
Use
.I fwtmp
to correct the bad file.
.sp
.B \s-1ERROR\s0:~Invalid~state,~check~/usr/adm/acct/nite/active
.br
The file,
.B statefile ,
is probably corrupted.
Check
.B statefile
and read
.B active
before restarting.
.H 1 "Restarting runacct"
.P
.I Runacct
called without arguments assumes that this is the
first invocation of the day.
The argument
.I \s-1MMDD\s0
is necessary if
.I runacct
is being restarted,
and specifies the month and day for which
.I runacct
will rerun the accounting.
The entry point for processing is based on the
contents of
.B statefile .
To override
.B statefile ,
include the desired
.I state
on the command line.
.br
Examples:
.sp
.in +5
To start \fIrunacct\fP:
.br
.B ~~~~~nohup~runacct~~2>~~/usr/adm/acct/nite/fd2log&
.sp
To restart \fIrunacct\fP:
.br
.B ~~~~~nohup~runacct~0601~~2>~~/usr/adm/acct/nite/fd2log&
.sp
To restart \fIrunacct\fP at a specific state:
.br
.B ~~~~~nohup~runacct~0601~\s-1WTMPFIX\s0~~2>~~/usr/adm/acct/nite/fd2log&
.sp
.in
.H 1 "Fixing corrupted files"
.P
Unfortunately,
this accounting system is not entirely fool proof.
Occasionally a file will become corrupted, or lost.
Some of the files can simply be ignored or restored
from the filesave backup.
However, certain files must be fixed in order to
maintain the integrity of the accounting system.
.P
The
.B wtmp
files seem to cause the most problems in the day to day
operation of the accounting system.
When the date is changed when \s-1UNIX\s0 is in multi-user mode,
a set of date change records is written into
.B /usr/adm/wtmp .
The
.I wtmpfix
program is designed to adjust the time stamps in the
.B wtmp
records when a date change is encountered.
Some combinations of date changes and reboots, however,
will slip through
.I wtmpfix
and cause
.I acctcon1
to fail.
The following steps show how to patch up a
.B wtmp
file.
.B
.nf
.in +5
.sp
cd /usr/adm/acct/nite
fwtmp < wtmp.\fI\s-1MMDD\s0\fP > xwtmp
ed xwtmp
.in +.2i
.I
delete corrupted records or
delete all records from the beginning up to the date change
.B
.in -.2i
fwtmp -ic < xwtmp > wtmp.\fI\s-1MMDD\s0\fP
.R
.in -5
.fi
.P
If the
.B wtmp
file is beyond repair, create a null
.B wtmp
file.
This will prevent any charging of connect time.
.I Acctprc1
won't be able to determine which login owned a particular process,
but it will be charged to the login that is first in the
password file for that userid.
.P
If the installation is using the accounting system to charge
users for system resources, the integrity of
.B sum/tacct
is quite important.
Occasionally, mysterious
.B tacct
records will appear with
negative numbers, duplicate userids,
or a userid of 65535.
First check
.B sum/tacctprev
with
.I prtacct .
If it looks ok, the latest 
.B sum/tacct.\fI\s-1MMDD\s0\fP
should be patched up, then
.B sum/tacct
recreated.
A simple patchup procedure would be:
.nf
.B
.in +5
.sp
cd /usr/adm/acct/sum
acctmerg -v < tacct.\fI\s-1MMDD\s0\fP > xtacct
ed xtacct
.in +.2i
.I
remove the bad records 
write duplicate uid records to another file
.B
.in -.2i
acctmerg -i < xtacct > tacct.\fI\s-1MMDD\s0\fP
acctmerg tacctprev < tacct.\fI\s-1MMDD\s0\fP > tacct
.in -5
.R
.fi
.P
Remember that the
.I monacct
procedure removes all the
.B tacct.\fI\s-1MMDD\s0\fP
files;
therefore,
.B sum/tacct
can be recreated by merging these files together.
.H 1 "Recompiling pnpsplit"
.P
The
.I pnpsplit
subroutine is used by
.I acctcon1
and
.I acctprc1
to determine the difference between prime and non-prime time.
Prime time is defined as 9 a.m. to 5 p.m. 
Monday through Friday, holidays excluded.
Every year on the day after Christmas, the following message will
appear in
.B log :
.sp
.B ~~~~~\(**\(**\(**~\s-1RECOMPILE\s0~pnpsplit~\s-1WITH\s0~\s-1NEW\s0~\s-1HOLIDAYS\s0~\(**\(**\(**
.sp
.P
Unfortunately, this will cause
.I runacct
to fail until
.I pnpsplit ,
.I acctcon1 ,
and
.I acctprc1
are recompiled.
The following steps should be taken to
successfully recompile these programs.
.AL 1
.LI
Edit
.B pnpsplit.c
to change the
.B thisyear
variable to the new year.
Update the
.B holidays
array to reflect the new holidays.
.B Pnpsplit.c
is in 
.B /usr/src/cmd/acct/lib .
.LI
Recompile
the accounting library
.I a.a ,
.I acctprc1 ,
and
.I acctcon1
by:
.sp
.I
.in +5
super-user to root
.B
.br
cd /usr/src
.br
\s-1ARGS\s0="library acctcon1 acctprc1" ./:mkcmd acct
.in
.R
.H 1 "Summary"
.P
The P\s-1WB\s0/\s-1UNIX\s0 accounting system was designed from a
\s-1UNIX\s0 system administrator's point of view.
Every possible precaution has been taken to
ensure that the system will run smoothly and
without error.
It is important to become familiar with the
C programs and shell procedures.
The manual pages should be studied,
and it is advisable to keep a printed copy of the
shell procedures handy.
This accounting system should be easy to maintain,
provide valuable information for the administrator,
and provide accurate breakdowns of the
usage of system resources for charging purposes.
.SG hsm
.NS 1
A. P. Boysen
H. T. Gibson
M. Petrella
A. Petruccelli
A. J. Vandenberg
R. A. Waskis
O. Wathington
Members of \s-1RSSG\s0 Dept. 3784
.NE
.CS
.PH "''''"
.OH "'\s9\f2\*(:?\fP'Attachement 1'\\\\n%\s0'"
.EH "'\s9\\\\n%'Attachement 1'\f2\*(:?\^\fP\s0'"
.if \n% .bp 1
.tr ~
.HU "Files in the \fB/usr/adm\fP directory"
.VL 20 4
.LI \fBdiskdiag\fP
diagnostic output during the execution of
disk accounting programs
.LI \fBdtmp\fP
output from
the
.I acctdusg 
program
.LI \fBfee\fP
output from the
.I chargefee
program,
\s-1ASCII\s0
tacct records
.LI \fBpacct\fP
active process accounting file
.LI \fBpacct\fI?\fR
process accounting files switched via
.I turnacct
.LI \fBSpacct\fI?.\s-1MMDD\s0\fR
process accounting files for
.I \s-1MMDD\s0
during
execution of
.I runacct
.LI \fBwtmp\fP
active wtmp file for recording connect sessions
.LE
.HU "Files in the \fB/usr/adm/acct/nite\fP directory"
.VL 20 4
.LI \fBactive\fP
used by 
.I runacct
to record progress and print
warning and error messages.
.B active\fI\s-1MMDD\s0\fP
same as
.B active
after
.I runacct
detects an error
.LI \fBcms\fP
\s-1ASCII\s0
total command summary used by
.I prdaily
.LI \fBctacct.\fIMMDD\fR
connect accounting records in
.I tacct.h
format
.LI \fBctmp\fP
output of
.I acctcon1
program,
connect session records in
.I ctmp.h
format
.LI \fBdaycms\fP
\s-1ASCII\s0
daily command summary used by
.I prdaily
.LI \fBdaytacct\fP
total accounting records for one day in
.I tacct.h
format
.LI \fBdisktacct\fP
disk accounting records in
.I tacct.h
format,
created by
.I dodisk
procedure
.LI \fBfd2log\fP
diagnostic output during
execution of runacct
.br
( see cron entry )
.LI \fBlastdate\fP
last day
.I runacct
executed in
.B date~+%m%d
format
.LI \fBlock~lock1\fP
used to control serial use of
.I runacct
.LI \fBlineuse\fP
tty line usage report used by
.I prdaily
.LI \fBlog\fP
diagnostic output from
.I acctcon1
.LI \fBlog\fI\s-1MMDD\s0\fR
same as
.B log
after
.I runacct
detects an error
.LI \fBreboots\fP
contains beginning and ending dates
from
.B wtmp ,
and a listing of reboots
.LI \fBstatefile\fP
used to record current state during
execution of
.I runacct
.LI \fBtmpwtmp\fP
wtmp file corrected by
.I wtmpfix
.LI \fBwtmperror\fP
place for
.I wtmpfix
error messages
.LI \fBwtmperror\fI\s-1MMDD\s0\fR
same as
.B wtmperror
after
.I runacct
detects an error
.LI \fBwtmp.\fI\s-1MMDD\s0\fR
previous day's wtmp file
.LE
.HU "Files in the \fB/usr/adm/acct/sum\fP directory"
.VL 20 4
.LI \fBcms\fP
total command summary file for current
fiscal in internal summary format
.LI \fBcmsprev\fP
command summary file without latest update
.LI \fBdaycms\fP
command summary file for yesterday in
internal summary format
.LI \fBloginlog\fP
created by
.I lastlogin
.LI \fBpacct.\fI\s-1MMDD\s0\fR
concatenated version of all pacct files
for
.I \s-1MMDD\s0 ,
removed after reboot by
.I remove
procedure
.LI \fBrprt.\fI\s-1MMDD\s0\fR
saved output of 
.I prdaily 
program
.LI \fBtacct\fP
cumulative total accounting file
for current fiscal
.LI \fBtacctprev\fP
same as
.B tacct
without latest update
.LI \fBtacct.\fI\s-1MMDD\s0\fR
total accounting file for
.I \s-1MMDD\s0
.LI \fBwtmp.\fI\s-1MMDD\s0\fR
saved copy of wtmp file for
.I \s-1MMDD\s0 ,
removed after reboot by
.I remove
procedure
.LE
.HU "Files in the \fB/usr/adm/acct/fiscal\fP directory"
.VL 20 4
.LI \fBcms\fI?\fR
total command summary file for fiscal \fI?\fP in
internal summary format
.LI \fBfiscrpt\fI?\fR
report similar to
.I prdaily
for fiscal \fI?\fP
.LI \fBtacct\fI?\fR
total accounting file for fiscal \fI?\fP
.LE
.PH "''''"
.OH "'\s9\f2\*(:?\fP'Attachment 2'\\\\n%\s0'"
.EH "'\s9\\\\n%'Attachment 2'\f2\*(:?\^\fP\s0'"
.if \n% .bp 1
.HU "Format of wtmp files (utmp.h)"
.DS
/\(**
 \(** Format of /etc/utmp and /usr/adm/wtmp
 \(**/

struct utmp {
	char	ut_line[8];		/\(** tty name \(**/
	char	ut_name[8];		/\(** user id \(**/
	long	ut_time;		/\(** time on \(**/
};
.DE
.HU "Definitions (acctdef.h)"
.DS
/\(**
 \(**	defines, typedefs, etc. used by acct programs
 \(**/

/\(**
 \(**	following taken from (or modified versions of) <sys/types.h>
 \(**/
typedef	unsigned short	dev_t;
typedef unsigned int	ino_t;
typedef	long		off_t;
typedef	long		time_t;

/\(**
 \(**	acct only typedefs
 \(**/
typedef	unsigned short	uid_t;

#define LSZ	8	/\(** sizeof line name \(**/
#define NSZ	8	/\(** sizeof login name \(**/
#define P	0	/\(** prime time \(**/
#define NP	1	/\(** nonprime time \(**/

/\(**
 \(**	limits which may have to be increased if systems get larger
 \(**/
#define SSIZE	1000	/\(** max number of sessions in 1 acct run \(**/
#define TSIZE	100	/\(** max number of line names in 1 acct run \(**/
#define USIZE	500	/\(** max number of distinct login names in 1 acct run \(**/

#define EQN(s1, s2)	(strncmp(s1, s2, sizeof(s1)) == 0)
#define CPYN(s1, s2)	strncpy(s1, s2, sizeof(s1))

#define SECS(tics)	((double) tics)/60.
#define MINS(secs)	((double) secs)/60.
#define MINT(tics)	((double) tics)/3600.
#define KCORE(clicks)	((double) clicks/16)
#define SECSINDAY	86400L
.DE
.SK
.HU "Format of pacct files (acct.h)"
.DS
/\(**
 \(** Accounting structures
 \(**/

typedef	unsigned short comp_t;	/\(** "floating point" \(**/

struct	acct
{
	char	ac_flag;		/\(** Accounting flag \(**/
	char	ac_stat;		/\(** Exit status \(**/
	short	ac_uid;			/\(** Accounting user ID \(**/
	short	ac_gid;			/\(** Accounting group ID \(**/
	dev_t	ac_tty;			/\(** control typewriter \(**/
	time_t	ac_btime;		/\(** Beginning time \(**/
	comp_t	ac_utime;		/\(** Accounting user time \(**/
	comp_t	ac_stime;		/\(** Accounting system time \(**/
	comp_t	ac_etime;		/\(** Accounting elapsed time \(**/
	comp_t	ac_mem;			/\(** memory usage \(**/
	comp_t	ac_io;
	comp_t	ac_rw;
	char	ac_comm[8];		/\(** command name \(**/
};	

extern	struct	acct	acctbuf;
extern	struct	inode	\(**acctp;		/\(** inode of accounting file \(**/

#define	AFORK	01		/\(** has executed fork, but no exec \(**/
#define	ASU	02		/\(** used super-user privileges \(**/
#define	ACCTF	0300		/\(** record type: 00 = acct \(**/
.DE
.HU "Format of tacct files (tacct.h)"
.DS
/\(**
 \(**	total accounting (for acct period), also for day
 \(**/

struct	tacct	{
	uid_t		ta_uid;		/\(** userid \(**/
	char		ta_name[8];	/\(** login name \(**/
	float		ta_cpu[2];	/\(** cum. cpu time, p/np (mins) \(**/
	float		ta_kcore[2];	/\(** cum kcore-minutes, p/np \(**/
	float		ta_con[2];	/\(** cum. connect time, p/np, mins \(**/
	float		ta_du;		/\(** cum. disk usage \(**/
	long		ta_pc;		/\(** count of processes \(**/
	unsigned short	ta_sc;		/\(** count of login sessions \(**/
	unsigned short	ta_dc;		/\(** count of disk samples \(**/
	unsigned short	ta_fee;		/\(** fee for special services \(**/
};
.DE
.HU "Format of ctmp file (ctmp.h)"
.DS
/\(**
 \(**	connect time record (various intermediate files)
 \(**/
struct ctmp {
	dev_t	ct_tty;			/\(** major minor \(**/
	uid_t	ct_uid;			/\(** userid \(**/
	char	ct_name[8];		/\(** login name \(**/
	long	ct_con[2];		/\(** connect time (p/np) secs \(**/
	time_t	ct_start;		/\(** session start time \(**/
};
.DE
.PH "''''"
.OH "'\s9\f2\*(:?\fP'Attachement 3'\\\\n%\s0'"
.EH "'\s9\\\\n%'Attachement 3'\f2\*(:?\^\fP\s0'"
.if \n% .bp 1
.de dS
.DS
.ps 6
.vs 7p
..
.de dE
.ps 10
.vs 12p
.DE
..
.dS


Jun  8 04:14 1979  DAILY REPORT FOR pwba Page 1


from Thu Jun  7 06:00:48 1979
to   Fri Jun  8 04:00:28 1979
2       shutdown
2       pwba

TOTAL DURATION IS 1320 MINUTES
.TS
l c c c c c
l n n n n n.
LINE	MINUTES	PERCENT	# SESS	# ON	# OFF
tty04	479	36	9	9	30
tty47	341	26	4	4	33
tty44	298	23	3	3	29
tty46	336	25	9	9	33
console	1100	83	14	14	21
tty05	448	34	3	3	22
tty06	439	33	9	9	31
tty07	421	32	6	6	24
tty42	53	4	5	5	20
tty09	385	29	11	11	33
tty10	336	25	10	10	31
tty08	464	35	2	2	19
tty26	544	41	6	6	24
tty12	252	19	5	5	25
tty13	258	20	3	3	21
tty14	156	12	6	6	26
tty17	145	11	1	1	16
tty18	39	3	5	5	24
tty15	228	17	5	5	25
tty25	704	53	6	6	25
tty21	0	0	0	0	16
tty19	10	1	1	1	17
tty20	25	2	2	2	18
tty22	0	0	0	0	15
tty23	0	0	0	0	15
tty24	0	0	0	0	16
tty27	481	36	3	3	20
tty28	426	32	5	5	24
tty29	302	23	6	6	25
tty30	257	20	11	11	28
tty40	380	29	5	5	21
tty41	343	26	3	3	21
tty45	0	0	0	0	15
tty11	365	28	7	7	25
tty43	3	0	1	1	17
tty16	213	16	3	3	20
tty31	250	19	4	4	18
tty02	62	5	1	1	3
TOTALS	10544	--	174	174	846
.TE
.dE
.bp
.dS
Jun  8 04:14 1979  DAILY USAGE REPORT FOR pwba Page 1


.TS
l l c s c s c s l l l l l
l l l l l l l l l l l l l
l l n n n n n n n n n n n.
	LOGIN	CPU (MINS)	KCORE-MINS	CONNECT (MINS)	DISK	# OF	# OF	# DISK	FEE
UID	NAME	PRIME	NPRIME	PRIME	NPRIME	PRIME	NPRIME	BLOCKS	PROCS	SESS	SAMPLES	\&
0	TOTAL	388	103	12414	2934	9251	1056	0	16164	174	0	0
0	root	47	41	1003	924	67	30	0	2360	8	0	0
4	adm	7	19	48	652	0	0	0	842	0	0	0
19	games	0	0	4	0	0	0	0	28	0	0	0
22	mhb	0	0	1	1	1	1	0	14	2	0	0
37	abs	0	0	4	0	0	0	0	3	0	0	0
37	absjrk	14	0	284	0	423	0	0	1588	4	0	0
68	rje	3	3	24	21	0	0	0	179	0	0	0
71	?	0	0	0	0	0	0	0	12	0	0	0
150	jac	7	0	156	5	281	2	0	510	13	0	0
173	?	0	0	0	0	0	0	0	16	0	0	0
180	?	0	0	0	0	0	0	0	4	0	0	0
185	?	0	0	0	0	0	0	0	2	0	0	0
217	denise	0	0	2	0	31	0	0	32	3	0	0
217	kof	0	0	2	0	1	0	0	7	1	0	0
219	?	0	0	0	0	0	0	0	12	0	0	0
1001	hsm	5	0	189	0	179	0	0	92	2	0	0
2001	systst	0	1	5	28	476	64	0	99	5	0	0
2002	mfp	1	0	7	5	270	62	0	93	3	0	0
2003	als	1	0	23	0	100	0	0	99	3	0	0
2005	eric	0	0	3	0	13	0	0	21	1	0	0
2006	hoot	0	0	2	0	16	0	0	8	1	0	0
2009	agp	47	0	2040	0	444	0	0	492	2	0	0
2009	fsrep1	2	0	60	0	36	0	0	95	1	0	0
2011	pdw	0	0	1	0	4	0	0	11	1	0	0
2012	pwbst	0	0	1	0	28	0	0	9	1	0	0
2014	cath	0	0	1	0	1	0	0	7	1	0	0
2022	rem	32	1	1227	91	576	4	0	226	3	0	0
2025	fld	55	23	2176	862	336	98	0	750	7	0	0
2027	krb	14	2	365	51	547	24	0	372	8	0	0
2028	text	0	0	1	0	3	0	0	13	1	0	0
2030	arf	8	0	288	0	317	0	0	315	3	0	0
2031	dp	12	0	480	3	459	6	0	220	6	0	0
2032	graf	2	0	49	0	23	0	0	118	1	0	0
2033	ecp	3	0	74	0	355	0	0	115	4	0	0
2040	leap	15	0	308	0	513	1	0	505	2	0	0
2041	dan	3	0	93	3	149	2	0	117	8	0	0
2051	ds52	2	2	19	40	375	601	0	611	8	0	0
2055	nuucp	0	0	15	9	17	1	0	10	3	0	0
2057	ech	1	0	28	0	63	0	0	68	2	0	0
2061	jcw	4	3	99	70	37	34	0	869	4	0	0
2064	mjr	18	0	443	0	176	0	0	2065	3	0	0
2065	rrr	0	0	6	0	7	0	0	23	1	0	0
2068	trc	0	0	7	0	10	0	0	29	1	0	0
2075	herb	29	0	1178	1	384	2	0	249	5	0	0
2086	paul	1	0	14	0	152	0	0	28	1	0	0
2087	pris	0	0	0	10	0	2	0	13	1	0	0
2111	pwbcs	2	3	60	85	64	86	0	185	4	0	0
2116	rbj	1	0	16	0	408	0	0	222	1	0	0
2121	teach	0	0	3	0	53	0	0	50	2	0	0
2123	msb	0	0	3	0	5	0	0	24	1	0	0
2124	rnt	2	0	42	0	66	0	0	260	3	0	0
2126	dal	0	0	5	0	121	0	0	17	1	0	0
2127	m2	15	0	495	11	390	2	0	602	10	0	0







.T&
l s s s s s s s s s s s s
l l n n n n n n n n n n n.
Jun  8 04:14 1979  DAILY USAGE REPORT FOR pwba Page 2


2128	jel	14	0	492	9	422	14	0	523	8	0	0
2130	s1	0	0	5	1	16	0	0	42	2	0	0
2130	s3	0	0	0	0	0	2	0	9	1	0	0
2135	jfn	0	1	0	12	0	11	0	33	2	0	0
2136	m2class	0	0	5	0	2	0	0	18	1	0	0
2140	star	4	0	213	12	90	3	0	170	7	0	0
2141	reg	5	0	245	25	470	4	0	181	1	0	0
2199	llc	0	0	1	0	10	0	0	7	1	0	0
2999	stock	0	0	1	0	1	0	0	17	1	0	0
3001	whm	5	0	93	0	253	0	0	414	3	0	0
3332	vjf	0	0	4	0	8	0	0	39	1	0	0
.TE
.dE
.bp
.dS
Jun  8 04:07 1979  DAILY COMMAND SUMMARY Page 1


.TS
l c c c c c c c c c
l c c c c c c c c c
l n n n n n n n n n.
COMMAND	NUMBER	TOTAL	TOTAL	TOTAL	MEAN	MEAN	HOG	CHARS	BLOCKS
NAME	CMDS	KCOREMIN	CPU-MIN	REAL-MIN	SIZE-K	CPU-MIN	FACTOR	TRNSFD	READ

TOTALS	16164	15332.89	490.72	37463.98	31.25	0.03	0.01	322183844	1097670

nroff	119	3958.68	93.21	569.83	42.47	0.78	0.16	67070052	130284
troff	26	2483.38	51.63	342.70	48.10	1.99	0.15	37869304	48989
xnroff	20	732.03	16.74	111.05	43.73	0.84	0.15	13885248	22659
a.out	31	623.53	10.52	142.77	59.26	0.34	0.07	382435	2758
egrep	185	574.83	13.96	34.53	41.18	0.08	0.40	170625	8249
m2find	232	555.79	9.93	155.11	55.96	0.04	0.06	6155937	30994
c1	150	519.04	13.57	48.89	38.25	0.09	0.28	4285724	16032
c0	165	413.10	9.19	35.16	44.93	0.06	0.26	3827309	12170
m2edit	33	340.92	4.63	148.27	73.62	0.14	0.03	1074914	14492
ld	87	317.38	7.94	38.48	39.97	0.09	0.21	17640896	45797
acctcms	17	294.75	6.49	14.15	45.41	0.38	0.46	2525427	5515
c2	112	289.69	9.13	34.61	31.72	0.08	0.26	3667050	9681
sh	1834	276.98	26.77	20444.24	10.35	0.01	0.00	3496613	71979
ed	524	253.13	14.46	2029.89	17.50	0.03	0.01	18058108	56039
acctprc1	3	231.28	6.67	19.45	34.67	2.22	0.34	2577344	2926
du	145	219.35	19.91	39.08	11.02	0.14	0.51	716389	23695
diff	49	175.53	6.04	25.78	29.05	0.12	0.23	3740887	11351
get	151	152.96	4.28	25.23	35.74	0.03	0.17	3634042	24917
adb	22	148.10	4.07	202.35	36.37	0.19	0.02	2313718	9813
tbl	24	143.43	2.44	210.65	58.71	0.10	0.01	1536210	3433
dd	9	139.24	10.15	51.05	13.72	1.13	0.20	26006848	294
as2	155	129.33	9.82	42.25	13.17	0.06	0.23	10500835	30165
sed	597	115.46	4.19	36.23	27.57	0.01	0.12	783825	24497
ps	51	109.69	5.92	41.55	18.54	0.12	0.14	2278056	8310
make	89	102.94	2.87	203.32	35.81	0.03	0.01	1018461	8664
delta	25	90.23	2.27	17.80	39.70	0.09	0.13	2909269	9321
cpp	172	89.37	2.69	11.32	33.19	0.02	0.24	3519054	12155
fsck	16	86.94	1.30	10.57	66.85	0.08	0.12	27671849	2927
find	52	86.64	5.05	63.87	17.15	0.10	0.08	565125	11161
ls	706	82.47	5.78	62.85	14.26	0.01	0.09	1811882	29659
xck	2	79.44	10.49	47.89	7.57	5.25	0.22	198016	21995
awk	22	78.83	1.37	5.24	57.72	0.06	0.26	355466	3769
uucico	60	75.55	1.42	632.50	53.27	0.02	0.00	398693	6377
acctcom	9	75.21	2.81	11.49	26.75	0.31	0.24	1283776	3771
echo	2814	66.10	7.08	91.80	9.33	0.00	0.08	168651	24253
ged	3	57.27	0.82	7.51	70.16	0.27	0.11	51832	426
dc	284	56.92	2.42	9.43	23.48	0.01	0.26	15283	20329
450	7	48.03	6.80	84.45	7.06	0.97	0.08	279451	1700
cat	749	45.49	5.69	478.54	8.00	0.01	0.01	8959500	27903
ntd	6	41.52	1.55	7.55	26.87	0.26	0.20	59888	478
mail	202	39.95	2.05	532.98	19.53	0.01	0.00	427217	14377
acctprc2	3	38.95	1.43	19.45	27.24	0.48	0.07	587336	87
sort	94	38.72	1.09	9.73	35.41	0.01	0.11	375876	4433
pr	104	34.89	2.47	214.50	14.10	0.02	0.01	1060989	6572
haspmain	7	33.20	5.28	1244.54	6.29	0.75	0.00	63064	36635
ex	17	31.69	0.62	41.04	50.97	0.04	0.02	514624	3593
grep	213	28.73	2.98	21.01	9.64	0.01	0.14	2100229	14297
.TE
.dE
.bp
.dS
Jun  8 04:07 1979  MONTHLY TOTAL COMMAND SUMMARY Page 1


.TS
l c c c c c c c c c
l c c c c c c c c c
l n n n n n n n n n.
COMMAND	NUMBER	TOTAL	TOTAL	TOTAL	MEAN	MEAN	HOG	CHARS	BLOCKS
NAME	CMDS	KCOREMIN	CPU-MIN	REAL-MIN	SIZE-K	CPU-MIN	FACTOR	TRNSFD	READ

TOTALS	553286	297698.78	10916.09	742924.94	27.27	0.02	0.01	820472546	26253312

nroff	1687	44681.55	995.92	5737.25	44.86	0.59	0.17	613403153	1089180
troff	1351	25692.15	583.69	4356.05	44.02	0.43	0.13	413163589	646243
spellpro	6466	17298.41	294.16	1893.79	58.81	0.05	0.16	334572640	853901
m2edit	654	13526.69	164.62	4238.58	82.17	0.25	0.04	54940426	427924
xnroff	397	10408.44	203.72	1496.32	51.09	0.51	0.14	215221419	301967
sort	7983	9292.34	226.01	2298.05	41.11	0.03	0.10	80108304	355963
c1	6139	8949.86	236.45	861.09	37.85	0.04	0.27	79897995	489661
ld	3244	8852.96	223.19	1128.09	39.67	0.07	0.20	493701995	1278119
sed	53134	8126.71	313.85	2241.78	25.89	0.01	0.14	23035033	1692990
m2find	2982	7984.45	140.18	1698.25	56.96	0.05	0.08	111330040	449604
c0	6586	7866.42	185.16	725.47	42.49	0.03	0.26	72595655	389426
ed	20083	7822.78	425.90	41898.18	18.37	0.02	0.01	483425634	1541326
tbl	660	7766.69	113.95	2458.55	68.16	0.17	0.05	50760094	83887
sh	40476	7499.67	635.00	383786.53	11.81	0.02	0.00	70525236	1421194
du	1941	6730.54	553.04	1128.44	12.17	0.28	0.49	20848359	628324
a.out	1483	5658.46	126.87	1868.87	44.60	0.09	0.07	16158675	80260
egrep	4801	5573.51	139.86	460.25	39.85	0.03	0.30	6823696	237298
lint1	793	5325.66	71.23	425.67	74.76	0.09	0.17	9599001	131592
cat	21170	4657.53	236.59	4354.24	19.69	0.01	0.05	239180412	1023965
acctprc1	42	3837.84	110.88	291.34	34.61	2.64	0.38	43954136	61123
c2	4067	3807.25	144.86	477.28	26.28	0.04	0.30	57519376	213521
grep	21212	3204.86	300.44	2727.87	10.67	0.01	0.11	139340583	899415
cpp	7469	3060.72	94.12	647.79	32.52	0.01	0.15	91471956	459882
getty	35556	2948.71	853.53	101107.45	3.45	0.02	0.01	34704751	263866
m2editD	83	2707.27	28.79	361.84	94.02	0.35	0.08	2852202	33949
as2	6454	2698.74	218.96	910.59	12.33	0.03	0.24	213336016	705690
make	1858	2449.10	64.69	4388.86	37.86	0.03	0.01	24116259	175544
ps	1034	2384.14	128.29	1207.87	18.58	0.12	0.11	54873792	204172
acctcms	294	2288.36	51.99	116.06	44.01	0.18	0.45	36124940	80523
uucico	815	2226.75	40.42	11729.01	55.08	0.05	0.00	11086105	162558
ls	18876	2170.01	152.76	1538.09	14.20	0.01	0.10	32418106	691028
find	1705	2114.18	114.35	920.75	18.49	0.07	0.12	94631199	338600
ged	72	2026.43	28.54	317.21	71.01	0.40	0.09	1648636	10374
echo	84710	2018.23	190.14	1138.49	10.61	0.00	0.17	2926992	649200
cpio	127	1956.60	77.03	391.45	25.40	0.61	0.20	190822346	296302
maze	8	1620.42	44.80	128.25	36.17	5.60	0.35	120399	212
mail	4735	1474.38	76.92	14262.62	19.17	0.02	0.01	25719618	463748
get	1085	1358.03	37.59	234.97	36.13	0.03	0.16	31540008	178623
acctcom	165	1253.99	47.06	339.34	26.64	0.29	0.14	57405662	68949
yacc	58	1187.17	15.36	36.90	77.31	0.26	0.42	4096070	12093
col	638	1064.40	49.01	2199.00	21.72	0.08	0.02	23835395	16903
line	27184	1036.03	93.14	1941.33	11.12	0.00	0.05	925447	296142
nroff1.2	29	909.83	17.71	56.97	51.38	0.61	0.31	11459920	18802
delta	264	904.54	23.07	254.06	39.21	0.09	0.09	24219141	87164
td	175	886.19	25.74	159.73	34.43	0.15	0.16	1990177	15792
ar	1434	872.65	61.87	309.07	14.11	0.04	0.20	189858731	428871
m2findD	144	864.29	12.54	344.13	68.94	0.09	0.04	1184947	28576
rm	15319	857.97	85.65	754.20	10.02	0.01	0.11	453479	433903
acctdusg	1	819.77	39.30	170.10	20.86	39.30	0.23	1812480	39744
f77pass1	155	779.13	7.97	29.09	97.70	0.05	0.27	990027	34702
diff	786	767.31	32.77	260.27	23.41	0.04	0.13	22940094	97214
.TE
.dE
.bp
.dS
Jun  8 04:07 1979  LAST LOGIN Page 1


.TS
l l l.
00-00-00  dii	00-00-00  rudd	79-06-08  adm
00-00-00  absadm	00-00-00  s10	79-06-08  agp
00-00-00  absafr	00-00-00  s2	79-06-08  als
00-00-00  abscas	00-00-00  s4	79-06-08  arf
00-00-00  absjcw	00-00-00  s5	79-06-08  cath
00-00-00  abspvg	00-00-00  s6	79-06-08  dal
00-00-00  abstbm	00-00-00  s8	79-06-08  dan
00-00-00  adm94	00-00-00  s9	79-06-08  denise
00-00-00  apb	00-00-00  scbsa	79-06-08  dp
00-00-00  archive	00-00-00  sjm	79-06-08  ds52
00-00-00  asc	00-00-00  srb	79-06-08  ech
00-00-00  badt	00-00-00  sys	79-06-08  ecp
00-00-00  btb	00-00-00  tgp	79-06-08  eric
00-00-00  bvl	00-00-00  tld	79-06-08  fld
00-00-00  bwk	00-00-00  ussc	79-06-08  fsrep1
00-00-00  chicken	00-00-00  uucpa	79-06-08  games
00-00-00  class	00-00-00  uvac	79-06-08  graf
00-00-00  cleary	00-00-00  vav	79-06-08  herb
00-00-00  cs	00-00-00  wdr	79-06-08  hoot
00-00-00  dbs	00-00-00  willa	79-06-08  hsm
00-00-00  deby	00-00-00  zooma	79-06-08  jac
00-00-00  dec	79-06-04  dws	79-06-08  jcw
00-00-00  demo	79-06-04  ewb	79-06-08  jel
00-00-00  dlt	79-06-04  kas	79-06-08  jfn
00-00-00  dmr	79-06-04  satz	79-06-08  kof
00-00-00  docs	79-06-04  uucp	79-06-08  krb
00-00-00  dug	79-06-05  bcm	79-06-08  leap
00-00-00  ellie	79-06-05  lprem	79-06-08  llc
00-00-00  fsrep2	79-06-05  s7	79-06-08  m2
00-00-00  gas	79-06-05  sccs	79-06-08  m2class
00-00-00  graphics	79-06-06  conv	79-06-08  mfp
00-00-00  hjg	79-06-06  dck	79-06-08  mhb
00-00-00  hlb	79-06-06  dmt	79-06-08  mjr
00-00-00  inst	79-06-06  emp	79-06-08  msb
00-00-00  jfm	79-06-06  pah	79-06-08  nuucp
00-00-00  jrh	79-06-06  sync	79-06-08  paul
00-00-00  ken	79-06-06  tad	79-06-08  pdw
00-00-00  lco	79-06-07  ams	79-06-08  pris
00-00-00  learn	79-06-07  bin	79-06-08  pwbcs
00-00-00  lppdw	79-06-07  dgd	79-06-08  pwbst
00-00-00  lrbb	79-06-07  haight	79-06-08  rbj
00-00-00  maj	79-06-07  hasp	79-06-08  reg
00-00-00  mar	79-06-07  jgw	79-06-08  rem
00-00-00  mash	79-06-07  leb	79-06-08  rje
00-00-00  meq	79-06-07  ljk	79-06-08  rnt
00-00-00  mifi	79-06-07  mep	79-06-08  root
00-00-00  mlc	79-06-07  nhg	79-06-08  rrr
00-00-00  mmr	79-06-07  nws	79-06-08  s1
00-00-00  mpf	79-06-07  qtroff	79-06-08  s3
00-00-00  plan	79-06-07  tbm	79-06-08  star
00-00-00  plum	79-06-07  train	79-06-08  stock
00-00-00  pvg	79-06-07  whr	79-06-08  systst
00-00-00  rakesh	79-06-07  wwe	79-06-08  teach
00-00-00  rfg	79-06-08  ?	79-06-08  text
00-00-00  rlc	79-06-08  abs	79-06-08  trc
00-00-00  rrc	79-06-08  absjrk	79-06-08  vjf
79-06-08  whm
.TE
.dE
.sp
.I "January 1980"