首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行Varying,直到sub等于0

执行Varying,直到sub等于0
EN

Stack Overflow用户
提问于 2016-04-14 20:59:54
回答 2查看 509关注 0票数 0

这里只有一个简短的问题,COBOL将如何处理以下语句?

代码语言:javascript
复制
MOVE ZERO TO WS-SUB-2.

然后:

代码语言:javascript
复制
PERFORM A100
        VARYING WS-SUB FROM 1 BY 1
        UNTIL WS-SUB > WS-SUB-2.

原因是我有一个性能变化,直到2个变量被比较,但"WS-SUB-2“可以是零。我只想知道"A100“会不会上演。

EN

回答 2

Stack Overflow用户

发布于 2016-07-27 23:39:04

A100永远不会执行。

PERFORM是一个具有显式循环计数器的循环,这意味着它知道每次迭代的顺序。具体发生的情况是这样的:

  • WS-SUB设置为1
  • 将计算表达式WS-SUB > WS-SUB-2
    • 如果为WS-SUB is greater than WS-SUB-2,则中断循环,继续下一个statement.
    • Else,,然后执行A100过程;最后,将WS-SUB递增1.

因为在开始时WS-SUB大于WS-SUB-2,所以执行语句会立即终止,因此永远不会执行A100

很难理解你到底想要什么。这里有一些建议:

  • 如果您希望A100至少执行一次,则可以使用以下命令:

IF WS-SUB-2 = FROM 0.将1移动到WS-SUB-2结束-If

  • 如果要执行A100 WS-SUB-2 + 1次数,则将UNTIL WS-SUB > WS-SUB-2更改为UNTIL WS-SUB > WS-SUB-2 + 1或将FROM 1更改为FROM 1
票数 0
EN

Stack Overflow用户

发布于 2017-01-25 23:13:04

不,A100不会被执行。因为默认情况下PERFORMWITH TEST BEFORE。因此,一旦执行检测到WS-SUB (1)大于WS-SUB2 (0),它就会停止。如果你想让A100执行一次,你可以使用PERFORM WITH TEST AFTER。在这种情况下,A100将运行一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36623899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档