When you are performing thread-synchronous "wait-form" system
service calls on OpenVMS such as $QIOW, $ENQW, $GETJPIW, and
so on, you should use this routine and tis_sync() with the
asynchronous form of the service (in other words, without the
"W"), and specify the address of tis_io_complete() as the
completion AST routine (the AST argument if any is ignored).
That must also specify an IOSB (or equivalent, such as an LKSB)
and if possible a unique event flag (see lib$get_ef). Once the
library code is ready to wait for the I/O, it simply calls tis_
sync() (just as if it were calling $SYNC).