Sas 计算包含宏引用的字符串变量

Sas 计算包含宏引用的字符串变量,sas,sas-macro,Sas,Sas Macro,我有一个名为DataSet的表,其中一些表的名称中包含宏引用 e、 g.月度数据(其中YYMM为最近一个月) 我想用这个字符串保留表,但随后会有一个新变量,该变量带有已计算的数据集名称 e、 g.月度数据&YYMM,月度数据&u1612 我想不出一个办法。如果我将数据集作为宏变量读取,它将作为所需的名称返回,但是我不能将其与未计算的引用合并到同一行 我相信这一定是可能的,而且可能相当容易,但我就是不知道该怎么做 非常感谢您可以使用解析功能来执行此操作,例如: %let YYMM = 1601;

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

e、 g.月度数据(其中YYMM为最近一个月)

我想用这个字符串保留
,但随后会有一个新变量,该变量带有已计算的
数据集
名称

e、 g.月度数据&YYMM,月度数据&u1612

我想不出一个办法。如果我将数据集作为宏变量读取,它将作为所需的名称返回,但是我不能将其与未计算的引用合并到同一行

我相信这一定是可能的,而且可能相当容易,但我就是不知道该怎么做


非常感谢

您可以使用
解析
功能来执行此操作,例如:

%let YYMM = 1601;

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

注意:名称列中使用的所有宏变量必须在会话中使用
resolve
函数执行时的正确值进行定义。如果两个不同的数据集在其名称中使用相同的宏变量,但在不同的时间使用不同的值,则需要重新定义宏变量并分别运行逻辑,可能需要通过单独的数据步骤或调用symput+
symget

来执行。你让它工作,为什么不让我们看看它在这里不工作,这就是我希望它工作的一个例子。下面的答案正是我想要的。如果我将数据集作为宏变量读取,它将作为所需名称返回,但我无法将其与未计算引用合并到同一行,这意味着您有一个正确的结果,但没有正确地存储到表中。。。是你写的,不是我。