如何输出SAS宏变量值

时间:2017-06-15 19:50:28

标签: sas sas-macro

我编写了一个简单的宏并将其应用于简单的SAS数据步骤,以说明我在查看输出时遇到的问题。

宏:

%macro test_func(var=);
%put &var;
%mend;

数据步骤:

data test_data_step;
value = 0;
%test_func(var = value);
run;

我的问题是我看到的输出只是字符串value,而不是名称等于该字符串的变量中保存的值。

我相信我对SAS为什么会这样做有一个模糊的理解,但我不知道如何让它给出所需的值(在这种情况下是0)。那我怎么能够实现这个功能呢?

谢谢!

1 个答案:

答案 0 :(得分:2)

问题在于%putput之间的区别。

是否要查看宏变量&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 - 这是不必要的,虽然通常没什么大不了的,但如果你养成了放置习惯,它可能会导致问题它在那里。)