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

时间:2015-11-21 22:02:53

标签: sas sas-macro

我想“快捷”这个宏变量的功能

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

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

类似的东西:

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

当然这个代码行不起作用。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

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

ajax