END-PERFORM 需要,但也不需要?

问题描述 投票:0回答:1

COBOL code with terminal errors

错误信息是:

fizzbuzz.cob:12: error: PERFORM statement not terminated by END-PERFORM
fizzbuzz.cob:18: error: syntax error, unexpected END-PERFORM

我遇到这个程序的编译错误,因为它说

PERFORM
语句需要一个
END-PERFORM
,但它也说
END-PERFORM
是意外的。我很困惑为什么它似乎没有编译,这里的错误是什么?

000100 IDENTIFICATION DIVISION.
000110 AUTHOR. AMBER.
000200 PROGRAM-ID. FIZZBUZZ.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 FILE SECTION.
000600 WORKING-STORAGE SECTION.
000700 01 WS-I PIC 99 VALUE 1.
000800 01 WS-R PIC 99.
000810 01 WS-NO PIC 99.
000900 PROCEDURE DIVISION.
001000         PERFORM UNTIL WS-I = 99
001100         DIVIDE WS-I BY 3 GIVING WS-NO REMAINDER WS-R
001200             IF WS-R = 0 DISPLAY "FIZZ"
001210             ELSE DISPLAY WS-I
001220             END-IF
001230         ADD 1 TO WS-I IF WS-I < 99
001240 END-PERFORM.
001300 STOP RUN.
001400 END PROGRAM FIZZBUZZ.

目的是让程序执行

FIZZBUZZ
程序的前半部分,只需将所有可被 3 整除的数字替换为字符串“FIZZ”。

我正在使用 GnuCOBOL 进行编译。系统运行在 Pop_os 上! Linux

我尝试在程序中的几个点放置句号/句号,实际上,第一个编译错误来自于第 16 行末尾的句号。我怀疑这是格式错误。

formatting cobol fizzbuzz gnucobol
1个回答
0
投票

虽然我希望编译器指向这一行并将其标记为错误,但它没有。然而,这是导致编译错误的行,尽管有以下消息:

001230         ADD 1 TO WS-I IF WS-I < 99

“如果 WS-I < 99" followed by END-PERFRORM represent an incomplete IF statement.

© www.soinside.com 2019 - 2024. All rights reserved.