如何输出SAS宏变量值
How to output SAS Macro variable value
我编写了一个简单的宏并将其应用到一个简单的 SAS 数据步骤中,以说明我在查看输出时遇到的问题。
宏:
%macro test_func(var=);
%put &var;
%mend;
数据步骤:
data test_data_step;
value = 0;
%test_func(var = value);
run;
我的问题是我看到的输出只是字符串 value
而不是名称等于该字符串的变量中保存的值。
我相信我对 SAS 这样做的原因有一个模糊的理解,但我不知道如何让它给出所需的值(在这种情况下即 0
)。那么我怎样才能实现该功能呢?
谢谢!
问题在于%put
和put
的区别。
是否要查看宏变量&var
的内容?然后使用%put(&var)
。
但是,如果您想查看名称存储在 &var
中的 SAS 数据步变量的内容,则使用 put(&var)
.
因此我会重写这个:
%macro test_func(var=);
put &var.;
%mend;
现在一切如你所愿:
data test_data_step;
value = 0;
%test_func(var = value)
run;
(请注意另一个小改动 - 在 %test_func
之后删除 ;
- 这是不必要的,虽然通常没什么大不了的,但如果你养成习惯,它可能会导致问题把它放在那里。)
我编写了一个简单的宏并将其应用到一个简单的 SAS 数据步骤中,以说明我在查看输出时遇到的问题。
宏:
%macro test_func(var=);
%put &var;
%mend;
数据步骤:
data test_data_step;
value = 0;
%test_func(var = value);
run;
我的问题是我看到的输出只是字符串 value
而不是名称等于该字符串的变量中保存的值。
我相信我对 SAS 这样做的原因有一个模糊的理解,但我不知道如何让它给出所需的值(在这种情况下即 0
)。那么我怎样才能实现该功能呢?
谢谢!
问题在于%put
和put
的区别。
是否要查看宏变量&var
的内容?然后使用%put(&var)
。
但是,如果您想查看名称存储在 &var
中的 SAS 数据步变量的内容,则使用 put(&var)
.
因此我会重写这个:
%macro test_func(var=);
put &var.;
%mend;
现在一切如你所愿:
data test_data_step;
value = 0;
%test_func(var = value)
run;
(请注意另一个小改动 - 在 %test_func
之后删除 ;
- 这是不必要的,虽然通常没什么大不了的,但如果你养成习惯,它可能会导致问题把它放在那里。)