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
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: