Creates macro variables that are available only during the execution
of the macro where they are defined.
Type: |
Macro statement
|
Restriction: |
Allowed in macro definitions only
|
See also: |
%GLOBAL Statement
|
%LOCAL macro-variable-1 <...macro-variable-n>;
|
-
macro-variable-1 <...macro-variable-n>
-
is the name of one or more macro variables
or a text expression that generates one or more macro variable names. You
cannot use a SAS variable list or a macro expression that generates a SAS
variable list in a %LOCAL statement.
The %LOCAL statement creates one or more
local macro variables. A macro variable created with %LOCAL has a null value
until you assign it some other value. Local macro variables are variables
that are available only during the execution of the macro in which they are
defined.
Use the %LOCAL statement to ensure that macro variables
created earlier in a program are not inadvertently changed by values assigned
to variables with the same name in the current macro. If a local macro variable
already exists and you specify that variable in a %LOCAL statement, the existing
value remains unchanged.
-
Both the %LOCAL statement and the %GLOBAL statement
create macro variables with a specific scope. However, the %LOCAL statement
creates local macro variables that exist only during the execution of the
macro that contains the variable, and the %GLOBAL statement creates global
macro variables that exist for the duration of the session or job.
-
If you define a local macro variable and a global
macro variable with the same name, the macro facility uses the value of the
local variable during the execution of the macro that contains that local
variable. When the macro that contains the local variable is not executing,
the macro facility uses the value of the global variable.
%let variable=1;
%macro routine;
%put ***** Beginning ROUTINE *****;
%local variable;
%let variable=2;
%put The value of variable inside ROUTINE is &variable;
%put ***** Ending ROUTINE *****;
%mend routine;
%routine
%put The value of variable outside ROUTINE is &variable;
Submitting these statements writes these lines to the
SAS log:
***** Beginning ROUTINE *****
The value of variable inside ROUTINE is 2
***** Ending ROUTINE *****
The value of variable outside ROUTINE is 1
Copyright © 2009 by SAS Institute Inc., Cary, NC, USA. All rights reserved.