在另一个宏变量上构建宏变量

Build macro Variables on another macro var

我想"shortcut"这个函数的一个宏变量

intnx('YEAR',"&starting_year"D,-5,'S'); 

用另一个宏变量。可能吗?

类似于:

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

当然这个代码行是行不通的。

%sysfunc 可让您以宏语言调用常规 SAS 函数。也许像(未经测试):

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

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

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

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

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