!++
! Facility:	(DEFINATION) - LIB:INCLUDE#CHARGE - VAX/VMS ?.? FORTRAN.
!
! Abstract:	Rod Eldridge, 15-Aug-1983
! 			VMS 3.0 Accounting Log File Charge Record
!
! Modified:	Troy Frericks, 15-Aug-1986
!			Changed all real values to integer.
!			Charge Item list is now 13, not 16 elements.
!--
	character*257	charge_record
	byte		charge_def(0:256)
	equivalence	(charge_record,charge_def(0))
c
c Record Header
c
	integer*2	charge_record_type	! Record type
	data		charge_record_type/'2012'x/
	integer*2	charge_record_length	! Record length
	data		charge_record_length/257/
	integer*4	charge_systime(2)	! System time
	equivalence	(charge_record_type,charge_def(0))
	equivalence	(charge_record_length,charge_def(2))
	equivalence	(charge_systime,charge_def(4))
c
c Identification Packet
c
	integer*2	charge_id_packet	! Packet type
	data		charge_id_packet/'2003'x/
	integer*2	charge_id_length	! Packet length
	data		charge_id_length/59/
	equivalence	(charge_id_packet,charge_def(12))
	equivalence	(charge_id_length,charge_def(14))
c
	integer*4	charge_pid		! Process id
	integer*4	charge_owner		! Owner
	integer*4	charge_uid		! Uic
	integer*4	charge_priv(2)		! Privileges
	byte		charge_pri		! Priority
	integer*2	charge_user_offset	! Offset to Username
	data		charge_user_offset/'002E'x/
	integer*2	charge_account_offset	! Offset to Account
	data		charge_account_offset/0/
	integer*2	charge_nodename_offset	! Offset to Nodename
	data		charge_nodename_offset/0/
	integer*2	charge_terminal_offset	! Offset to Terminal
	data		charge_terminal_offset/0/
	integer*2	charge_jobname_offset	! Offset to Jobname
	data		charge_jobname_offset/0/
	integer*4	charge_jobid		! Job id
	data		charge_jobid/0/
	integer*2	charge_queue_offset	! Offset to Queue
	data		charge_queue_offset/0/
	integer*2	charge_nodeaddr 	! Node address
	data		charge_nodeaddr/0/
	integer*2	charge_remoteid_offset	! Offset to Remote id
	data		charge_remoteid_offset/0/
	byte		charge_user_length
	character*12	charge_user
	equivalence	(charge_pid,charge_def(16))
	equivalence	(charge_owner,charge_def(20))
	equivalence	(charge_uid,charge_def(24))
	equivalence	(charge_priv,charge_def(28))
	equivalence	(charge_pri,charge_def(36))
	equivalence	(charge_user_offset,charge_def(38))
	equivalence	(charge_account_offset,charge_def(40))
	equivalence	(charge_nodename_offset,charge_def(42))
	equivalence	(charge_terminal_offset,charge_def(44))
	equivalence	(charge_jobname_offset,charge_def(46))
	equivalence	(charge_jobid,charge_def(48))
	equivalence	(charge_queue_offset,charge_def(52))
	equivalence	(charge_nodeaddr,charge_def(54))
	equivalence	(charge_remoteid_offset,charge_def(56))
	equivalence	(charge_user_length,charge_def(58))
	equivalence	(charge_user,charge_def(59))
c
c ISU User Data Accounting Packet
c
	integer*2	charge_acctng_packet	! Packet type
	data		charge_acctng_packet/'200B'x/
	integer*2	charge_acctng_length	! Packet length
	data		charge_acctng_length/186/
	equivalence	(charge_acctng_packet,charge_def(71))
	equivalence	(charge_acctng_length,charge_def(73))
c
	byte		charge_user_data_length
	data		charge_user_data_length/181/
	equivalence	(charge_user_data_length,charge_def(75))
c
	byte		charge_length		! Length
	data		charge_length/181/
	integer*2	charge_type		! Type
	data		charge_type/'0101'x/
	integer*2	charge_sender		! Sender
	data		charge_sender/isuacc_isuacc/
	equivalence	(charge_length,charge_def(76))
	equivalence	(charge_type,charge_def(77))
	equivalence	(charge_sender,charge_def(79))
c
	character*12	charge_username 	! Username
	integer*4	charge_login(2) 	! Login time
	integer*4	charge_uic		! Uic
	integer*2	charge_member		! Member uic
	integer*2	charge_group		! Group uic
	character*8	charge_account		! Account
	equivalence	(charge_username,charge_def(81))
	equivalence	(charge_login,charge_def(93))
	equivalence	(charge_uic,charge_def(101))
	equivalence	(charge_member,charge_def(101))
	equivalence	(charge_group,charge_def(103))
	equivalence	(charge_account,charge_def(105))
c
	integer*4	charge_units(16)	! Units
	equivalence	(charge_units(1),charge_def(113))
c
	integer*4	charge_cputime		! Cpu time
	equivalence	(charge_cputime,charge_units(2))
	integer*4	charge_ios		! Direct i/os
	equivalence	(charge_ios,charge_units(3))
	integer*4	charge_pages		! Print pages
	equivalence	(charge_pages,charge_units(6))
	integer*4	charge_trmtime		! Terminal time
	equivalence	(charge_trmtime,charge_units(7))
	integer*4	charge_blocks		! Disk blocks
	equivalence	(charge_blocks,charge_units(8))

	integer*4	charge_costs(16)	! Costs
	equivalence	(charge_costs(1),charge_def(177))

	integer*4	charge_total$		! Total $
	equivalence	(charge_total$,charge_costs(1))
	integer*4	charge_cputime$ 	! Cpu time $
	equivalence	(charge_cputime$,charge_costs(2))
	integer*4	charge_ios$		! Direct i/os $
	equivalence	(charge_ios$,charge_costs(3))
	integer*4	charge_pages$		! Print pages $
	equivalence	(charge_pages$,charge_costs(6))
	integer*4	charge_trmtime$ 	! Terminal time $
	equivalence	(charge_trmtime$,charge_costs(7))
	integer*4	charge_blocks$		! Disk blocks $
	equivalence	(charge_blocks$,charge_costs(8))

	integer*2	charge_localinfo(2)		! last 3 integers of costs table are info about the process
	equivalence	(charge_localinfo,charge_costs(14))
	integer*2	charge_ratecode
	equivalence	(charge_ratecode,charge_localinfo(1))
	integer*2	charge_processtype
	equivalence	(charge_processtype,charge_localinfo(2))

	character*4	charge_cputype
	equivalence	(charge_cputype,charge_costs(15))
	character*4	charge_ratetable
	equivalence	(charge_ratetable,charge_costs(16))

	byte		charge_queue_length	! Length of queue name
	data		charge_queue_length/0/
	character*11	charge_queue		! Print queue name
	data		charge_queue/' '/
	integer*4	charge_unused		! Not defined
	data		charge_unused/0/
	equivalence	(charge_queue_length,charge_def(241))
	equivalence	(charge_queue,charge_def(242))
	equivalence	(charge_unused,charge_def(253))

