免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4016 | 回复: 10
打印 上一主题 下一主题

关于leave的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-19 12:25 |只看该作者 |倒序浏览
在学习的时候,又说道用DOW 1=1 实现,然后用leave来退出,我想问一下,是不是一出现if就需要leave(break)呢?leave的作用域是跟着leave么,例如:
                            MOVE   X           MAX
                           DOW 1=1
                                          IF       X>1 AND X>Y
                                          MOVE  X            MAX
                                          LEAVE
                                          ELSE IF X>1 AND  X<Y
                                          MOVE  Y             MAX
                                          LEAVE
                                          ELSE
                                          SETON                                             LR
                                          RETURN
                                          LEAVE
                                          ENDIF
                                          ENDDO

论坛徽章:
0
2 [报告]
发表于 2010-04-19 12:28 |只看该作者
还有,请问各位大侠,有上面好办法来代替一下指示器么,指示器说真的,不好用哦.别人写的用指示器来触发条件的真难找啊...而且又是用movea来就更加找不到,能像C一样用bull函数来代替么,真值(true or false),谢谢!

论坛徽章:
0
3 [报告]
发表于 2010-04-19 12:45 |只看该作者
leave是退出当前循环,不是一出现IF就leave,而是看你的条件是怎么弄的:
什么情况下要退出当前循环?

注意不要制造死循环

论坛徽章:
0
4 [报告]
发表于 2010-04-19 12:52 |只看该作者
我记得,在“胖有型”的资料里有写到,用DOW 1=1,然后leave来实现何时退出循环,就不需要考虑逻辑了啊,这样不是也需要回头想想何时退出循环么?leave 的作用域是对应do的么,即使leave出现在嵌套的if里面?

论坛徽章:
0
5 [报告]
发表于 2010-04-20 11:16 |只看该作者
The Leave (LEAVE) command ends the processing of commands in the associated DOWHILE, DOUNTIL, or DOFOR loop and passes control to the first command following the associated ENDDO command.
沒錯

论坛徽章:
0
6 [报告]
发表于 2010-04-20 12:15 |只看该作者
I see.Thanks a lot!

论坛徽章:
0
7 [报告]
发表于 2010-04-20 12:18 |只看该作者
DOW 1=1
.....
enddo
是最差的代码。

按照一楼的代码逻辑,可以不用do语句去掉do/enddo/leave,直接用if的内容。

论坛徽章:
0
8 [报告]
发表于 2010-04-20 12:22 |只看该作者
....我问的是leave的问题呢,看重点啊,不过谢谢你.

论坛徽章:
0
9 [报告]
发表于 2010-04-20 22:08 |只看该作者
1楼的程序有问题,
leave只针对于DO,与其他的IF,BEGSR,SELEC都没关系。
我一般这么写。
KEY01  SETLLFILER1
            DO   *HIVAL
KEY01  READEFILER1           60
*IN60  IFEQ '1'
            LEAVE
            ENDIF
            ...
            ENDDO

论坛徽章:
0
10 [报告]
发表于 2010-04-20 23:00 |只看该作者
他那个只是举个例子而已,而且是乱用,又RETURN又LEAVE的.....

其实这些问某个操作码什么什么用法,自己翻翻IBM的reference就知道的,而且解释详尽,用法,示例齐全

看这里的人都不去看,非要等别人翻出来给他看


至于循环中用LEAVE,一个明显的好处就是逻辑清晰,爱不爱用看个人
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP