%macro DownloadCPMBData(numofmonths);
%do i=1 %to (&numofmonths.);
%if %eval(&i.)=1 %then %do;
%let gg=test;
%put ≫
%end;
%else %do;
data _null_;
call symput('eom',PUT(INTNX('MONTH',today(),-(%eval(&i.)+1), 'end'),yymmddn8.));
%PUT &eom.;
run;
%end;
%end;
%mend DownloadCPMBData;
%DownloadCPMBData(12);
为什么有WARNING: Apparent symbolic reference EOM not resolved.
&eom.
不是第一次到不了else里面的吗?
第二个问题是下面
%macro DownloadCPMBData(numofmonths);
data _null_;
%do i=1 %to (&numofmonths.);
%if %eval(&i.)=1 %then %do;
%let gg=test;
%put ≫
%end;
%else %do;
call symput('eom',PUT(INTNX('MONTH',today(),-(%eval(&i.)+1), 'end'),yymmddn8.));
%PUT &eom.;
%end;
%end;
run;
%mend DownloadCPMBData;
%DownloadCPMBData(12);
如果把data _null_放到最外面就出不来结果,这是为什么。我想知道macro运行的原理。有哪位高手能解释一下吗?
谢谢了