评估包含宏引用的字符串变量

时间:2016-12-02 10:37:30

标签: sas sas-macro

我有一个名为DataSet的表,其中一些名称中包含宏引用。

  

e.g。 Monthly_Data_& YYMM(其中YYMM是最近一个月)

我希望将Table与此字符串保持一致,但随后会有一个带有已评估DataSet名称的新变量。

  

e.g。 Monthly_Data_& YYMM,Monthly_Data_1612

我无法找到一种方法来做到这一点。如果我将数据集作为宏变量读取,则返回所需的名称,但我无法将其与非评估引用连接在同一行上。

我确信这一定是可能的,而且可能非常简单,但我无法理解如何做到这一点。

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用resolve功能执行此操作,例如

%let YYMM = 1601;

data mydata;
  dsname = 'Monthly_Data_&YYMM';
  dsname_resolved = resolve(dsname);
run;

N.B。必须在会话中使用正确的值在resolve函数执行时定义名称列中使用的所有宏变量。如果两个不同的数据集在其名称中使用相同的宏变量,但在不同的时间使用了不同的值,则需要重新定义宏变量并单独运行逻辑,可能通过单独的数据步骤或call symput + { {1}}。