Hello,
I have the macro below which I believe is correct, but I get the error message shown below. When I googled the error message, some authors said a semicolon was missing, but adding that still resulted in the error.
I am running SAS 9.4 and receive this error on both Base SAS and SAS EG.
Please advise on how to avoid the error.
Thank you.
%macro currdate;
%qtrim(%qleft(%qsysfunc(date(),worddate18.)));
%mend currdate;Your code works as intended and the macro call returns a string.
You must use that string somehow, for example:
%let d = %currdate;
The macro processor is a code generator so the line of code you are executing returns a date which SAS then tries to execute and which is, of course, invalid.
If you want a macro to return today's date like a function then you could do this
%macro currdate;
%let thisday=%qtrim(%qleft(%qsysfunc(date(),worddate18.)));
&thisday
%mend currdate;
%let myday=%currdate;
%put &myday;
Of course there's no need to do that since you can simply use the date function outside a macro anyway....
Your code works as intended and the macro call returns a string.
You must use that string somehow, for example:
%let d = %currdate;
Thanks Chris.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.