Cobol在不应将多行视为一行时将其视为一行

Cobol在不应将多行视为一行时将其视为一行,cobol,Cobol,尝试编写cobol程序时,当使用opencobol编译时,它会将多行代码视为一行(必须使用opencobol,我听说GNU更好),并给出错误 代码是 IDENTIFICATION DIVISION. PROGRAM-ID. InteractiveProcessing. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INVE

尝试编写cobol程序时,当使用opencobol编译时,它会将多行代码视为一行(必须使用opencobol,我听说GNU更好),并给出错误 代码是

       IDENTIFICATION DIVISION.
       PROGRAM-ID. InteractiveProcessing.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INVENTORY-FILE
              ASSIGN TO "C:\COBOL\INVENTORY-FILE.DAT"
              ORGANIZATION IS LINE SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
       FD  INVENTORY-FILE.
       01  FILE-OUTPUT.
           05  PART-NO          PIC X(5).
           05  PART-DESC        PIC X(15).
           05  QTY-ON-HAND      PIC 9(5).
           05  UNIT-PRICE       PIC 999V99.
       WORKING-STORAGE SECTION.
       01  MORE-DATA                PIC X(3) VALUE 'YES'.
       PROCEDURE DIVISION.
       100-MAIN-MODULE.
           OPEN OUTPUT INVENTORY-FILE
           PERFORM UNTIL MORE-DATA = 'NO '
               PERFORM 200-INVENTORY-MODULE
               DISPLAY 'ENTER MORE DATA? (YES/NO)'
               ACCEPT MORE-DATA
           END-PERFORM
           CLOSE INVENTORY-FILE
           STOP RUN.
       200-INVENTORY-MODULE.
           DISPLAY 'ENTER PART NUM (5 CHARACTERS)'
           ACCEPT PART-NO
           DISPLAY 'ENTER PART DESCRIPTION (15 CHARACTERS)'
           ACCEPT PART-DESC                      
           DISPLAY 'ENTER QUANTITY ON HAND(INTEGER, UP TO 5 DIGITS)'
           ACCEPT QTY-ON-HAND
           DISPLAY 'ENTER UNIT PRICE (5 DIGITS, 2 AFTER DECIMAL)'
           ACCEPT UNIT-PRICE
           WRITE FILE-OUTPUT.
我不断听到的错误说明了这一点

'ENTER' undefined 

出现错误的行是

DISPLAY 'ENTER QUANTITY ON HAND(INTEGER, UP TO 5 DIGITS)'

错误来自两行下面的ENTER和UNIT,我不明白为什么会发生这种情况。将该行的引号从单引号更改为双引号也会出现意外的文件结束错误。

问题在于我使用tab对齐PIC子句。在另一个节目中也有同样的问题。解决方法是将制表符退格,然后使用空格键将子句放到正确的位置。最后看起来是一样的,但实际上是这样运行的。

我只能在这里猜测,因为它编译得很好,例如在(使用GnuCOBOL 2.2),也许您有前导选项卡,并且超过了最大程序文本区域?我建议使用
-Wall
进行编译,并检查警告。在行和下一个显示上退格,不知何故工作正常。可能需要更多的实验来看看什么是有效的。我想你有标签在那里…你可能想自我回答你的问题并接受它。
DISPLAY 'ENTER QUANTITY ON HAND(INTEGER, UP TO 5 DIGITS)'