系统文档
-
定义
系统文档截图
Mask special characters and mnemonic operators inconstant text at macro compilation.
在宏编译时屏蔽特殊字符
和助记符
。
-
句法
系统文档截图
-
详情
系统文档截图
在编译宏或宏语言语句期间,
%STR
和%NRSTR
函数屏蔽字符串。所能屏蔽的特殊字符如上截图所示。

' '' ( )
成对出现或者不成对匹配、或者被前面的%
标记时,%STR
和%NRSTR
函数也能够予以屏蔽。

除此之外,
%NRSTR
也可以屏蔽& %
。

%STR对于包含如下特殊字符的字符串最有用:
- 应被视为文本而不是宏程序语句的一部分的分号
- 有意义的空格
- 不匹配的引号或圆括号
在嵌套的%STR
和%QUOTE
中放置相同的参数是冗余的。
%put %quote(%100);
%put %quote(%str(%100));
%put %str(%100);
日志结果

不要使用
%str
包含宏函数或者有参数值列表的宏调用。因为%STR
会屏蔽没有配对的括号,因此,宏处理器就无法识别函数的参数或者宏调用的参数值。

宏引用嵌套的最大水平是10层。
-
比较
官方文档截图
在所有宏引用函数中,只有%NRSTR和%STR在编译期间生效。其他宏引用函数在宏执行时生效。

%STR和%NRSTR屏蔽与%QUOTE和%NRQUOTE相同的项。然而,%QUOTE和%NRQUOTE在宏执行期间发挥作用。
如果宏表达式解析产生项时需要被屏蔽,请使用%BQUOTE或%NRBQUOTE函数而不是%STR或%NRSTR函数。

- 比对
函数 | 执行阶段 |
---|---|
%BQUOTE 或%NRBQUOTE
|
解析阶段 |
%STR 和%NRSTR
|
编译阶段 |
%QUOTE 和%NRQUOTE
|
执行阶段 |
- 例子
- Example1:保持开头的空格
%let time=%str( now);
%let time1= now;
%put Text followed by the value of time:&time;
%put Text followed by the value of time:&time1;

-
Example2:保护空白,它将被编译为文本
官方文档截图
-
Example3:引用可能包含宏引用的值
%macro test;
Two words
%mend;
%put %nrstr(%test%test) --- %test%test;

网友评论