Hi,
I've been struggling with this issue quite many times and haven't find a solution yet.
It's easiest to show the issue by little code:
%macro Message(message = , caller = &sysmacroname);
%put ERROR: &caller - &message;
%mend Message;
%macro CallerMacro;
%Message(message = Text)
%mend CallerMacro;
%CallerMacro;
Issue here is that &sysmacroname resolves to MESSAGE, not CALLERMACRO. Is there any way to automatically determine which macro was a caller macro? End users doesn't like to write "caller = CallerMacro" for every message.
Which SAS-version are you using? In 9.4 you can use SysMExecName to get the right macro-name.
Which SAS-version are you using? In 9.4 you can use SysMExecName to get the right macro-name.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.