HP OpenVMS Systems Documentation
HP OpenVMS System Management Utilities Reference Manual
Controls whether a check for duplicate ACEs is made. This variable can
take the following values:
Allows or disallows modification of ACEs. This variable can take the
Indicates whether the object is a directory file. This variable can
take the following values:
Controls whether PASTE buffer support is enabled for VT200 series
terminals. This variable can take the following values:
Controls whether automatic text insertion (prompt mode) is enabled.
This variable can take the following values:
Controls whether the DEFAULT option can be used with nondirectory ACEs.
This variable can take the following values:
|ACLEDIT$C_WINDOW_SHIFT||Specifies the number of columns to shift the edit window in the direction wanted, GOLD key and left arrow for a left shift and GOLD key and right arrow for a right shift. The default is 8 columns.|
If you modify any of the variables in Table B-1 or change any other part of the ACL section file, recompile the section file with the following command:
Use the preceding command if you make changes directly to the source code file (SYS$LIBRARY:ACLEDIT) that creates the compiled ACL section file SYS$LIBRARY:ACLEDT$SECTION. If you add a private command file to the existing ACL section file, recompile the section file using the following command:
The compiled DECtpu ACL section file is placed in your current directory. To use the new section file, perform one of the following actions:
$ DEFINE ACLEDT$SECTION yourdisk:[yourdir]ACLEDT$SECTION
Note that the default file type for the section file before compiling (the source file) is TPU, and the default file type for the compiled section file is TPU$SECTION.
For more information about writing and processing a DECtpu section
file, refer to the DEC Text Processing Utility Reference Manual.
B.2 Using the ACL Editor CALL_USER Routine
The ACL editor CALL_USER routine is part of the shareable image SYS$LIBRARY:ACLEDTSHR.EXE. You can incorporate the ACL editor CALL_USER routine with its existing function codes into your own ACL section file, or you can write your own CALL_USER routine that recognizes a different set of function codes.
The ACL editor CALL_USER routine recognizes only those functions used by the ACL editor DECtpu section file. All other function codes are passed to a user-supplied CALL_USER routine; if the high-order word of the CALL_USER function code contains the ACL editor facility code (277 in decimal or 115 in hexadecimal), it is handled by the ACL editor CALL_USER routine. Otherwise, an attempt is made to locate a user-supplied CALL_USER routine. For more information about creating your own CALL_USER routine, see the description of the CALL_USER routine in the DEC Text Processing Utility Reference Manual.
Table B-2 describes the CALL_USER routine function codes supported by the ACL editor.
|18153473||ACLEDIT$C_PARSE_ACE||Parses the input string (ACE) and returns the parsed (binary) ACE if no errors are found. Otherwise, the returned string contains a zero as the first two characters, and the unparsed portion of the input ACE as the remainder of the string.|
|18153474||ACLEDIT$C_CHECK_MODIFY||Returns the string "READ_WRITE" if the ACE can be modified by the user. Otherwise, returns the string "READ_ONLY."|
|18153475||ACLEDIT$C_PROMPT_MODE||Returns the string "PROMPT_MODE" if the prompt mode option was specified. Otherwise, returns the string "NOPROMPT_MODE."|
|18153476||ACLEDIT$C_CHECK_ACE||Parses the input string (ACE) and returns the parsed (binary) ACE if no errors are found. Otherwise, the ACE text is highlighted in reverse video and a DECtpu variable of the form ACLEDIT$X_RANGE_x is created to identify the ACE in error. (The "x" is a sequential number starting with 1.)|
|18153477||ACLEDIT$C_CHECK_DIR||Returns the string "DIRECTORY_FILE" if the object being edited is a directory file. Otherwise, returns the string "NODIRECTORY_FILE."|
|18153478||ACLEDIT$C_SET_CANDIDATE||Parses the input string (ACE) and returns the string "PARSE_OK" if no error was encountered. Otherwise, returns the string "PARSE_ERROR." If the parse was successful, a check is made for duplicate ACEs using the CALL_USER function ACLEDIT$C_CHECK_DUP.|
|18153479||ACLEDIT$C_CHECK_DUP||Parses the input string (ACE) and returns the string "PARSE_ERROR" if an error was encountered. Otherwise, the parsed (binary) ACE is compared with the candidate ACE set by the CALL_USER function ACLEDIT$C_SET_CANDIDATE. Returns the string "DUPLICATE_ACE" if the ACE is a duplicate, or "UNIQUE_ACE" if it is not a duplicate.|
|18153482||ACLEDIT$C_MESSAGE||Assumes the input string is a system error code and returns in the ACL editor message window the message text associated with the error code.|
Table C-1 gives a summary of the system services that relate to accounting. No system service reads accounting files; to do this you must use knowledge of the structure of accounting files.
|$CREPRC||Creates a process in which accounting can be disabled.|
|$SNDJBC||Controls what resources are logged in the current accounting file, or logs a user-defined record in the current accounting file.|
The formats described here are subject to change without notice in a future release.
The symbols and offsets described in this appendix are defined by the
$ACRDEF macro in the STARLET library.
C.1 Format of an Accounting File Record
An accounting record consists of an accounting record header and a number of information packets. The number and type of information packets depend on the type of the record.
Figure C-1 illustrates the general format of an accounting record. Table C-2 describes the fields in the record header. The type field in the record header is subdivided into five fields, described in Table C-3.
Figure C-1 Format of an Accounting Record
|ACR$W_TYPE||Identifies the type of the record. This field is subdivided into five fields, described in Table C-3. (word)|
|ACR$W_LENGTH||Total length of the record, in bytes. (word)|
|ACR$Q_SYSTIME||System time (64-bit absolute time). (quadword)|
|ACR$V_PACKET||Identifies this header as a record header. This bit must be 0. (1 bit)|
|ACR$V_TYPE||Identifies the type of the record. The eight record types are described in Table C-4. (7 bits)|
Identifies the type of process with which the record is associated. The
subtypes (4 bits) are:
Note that this field is only meaningful for records of type ACR$K_IMGDEL and ACR$K_PRCDEL.
Identifies the version of the accounting file record structure. The
versions (3 bits) are:
|ACR$V_CUSTOMER||Identifies whether the record was written by HP software or by customer software. If this bit is 0, the record was written by HP software. If this bit is 1, the record was written by customer software. (1 bit)|
ACR$K_CURVER = Current version. Set equal to ACR$K_VERSION4 in this release.
The type of an accounting record identifies the type of event that caused the record to be logged. The eight types of accounting records are shown in Table C-4. This table shows the information packets contained in each type of record.
|ACR$K_FILE_BL||The accounting file was opened||ACR$K_FILENAME|
|ACR$K_FILE_FL||The accounting file was closed||ACR$K_FILENAME|
|ACR$K_IMGDEL||An image terminated||
|ACR$K_LOGFAIL||A login attempt failed||
|ACR$K_PRCDEL||A process terminated||
|ACR$K_PRINT||A print job finished||
|ACR$K_SYSINIT||The system was initialized||
|ACR$K_USER||An accounting message was sent by the $SNDJBC system service||
The header, in each of the six types of information packets, defines the type of packet as follows:
Each information packet contains a packet header, followed by data fields. The data fields can contain fixed-length data, variable-length data, or offsets to variable-length data. Offsets contain the distance in bytes from the beginning of the packet to the variable-length data.
All variable-length data are represented as counted strings. Variable-length data follow the last fixed-length data field in the packet. Figure C-2 shows the general format of an information packet. An information packet may not have values in all of its data fields.
Figure C-2 Format of an Information Packet
|ACR$W_TYPE||Identifies the type of the packet. This field is subdivided into five fields, described in Table C-6. (word)|
|ACR$W_LENGTH||Total length of the packet, in bytes. (word)|
|ACR$V_PACKET||Identifies this header as a packet header. This bit must be 1. (1 bit)|
Identifies the type of the packet. The six packet types (7 bits) are:
|ACR$V_SUBTYPE||Identifies the packet subtype; reserved for future use. (4 bits)|
|ACR$V_VERSION||See Table C-3.|
|ACR$V_CUSTOMER||See Table C-3.|
The file name packet contains the name of the accounting file. Figure C-3 shows the format of the file name packet. Table C-7 describes the field contained in the packet. See Section C.1.2.1 for information on the packet header.
Figure C-3 Format of a File Name Packet
|ACR$T_FILENAME||Name of the file (counted ASCII string that gives full file specification).|
The identification packet identifies the process that caused the record to be logged.
Figure C-4 Format of an Identification Packet
|ACR$L_PID||Process identifier (PID) of the process. (longword)|
|ACR$L_OWNER||PID of the parent process. (longword)|
|ACR$L_UIC||UIC of the process. The UIC can be addressed as two separate words: ACR$W_MEM for the member number, and ACR$W_GRP for the group number. (longword)|
|ACR$Q_PRIV||Privileges held by the process. (quadword)|
|ACR$B_PRI||Base priority of the process. (byte)|
|ACR$B_IDFLGS||Flags byte; full address and full name present if low bit is set.|
|ACR$W_USERNAME||Offset to counted ASCII string containing the user name of the process. (word)|
|ACR$W_ACCOUNT||Offset to counted ASCII string containing the account name of the process. (word)|
|ACR$W_NODENAME||Offset to counted ASCII string containing the Phase W node name of the remote process. (word)|
Offset to counted ASCII string containing the terminal name. (word).
Starting from OpenVMS Version 8.4 this symbolic offset is changed to a
format where the first four bytes that store the terminal name is an
ASCII string and the remaining four bytes of (unit number) data is
converted to an integer and stored in integer format. This change is to
support large device names (more than 8 characters) in accounting
records. For example, in the following new format the TNA55 terminal
name is stored as TNA37.
|ACR$W_JOBNAME||Offset to counted ASCII string containing the job name. (word)|
|ACR$L_JOBID||Identification of the print or batch job (queue entry number). (longword)|
|ACR$W_QUEUE||Offset to counted ASCII string containing the name of the queue with which a batch or print job is associated. (word)|
|ACR$W_NODEADDR||Offset to a counted binary string containing the Phase W remote node address. (word)|
|ACR$W_REMOTEID||Offset to counted ASCII string containing the remote ID of the remote process (varies with network implementation and use). (word)|
|ACR$W_FULLADDR||Offset to a counted binary string containing the complete remote node network address. On a DECnet-Plus system, this is the remote node's NSAP address.|
|ACR$W_FULLNAME||Offset to a counted ASCII string containing the complete remote node name. On a DECnet-Plus system, this is the remote node's full name.|