Good point, but if this would mean that the quotation marks ar not masked and therefore the semicolon is inside a text string, than I would expect a different log message (e.g. the parentheses within the text). This can be demonstrated even better for single quotation marks like in: %MACRO abc(); %PUT %NRBQUOTE('this is a);%NRBQUOTE('test); %MEND; %abc(); Here I would expect the second NRBQUOTE macro call as part of the log message. Additionally you can easily check if the quotation marks are quoted or not with the following code: %MACRO abc(); %LET val = %NRBQUOTE('this is a);%NRBQUOTE('test); proc sql; select value from dictionary.macros where name eq 'VAL'; quit; %MEND; %abc(); The result shows that the quotation marks are correctly masked. And also it does not explain why the next example works, here the first quotation mark is not quoted, but the second is: %MACRO abc(); %PUT %NRBQUOTE("this is a%STR(%") test); %MEND; %abc(); And again, I do not need a solution for the quotation, I just wanted to know if this is an documented / expected behaviour. The background is, I'm currently working on a correct syntax highlighter for SAS code and therefore I would like to highlight code as it is processed by the SAS code parser.
... View more