Hi, I have problem on passing parm to a macro wish someone can give me a hand. Following is the script that I have. I am trying to pass parm to the macro using a do loop but it was not successful. Can anyone give me some advice. thanks.
DATA rev_data;
FORMAT rep_month $7. ;
INPUT @1 rep_month $7.;
CARDS;
2012-01
2012-02
2012-03
;
data rev_data; set rev_data;
by rep_month;
if first.rep_month then do;
cnt = left(put(_n_,6.));
call symput('mth'||cnt, rep_month);
call symput('mthcount', cnt);
end;
run;
%put _user_;
%macro a(m_mth, m_mthcount);
%put month = &m_mth. count = &m_mthcount.;
%mend;
%a(&mth1, &mthcount);
data _d_;
do i = 1 to &mthcount;
runmth = '&mth'||i;
%a(&mth||i,i);
end;
run;
For the last part of your code, I have modified it to macro, hopefully it is what you want:
%macro test;
data _d_;
%do i = 1 %to &mthcount;
runmth = "&&mth&i";
output;
%a(&&mth&i,&i);
%end;
run;
%mend;
%test
proc print;run;
Kindly Regards,
Haikuo
For the last part of your code, I have modified it to macro, hopefully it is what you want:
%macro test;
data _d_;
%do i = 1 %to &mthcount;
runmth = "&&mth&i";
output;
%a(&&mth&i,&i);
%end;
run;
%mend;
%test
proc print;run;
Kindly Regards,
Haikuo
Hi HaiKuo, thank you for your help.. Your solution work.. thanks a lot...
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.