Guardian Procedure Calls Reference Manual
is, the file number is other than -1). With non file-specific calls,
FILE_READUPDATELOCK64_ is not canceled for the queue file. A canceled
FILE_READUPDATELOCK64_ can result in the loss of a record from the queue file.
For audited queue files, record loss can be avoided by performing an
ABORTTRANSACTION procedure, when detecting error 40, to ensure that any
dequeued record is reinserted into the file. For nonaudited queue files, there is no
means of assuring recovery of a lost record. Thus, your application must never call
FILE_AWAITIO64_ with a time limit greater than 0D if FILE_READUPDATELOCK64_
is pending. The ABORTTRANSACTION recovery procedure does not work on
nonaudited queue files.
◦ If FILE_AWAITIO64_ is used to check for completion (timelimit = 0D) or used to wait
on any file (filenum = - 1), completing FILE_AWAITIO64_ does not necessarily indicate
a completion.
If you perform an operation using one of these 64-bit procedure calls with a file opened
nowait, you must complete the operation with a call to the FILE_AWAITIO64_ procedure:
FILE_CONTROL64_ FILE_SETMODENOWAIT64_
FILE_CONTROLBUF64_
FILE_UNLOCKFILE64_
FILE_LOCKFILE64_ FILE_UNLOCKREC64_
FILE_LOCKREC64_
FILE_WRITE64_
FILE_READ64_ FILE_WRITEREAD64_
FILE_READLOCK64_ FILE_WRITEUPDATE64_
FILE_READUPDATE64_ FILE_WRITEUPDATEUNLOCK64_
FILE_READUPDATELOCK64_
• Completion tag values
A tag -30F returned by FILE_AWAITIO64_ signals completion of a nowait open; a tag -29F
returned by FILE_AWAITIO64_ signals completion of a nowait backup open. For more
information, see the FILE_OPEN_CHKPT_ Procedure (page 471).
• Using FILE_AWAITIO64_, AWAITIOX, and AWAITIOXL
Nowait calls to the 64-bit I/O routines must call FILE_AWAITIO64_ to complete the operation.
FILE_AWAITIO64_ also completes calls made to the 32-bit I/O routines.
If the operation was initiated with a call to READX, WRITEREADX, and so on (the 32-bit I/O
routines), and FILE_AWAITIO64_ is called to complete the operation, buffer-addr contains
the 64-bit address of that buffer and segment-id is -1.
If you accidentally call AWAITIOX or AWAITIOXL and 64-bit I/O operations are outstanding
against the file, AWAITIOX or AWAITIOXL does not complete the operation.
• Reference parameters for FILE_AWAITIO64_
The reference parameters for FILE_AWAITIO64_ can be in the user's stack or in an extended
or 64-bit data segment. The reference parameters cannot be in the user's code space.
If the reference parameters for FILE_AWAITIO64_ address an area in a selectable extended
data segment, the segment must be in use at the time of the call to FILE_AWAITIO64_. (Flat
segments allocated by a process are always accessible to the process.)
• FILE_AWAITIO64_ and buffer in extended data segment
If the buffer is in a flat extended data segment, the segment must be allocated at the time of
the call to FILE_AWAITIO64_ .
If the buffer is in a selectable extended data segment, the segment need not be in use at the
time of the call to FILE_AWAITIO64_ . However, the segment must be allocated at the time
of the call to FILE_AWAITIO64_ .
358 Guardian Procedure Calls (F)