GnuCOBOL编译报错'unexpected Identifier, expecting DIVISION'求助
COBOL固定格式程序编译错误排查与修正
错误原因分析
从编译错误信息和代码来看,存在以下关键问题:
- 拼写错误:第5行的
ENVIRONMENT DIVISON拼写错误,正确应为ENVIRONMENT DIVISION(缺少字母I),这直接导致编译器无法识别环境部,抛出syntax error, unexpected Identifier, expecting DIVISION错误。 - 语法不完整:
- 第7行的
01 Username PIC X(20)末尾缺少句点,COBOL中每个语句或层定义必须以句点结束。 - 第8行的
01 CharactersCount 10缺少数据类型定义,必须使用PIC子句指定数据格式,比如数字类型用PIC 9(2)(表示两位数字)。
- 第7行的
- 显示语句格式错误:第15行的
DISPLAY语句中,字符串与变量未用逗号分隔,COBOL编译器会将其视为未完成的续行,因此抛出continuation character expected错误。
修正后的完整代码
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. dnd. 000300 AUTHOR. Ishayahu Lastov. 000400 DATE-WRITTEN. 15/05/2023. 000500 ENVIRONMENT DIVISION. 000600 DATA DIVISION. 000700 01 Username PIC X(20). 000800 01 CharactersCount PIC 9(2). 000900 PROCEDURE DIVISION. 001000 DISPLAY "LaSil/IT D&D 5e". 001100 DISPLAY "What is your name?". 001200 ACCEPT Username. 001300 DISPLAY "How many characters are in group?". 001400 ACCEPT CharactersCount. 001500 DISPLAY "Hello " , Username , ". You want " , CharactersCount , " characters...". 001600 STOP RUN.
补充说明
- 固定格式COBOL的行号占1-6列,第7列是续行符(如需跨多行写语句,在第7列填非空格字符,比如
-或*),代码内容从第8列开始,你的行号格式是正确的。 - 关于自由格式:企业中确实固定格式仍有广泛使用,入门阶段先掌握固定格式有助于理解COBOL的传统语法规范,后续再学习自由格式会更顺畅。
内容的提问来源于stack exchange,提问作者Ishayahu
相关产品推荐
相关产品推荐

