COBOL文件创建DAT文件不成功

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

运行 COBOL 代码时出现以下错误。

“EmployeeFile”未定义 “EmployeeFile”不是文件名

这是 COBOL 代码。

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
    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
    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
    MOVE Temp-EmployeeName TO EmployeeName
    MOVE Temp-Salary TO Salary
    WRITE EmployeeRecord
    DISPLAY "Record Added Successfully".
cobol
1个回答
0
投票

文件在

ENVIRONMENT DIVISION
中指定。

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT EmployeeFile ASSIGN TO "EMPLOYEE.DAT"
        ORGANIZATION ...

在这种情况下,

ORGANIZATION
可以是
SEQUENTIAL
LINE SEQUENTIAL
,具体取决于用途。

所有条款:

    LABEL RECORDS STANDARD
    VALUE OF FILE-ID IS "EMPLOYEE.DAT"
    DATA RECORD IS EmployeeRecord

在 COBOL 85 标准中已过时,并已从后续标准中删除,应从该计划中删除。

如所写,代码仅适用于第一条记录。声明

    PERFORM Until-Exit

将执行一次并且不会“循环”。用这个代替

    PERFORM Until-Exit UNTIL EOF-Switch = 'Y'
© www.soinside.com 2019 - 2024. All rights reserved.