VMS Help DECTPU, TPU$HANDLER, Description *Conan The Librarian (sorry for the slow response - running on an old VAX) |
The TPU$MESSAGE routine performs the actual output of the message. The $PUTMSG system service only formats the message. It gets the settings for the message flags and facility name from the variables described in the OpenVMS Utility Routines Manual in the section The DECTPU Shareable Image. Those values can be modified only by the DECTPU built-in procedure SET. If the condition value received by the handler has a FATAL status or does not have the DECTPU facility code, the condition is resignaled. If the condition is TPU$_QUITTING, TPU$_EXITING, or TPU$_ RECOVERFAIL, a request to UNWIND is made to the establisher of the condition handler. After handling the message, the condition handler returns with a continue status. DECTPU error message requests are made by signaling a condition to indicate which message should be written out. The arguments in the signal array are a correctly formatted message argument vector. This vector sometimes contains multiple conditions and formatted ASCII output (FAO) arguments for the associated messages. For example, if the editor attempts to open a file that does not exist, the DECTPU message TPU$_NOFILEACCESS is signaled. The FAO argument to this message is a string for the name of the file. This condition has an error status, followed by the OpenVMS RMS status field (STS) and status value field (STV). Because this condition does not have a fatal severity, the editor continues after handling the error. The editor does not automatically return from TPU$CONTROL. If you call the TPU$CONTROL routine, you must explicitly establish a way to regain control (for example, using the built-in procedure CALL_USER). If you establish your own condition handler but call the DECTPU handler for certain conditions, the default condition handler must be established at the point in your program where you want to return control. You can also interrupt TPU$CONTROL by having your program specify and then trigger an asynchronous routine via the TPU$SPECIFY_ASNYC_ACTION and TPU$TRIGGER_ASYNC_ ACTION routines. See the OpenVMS Calling Standard for details on writing a condition handler.
|