我在编译时遇到了两个我无法弄清楚的错误。 “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.
COMPUTE TOTAL = FUNCTION SUM(INTS(1:NUM-OF-INTS))
(1:NUM-OF-INTS)
不是下标。该格式用于引用修改;也就是说,从数据项中选择一个子串是USAGE DISPLAY
。您似乎将其用作整个表的数组切片。
改用这个:
COMPUTE TOTAL = FUNCTION SUM(INTS(ALL))
带有
ALL
的SUM
下标会将所有数字加在一起。然后将结果值移动到TOTAL
.