楼主: 邢不行
3933 4

[原创博文] 关于leave语句的问题 [推广有奖]

已卖:1906份资源

院士

10%

还不是VIP/贵宾

-

威望
1
论坛币
26755 个
通用积分
155.8944
学术水平
489 点
热心指数
509 点
信用等级
460 点
经验
53138 点
帖子
585
精华
26
在线时间
1198 小时
注册时间
2010-4-30
最后登录
2025-12-29

楼主
邢不行 在职认证  发表于 2011-3-10 14:39:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
data test;
do  i=1 to 1000;
if i=500 then leave;
end;
run;


这段代码运行下来结果是:test数据集中有一个变量i,i有一个观测为500。
说明程序在i=500的时候离开了do循环,leave语句起作用了。


data test;
do  i=1 to 1000;
if 1=500 then do x=1;leave;end;
end;
run;
我希望当i=500的时候,让x=1,然后离开do循环。
这段代码运行的结果是:数据集test有两个变量,i和x,i有一个观测是1001,x的观测时缺省的.。

这说明程序在i=500的时候没有离开do循环,而是知道i=1000的时候才离开循环。

哪位大侠能解释下,是不是说leave只能离开离他最近的那个do语句,程序2中是离开的这句话if 1=500 then do x=1;leave;end;里面的do?
二维码

扫码加我 拉你入群

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

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

关键词:Leave AVE EAV Lea test 程序

沙发
myc_sas 发表于 2011-3-10 16:22:28
如果需要你想要的结果,你需要在
if i=500 then do后面加一个分号。

data test;
        do i=1 to 1000;
                if i=500 then do;
                        x=1;
                        leave;
                end;
        end;
run;

不过这个问题很有意思,为什么没有分号,leave似乎就不起作用了呢……

藤椅
myc_sas 发表于 2011-3-10 17:28:57
请教了我的一个同事,他说leave, goto, continue这些能不用就尽量别用,尽可能用do while或者do until来取代。

板凳
邢不行 在职认证  发表于 2011-3-10 21:16:08
3# myc_sas 谢谢你! 很有帮助!
不管去哪里 只要在路上

报纸
soporaeternus 发表于 2011-3-11 07:46:53
if 1=500......
Let them be hard, but never unjust

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 06:30