Sas 在另一个宏变量上生成宏变量

Sas 在另一个宏变量上生成宏变量,sas,sas-macro,Sas,Sas Macro,我想“快捷方式”这个宏变量的函数 intnx('YEAR',"&starting_year"D,-5,'S'); 使用另一个宏变量。可能吗 比如: %let start = intnx('YEAR',"&starting_year"D,-5,'S'); 当然,此代码行不起作用。%sysfunc允许您用宏语言调用常规SAS函数。可能类似(未经测试): %sysfunc允许您使用宏语言调用常规SAS函数。可能类似(未经测试): 您可以使用%SYSFUNC()调用宏代码中的函数

我想“快捷方式”这个宏变量的函数

intnx('YEAR',"&starting_year"D,-5,'S'); 
使用另一个宏变量。可能吗

比如:

%let start = intnx('YEAR',"&starting_year"D,-5,'S'); 

当然,此代码行不起作用。

%sysfunc允许您用宏语言调用常规SAS函数。可能类似(未经测试):


%sysfunc允许您使用宏语言调用常规SAS函数。可能类似(未经测试):

您可以使用
%SYSFUNC()
调用宏代码中的函数。您可以使用可选的格式规范来控制如何将结果转换为存储在宏变量中的文本

因此,如果以
DATE.
格式的宏变量开始,您可以生成比该日期早5年的日期,如下所示:

%let start=%sysfunc(intnx(year,"&starting_date"d,-5,s),date9);
这将把
20MAR1999
转换为
20MAR1994
。或者它将
29FEB04
转换为
28FEB1999

您可以使用
%SYSFUNC()
调用宏代码中的函数。您可以使用可选的格式规范来控制如何将结果转换为存储在宏变量中的文本

因此,如果以
DATE.
格式的宏变量开始,您可以生成比该日期早5年的日期,如下所示:

%let start=%sysfunc(intnx(year,"&starting_date"d,-5,s),date9);

这将把
20MAR1999
转换为
20MAR1994
。或者它会将
29FEB04
转换为
28FEB1999

您能提供起始年的示例值以及相应的起始值吗?你想要今年还是今年的第一天?是否要将其格式化为DATE9字符串?STARTING_YEAR是类似“20MAR1999”的提示,START是“20MAR1994”,yes DATE9格式。能否提供STARTING_YEAR的示例值以及相应的START值?你想要今年还是今年的第一天?是否将其格式化为DATE9字符串?起始年份是一个类似“20MAR1999”的提示,起始日期是“20MAR1994”,是DATE9格式。