从单维数组中查找总数 - COBOL

时间:2018-04-24 15:26:49

标签: cobol

我需要迭代一维数组并将所有元素一起添加以找到总数。我必须使用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”。感谢所有的帮助,谢谢!

1 个答案:

答案 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,直到该计数器大于定义的最大值。