%ACTIVATE

Purpose

Renders identifiers active and eligible for replacement.

Syntax

%[label:]...ACTIVATE ident[RESCAN|NORESCAN][,ident[RESCAN|NORESCAN]]...;

Abbreviation(s): %ACT for %ACTIVATE.

Parameters

Each identifier must be a preprocessor variable, a preprocessor procedure name, or a preprocessor built-in function name.

Description

When a preprocessor variable is declared, it is automatically activated. It can be deactivated by use of the %DEACTIVATE statement and reactivated by use of the %ACTIVATE statement.

If neither RESCAN nor NORESCAN is specified, RESCAN is assumed. RESCAN implies that, after a text replacement has been made, this text will be rescanned to see if any further substitutions apply. NORESCAN implies the opposite.

The appearance of an identifier in a %ACTIVATE statement makes it active and eligible for replacement; that is, any subsequent encounter of that identifier in a nonprocessor statement, while the identifier is active, will initiate replacement activity, except when the identifier appears within a comment or within single quotes.

Example

Example 1.

%DECLARE A FIXED, B CHARACTER;
%DEACTIVATE B;
%A = 24;
%B = 'VAR_NAME'; 
NUM = B + A; 
%ACTIVATE B; 
%DEACTIVATE A; 
NUM = B + A;

The text generated by this example would be as follows:

NUM = B + 24;
NUM = VAR_NAME + A;

Example 2.

%DECLARE (C,D) CHARACTER;
%C = D**2;
%D = 'NUM';
NUM = C;
%ACTIVATE C NORESCAN;
NUM = C;

The text generated by this example would be as follows:

NUM = NUM**2; 
NUM = D**2;

Restrictions

A %ACTIVATE statement cannot appear within a preprocessor procedure. The replacement in a rescan operation is limited to 1023 characters.

References to preprocessor procedures will not be recognized when rescanning an identifier for replacement.