BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
bearda
Obsidian | Level 7

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.

1 ACCEPTED SOLUTION

Accepted Solutions
andreas_lds
Jade | Level 19

Which SAS-version are you using? In 9.4 you can use SysMExecName to get the right macro-name.

View solution in original post

2 REPLIES 2
andreas_lds
Jade | Level 19

Which SAS-version are you using? In 9.4 you can use SysMExecName to get the right macro-name.

bearda
Obsidian | Level 7
Thank you so much andreas_Ids. This is exactly what I was looking for!

SAS Innovate 2025: Register Now

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!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 570 views
  • 1 like
  • 2 in conversation