BookmarkSubscribeRSS Feed
ZRick
Obsidian | Level 7

I do see couple of examples that macro variables don't have ampersand in front of them when they are referenced.

Can you tell me under what scenario, this rule applies?

2 REPLIES 2
ballardw
Super User

I would be interested in seeing where you have found that. Any macro variable I've run across is always preceded with the ampersant. Is it possibly you are confusing a datastep automatic variable such as _n_ or _infile_ with a macro variable?

Astounding
PROC Star

There are just a handful of cases.  Here are the ones I can think of off the top of my head.

In a DATA step, CALL SYMPUT and SYMGET both expect to see the name of a macro variable.  So the ampersand should be omitted (although since it's in a DATA step, quotes would distinguish between a DATA step variable vs. a text string).  For example, both of these create a macro variable &SALES:

varname='sales';

call symput('sales', 'Friday');

call symput(varname, 'Friday');

Other than that, the only case I can think of is the %superq function.  It also expects the name of a macro variable.  For example:

data _null_;

call symput('measure', 'S&P 500 Index');

run;

%let measure = superq(measure);

title "&measure";

This would quote the &P, so that resolving &measure does not trigger a search for the macro variable &P.

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1253 views
  • 0 likes
  • 3 in conversation