You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下COBOL计算平均值出现编译错误求助

COBOL编译错误修复方案

错误原因分析

你遇到的两个错误都指向CALC-AVG段落中的SUM函数调用:

  • calcavg.cob:30: error: 'INTS' requires one subscript:编译器无法识别INTS(1:NUM-OF-INTS)这种数组范围引用语法,它要求每个数组元素必须明确指定单个下标。
  • 段落级错误是由上述语法错误直接导致的连锁问题。

另外代码中还有一处显示格式错误:DISPLAY "Average: " AVG DISPLAY "ZZZ.99"不符合COBOL语法,不能连续使用两个DISPLAY语句指定输出格式。

修复后的代码

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 USING "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) THRU INTS(NUM-OF-INTS))
       COMPUTE AVG = TOTAL / NUM-OF-INTS.

   EXIT.

关键修复点

  • SUM函数语法修正:将INTS(1:NUM-OF-INTS)改为INTS(1) THRU INTS(NUM-OF-INTS),这是COBOL指定数组连续元素范围的标准语法,编译器可正确识别求和的元素范围。
  • 显示格式修正:合并连续的两个DISPLAY语句为DISPLAY "Average: " AVG USING "ZZZ.99",通过USING子句指定输出格式,符合COBOL显示语法规范。

内容的提问来源于stack exchange,提问作者Steve X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:44:57