全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5183 7
2011-03-25
RT,有如下程序,需要在满足条件(is=1)的情况下跳出宏循环,不知道哪里写错了,恳请高手指点,不甚感激啊!

%macro data(i);
data c&i;
a=3;
is=(a>2);
%mend data;

%macro bn;
%do i=1 %to 5;
%data(&i);
%if is=1 %then %goto ok;
%end;
%ok: put 'Yes';
run;
%mend bn;
%bn;
二维码

扫码加我 拉你入群

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

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

全部回复
2011-3-25 16:14:15
补充一下,我现在的程序会循环5次,即使满足if条件语句了也跳不出来。请大家指点!谢谢啦!
二维码

扫码加我 拉你入群

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

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

2011-3-25 22:42:02
感觉%goto语句不能用在data步里面吧?如下修改可否?
%macro bn;
%do i=1 %to 5;
data c&i;
a=3;
call symput('is',(a>3));
run;

%put &is;

%if &is %then %goto ok;
%end;

%ok: %put 'Yes';

%mend bn;
%bn;
二维码

扫码加我 拉你入群

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

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

2011-3-25 23:39:35
用call symput时必须注意,赋值和引用不能在同一个步里面,在赋值未完成之前不能引用。你在call symput后引用打印is肯定不成功。
二维码

扫码加我 拉你入群

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

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

2011-3-25 23:43:10
3# lyfyb99

用您的方法试了一下,循环能跳出来了。
但是后面如果单独引用is时会出现问题。如在原来程序上加上
data a;
b=&is;
proc print;
run;
这样引用是不成功的。
二维码

扫码加我 拉你入群

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

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

2011-3-25 23:47:46
4# 275769263

多谢指点。
不知道应该怎么修改后面才能引用is呢?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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