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.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.