如何输出 SAS 宏变量值



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

宏观:

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

数据步骤:

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

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

我相信我对 SAS 为什么要这样做有一个模糊的理解,但我不知道如何让它提供所需的值(即在这种情况下是0(。那么我该如何才能实现该功能呢?

谢谢!

问题在于%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后删除; - 这是不必要的,虽然通常没什么大不了的,但如果您习惯将其放在那里,可能会导致问题。

最新更新