SYNOPSIS<PUTMSG call|log|print|all|override on|off|exceptiononly>
DESCRIPTION
The PUTMSG
directive sets the disposition of error messages.
When a script generates errors, they are logged to vortex.log
and printed out by default. If a <putmsg>
function is defined,
then logging and printing are turned off, and the function is called
instead (see here for details).
By setting the appropriate action (call
, log
,
print
, or all
for all three) in a <PUTMSG>
directive, a different set of call/log/print actions can be set for
the script as desired. A typical use for this is to turn logging and
printing back on when a <putmsg>
function is defined, so that
errors can be monitored on-the-fly by the script itself, but are still
logged for later perusal, without having to log them "by hand" in
the <putmsg>
function.
As it is a directive, PUTMSG
must appear before the first
function in the script, and sets the error message actions for the
entire script. The <vxcp>
function (here) can
be called to override these settings at run-time, via its
putmsg
setting.
The override
action has no equivalent in <vxcp putmsg>
.
It makes any other <PUTMSG>
directives override
<vxcp putmsg>
, instead of the other way around. The use for
this potentially confusing setting is debugging: a script with a
complex set of <vxcp putmsg>
calls can have them all
temporarily disabled by adding <PUTMSG override on>
and
<PUTMSG log on>
at the top temporarily, without having to edit
the rest of the script. In version 7.03.1430345000 20150429 and
later, override
also overrides <urlcp putmsg pass>
(here), i.e. it is always on.
The override action value is Boolean only, i.e. on or off only.
The log and print actions may be set to a third state,
exceptiononly, in Texis version (or compatibilityversion
)
7 and later. This is their default value when a <putmsg> script
function is defined. When exceptiononly is set, the given
action is only enabled if a Vortex putmsg exception is
occurring, i.e. a situation where the <putmsg> script function
cannot be called because the script is terminating. Examples include
the script <timeout> firing, an ABEND or stack overflow. For
all other normal situations - where <putmsg> can be called -
the action is disabled. Thus, exceptiononly allows printing
and/or logging to be turned off for messages than <putmsg> can
handle, yet still allows them to be seen and not lost if the script
terminates abnormally. The exceptiononly value cannot be set
for the call action.
EXAMPLE<PUTMSG log on>
<A NAME=putmsg PRIVATE>
<$GotErr = y>
</A>
<A NAME=main>
<EXEC /some/program></EXEC>
<IF $GotErr eq "y">
<B>An error occurred: check the logs</B>
</IF>
</A>
In this script, an error from the <EXEC>
is still logged, as
well as being detected by the script via <putmsg>
.
CAVEATS
The PUTMSG
directive was added in version 3.0.947100000 20000105.
SEE ALSOvxcp
, Error Messages section (here),
ErrorScript
ErrorFile
settings in texis.ini
(here)