Sas 声明宏变量并将函数的求值作为值
我是SAS的新手。当我试图将某个操作的结果声明为值的宏变量时,遇到了一个问题Sas 声明宏变量并将函数的求值作为值,sas,Sas,我是SAS的新手。当我试图将某个操作的结果声明为值的宏变量时,遇到了一个问题 数据\u空\u; %设var1=12345; %设var2=substr(&var1,4,5); 运行 我得到var2有值substr(&var1,4,5)(一个字符串),而不是我想要的45。如何使变量声明对函数求值 对不起,这个问题很琐碎。我查阅了一下文档,但没有找到答案 有一个名为%substr()的宏等价物,可按如下方式使用: %let var1 = 12345; %let var2 = %substr(&
数据\u空\u;
%设var1=12345;
%设var2=substr(&var1,4,5);
运行代码>
我得到var2
有值substr(&var1,4,5)
(一个字符串),而不是我想要的45
。如何使变量声明对函数求值
对不起,这个问题很琐碎。我查阅了一下文档,但没有找到答案 有一个名为%substr()
的宏等价物,可按如下方式使用:
%let var1 = 12345;
%let var2 = %substr(&var1., 4,2);
%put var2 = &var2;
请注意,宏语言处理不需要data
和run
语句,%substr()
(和substr()
)的第三个参数指定所需的长度,而不是最后一个字符的位置,这就是为什么我使用2
而不是5
编辑:此外,如果没有等效的宏,则可以使用%sysfunc()
在宏代码中使用数据步函数。有关完整的详细信息,请参阅,因为存在一些怪癖,例如不使用引号和可使用的数据步函数列表中的一些例外情况。仅供参考-如果您想使用函数(非宏等效项),可以使用%sysfunc()
封装函数和参数。例如-%sysfunc(substr(&var1,4,5))
的工作方式与%substr(&var1,4,2)
相同。