I'm calling a macro where the macro name to be called is stored in a macro variable. I don't understand the behavior I'm seeing. The actual code is more complicated, but it boils down to this: %macro child(d=, t=, p=);
%put CHILD>>> d = [&d];
%put CHILD>>> t = [&t];
%put CHILD>>> p = [&p];
%mend child;
%macro parent;
%local dsn tab path macroName;
%let macroName = %bquote(child);
%let dsn = testDsn;
%let tab = testTab;
%let path = testPath;
%put PARENT>>> macroName = [¯oName];
%put PARENT>>> dsn = [&dsn];
%put PARENT>>> tab = [&tab];
%put PARENT>>> path = [&path];
%¯oName(d=&dsn, t=&tab, p=&path);
%mend parent;
%parent; What I see when I run this interactively using SAS Studio 3.6 running SAS release: 9.04.01M4P11092016 is: PARENT>>> macroName = [child]
PARENT>>> dsn = [testDsn]
PARENT>>> tab = [testTab]
PARENT>>> path = [testPath]
CHILD>>> d = []
CHILD>>> t = []
CHILD>>> p = []
NOTE: Line generated by the invoked macro "PARENT".
86 %¯oName(d=&dsn, t=&tab, p=&path);
_
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
MPRINT(PARENT): (d=testDsn, t=testTab, p=testPath); Notes: 1. With the macro name as a quoted macro variable (red highlight), it looks like the macro gets called with no arguments. 2. It works as expected if the macro name is not quoted. 3. I could not find anything about this behavior using a web search. 4. For those questioning WHY I would want to do this: I have a cross study, data-driven utility that is used to create Excel subject line listing. I am extending it to allow for custom Excel tabs where I can do things like highlight specific cells. 5. For those wondering WHY I'm asking when I have a workaround: The macro facility is sometimes mysterious to me. I just want to better understand what is going on. It took me a while to debug this... Thanks for your help. Ben
... View more