Lexical Elements of the DEC Text Processing Utility Language
4.10 Lexical Keywords4.10.1 Conditional Compilation
The following lexical keywords control what code is compiled under different
conditions:
• %IF
• %IFDEF
• %THEN
• %ELSE
• %ENDIF
You use conditional compilation lexical keywords in a manner similar to ordinary
IF/THEN/ELSE/ENDIF statements. The syntax is as follows:
%IFDEF variable_or_proc_name %THEN ... [%ELSE ...] %ENDIF
or
%IF boolean_expression %THEN ... [%ELSE ...] %ENDIF
If you use the %IFDEF structure, specify variable_or_proc_name as the name of
a DECTPU procedure or variable. IFDEF is a statement that says ‘‘if a variable
or procedure with this name is defined.’’ If the name is defined, the compiler
compiles the code marked by %THEN. If the name is not defined, the compiler
compiles the code marked by %ELSE.
If you use the %IF structure, specify boolean_expression as either a numeric
constant or a defined global variable whose value is an integer. Any odd value
is true and any even value is false. If the variable or constant contains a value
that is odd, the compiler compiles the code marked by %THEN. If the variable or
constant contains a value that is even, the compiler compiles the code marked by
%ELSE.
You do not have to put conditional compilation lexical keywords at the beginning
of a line. You can nest conditional statements to a depth of 2**32-1. For example:
ON_ERROR
[TPU$_CREATEFAIL]:
%IF eve$x_option_decwindows
%THEN IF eve$x_decwindows_active
THENeve$popup_message (MESSAGE_TEXT (EVE$_CANTCREADCL, 1));
ELSEeve$message (EVE$_CANTCREADCL);
ENDIF;
%ELSE eve$message (EVE$_CANTCREADCL);
%ENDIFeve$learn_abort;
RETURN (FALSE);
[OTHERWISE]:
ENDON_ERROR;
This ON_ERROR procedure determines whether a pop-up message widget or a
simple message is used, depending on whether the code is being compiled by a
DECwindows version of DECTPU.
Lexical Elements of the DEC Text Processing Utility Language 4–33