Help using Base SAS procedures

help on macro

Occasional Contributor
Posts: 16

help on macro

I am looping symput in a macro with a list of selected variables.

I have no problem run the symput command outside the macro; But when I put it in the macro, it always report error.

%marcro( varlist=,…….)

%let var1   = %qscan(&varlist, i)


%do %while(…….);

data _null_; set a1 end=no_more;

call symput( 'MU'||left(_N_), &var1._Mean);

call symput( 'SD'||left(_N_), &var1._stdDev  );

if no_more then call symput('count',_n_);





Error message like this :

NOTE: Line generated by the macro variable "VAR1".

1      PDT_Vpp_Mean



ERROR 22-322: Syntax error, expecting one of the following: !,

!!, &, *, **, +, ',', -, /, <, <=, <>, =, >, ><,

>=, AND, EQ, GE, GT, IN, LE, LT, MAX, MIN, NE,

NG, NL, NOTIN, OR, ^=, |, ||, ~=.

253: LINE and COLUMN cannot be determined.


Please advise me how to solve this problem. Thanks!


Respected Advisor
Posts: 3,777

Re: help on macro

Why do you want to put so much data into macro variables?  Sounds like a bad idea to me.

Show the data in WORK.A1 you may not need any of the macro bit just better data step.

Posts: 1,231

Re: help on macro

Agree with _null_ , seems like an odd design.

That said, would expect the cause is a problem of macro processor not %unquoting the value of &var1.

Assuming varlist is just a space-delimited list of variable names, you could change %qscan to %scan.


Super User
Posts: 5,082

Re: help on macro

Also note that the error is being generated by portions of the code that you did not show us:  the ...... following the DATA step.  Other than that, I agree with the earlier posters.

Good luck.

Super User
Posts: 9,681

Re: help on macro

Maybe I understand where is the problem .

1) don't use quote version macro function if you could .

%let var1   = %qscan(&varlist, i)


%let var1   = %scan(&varlist, i)

2)if you use %qscan() then use %unquote to get rid of mask character around macro variable.

call symput( 'MU'||left(_N_), &var1._Mean);


call symput( 'MU'||left(_N_), %unquote(&var1.)_Mean);


Occasional Contributor
Posts: 16

Re: help on macro

Problem was solved by Xia's suggestion!

Thanks for suggestions from others as well!


Ask a Question
Discussion stats
  • 5 replies
  • 5 in conversation