错误信息是:
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 行末尾的句号。我怀疑这是格式错误。
虽然我希望编译器指向这一行并将其标记为错误,但它没有。然而,这是导致编译错误的行,尽管有以下消息:
001230 ADD 1 TO WS-I IF WS-I < 99
“如果 WS-I < 99" followed by END-PERFRORM represent an incomplete IF statement.