Macros 在SAS中将上个月/年设置为宏变量

Macros 在SAS中将上个月/年设置为宏变量,macros,sas,Macros,Sas,我知道这样的事 %let start_date = %sysfunc(intnx(day,%sysfunc(date()),-1),DATE9.); %put &start_date; 但是 或 不起作用。在INTNX之前,您需要另一个%SYSFUNC才能使示例起作用 %let start_month = %sysfunc(month(%sysfunc(intnx(month,%sysfunc(date()),-1)))); %put &start_month; 但是,我更喜

我知道这样的事

%let start_date = %sysfunc(intnx(day,%sysfunc(date()),-1),DATE9.);
%put &start_date;
但是


不起作用。

在INTNX之前,您需要另一个%SYSFUNC才能使示例起作用

%let start_month = %sysfunc(month(%sysfunc(intnx(month,%sysfunc(date()),-1))));
%put &start_month;
但是,我更喜欢在%LET需要大量%SYSFUNC语句的情况下使用DATA NULL。下面给出了相同的结果

data _null_;
call symputx('start_month ', month(intnx('month',date(),-1)));
run;
%put &start_month.;

您能检查一下您的let声明的各个部分是否有效吗?喜欢检查intnx是否返回它应该返回的内容吗?%let start_month=%sysfunc(month(%sysfunc)(intnx(month,%sysfunc(date(),-1)));
%let start_month = %sysfunc(month(%sysfunc(intnx(month,%sysfunc(date()),-1))));
%put &start_month;
data _null_;
call symputx('start_month ', month(intnx('month',date(),-1)));
run;
%put &start_month.;