In each of the following
statements, the macro processor treats the masked semicolons as text:
%let p=%str(proc print; run;);
%let p=proc %str(print;) %str(run;);
%let p=proc print%str(;) run%str(;);
The value of P is the
same in each case:
The results of the three
%LET statements are the same because when you mask text with a macro
quoting function, the macro processor quotes only the items that the
function recognizes. Other text enclosed in the function remains unchanged.
Therefore, the third %LET statement is the minimalist approach to
macro quoting. However, masking large blocks of text with a macro
quoting function is harmless and actually results in code that is
much easier to read (such as the first %LET statement).