COBOL中PERFORM...THRU...UNTIL语句初始条件为真时的执行疑问
COBOL PERFORM...UNTIL 语句执行行为解析
当UNTIL子句的条件初始为TRUE时,PARAGRAPHE-1至PARAGRAPHE-2之间的段落不会被执行。
COBOL中PERFORM ... UNTIL语句默认采用先判断后执行的逻辑(等同于显式写PERFORM ... UNTIL ... WITH TEST BEFORE):
- 首先检查
UNTIL后的终止条件是否成立 - 若条件成立,直接跳过循环体,不执行指定段落
- 若条件不成立,才执行
PARAGRAPHE-1 THRU PARAGRAPHE-2的内容,执行完成后再次检查条件,直到条件成立才终止循环
对应你的代码示例:
SET NOK TO TRUE PERFORM PARAGRAPHE-1 THRU PARAGRAPHE-2 UNTIL NOK
NOK被预先设置为TRUE,进入PERFORM时第一时间检查条件,发现已经满足终止要求,因此不会执行PARAGRAPHE-1到PARAGRAPHE-2的任何段落。
如果需要确保循环体至少执行一次,可以使用PERFORM ... UNTIL ... WITH TEST AFTER,这种写法会先执行循环体,再检查终止条件。
内容的提问来源于stack exchange,提问作者Ahmed SEDDIK
相关产品推荐
相关产品推荐

