获取错误不太清楚为什么这是我的第一个cobol程序

获取错误不太清楚为什么这是我的第一个cobol程序,cobol,gnucobol,Cobol,Gnucobol,我正在慢慢地学习COBOL,并且正在做一些挑战来变得更好,但我有一个奇怪的问题,我似乎无法追踪,我想看看是否有其他人可以帮助我 我反复检查了A区和B区的正确列数 IDENTIFICATION DIVISION. PROGRAM-ID. CIRCLES. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. OBJECT-COMPUTER. INPUT-OUTPUT SECTI

我正在慢慢地学习COBOL,并且正在做一些挑战来变得更好,但我有一个奇怪的问题,我似乎无法追踪,我想看看是否有其他人可以帮助我

我反复检查了A区和B区的正确列数

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

将程序放入在线编译器代码+结果后,发现两个问题:

打字错误:WS-CircurFrence->WS-CircurFence 末尾缺少分隔符周期 由于您似乎不使用自由格式,而是基于列的格式,我已从该项目中删除了该选项-自由,修复了上面指定的问题,并添加了最小缩进,结果:


我考虑过可能出现的问题,但我能想到的唯一一个问题是小数点的附加规范是逗号,但这会引起错误:级别编号“14159”无效,或者可能出现错误的缩进;您可能需要重新检查是否不按制表符进行缩进。在编辑器显示的内容和编译器使用的内容之间,它们的实际大小可能不同[大多数编译器默认使用8个空格。

除了上述建议之外,我还将添加更改

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

或者,您将始终为区域打印0

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