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

Evaluate string variable that contains macro reference

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

e.g. Monthly_Data_&YYMM (where YYMM is the latest month)

我想用这个字符串保留 Table,但随后有一个新变量,其中包含已计算的 DataSet 名称。

e.g. Monthly_Data_&YYMM, Monthly_Data_1612

我想不出办法来做到这一点。如果我将数据集作为宏变量读取,它 returns 作为所需的名称,但我无法将其加入与未评估参考相同的行。

我确信这一定是可能的,而且可能很容易,但我就是不知道如何做到这一点。

非常感谢

您可以使用 resolve 函数来执行此操作,例如

%let YYMM = 1601;

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

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