全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2675 2
2017-05-05
悬赏 50 个论坛币 已解决
我的目的是提取数据集[tp_receipt1]中的观测数,将该值赋给宏变量“or”。编的程序如下:       
data _null_;
        o=open('tp_receipt1');
        n=attrn(o,'nobs');
        c=close(o);
        call symputx('or',put(n,8.));
run;
这段程序直接在sas中可以运行,也能成功对宏变量“or”成功赋值。但把这段程序整体移入宏程序后(如下),就没办法成功赋值了,而且log里也没有任何报错。求大神帮忙解答啊……
%macro a;
        %do i=2 %to 2;
        data tp_receipt1;
                set test_receipt1;
                if n_f_y=&i.;
        run;
        data _null_;
                o=open('tp_receipt1');
                n=attrn(o,'nobs');
                c=close(o);
                call symputx('or',put(n,8.));
        run;
%end;
%mend a;
%a;

最佳答案

prince315 查看完整内容

因为这里OR会成为局部宏变量,只在Macro内部有赋值,在Macro外面,OR应该是没有被定义。 可以在尝试 %macro a; %global or; .... %mend; 从而OR为全局宏变量,在宏外面也能正常使用。
二维码

扫码加我 拉你入群

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

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

全部回复
2017-5-5 13:36:25
因为这里OR会成为局部宏变量,只在Macro内部有赋值,在Macro外面,OR应该是没有被定义。
可以在尝试
%macro a;
%global or;
....
%mend;
从而OR为全局宏变量,在宏外面也能正常使用。
二维码

扫码加我 拉你入群

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

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

2017-5-5 15:32:27
prince315 发表于 2017-5-5 15:03
因为这里OR会成为局部宏变量,只在Macro内部有赋值,在Macro外面,OR应该是没有被定义。
可以在尝试
%mac ...
试了一下,确实是酱。。。谢谢帮大忙啦!!!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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