我需要迭代一维数组并将所有元素一起添加以找到总数。我必须使用Perfrom ... Varying声明,这是我到目前为止所提出的。
perform 100-read-input-file
varying emp-rec-calls(ws-emp-total)
from 1 by ws-emp-total
until (ws-eof-flag = 'Y'
OR ws-array-counter > ws-array-max)
add emp-rec-calls(ws-emp-total) to ws-total-temp
100-read-input-file的代码只是
read input-file at end move 'y' to found-eof.
我目前得到的问题是“下标超出范围:”这一行“执行100-read-input-file”。感谢所有的帮助,谢谢!
答案 0 :(得分:1)
让我们分析您提供的代码:
perform 100-read-input-file
varying emp-rec-calls(ws-emp-total)
from 1 by ws-emp-total
until (ws-eof-flag = 'Y'
OR ws-array-counter > ws-array-max)
add emp-rec-calls(ws-emp-total) to ws-total-temp
这个循环没有任何意义。你是说执行这个循环改变数组EMP-REC-CALLS的出现X从1到X,直到在循环中永远不会设置的标志等于是或者你没有递增的计数器大于数组大小。 / p>
我认为你正在努力实现这样的目标:
PERFORM VARYING WS-ARRAY-COUNTER
FROM 1 BY 1
UNTIL WS-ARRAY-COUNTER > WS-ARRAY-MAX
ADD EMP-REC-CALLS(WS-COUNTER) TO WS-TOTAL-TEMP
END-PERFORM
这将使循环的每次迭代(从1开始)将计数器WS-ARRAY-COUNTER改变1,直到该计数器大于定义的最大值。