beautypg.com

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

Page 83

background image

Lexical Elements of the DEC Text Processing Utility Language

4.9 Reserved Words

Example 4–5 Complex Procedure with Optional Parameters

CONSTANT

user_warning

:= 0,

! Warning severity code

user_success

:= 1,

! Success severity code

user_error

:= 2,

! Error severity code

user_informational := 3,

! Informational severity code

user_fatal

:= 4;

! Fatal severity code

!
! Output a message with fatal/error/warning flash.
!
PROCEDURE user_message (the_text; the_severity)

LOCAL flash_it;
!
! Only flash warning, error, or fatal messages.
!
CASE the_severity FROM user_warning TO user_fatal

[user_warning, user_error, user_fatal] : flash_it := TRUE;

[user_success, user_informational] : flash_it := FALSE;

[OUTRANGE] : flash_it := FALSE;

ENDCASE;
!
! Output the message - flash it, if appropriate.
!
MESSAGE (the_text);
IF flash_it
THEN

SLEEP ("0 00:00:00.3");
MESSAGE ("");
SLEEP ("0 00:00:00.3");
MESSAGE (the_text);

ENDIF;

ENDPROCEDURE;

Caution

Do not assume that the DECTPU compiler automatically evaluates
parameters in the order in which you place them.

To avoid the need to rewrite code, you should write as if this compiler
optimization were already implemented. If you need the compiler to evaluate
parameters in a particular order, you should force the compiler to evaluate each
parameter in order before calling the procedure. To do so, use each parameter in
an assignment statement before calling the procedure. For example, suppose you
want to call a procedure whose parameter list includes PARAM_1 and PARAM_2.
Suppose, too, that PARAM_1 must be evaluated first. To get this result, you could
use the following code:

partial_1 := param_1;
partial_2 := param_2;
my_procedure (partial_1, partial_2);

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