beautypg.com

Compaq DEC Text Processing Utility AA-PWCBD-TE User Manual

Page 92

background image

Lexical Elements of the DEC Text Processing Utility Language
4.9 Reserved Words

Example 4–11 Procedure with a Case-Style Error Handler

PROCEDURE eve$learn_abort

ON_ERROR

[TPU$_CONTROLC]:

MESSAGE (ERROR_TEXT);
RETURN (LEARN_ABORT);

ENDON_ERROR;

IF LEARN_ABORT
THEN

eve$message (EVE$_LEARNABORT);
RETURN (TRUE);

ELSE

RETURN (FALSE);

ENDIF;

ENDPROCEDURE;

If a program or procedure has a case-style error handler, DECTPU handles errors
and warnings as follows:

If you press Ctrl/C, DECTPU determines whether the error handler contains
a selector labeled TPU$_CONTROLC. If so, DECTPU sets ERROR to TPU$_
CONTROLC, ERROR_LINE to the line that DECTPU was executing when
Ctrl/C was pressed, and ERROR_TEXT to the message associated with TPU$_
CONTROLC. DECTPU then executes the statements associated with the
selector. If there is no TPU$_CONTROLC selector, DECTPU exits from the
error handler and looks for a TPU$_CONTROLC selector in the procedures
or program (if any) in which the current procedure is nested. If no TPU$_
CONTROLC selector is found in the containing procedures or program,
DECTPU places the message associated with TPU$_CONTROLC in the
message buffer.

If an error or warning is generated during a CALL_USER routine, ERROR is
set to a keyword that represents the failure status of the routine, ERROR_
LINE is set to the line number of the error, and ERROR_TEXT is set to
the warning or error message associated with the keyword. DECTPU then
processes the error handler that trapped the CALL_USER error in the same
way that DECTPU processes normal case-style error handlers.

For other warnings and errors, ERROR is set to a keyword that represents
the error or warning, ERROR_LINE is set to the line number of the error,
and ERROR_TEXT is set to the error or warning message associated with the
keyword.

The way a case-style error handler processes an error or warning depends
on how the error handler traps the error. There are three possible ways, as
follows:

The error handler can trap the error by using a selector that matches the
error exactly (that is, using a selector other than OTHERWISE).

The error handler can trap the error by using the OTHERWISE selector.

The error handler can completely fail to trap the error.

The following discussion explains how a case-style error handler processes an
error or warning in each of these circumstances.

4–26 Lexical Elements of the DEC Text Processing Utility Language