Cobol обрабатывает несколько строк как одну строку, когда этого не должно быть

#cobol

#cobol

Вопрос:

Пытаюсь закодировать программу на cobol, и она продолжает обрабатывать несколько строк как одну строку при компиляции с opencobol (нужно использовать opencobol, я слышал, что GNU лучше), выдавая ошибки, код

        IDENTIFICATION DIVISION.
       PROGRAM-ID. InteractiveProcessing.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INVENTORY-FILE
              ASSIGN TO "C:COBOLINVENTORY-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 
  

и

 syntax error, unexpected UNIT
  

Строка, в которой появляются ошибки, является

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

Ошибки от ENTER и UNIT с двух строк вниз, и я не могу понять, почему это происходит. Изменение кавычек с одинарных на двойные только в этой строке также приводит к неожиданной ошибке завершения файла.

Комментарии:

1. Я могу только догадываться здесь, поскольку он отлично компилируется, например, в tpcg.io/Yn040ANL (который использует GnuCOBOL 2.2), может быть, у вас есть ведущие вкладки и вы занимаете максимальную область текста программы? Я предлагаю скомпилировать -Wall и проверить наличие предупреждений.

2. Backspaced в строке, а также при следующем отображении, и это как-то работает нормально. Вероятно, нужно еще немного поэкспериментировать, чтобы увидеть, что работает.

3. Я думаю , у вас там есть вкладки…

4. Возможно, вы захотите самостоятельно ответить на свой вопрос и принять это.

Ответ №1:

Проблема заключалась в том, что я использовал tab для выравнивания предложений PIC. Была такая же проблема в другой программе. Решается путем обратного перемещения вкладок, а затем просто с помощью пробела, чтобы переместить предложения в нужное место. В итоге выглядит так же, но на самом деле работает так.