Guardian Procedure Calls Reference Manual (G06.25+)

Guardian Procedure Calls (R)
Guardian Procedure Calls Reference Manual522629-013
13-7
READ[X] Procedures
The buffer address and count-transferred address must be relative;
they cannot be an absolute extended address.
If buffer or count-transferred is in a selectable extended data segment,
the segment must be in use at the time of the call. Flat segments allocated by
a process are always accessible to the process.
The size of the transfer is subject to current restrictions for the type of file.
If the file is opened for nowait I/O, and the buffer is in an extended data
segment, you must not deallocate or reduce the size of the extended data
segment before the I/O finishes with a call to AWAITIOX or is canceled by a
call to CANCEL or CANCELREQ.
If the file is opened for nowait I/O, you must not modify the buffer before the I/O
finishes with a call to AWAITIOX. This also applies to other processes that
might be sharing the segment. It is the application’s responsibility to ensure
this.
If the file is opened for nowait I/O and the I/O has been initiated with these
routines, the I/O must be completed with a call to AWAITIOX (not AWAITIO).
If the file is opened for nowait I/O, a selectable extended data segment
containing the buffer need not be in use at the time of the call to AWAITIOX.
Nowait I/O initiated with these routines can be canceled with a call to CANCEL
or CANCELREQ. The I/O is canceled if the file is closed before the I/O
finishes or AWAITIOX is called with a positive time limit and specific file
number, and the request times out.
A file opened by FILE_OPEN_ uses direct I/O transfers by default; you can use
SETMODE 72 to force the system to use an intermediate buffer in the process
file segment (PFS) for I/O transfers. A file opened by OPEN uses a PFS buffer
for I/O transfers, except for large transfers to DP2 disks.
If the extended address of the buffer is odd, bounds checking rounds the
address to the next lower word boundary and checks an extra byte as well.
The odd address is used for the transfer.
Queue files
READ[X] can be used to perform a nondestructive read of a queue file record. If
KEYPOSITION[X] is used to position to the beginning of the file, the first READ[X]
performed returns a record with a length of 8 bytes and contents of all zeroes.
Subsequent READ[X] calls will return data from records written to the file.