Получать ошибки не совсем уверен, почему это моя первая программа cobol - PullRequest
1 голос
/ 30 мая 2019

Я медленно изучаю COBOL и решаю некоторые задачи, чтобы выздороветь, но у меня возникла странная проблема, которую я не могу отследить, и я хотел посмотреть, сможет ли кто-нибудь еще помочь

Я дважды и трижды проверил, что должно быть в области A и B, где в их правильных числах col

IDENTIFICATION DIVISION.
    PROGRAM-ID. CIRCLES.

    ENVIRONMENT DIVISION.
    CONFIGURATION SECTION.
    SOURCE-COMPUTER.
    OBJECT-COMPUTER.

    INPUT-OUTPUT SECTION.
    FILE-CONTROL.


    DATA DIVISION.
    FILE SECTION.

    WORKING-STORAGE SECTION.
    01  WS-CONSTANTS.
        05  WS-PI              PIC 9V99999 VALUE 3.14159.
    01   WS-CIRCLE.
        05 WS-AREA              PIC 999V99 VALUE ZEROES.
        05 WS-RADIUS            PIC 9999V99 VALUE ZEROES.
        05 WS-CIRCUMFERENCE     PIC 99999V99 VALUE ZEROES.
    01   WS-DISPLAY-VALUES.
        05 WS-DISPLAY-AREA                     PIC ZZ99.99.
        05 WS-DISPLAY-CIRCUMFERENCE  PIC ZZ99.99.



    PROCEDURE DIVISION.

    0100-PROCESS-RECORDS.

        DISPLAY "Please enter radius of circle: ".
        ACCEPT WS-RADIUS.
        COMPUTE WS-CIRCUMFRENCE = 2 * WS-PI * WS-RADIUS.
        MOVE WS-CIRCUMFRENCE TO WS-DISPLAY-CIRCUMFRENCE.
        DISPLAY "Circle Circumfrence is: ", WS-DISPLAY-CIRCUMFRENCE.
        COMPUTE WS-RADIUS = WS-PI * WS-RADIUS * WS-RADIUS.
        MOVE WS-AREA TO WS-DISPLAY-AREA.
        DISPLAY "Circle area is:  ", WS-DISPLAY-AREA

        STOP RUN

сообщений компилятора:

Circles.cbl:28: error: PROCEDURE DIVISION header missing
Circles.cbl:28: error: syntax error, unexpected level-number
Circles.cbl:29: error: unknown statement '05'
Circles.cbl:30: error: unknown statement '05'
Circles.cbl:34: error: syntax error, unexpected PROCEDURE
Circles.cbl: in paragraph '0100-PROCESS-RECORDS':
Circles.cbl:40: error: 'WS-RADIUS' is not defined
Circles.cbl:41: error: 'WS-CIRCUMFRENCE' is not defined
Circles.cbl:41: error: 'WS-PI' is not defined
Circles.cbl:41: error: 'WS-RADIUS' is not defined
Circles.cbl:42: error: 'WS-CIRCUMFRENCE' is not defined
Circles.cbl:42: error: 'WS-DISPLAY-CIRCUMFRENCE' is not defined
Circles.cbl:43: error: 'WS-DISPLAY-CIRCUM' is not defined
Circles.cbl:44: error: 'WS-RADIUS' is not defined
Circles.cbl:44: error: 'WS-PI' is not defined
Circles.cbl:44: error: 'WS-RADIUS' is not defined
Circles.cbl:44: error: 'WS-RADIUS' is not defined
Circles.cbl:45: error: 'WS-AREA' is not defined
Circles.cbl:45: error: 'WS-DISPLAY-AREA' is not defined
Circles.cbl:46: error: 'WS-DISPLAY-AREA' is not defined

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

В дополнение к вышеупомянутым предложениям я также добавил бы изменение

COMPUTE WS-RADIUS = WS-PI * WS-RADIUS * WS-RADIUS.

на

COMPUTE WS-AREA = WS-PI * WS-RADIUS * WS-RADIUS.

, или вы всегда будете печатать 0 для области

2 голосов
/ 31 мая 2019

После помещения вашей программы в онлайн-компилятор (код + результаты здесь ) были замечены две проблемы:

  • опечатка: WS-CIRCUMFRENCE -> WS-CIRCUMFENCE
  • отсутствует разделительный период в конце

Поскольку вы, похоже, не используете свободный формат, а на основе столбцов я удалил эту опцию (-free из этого проекта, исправил проблемы, указанные вышеи добавил минимальный отступ, результат: работает как шарм .

Я думал о возможных проблемах, но единственной, о которой я мог подумать, была дополнительная спецификация DECIMAL-POINT IS COMMA - но это поднимает вопросerror: invalid level number '14159', или неверный отступ (это, вероятно, будет видно), вы можете захотеть еще раз проверить, что вы не делаете отступ с помощью вкладок (их фактический размер может отличаться между тем, что показывает ваш редактор, и тем, чтокомпилятор использует [по умолчанию большинство компиляторов используют размер 8 пробелов).

...