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.
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.