Hi,
I am trying to use macro to do a one year forward performance track for the origination period 201202 - 201207. So if the origination month is 201202, i will track the month from 201202 to 201301 to see how origination performs. After I run the code, there is warning ' This SAS global statement is not support in proc sql' which causes my proc sql not working properly.
%macro monthly (first,last);
%do mon=&first &to &last;
%let monthend=%eval(&mon+99);
proc sql;
create table test&mon as
select*
from aaa_&mon as a left join master_file
on num=num;
where &mon<=YEAR_MONTH<=&monthend;
quit;
%end;
%mend monthly;
%monthly(201202,201207);
Have any idea what causes the warning?
Thanks in advance!
Frank
I believe the %do block is not correct, you have used &to instead of %to. Please check and change it to %to.
also remove the semicolon after num=num; i.e., before the where clause.
Please check the updated code below
%macro monthly (first,last);
%do mon=&first %to &last;
%let monthend=%eval(&mon+99);
proc sql;
create table test&mon as
select*
from aaa_&mon as a left join master_file as b
on a.num=b.num
where &mon<=YEAR_MONTH<=&monthend;
quit;
%end;
%mend monthly;
%monthly(201202,201207);
Thanks,
Jagadish
I believe the %do block is not correct, you have used &to instead of %to. Please check and change it to %to.
also remove the semicolon after num=num; i.e., before the where clause.
Please check the updated code below
%macro monthly (first,last);
%do mon=&first %to &last;
%let monthend=%eval(&mon+99);
proc sql;
create table test&mon as
select*
from aaa_&mon as a left join master_file as b
on a.num=b.num
where &mon<=YEAR_MONTH<=&monthend;
quit;
%end;
%mend monthly;
%monthly(201202,201207);
Thanks,
Jagadish
Thanks so much. It works now!
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.