关于leave的问题
在学习的时候,又说道用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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
他那个只是举个例子而已,而且是乱用,又RETURN又LEAVE的.....
其实这些问某个操作码什么什么用法,自己翻翻IBM的reference就知道的,而且解释详尽,用法,示例齐全
看这里的人都不去看,非要等别人翻出来给他看
至于循环中用LEAVE,一个明显的好处就是逻辑清晰,爱不爱用看个人
1楼的程序有问题,
leave只针对于DO,与其他的IF,BEGSR,SELEC都没关系。
我一般这么写。
KEY01 SETLLFILER1
DO *HIVAL
KEY01 READEFILER1 60
*IN60 IFEQ '1'
LEAVE
ENDIF
...
ENDDO
....我问的是leave的问题呢,看重点啊,不过谢谢你.
DOW 1=1
.....
enddo
是最差的代码。
按照一楼的代码逻辑,可以不用do语句去掉do/enddo/leave,直接用if的内容。
I see.Thanks a lot!
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.
沒錯
我记得,在“胖有型”的资料里有写到,用DOW 1=1,然后leave来实现何时退出循环,就不需要考虑逻辑了啊,这样不是也需要回头想想何时退出循环么?leave 的作用域是对应do的么,即使leave出现在嵌套的if里面?
leave是退出当前循环,不是一出现IF就leave,而是看你的条件是怎么弄的:
什么情况下要退出当前循环?
注意不要制造死循环
还有,请问各位大侠,有上面好办法来代替一下指示器么,指示器说真的,不好用哦.别人写的用指示器来触发条件的真难找啊...而且又是用movea来就更加找不到,能像C一样用bull函数来代替么,真值(true or false),谢谢!