系统文档
-
定义
系统文档截图
Mask special characters and mnemonic operators inconstant text at macro compilation.
在宏编译时屏蔽特殊字符
和助记符
。
-
句法
系统文档截图
-
详情
系统文档截图
在编译宏或宏语言语句期间,
%STR
和%NRSTR
函数屏蔽字符串。所能屏蔽的特殊字符如上截图所示。
![](https://img.haomeiwen.com/i18003060/055b8472be0814bf.png)
' '' ( )
成对出现或者不成对匹配、或者被前面的%
标记时,%STR
和%NRSTR
函数也能够予以屏蔽。
![](https://img.haomeiwen.com/i18003060/6c9203af4e454a1d.png)
除此之外,
%NRSTR
也可以屏蔽& %
。
![](https://img.haomeiwen.com/i18003060/32e80b4bc95f9934.png)
%STR对于包含如下特殊字符的字符串最有用:
- 应被视为文本而不是宏程序语句的一部分的分号
- 有意义的空格
- 不匹配的引号或圆括号
在嵌套的%STR
和%QUOTE
中放置相同的参数是冗余的。
%put %quote(%100);
%put %quote(%str(%100));
%put %str(%100);
日志结果
![](https://img.haomeiwen.com/i18003060/997c2f84a2e36800.png)
不要使用
%str
包含宏函数或者有参数值列表的宏调用。因为%STR
会屏蔽没有配对的括号,因此,宏处理器就无法识别函数的参数或者宏调用的参数值。
![](https://img.haomeiwen.com/i18003060/b685582732cac389.png)
宏引用嵌套的最大水平是10层。
-
比较
官方文档截图
在所有宏引用函数中,只有%NRSTR和%STR在编译期间生效。其他宏引用函数在宏执行时生效。
![](https://img.haomeiwen.com/i18003060/ed7629c9737527e0.png)
%STR和%NRSTR屏蔽与%QUOTE和%NRQUOTE相同的项。然而,%QUOTE和%NRQUOTE在宏执行期间发挥作用。
如果宏表达式解析产生项时需要被屏蔽,请使用%BQUOTE或%NRBQUOTE函数而不是%STR或%NRSTR函数。
![](https://img.haomeiwen.com/i18003060/2f0e92cc85fe6727.png)
- 比对
函数 | 执行阶段 |
---|---|
%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;
![](https://img.haomeiwen.com/i18003060/582380a9274b666e.png)
-
Example2:保护空白,它将被编译为文本
官方文档截图
-
Example3:引用可能包含宏引用的值
%macro test;
Two words
%mend;
%put %nrstr(%test%test) --- %test%test;
![](https://img.haomeiwen.com/i18003060/f5e56d566c41bbf0.png)
网友评论