将函数输出分配给宏变量

时间:2017-07-24 15:46:25

标签: sas enterprise-guide

我在变量中有一个值:

select max(input(record_date, yymmdd10.)) into :LastDate from My_TABLE;

record_datechar,上面的输出是23JUL2017。)

我将如何操纵此值?让我们说我想减少它一天。当我这样做时:

%let LastDate = intnx("day", &LastDate, -1);

LastDate的字面值intnx("day", 21023, -1),而我希望22Jul201721022

1 个答案:

答案 0 :(得分:4)

如果要在宏代码中使用SAS函数,则需要将它们包含在el.style.setProperty宏函数中。还要记住,您不需要在宏代码中添加字符串文字的引号,因为所有内容都是宏处理器的字符串。

%sysfunc()

但这确实有点矫枉过正,因为日期只是天数。你可以减去一个。

%let LastDate = %sysfunc(intnx(day,&LastDate,-1));

或者,如果您使用日期文字,例如' 23JUL2017' d则需要使用%let LastDate = %eval(&LastDate -1); 功能。

%sysevalf()

当然你也可以在制作宏变量之前减去一天。

%let LastDate = %sysevalf(&LastDate -1);