全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1377 8
2013-05-31
%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运行的原理。有哪位高手能解释一下吗?
谢谢了


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-5-31 20:18:06
把%PUT &eom.;放在run;后面就可以了。
call symput定义的宏变量不能在本data步中引用。
如果想查看&eom.的情况可在run;之前用eom=symget('eom');put eom=;就可以了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-31 20:28:16
boe 发表于 2013-5-31 20:18
把%PUT &eom.;放在run;后面就可以了。
call symput定义的宏变量不能在本data步中引用。
如果想查看&eom.的 ...
谢谢这位朋友了,但是我想知道为什么%PUT &eom.;就一定要放在run之后呢?为什么只是第一次的时候出错后来就好了呢?

call symput定义的宏变量不能在本data步中引用。这句话没太看明白call为什么不能再本data步里运行呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-1 07:57:38
还有人知道更好的答案吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-1 11:02:32
peterpan_aus 发表于 2013-6-1 07:57
还有人知道更好的答案吗?
boe的解释即正解,call symput语句本身是可以在data里用,但是定义出来的宏变量var不能在同一个data里用类似%put  &var;直接应用,但是可以在另外一个新的data中用; 如果非要在同一个data步中引用需要用到symget函数
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-1 12:19:12
ok 明白了谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群