error: syntax error, unexpected MULTIPLY, expecting Identifier

error: syntax error, unexpected MULTIPLY, expecting Identifier

我正在努力完成 Codewars 中的套路,这是我在 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,需要标识符

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

       PROCEDURE DIVISION USING WEIGHT HEIGHT RESULT HEIGHT_SQ SUBRESULT

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

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

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