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...
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 25. Read more here about why you should contribute and what is in it for you!
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.