Errors Thrown By SAS Macro Comments

When working with SAS Macros, one of the most dastardly needs is to comment code. Easy no? Think again!

Let’s just start by using a traditional means of commenting the *; in OPEN CODE:

*%let some_variable = TOAD;

After running the declaration statement in open code, the prefix of the asterisk (*) to the %LET removes the assignment of TOAD to some_variable.

However, if we apply the same comment style (*some text to comment;) to code within a SAS Macro, then SAS goes,“Woaah Nellie! What is all this text!??!” SAS will effectively throw a hissy fit better than the average two year old.

options mprint mlogic mtrace symbolgen;
%macro random_macro();
*%let some_variable = TOAD;
%mend random_macro;

But wait, why? Why is SAS acting like that? Examining the logs, the result of is an assignment of TOAD to some_variable and a RETURN from the macro function %random_macro of *

If the intent when coding is to use this similar style of comments within a macro function, then place the astrisks before a percentage sign like so:

%* This macro comment is processed aokay in macro functions unlike its predecessor.;

Some helpful tips for commenting:

  • Always use group syntax (i.e. /*some comment */)
  • Avoid covering a group comment with another group comment (i.e. /* start next comment now /* continue */ does it end here? */)
  • Use keyboard shortcuts after highlighting an area of code to comment out lines:
    • CNTL+/ yields group comments ( /* */ ) on every line
    • CNTL+SHIFT+/ removes the comments on every line in the highlighted area.
comments powered by Disqus