【问题标题】:error: syntax error, unexpected MULTIPLY, expecting Identifier错误:语法错误,意外 MULTIPLY,需要标识符
【发布时间】:2021-12-14 19:00:08
【问题描述】:

我正在尝试在 Codewars 中完成 Kata,这是我在 COBOL 中的第一个程序。任务是根据体重和身高告知 BMI。但是当我运行我的程序时,它会显示标题的错误。我正在使用 COBOL 3.1 IBM,CodeKata 中的编译器。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. BMI.
       DATA DIVISION.
       LINKAGE SECTION.
       01 WEIGHT           PIC 9(8).
       01 HEIGHT           PIC 9(8)V9(2).
       01 HEIGHT_SQ        PIC 9(10)V9(2).
       01 SUBRESULT        PIC 9(10).
       01 RESULT           PIC A(11).
       PROCEDURE DIVISION USING WEIGHT HEIGHT RESULT HEIGHT_SQ SUBRESULT.
      
        MULTIPLY HEIGHT BY HEIGHT GIVING HEIGHT_SQ.
        DIVIDE WEIGHT BY HEIGHT GIVING SUBRESULT.
      
        IF SUBRESULT > 30
          MOVE "Obese" TO RESULT
        ELSE IF SUBRESULT <= 30
          MOVE "Overweight" TO RESULT
        ELSE IF SUBRESULT <= 25
          MOVE "Normal" TO RESULT
        ELSE IF SUBRESULT <= 185
          MOVE "Underweight" TO RESULT
        END-IF.

       END PROGRAM BMI.

如果我删除前两行,我仍然会收到错误消息: 错误:语法错误,意外的 IF,需要标识符

【问题讨论】:

    标签: cobol


    【解决方案1】:

    编译器会感到困惑,因为它只看到:

           PROCEDURE DIVISION USING WEIGHT HEIGHT RESULT HEIGHT_SQ SUBRESULT
    

    结束PROCEDURE DIVISION 的USING 子句的句点位于第73 列,并且此编译器显然适用于固定格式的引用格式。 只需将该句点移到下一行,程序就会被编译。

    您可能希望查看COBOL draft standard 以了解有关参考格式的更多信息 - 或查看编译器语言参考/程序员指南。

    附加说明:对于“便携式”COBOL,您需要在 PROCEDURE DIVISION 末尾添加 GOBACK 语句(通常不需要,但不会造成伤害并导致“适用于所有环境”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多