Hi Tom, Thanks for your patient, but I am still confused. When the %doit run, the first code would be *%abc. The first character is *, the * would be a meaningless character inside a macro and would be left to pass back to base SAS. Then, the second character is % which is a macro trigger. So, no matter how the %abc has been defined, the %abc should be called. But, from log output, we saw this macro call hasn't happened. Why? However, when %put %doit; run, this macro call exactly happened. Why? I had tried to add a semi-colon at the end of "*%put in abc;", "*%abc", and both. There is no difference.
... View more