美文网首页SAS学习笔记
SAS函数:官方文档搬运---%str和%nrstr

SAS函数:官方文档搬运---%str和%nrstr

作者: RSP小白之路 | 来源:发表于2023-02-26 15:34 被阅读0次

系统文档

  • 定义
    系统文档截图

Mask special characters and mnemonic operators inconstant text at macro compilation.
宏编译屏蔽特殊字符助记符


  • 句法
    系统文档截图

  • 详情
    系统文档截图

在编译宏或宏语言语句期间, %STR%NRSTR函数屏蔽字符串。所能屏蔽的特殊字符如上截图所示。


系统文档截图

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


系统文档截图

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


系统文档截图

%STR对于包含如下特殊字符的字符串最有用:

  1. 应被视为文本而不是宏程序语句的一部分的分号
  2. 有意义的空格
  3. 不匹配的引号或圆括号

在嵌套的%STR%QUOTE中放置相同的参数是冗余的。

%put %quote(%100);
%put %quote(%str(%100));
%put %str(%100);

日志结果

系统文档截图

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


系统文档截图

宏引用嵌套的最大水平是10层。


  • 比较
    官方文档截图

在所有宏引用函数中,只有%NRSTR和%STR在编译期间生效。其他宏引用函数在宏执行时生效。

The little SAS Book截图

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

宏语句运行过程示意图
    • 比对
函数 执行阶段
%BQUOTE%NRBQUOTE 解析阶段
%STR%NRSTR 编译阶段
%QUOTE%NRQUOTE 执行阶段

  • 例子
  1. 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;
日志信息
  1. Example2:保护空白,它将被编译为文本


    官方文档截图
  2. Example3:引用可能包含宏引用的值

%macro test;
   Two words
%mend;
%put %nrstr(%test%test) --- %test%test;
日志截图

相关文章

网友评论

    本文标题:SAS函数:官方文档搬运---%str和%nrstr

    本文链接:https://www.haomeiwen.com/subject/ekqcldtx.html