Guardian Procedure Calls Reference Manual

Record does not exist
Positioning for FILE_WRITEUPDATEUNLOCK64_ is always to the record described by the
exact value of the current key and current-key specifier. Therefore, if such a record does not
exist, the call to FILE_WRITEUPDATEUNLOCK64_ is rejected with file-system error 11.
See the FILE_WRITEUPDATE64_ procedure Considerations (page 538).
Invalid write operations to queue files
DP2 rejects FILE_WRITEUPDATEUNLOCK64_ operations to queue files with an error 2.
Buffer considerations
The buffer and count-transferred may be in the user stack or in an extended
data segment. The buffer and count-transferred cannot be in the user code
space.
If the 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.
If the file is opened for nowait I/O, and the buffer is in an extended data segment,
you cannot deallocate or reduce the size of the extended data segment before the I/O
completes with a call to FILE_AWAITIO64_ or FILE_COMPLETEL_ or is canceled by a call
to CANCEL or CANCELREQL.
If the file is opened for nowait I/O, you must not modify the buffer before the I/O
completes with a call to FILE_AWAITIO64_ or FILE_COMPLETEL_. This also applies to
other processes that may be sharing the segment. It is the application's responsibility to
ensure this.
If the file is opened for nowait I/O, the extended segment containing the buffer need
not be in use at the time of the call to FILE_AWAITIO64_ or FILE_COMPLETEL_.
Nowait I/O initiated with this routine may be canceled with a call to CANCEL or
CANCELREQL. The I/O is canceled if the file is closed before the I/O completes or
FILE_AWAITIO64_ or FILE_COMPLETEL_ is called with a positive time limit and specific
file number and the request times out.
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.
Performing concurrent large no-wait I/O operations on NSAA systems
In H06.28/J06.17 RVUs with specific SPRs and later RVUs, reads and writes of up to 27,648
bytes can be performed on structured opens of format 2 legacy key-sequenced files and
enhanced key-sequenced files that have increased limits. (For a list of the required
H06.28/J06.17 SPRs, see SPR Requirements for Increased Enscribe Limits for the
H06.28/J06.17 Release (page 31).)
On NSAA systems, the FILE_READ64_, FILE_WRITE64_ and FILE_WRITEREAD64_ procedures
use the process file segment (PFS) of the caller to store the data being read or written. The
maximum PFS size is 32 MB. This limits the number of concurrent no-wait operations with
large read-count or write-count values. Perform the following steps to work around this limit:
1. Define the read and write buffers with sizes in multiples of 16KB.
2. Call the USERIOBUFFER_ALLOW_ procedure before making any calls to these procedures.
3. Allocate extended data segments using the SEGMENT_ALLOCATE64_ procedure.
546 Guardian Procedure Calls (F)