HP OpenVMS I/O User’s Reference Manual: OpenVMS Version 8.4 > Chapter 1 ACP-QIO Interface

1.1 ACP Functions and Encoding

Ancillary control process (ACP) functions can be expressed using seven function codes and four function modifiers. The function codes are:

  • IO$_CREATE—Creates a directory entry or file

  • IO$_ACCESS—Searches a directory for a specified file and accesses the file, if found

  • IO$_DEACCESS—Deaccesses a file and, if specified, writes the final attributes in the file header

  • IO$_MODIFY—Modifies the file attributes and file allocation

  • IO$_DELETE—Deletes a directory entry and file header

  • IO$_MOUNT—Informs the ACP when a volume is mounted; requires MOUNT privilege

  • IO$_ACPCONTROL—Performs miscellaneous control functions

The function modifiers are:

  • IO$M_ACCESS—Opens a file on the user's channel

  • IO$M_CREATE—Creates a file

  • IO$M_DELETE—Deletes a file or marks it for deletion

  • IO$M_DMOUNT—Dismounts a volume

In addition to the function codes and modifiers, ACPs take five device- or function-dependent arguments, as shown in Figure 1-1. The first argument, P1, is the address of the file information block (FIB) descriptor. “File Information Block” describes the FIB in detail.

The second argument, P2, is an optional argument used in directory operations. It specifies the address of the descriptor for the file name string to be entered in the directory.

Argument P3 is the address of a word to receive the resultant file name string length. The resultant string is not padded. The actual length is returned in P3. Argument P4 is the address of a descriptor for a buffer to receive the resultant file name string. Both of these arguments are optional.

Figure 1-1 ACP Device- or Function-Dependent Arguments

ACP Device- or Function-Dependent Arguments

The fifth argument, P5, is an optional argument containing the address of the attribute control block. “Read/Write Attributes” describes the attribute control block in detail.

All areas of memory specified by the descriptors must be capable of being read or written to.

Figure 1-2 shows the format for the descriptors. The count field is the length in bytes of the item described.

Figure 1-2 ACP Device/Function Argument Descriptor Format

ACP Device/Function Argument Descriptor Format
NOTE: Starting with OpenVMS Version 8.4, volumes and files up to 2 TB in size are supported. This has an implication for the virtual and logical block numbers (VBN and LBN) and block counts referenced in structures such as the File Information Block (FIB) and in the I/O arguments in the call interfaces.

In the previous versions of OpenVMS, these fields are interpreted as SIGNED 32-bit integers. Bit 31, the 'signbit', is necessarily zero. Starting with OpenVMS Version 8.4, these fields are interpreted as UNSIGNED 32-bit integers. Bit 31 can now contain 1-bit, to accommodate block numbers and counts up to 4 million (4,294,967,296); 4 million blocks = 2 Terabytes (TB).

Applications and programs that continue to interpret these fields as SIGNED, apparently receive negative values for volume or file sizes between 1 TB and 2 TB. Ensure that the applications and programs are upgraded to avoid these errors.

The following are some of the fields that are now interpreted as UNSIGNED 32–bit integers:

  • FIB$L_EXVBN

  • FIB$L_MOV_SVBN

  • FIB$L_MOV_VBNCNT

  • FIB$L_LOC_ADDR

  • FAT$L_HIBLK

  • FAT$L_EFBLK

  • SBK$L_STLBN

  • SBK$L_FILESIZE