You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

COBOL创建DAT文件失败,提示'EmployeeFile'未定义/非文件名

问题分析与解决方案

错误原因

出现'EmployeeFile' is not defined和'EmployeeFile' is not a file name错误,核心是两个问题导致:

  • PERFORM语句语法违规:原代码中PERFORM Until-Exit缺少UNTIL终止条件,不符合COBOL语法规范,导致编译器无法正确解析前面的文件定义。
  • 字符串引号适配问题:部分COBOL编译器(如GnuCOBOL)要求字符串常量使用单引号,双引号会被解析为标识符而非文件路径字符串。

修正后的代码

IDENTIFICATION DIVISION.
PROGRAM-ID. CreateEmployeeFile.

DATA DIVISION.
FILE SECTION.
FD EmployeeFile
    LABEL RECORDS STANDARD
    VALUE OF FILE-ID IS 'EMPLOYEE.DAT'
    DATA RECORD IS EmployeeRecord.
01 EmployeeRecord.
    05 EmployeeID      PIC X(5).
    05 EmployeeName    PIC X(30).
    05 Salary          PIC 9(6)V99.

WORKING-STORAGE SECTION.
01 EOF-Switch          PIC X VALUE 'N'.
01 Temp-EmployeeID     PIC X(5).
01 Temp-EmployeeName   PIC X(30).
01 Temp-Salary         PIC 9(6)V99.
01 Counter             PIC 99 VALUE ZERO.
01 Choice              PIC 9 VALUE ZERO.

PROCEDURE DIVISION.
Begin.
    OPEN OUTPUT EmployeeFile
    PERFORM Until-Exit UNTIL EOF-Switch = 'Y'
    CLOSE EmployeeFile
    STOP RUN.

Until-Exit.
    DISPLAY "1. Add Record"
    DISPLAY "2. Exit"
    ACCEPT Choice
    EVALUATE Choice
        WHEN 1
            PERFORM Add-Record
        WHEN 2
            MOVE 'Y' TO EOF-Switch
        WHEN OTHER
            DISPLAY "Invalid choice, please enter 1 or 2"
    END-EVALUATE.

Add-Record.
    DISPLAY "Enter Employee ID: "
    ACCEPT Temp-EmployeeID
    DISPLAY "Enter Employee Name: "
    ACCEPT Temp-EmployeeName
    DISPLAY "Enter Salary: "
    ACCEPT Temp-Salary
    MOVE Temp-EmployeeID TO EmployeeID OF EmployeeRecord
    MOVE Temp-EmployeeName TO EmployeeName OF EmployeeRecord
    MOVE Temp-Salary TO Salary OF EmployeeRecord
    WRITE EmployeeRecord
    DISPLAY "Record Added Successfully".

关键修改说明

  1. 补全PERFORM终止条件:添加UNTIL EOF-Switch = 'Y',明确循环终止逻辑,修复编译器解析异常。
  2. 调整FILE-ID引号格式:将双引号改为单引号,适配多数COBOL编译器的字符串解析规则。
  3. 显式限定字段归属:MOVE操作中指定OF EmployeeRecord,避免标识符重名导致的潜在问题。
  4. 增加无效输入处理:在EVALUATE中添加WHEN OTHER分支,处理用户输入错误选项的情况,提升程序健壮性。

内容的提问来源于stack exchange,提问作者Renato D. Mejilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 17:36:30