运行 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".
文件在
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'