DATA Step, Macro, Functions and more

is this macro variable local or global?

Reply
Frequent Contributor
Posts: 133

is this macro variable local or global?

is this class macro var local or global? why?

data _null_;

set sasuser.courses;

%let class="course_title";

run;

Super User
Super User
Posts: 7,080

Re: is this macro variable local or global?

If that is your whole program it will be created as GLOBAL.  Local macro variables only exist while a macro is running.

Note that placing the %LET inside of the code for that data step is confusing for humans.  SAS will assign the macro variable while it is compiling the data step. So it would be less confusing to move the %LET statement before the data statement.

Respected Advisor
Posts: 4,173

Re: is this macro variable local or global?

You can always query sashelp.vmacro if you want to check.

%let MvarDefOutside=test;

%macro test;
   %local LocalMvar;
   %global GlobalMvar;

   %let MvarDefInside=test;

   proc print data=sashelp.vmacro;
      where scope ne "AUTOMATIC";
   run;

%mend;
%test

Super User
Posts: 10,046

Re: is this macro variable local or global?

Or use

%put _user_;  Check out. OR %symlocal %symglobl .

%macro a;
%let class="course_title";
data _null_;
set sashelp.cars;
run;
%put %symlocal(class) %symglobl(class) ;
%mend a;

%a

Ksharp

Ask a Question
Discussion stats
  • 3 replies
  • 219 views
  • 1 like
  • 4 in conversation