To perform a NOWAIT I/O,
the FREAD or FWRITE intrinsic must be called
to initiate the transfer. These intrinsics return immediately,
and no data is transferred yet. The return value
for FREAD is set to zero and is not needed.
To complete the
transfer, either IODONTWAIT or IOWAIT must be called.
IODONTWAIT tests
whether the I/O has finished. If it has, the intrinsic returns
a condition code of CCE and the file number as the return value.
If the I/O has not completed, CCE and a zero return value are
passed back. If IOWAIT is called,
it waits until the I/O has finished,
like a normal WAIT I/O FREAD or FWRITE.
Only one NOWAIT I/O can be outstanding
against a file by a particular accessor
at a time;
however, an accessor can have NOWAIT I/Os outstanding against
several files at the same time. These I/Os can be completed by a
"generalized" IODONTWAIT
or IOWAIT (the file number parameter is zero
or is omitted).
In this case, these intrinsics report on the first I/O
to complete, returning the file number for that file.
If the call to one of
these intrinsics is in a loop,
then that one call can be used to complete all
the NOWAIT I/Os.