在 COBOL linux 中计算平均值-计算语句错误

问题描述 投票:0回答:1

我在编译时遇到了两个我无法弄清楚的错误。 “calcavg.cob:在‘CALC-AVG’段落中:”和“calcavg.cob:30:错误:‘INTS’需要一个下标”我无法弄清楚这些。下面是程序的代码

       IDENTIFICATION DIVISION.
   PROGRAM-ID. ASSIGNMENT4.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01  NUM-OF-INTS        PIC 99.
   01  INT-ARRAY.
       05  INTS OCCURS 15 TIMES PIC 999.
   01  TOTAL              PIC 9(5)V99.
   01  AVG                PIC 9(3)V99.
   01  COUNTER            PIC 99.

   PROCEDURE DIVISION.
   MAIN-LOGIC.
       DISPLAY "Enter number of integers to average (2-15): ".
       ACCEPT NUM-OF-INTS.

       PERFORM ACCEPT-INTS
       PERFORM CALC-AVG
       DISPLAY "Average: " AVG DISPLAY "ZZZ.99".
       STOP RUN.

   ACCEPT-INTS.
       DISPLAY "Enter integers to average: ".
       PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER>NUM-OF-INTS
           DISPLAY "Integer " COUNTER ": "
           ACCEPT INTS(COUNTER)
       END-PERFORM.

   CALC-AVG.
       COMPUTE TOTAL = FUNCTION SUM(INTS(1:NUM-OF-INTS))
       COMPUTE AVG = TOTAL / NUM-OF-INTS.

   EXIT.
   
linux cobol
1个回答
0
投票
COMPUTE TOTAL = FUNCTION SUM(INTS(1:NUM-OF-INTS))

(1:NUM-OF-INTS)
不是下标。该格式用于引用修改;也就是说,从数据项中选择一个子串是
USAGE DISPLAY
。您似乎将其用作整个表的数组切片。

改用这个:

COMPUTE TOTAL = FUNCTION SUM(INTS(ALL))

带有

ALL
SUM
下标会将所有数字加在一起。然后将结果值移动到
TOTAL
.

© www.soinside.com 2019 - 2024. All rights reserved.