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_);
run;
……………..
%end;
%mend;
Error message like this :
NOTE: Line generated by the macro variable "VAR1".
1 PDT_Vpp_Mean
-----
22
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!
Andrew
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.
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.
--Q.
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.
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);
Ksharp
Problem was solved by Xia's suggestion!
Thanks for suggestions from others as well!
Andrew
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.