【发布时间】:2019-10-29 18:26:05
【问题描述】:
我在 SAS 中设置批处理脚本,我希望它每月运行并输出到表格,手动运行时代码可以工作,但我在设置宏时遇到困难。
我创建了 3 个宏,一个用于上个月(请忽略硬编码的 12 和注释掉的代码,我只是在测试它是否有效,注释掉的代码将保留,而硬编码的 12 将是当我可以让它工作时删除),一个用于今年,一个用于上一年。我遇到的问题是脚本会获取月末数据,所以到 1 月时,年份将设置为 2020 年,但该月将寻找 12 月的数据。
`%let pmonth = 12 /*%sysfunc(month(%sysfunc(intnx(month,"&sysdate"d ,-1))))*/;`
`%put &pmonth;`
`%let year1 = %sysfunc(year("&sysdate"d));`
`%put &year1;`
`%let year2 = %sysfunc(year(%sysfunc(intnx(year,"&sysdate"d ,-1))));`
`%put &year2;`
`%macro year;
%if &pmonth = 12 %then %do;
&year2;
%end;
%else %do;
&year1;
%end;
%mend;
%year;`
我想要的是在我的代码中使用的宏年,根据月份宏 pmonth 在 year1 和 year2 之间正确选择。我玩过一些宏,但老实说,它不是我经常使用的 SAS 领域。
【问题讨论】:
-
您是否要计算上个月?还是下个月?