1. %str 和 %nrstr
%str(character-string) %nrstr(character-string)
这两个函数属于 Macro quoting function, 作用是:在宏编译时,当存在特殊字符影响到宏编译的结果时,将其放入这两个函数中就可以掩盖这些字符。可以掩盖的字符有:
除此之外,%NRSTR 还可以掩盖 & 和 % . 注意:如果是不成对的引号或括号,在%STR 或 %NRSTR 中使用时,必须在其前面添加符号%。
例子:
%let a=%str(this is test); %let b=%str( this is test); %let c=%str('this is test'); %let d=%str(proc print;run;);
Reference : Macro Quoting: %STR and %NRSTR Functions (sas.com)
2. %sysfunc
%SYSFUNC (function(argument(s))<, format> )
%QSYSFUNC (function(argument(s))<, format> )
作用是:在宏语句里执行函数。
例子:
/*普通函数需要引号的,放进sysfunc后无需添加引号*/ dsid=open("sasuser.houses","i"); dsid=open("&mydata","&mode"); %let dsid = %sysfunc(open(sasuser.houses,i)); %let dsid=%sysfunc(open(&mydata,&mode));
%SYSFUNC 无法掩盖特殊符号,%QSYSFUNC 可以掩盖下列特殊符号:
当%SYSFUNC或%QSYSFUNC引用的函数需要数值型参数时,参数会被自动转化成数值型。还有一些无法被%SYSFUNC或%QSYSFUNC使用的SAS函数:
Instead of INPUT and PUT, which are not available with %SYSFUNC and %QSYSFUNC, use INPUTN, INPUTC, PUTN, and PUTC.
CAUTION: Values returned by SAS functions might be truncated. Although values returned by macro functions are not limited to the length imposed by the DATA step, values returned by SAS functions do have that limitation. Reference : %SYSFUNC and %QSYSFUNC Functions :: SAS(R) 9.3 Macro Language: Reference3. %scan 和 %qscan
4. %sysevalf 和 %eval
标签:函数,SYSFUNC,Macro,QSYSFUNC,let,str,SAS From: https://www.cnblogs.com/zooz-logging/p/16755717.html