本文概述
文件处理动词用于执行多个文件操作。文件处理术语如下。处理文件意味着执行所有文件操作, 例如读取, 写入, 打开, 关闭等。
以下是文件处理动词的列表, 或者我们可以说文件处理动词:
- 打开
- 读
- 写
- 改写
- 删除
- 开始
- 关
- 继续阅读
- 阅读上一页
打开
在开始使用文件之前, 首先需要打开文件。打开是执行其他任务之前需要执行的第一个文件操作。如果打开成功, 则只有我们才能执行其他文件操作, 例如读取, 写入, 关闭等。只有在打开文件后, 文件结构中的变量才可以处理。
通过打开文件, 没有数据传输到记录缓冲区;它只是提供访问权限。
我们可以在每次文件操作后使用FILE STATUS变量检查状态。
语法如下:
OPEN <mode> file-name.
可以通过以下任意一种方式打开文件:
输入
此模式仅用于现有文件。要读取文件, 我们需要使用此模式。我们无法通过此模式对文件执行其他操作。当为INPUT打开文件时, 下一个记录指针指向文件开头的文件。
输出如下
输出模式用于将记录写入文件中。如果记录的顺序文件已经存在, 则该文件将被覆盖。但是对于索引文件和相对文件, 则不会发生。
延伸
此模式将记录追加到顺序文件中。在这种模式下, 记录将插入到末尾。在扩展模式下打开文件时, 下一个记录指针位于文件中的最后一条记录上。
对于随机和动态文件, 我们不能使用扩展模式。
输入输出
I-O是输入和输出模式。此模式读取和重写(更新)文件记录。
读
以INPUT或I-O模式打开文件后, 可以使用READ动词一次读取一条记录。这个动词从文件中复制一个记录出现或实例, 并将其放置在使用FD定义的记录缓冲区中, 然后我们可以对其进行访问。
语法如下:
文件访问模式为顺序访问时, 以下是动词的语法:
READ FILE-NAME [NEXT/PREVIOUS] RECORD [INTO identifier1]
[AT END {imperative statement}]
[NOT AT END {imperative statement}]
[END-READ]
以下是上述语法中定义的参数:
- NEXT RECORD:这是可选的, 用于顺序读取索引的顺序文件。
- INTO:此子句也是可选的。
- AT END:到达文件末尾时, 此条件变为true。
例子:
让我们看一个示例, 该示例将使用顺序组织读取现有文件。这将显示文件中写入的所有记录。在这里我们将使用file.txt文件。该文件位于我们的COBOL程序可用的同一目录中。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT Employee ASSIGN TO 'file.txtThe file'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD Employee.
01 Employee-FILE.
05 Employee-ID PIC 9(5).
05 NAME PIC A(25).
WORKING-STORAGE SECTION.
01 WS-Employee.
05 WS-Employee-ID PIC 9(5).
05 WS-NAME PIC A(25).
01 WS-EOF PIC A(1).
PROCEDURE DIVISION.
OPEN INPUT Employee.
PERFORM UNTIL WS-EOF='Y'
READ Employee INTO WS-Employee
AT END MOVE 'Y' TO WS-EOF
NOT AT END DISPLAY WS-Employee
END-READ
END-PERFORM.
CLOSE Employee.
STOP RUN.
file.txt文件在C:\ JTP \ Cobol Tutorial \ bin目录中包含以下内容:
101 Nikita Kesharwani
102 Deep Ghosh
103 Naina Kukreja
104 Akash Singh
输出如下:
当你编译并执行上述程序时, 它将显示以下输出:
语法如下:
当文件访问方式为随机时, 以下是动词的语法:
READ FILE-NAME RECORD [INTO identifier1][KEY IS key-1]
[INVALID KEY {imperative statement}]
[NOT INVALID KEY {imperative statement}]
[AT END {imperative statement}]
[NOT AT END {imperative statement}]
[END-READ]
写
该动词用于将内容写入文件。要将数据插入文件, 我们必须将数据移至记录缓冲区(在FD条目中声明), 然后将记录缓冲区的内容写入文件。
Write语句用于通过FROM(可选子句)直接从工作存储变量中写入记录。
根据文件打开模式, 可以通过两种方式将文件写入文件:
- 如果以OUTPUT模式打开文件, 则访问模式将是连续的。从第一个记录开始, 记录将被写入。在以OUTPUT模式打开之前, 如果文件中的某些数据可以刷新并从头开始写入。
- 如果以EXTEND模式打开文件, 则从最后一条记录开始, 记录将被添加到文件中。
简而言之, 可以说, 如果在OUTPUT模式下打开文件, 则写操作将覆盖现有文件。如果在EXTEND模式下打开文件, 则写动词会将记录添加到现有文件中。
语法如下:
以下是文件组织顺序时写记录的语法:
WRITE record-buffer [FROM ws-file-structure]
END-WRITE.
以下是在索引文件组织或相对文件组织时写记录的语法:
WRITE record-buffer [FROM ws-file-structure]
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Inserted'
END-WRITE.
例子:
让我们看一个示例, 该示例显示了在组织顺序的情况下如何在新文件中插入记录:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE ASSIGN TO 'file2.txt'
ORGANIZATION IS SEQUENTIAL
ACCESS IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE.
01 EMPLOYEE-FILE.
05 EMPLOYEE-ID PIC X(5).
05 NAME PIC A(10).
05 RANK PIC X(3).
WORKING-STORAGE SECTION.
01 WS-EMPLOYEE.
05 WS-EMPLOYEE-ID PIC 9(5).
05 WS-NAME PIC A(25).
05 WS-RANK PIC X(3).
PROCEDURE DIVISION.
DISPLAY 'WRITING TO A SEQUENTIAL FILE..'
OPEN EXTEND EMPLOYEE.
MOVE '100' TO EMPLOYEE-ID.
MOVE 'NIKITA' TO NAME.
MOVE '5' TO RANK.
WRITE EMPLOYEE-FILE
END-WRITE.
CLOSE EMPLOYEE.
STOP RUN.
输出如下:
编译并执行此程序时, 它将显示以下输出:
当你打开文件” file2.txt”时, 它将添加一个新记录:
改写
重写动词会更新记录, 但是必须以I-O模式打开文件才能执行重写操作。我们只有在成功读取操作之后才能执行重写操作。
重写动词将覆盖最近读取的记录。为此, 我们需要使用READ动词读取记录, 然后更改记录的内容, 然后执行REWRITE操作以更新记录。
语法如下:
以下是文件组织顺序时写记录的语法:
REWRITE record-buffer [FROM ws-file-structure]
END-REWRITE.
以下是在文件组织被索引或相对时写记录的语法:
REWRITE record-buffer [FROM ws-file-structure]
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Updated'
END-REWRITE.
删除
Delete动词用于删除记录, 该记录在文件的最新读取中读取。我们只能在索引文件和亲属文件上使用”删除”动词。并且该文件必须以I-O模式打开。
无法删除顺序文件中的记录。
在顺序访问模式下, Read语句最后一次读取的记录将被删除。并且你需要在随机访问模式下定义记录密钥以执行删除过程。
语法如下:
DELETE file-name RECORD
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'Record Deleted'
END-DELETE.
开始
我们只能对索引文件和相对文件执行启动操作。起始动词用于将文件指针放置在特定记录上。此访问模式必须是顺序的或动态的。必须在I-O输入模式下打开文件。开始不用于检索任何记录, 它仅将指针设置为下一次读取以读取记录。
语法如下:
以下是用于将指针置于特定记录的语法:
START file-name KEY IS [=, >, <, NOT, <= or >=] rec-key
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY 'File Pointer Updated'
END-START.
关
该动词用于显式关闭文件。关闭文件时, 文件结构中的变量将无法处理。并且程序和文件之间的连接丢失。
语法如下:
关闭文件的语法:
CLOSE file-name.
评论前必须登录!
注册