COBOL中如何用PERFORM循环12次执行MOVE语句?
COBOL中用循环简化重复MOVE操作
针对你需要重复执行12次MOVE操作的场景,用COBOL的PERFORM循环可以高效替代手动编写重复语句,以下是具体实现方式:
1. 定义循环计数器
首先在WORKING-STORAGE SECTION中声明一个计数器变量:
WORKING-STORAGE SECTION. 01 WS-COUNTER PIC 99 VALUE 0.
2. 使用PERFORM VARYING循环
在过程部中编写循环逻辑,让计数器从1到12遍历,动态替换数组下标:
PROCEDURE DIVISION. ... PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 12 MOVE BUD-NEXT-YR-BUDGET(WS-COUNTER) TO BUDNW-NEXT-YR-BUDGET(WS-COUNTER) END-PERFORM ...
3. 更简洁的替代方案(如果数组结构一致)
如果BUD-NEXT-YR-BUDGET和BUDNW-NEXT-YR-BUDGET的定义完全相同(比如都是OCCURS 12 TIMES的同类型字段),可以直接批量移动整个数组,无需循环:
MOVE BUD-NEXT-YR-BUDGET TO BUDNW-NEXT-YR-BUDGET
这种写法效率更高,代码也更简洁。
兼容老版本COBOL的写法
如果你的环境使用的是较老的COBOL版本,也可以用PERFORM ... TIMES的方式:
PROCEDURE DIVISION. ... MOVE 0 TO WS-COUNTER PERFORM 100-MOVE-BUDGET 12 TIMES ... 100-MOVE-BUDGET. ADD 1 TO WS-COUNTER MOVE BUD-NEXT-YR-BUDGET(WS-COUNTER) TO BUDNW-NEXT-YR-BUDGET(WS-COUNTER)
内容的提问来源于stack exchange,提问作者Dylan Bowen
相关产品推荐
相关产品推荐

