Sas 来自其他宏变量的宏变量

Sas 来自其他宏变量的宏变量,sas,sas-macro,Sas,Sas Macro,假设我想创建一个宏变量,如: %let year=2019; %let ye = SUBSTR(%year,3,2) (I want to extract 19 from 2019). 但它不起作用。我们有没有办法创建这样一个宏变量 更新:我的代码实际上是 %let yearend = 2019 % let monthend = 04 现在我想创建一个宏变量,比如“data1904”,以便在我的库中使用名为“data1904”的数据集。所以我想要创造的是 %let dataname= CA

假设我想创建一个宏变量,如:

%let year=2019;

%let ye = SUBSTR(%year,3,2) (I want to extract 19 from 2019).
但它不起作用。我们有没有办法创建这样一个宏变量

更新:我的代码实际上是

%let yearend = 2019
% let monthend = 04
现在我想创建一个宏变量,比如“data1904”,以便在我的库中使用名为“data1904”的数据集。所以我想要创造的是

%let dataname= CAT(SUBSTR(%yearend,3,2),%monthend)

您可以使用&来引用宏变量,而不是%。 在宏代码中使用函数时,需要将其包装在
%SYSFUNC()
中,以便编译器能够执行

或者也可以使用
%SUBSTR()
宏跳过%SYSFUNC()


现在,我想创建另一个宏变量,它依赖于%ye。我尝试过:%let base=abc&ye(获得abc20),但它确实有效。您能帮我解决这个问题吗?@tmtran99在新问题中显示问题代码和SAS日志。您的示例应该有效,因此您可能在做其他错误的事情。如@Richard所示,请出示您的代码。我在问题中更新了代码,请看一下。感谢您的代码没有使用提供的答案。你读了答案中的链接页了吗?
%let ye = %sysfunc(substr(&year, 3, 2));
%let ye = %substr(&year, 3, 2);