【函数】SAS宏的特殊字符引用【转载】

【函数】SAS宏的特殊字符引⽤【转载】
原⽂地址  :
在SAS宏中,字符串是⽤双引号括起来的,但如果字符串中要包含双引号或百分号等特殊字符就要使⽤单引号来对字符串中的特殊字符逃逸。⽐如:
%let test = ‘”A” is the first character !’;
稳定同位素但如果字符串中包含单引号,则上述⽅法便失效了。所以更⼀般的,SAS提供了%str和%nrstr来对特殊字符转义。其中%str可以转义逗号,单双引号,左右⼩括号,波浪号,分号,空格,尖⾓号等,⽽%nrstr除了可以转义%str能够转义的特殊符号,还可以转义与(&)符号和百分号。具体的使⽤⽅法如:
%let test=%str(“A” is the first character!);
需要注意的是,当使⽤%str时,如果引⽤的字符串包含有不匹配的单双引号,括号,必须使⽤百分号转义,如:
%let test=%str(I%’m consultant.);
当然,笔者为了怕出错误,%str中凡是遇到特殊字符都⽤百分号转义了,如:
%macro doit;
X “%str(copy %”a%” %”b%”)”;
%mend doit
最为特殊的符号是百分号本⾝,如果要在%str中包含百分号,同时⼜不让SAS将其及其后%的字符看成是宏名或宏调⽤,请⽤百分号对百分号进⾏转义,也就是⽤两个百分号来表⽰⼀个百分号,如:
吴少芳%let test = %str(%“%%%” is a special character!);
测试⼀下:
data _null_;
郭业才
put “&test”;
run;信号检测与估计理论
Log窗⼝是不是打印出来”%” is a special character!字样了呢?
%str和%nrstr对常量是有效的,如果是变量的话,%str和%nrstr则不会对变量的内容进⾏转义。这种情况下,我们需要%bquote
和%nrbquote,这两个statement则专门在宏扩展之后,宏执⾏的时候对变量对应的内容进⾏转义,⽐如:
%let test = %str(%”%%);
%macro dd(h=);
data _null_;
%let a = %nrbquote(%substr(&h.,1,1));
饶宗颐书画put “&a.”;热看网
run;
%mend dd;
%dd(h=&test.);

本文发布于:2024-09-21 21:59:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/505534.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转义   双引号   字符串
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议