HP OpenVMS Systems Documentation
OpenVMS Calling Standard
5.11 Unaligned Bit Array Descriptor (CLASS_UBA)
A variant of the noncontiguous array descriptor is used to specify an array of unaligned bit strings. Each array element is an unaligned bit string data type (DSC$K_DTYPE_VU) that starts and ends on an arbitrary bit boundary. The length of each element is the same and is 0 to 216 - 1 bits. You can access elements of the array directly by using the VAX variable bit field instructions. Therefore, the descriptor provides two components: a byte address, BASE, and a means to compute the signed bit offset, EB, with respect to BASE of an array element.
The unaligned bit array descriptor consists of four contiguous blocks that are always present. The first block contains the descriptor prototype information. Figure 5-12 shows the format of an unaligned bit array descriptor. Table 5-13 describes the fields of the descriptor.
Figure 5-12 Unaligned Bit Array Descriptor Format
The following formulas specify the signed effective bit offset, EB, of an array element:
The signed effective bit offset, EB, of A(I1):
The signed effective bit offset, EB, of A(I1,I2):
The signed effective bit offset, EB, of A(I1, ... , In):
Note that EB is computed ignoring integer overflow.
On VAX systems, EB is used as the position operand, and the content of BASE is used as the base address operand in the VAX variable-length bit field instructions. Therefore, BASE must specify a byte within 228 bytes of all bytes of storage in the bit array.
For example, consider a single-origin, one-dimensional, five-element array consisting of 3-bit elements allocated adjacently (therefore, S1 = 3). Assume BASE is byte 1000 and the first actual element, A(1), starts at bit <4> of byte 1001.
The following dependent field values occur in the descriptor:
5.12 String with Bounds Descriptor (CLASS_SB)
A variant of the fixed-length string descriptor is used to specify strings where the string is viewed as a one-dimensional array with user-specified bounds. Figure 5-13 shows the format of a string with bounds descriptor. Table 5-14 describes the fields of the descriptor.
Figure 5-13 String with Bounds Descriptor Format
The following formula specifies the effective address, E, of a string element A(I):
If the string must be extended in a string comparison or assignment,
the space character (hexadecimal 20 if ASCII) is used as the fill
A variant of the unaligned bit string descriptor is used to specify bit strings where the string is viewed as a one-dimensional bit array with user-specified bounds. Figure 5-14 shows the format of an unaligned bit string with bounds descriptor. Table 5-15 describes the fields of the descriptor.
Figure 5-14 Unaligned Bit String with Bounds Descriptor Format
The following formula specifies the effective bit offset, EB, of a bit element A(I):
5.14 Reserved Descriptor Class Codes
All descriptor class codes from 0 through 191 not otherwise defined in this standard are reserved to Compaq. Classes 192 through 255 are reserved to Compaq's Computer Special Systems Group and customers.
Table 5-16 lists some specific descriptor classes and codes that are obsolete or reserved to Compaq.
5.14.1 Facility-Specific Descriptor Class Codes
Descriptor class codes 160 through 191 are reserved to Compaq for facility-specific purposes. These codes must not be passed between facilities, because different facilities might use the same code for different purposes. These codes can be used by compiler-generated code to pass parameters to the language-specific, run-time support procedures associated with that language or to the OpenVMS Debugger.
Indicates success or failure. The severity code bit <0> is set
for success (logical true) and is clear for failure (logical false);
bits <1> and <2> distinguish degrees of success or failure.
Bits <2:0>, when taken as an unsigned integer, are interpreted as
shown in the following table:
Section 6.1.1 more fully describes severity codes.
|Condition identification||Identifies the condition uniquely on a systemwide basis.|
|Message number||Describes the status, which can be a hardware exception that occurred or a software-defined value. Message numbers with bit <15> set are specific to a single facility. Message numbers with bit <15> clear are systemwide status codes.|
|Facility number||Identifies the software component generating the condition value. Bit <27> is set for customer facilities and is clear for Compaq facilities.|
Controls the printing of the message associated with the condition
value. Bit <28> inhibits the message associated with the
condition value from being printed by the SYS$EXIT system service. This
bit is set by the system default handler after it has output an error
message using the SYS$PUTMSG system service. It should also be set in
the condition value returned by a procedure as a function value, if the
procedure has also signaled the condition (so the condition has been
printed or suppressed). Bits <31:29> must be 0; they are reserved
to Compaq for future use.
Table 6-2 lists the possible software symbols that are defined for the various fields of the condition-value longword.
|STS$V_COND_ID||3||Position of 27:3||Condition identification|
|STS$S_COND_ID||25||Size of 27:3||Condition identification|
|STS$M_COND_ID||Mask||Mask for 27:3||Condition identification|
|STS$V_INHIB_MSG||1@28||Position for 28||Inhibit message on image exit|
|STS$S_INHIB_MSG||1||Size for 28||Inhibit message on image exit|
|STS$M_INHIB_MSG||Mask||Mask for 28||Inhibit message on image exit|
|STS$V_FAC_NO||16||Position of 27:16||Facility number|
|STS$S_FAC_NO||12||Size of 27:16||Facility number|
|STS$M_FAC_NO||Mask||Mask for 27:16||Facility number|
|STS$V_CUST_DEF||27||Position for 27||Customer facility|
|STS$S_CUST_DEF||1||Size for 27||Customer facility|
|STS$M_CUST_DEF||1@27||Mask for 27||Customer facility|
|STS$V_MSG_NO||3||Position of 15:3||Message number|
|STS$S_MSG_NO||13||Size of 15:3||Message number|
|STS$M_MSG_NO||Mask||Mask for 15:3||Message number|
|STS$V_FAC_SP||15||Position of 15||Facility-specific|
|STS$S_FAC_SP||1||Size for 15||Facility-specific|
|STS$M_FAC_SP||1@15||Mask for 15||Facility-specific|
|STS$V_CODE||3||Position of 14:3||Message code|
|STS$S_CODE||12||Size of 14:3||Message code|
|STS$M_CODE||Mask||Mask for 14:3||Message code|
|STS$V_SEVERITY||0||Position of 2:0||Severity|
|STS$S_SEVERITY||3||Size of 2:0||Severity|
|STS$M_SEVERITY||7||Mask for 2:0||Severity|
|STS$V_SUCCESS||0||Position of 0||Success|
|STS$S_SUCCESS||1||Size of 0||Success|
|STS$M_SUCCESS||1||Mask for 0||Success|