DATA Step, Macro, Functions and more

Resolve macro variable

Reply
Contributor
Posts: 71

Resolve macro variable

Hi,

 

I have a macro variable :-

 

%let data1= cars;

%let data2= air;

%let data3= demo;

 

and I am using these macro in a do loop:-

 

%do i %to 3

proc print data=test1.data&i;
run;

%end;

 

But its not resolving to the desired variable. How to resolve this half macro half string macro variable.

Please Help.

Super User
Posts: 5,917

Re: Resolve macro variable

So you want for &i = 1 that data set resolve to cars?

You current logic resolves only &I as per you code. You need to apply a & if you want to use a name as a reference to macro variable name, and for resolution: &data1.

Since this is a two step resolution you need to add additional & so the resolution takes place in the order you need.

Data never sleeps
Contributor
Posts: 71

Re: Resolve macro variable

Could you let me know how to doubly resolve this? @LinusH

Super User
Posts: 5,917

Re: Resolve macro variable

Super User
Posts: 10,569

Re: Resolve macro variable

For indirect macro variable references, you need to use a double ampersand:

%let data1= cars;
%let data2= class;
%let data3= heart;

%macro loop;
%do i = 1 %to 3;

proc print data=sashelp.&&data&i;
run;

%end;
%mend;
%loop

Use the "little running man" icon to post code, as it will preserve formatting of the code (no additional linefeeds etc when copy/pasting to SAS)

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Ask a Question
Discussion stats
  • 4 replies
  • 145 views
  • 3 likes
  • 3 in conversation