全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1680 3
2019-02-25

我有个宏%basket(参数1,参数2,参数3)是包含3层宏的嵌套宏,想要自动执行这个大宏,不过由于这个宏中第二个参数数量不确定,导致我需要使用循环才能实现自动执行。尝试了如下写法,&lastloopnumb 和 &&macro&i.都能够正常解析,不过这个循环为什么只执行一次就停了? 各位高人不吝赐教


%let macro1=羊肉串;
%let macro2=铜锅;

%macro dahuilang;
        %do i=1 %to &lastloopnumb.;
                data _null_;
                        call execute('%nrstr(%basket(para1, &&macro&i., para3);)');
                run;
        %end;
%mend;


%dahuilang;

二维码

扫码加我 拉你入群

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

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

全部回复
2019-2-25 15:51:50
我突然醒悟,这个宏其实这样也能执行,不需要使用call execute,但是同样只能执行一次,求解答
%macro dahuilang;
    %do i=1 %to &lastloopnumb.;
            %basket(para1, &&macro&i., para3);
    %end;
%mend;
二维码

扫码加我 拉你入群

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

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

2019-2-26 03:40:11
宏变量basket的参数不能含有&&这些符号吧。
二维码

扫码加我 拉你入群

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

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

2019-2-26 10:32:49
自问自答一波,宏循环没有问题,问题出在了循环体中因为涉及了多层宏嵌套,有的子宏循环也使用了 i 做为指标变量,导致顶层 i 赋值混乱
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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