Hello.
I am having a problem while writing a macro code. I want to use substr function inside th macro.
Here is an example.
%macro name (timej);
%let year=substr("&timej",1,4);
proc sql;
create table table2 as
select * from table&year;
quit;
%mend;
%name (19901231);
So macro variable timej is 8-digit numeric value which implies year, month, date.
I need to take apart the first 4 digits from the variable.
The above code doesn't work. I tried %substr or other things that I can think of, but never worked properly.
And I want to do it INSIDE the macro code.
Could anyone give some advices for this?
Thanks for reading my thread.
below code should work.
%macro name (timej);
%let year= %sysfunc(substr(&timej,1,4));
%put &year;
proc sql;
create table table2 as
select * from table&year;
quit;
%mend;
%name(19901231);
You can either use the macro function
%let year=%substr(&timej,1,4);
or the sas function via the %sysfunc macro function
%let year=%sysfunc(substr(&timej,1,4));
In any case, no quotes should be used.
below code should work.
%macro name (timej);
%let year= %sysfunc(substr(&timej,1,4));
%put &year;
proc sql;
create table table2 as
select * from table&year;
quit;
%mend;
%name(19901231);
Both of you were right. I really appreciate your help. God bless you. 🙂
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!
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.
Ready to level-up your skills? Choose your own adventure.