1 conditional compilation – Compaq DEC Text Processing Utility AA-PWCBD-TE User Manual
Page 99
Lexical Elements of the DEC Text Processing Utility Language
4.10 Lexical Keywords
4.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
THEN
eve$popup_message (MESSAGE_TEXT (EVE$_CANTCREADCL, 1));
ELSE
eve$message (EVE$_CANTCREADCL);
ENDIF;
%ELSE
eve$message (EVE$_CANTCREADCL);
%ENDIF
eve$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