声明宏变量,并将功能评估为值

时间:2018-10-10 10:29:24

标签: sas

我是SAS新手。尝试声明某个操作的结果为值的宏变量时遇到麻烦。

data _null_; %let var1 = 12345; %let var2 = substr(&var1., 4,5); run;

我得到var2的值为substr(&var1., 4,5)(字符串),而不是我想要的45。如何使变量声明评估函数?

对不起,这个问题很简单。我看了一下文档,但找不到答案。

1 个答案:

答案 0 :(得分:1)

有一个名为%substr()的宏等效项,可以如下使用:

%let var1 = 12345;
%let var2 = %substr(&var1., 4,2);

%put var2 = &var2;

请注意,宏语言处理不需要datarun语句,%substr()(和substr())的第3个参数指定所需的长度,而不是最后一个字符的位置,这就是为什么我使用2而不是5的原因。

编辑:另外,如果没有等效的宏,则可以使用%sysfunc()来使用宏代码中的数据步长函数。请参阅documention,以获取全部详细信息,因为有一些怪癖,例如不使用引号以及可以使用的数据步骤函数列表的一些例外情况。