COBOL - 文件处理动词

17 Mar 2025 | 6 分钟阅读

文件处理动词用于执行多个文件操作。文件处理术语如下。处理文件意味着执行所有文件操作,如读取、写入、打开、关闭等。

以下是文件处理动词列表,或者我们可以说文件处理操作:

  • 打开
  • READ
  • WRITE
  • REWRITE (重写)
  • DELETE
  • 开始
  • 关闭
  • READ NEXT (读取下一个)
  • READ PREV (读取上一个)

打开

在开始处理文件之前,首先需要打开文件。打开是执行其他任务之前需要执行的第一个文件操作。如果打开成功,那么我们才能执行其他文件操作,如读取、写入、关闭等。只有在打开文件之后,文件结构中的变量才能用于处理。

打开文件不会将数据传输到记录缓冲区;它只是提供访问。

在每次文件操作后,我们可以使用 FILE STATUS 变量来检查状态。

语法

文件可以以以下任何模式打开:

INPUT (输入)

此模式仅用于现有文件。要从文件读取,我们需要使用此模式。我们无法通过此模式对文件执行其他操作。当一个文件以 INPUT 模式打开时,下一个记录指针指向文件开头。

输出

Output 模式用于在文件中写入记录。在顺序文件中,如果记录已经存在,则该文件将被覆盖。但在索引文件和相对文件中,不会发生这种情况。

EXTEND (扩展)

此模式将记录附加到顺序文件中。在此模式下,记录将被插入到末尾。当文件以 Extend 模式打开时,下一个记录指针位于文件中的最后一个记录。

我们不能在 Random 和 Dynamic 文件的情况下使用 extend 模式。

I-O (输入输出)

I-O 是输入和输出模式。此模式读取和重写(更新)文件的记录。

READ

一旦文件以 INPUT 或 I-O 模式打开,就可以使用 READ 动词一次读取一条记录。此动词将记录发生或实例从文件复制并放置在使用 FD 定义的记录缓冲区中,然后我们可以访问它。

语法

以下是当文件访问模式为 sequential (顺序) 时的 read 动词的语法:

以下是上述语法中定义的参数:

  • NEXT RECORD (下一个记录): 这是可选的,用于顺序读取索引顺序文件。
  • INTO: 此子句也是可选的。
  • AT END (到达结尾): 当到达文件末尾时,此条件变为真。

示例

让我们看一个使用顺序组织读取现有文件的例子。这将显示文件中写入的所有记录。这里我们将使用 file.txt 文件。该文件与我们的 COBOL 程序位于同一目录中。

file.txt 文件在 C:\JTP\Cobol Tutorial\bin 目录中包含以下内容:

输出

当您编译并执行上述程序时,它将显示以下输出

COBOL File Handling Verbs

语法

以下是当文件访问模式为 random (随机) 时的 read 动词的语法:

WRITE

此动词用于将内容写入文件。要将数据插入文件,我们必须将数据移动到记录缓冲区(在 FD 条目中声明),然后将记录缓冲区的内容写入文件。

Write 语句用于通过 FROM(一个可选子句)直接从工作存储变量写入记录。

可以根据文件打开模式以两种方式将写入操作写入文件:

  • 如果文件以 OUTPUT 模式打开,则访问模式将为 sequential(顺序)。从第一条记录开始,将写入记录。如果在以 OUTPUT 模式打开之前,文件有一些数据,则可以刷新并从头开始写入。
  • 如果文件以 EXTEND 模式打开,则从最后一条记录开始,记录将被添加到文件中。

简而言之,我们可以说如果文件以 OUTPUT 模式打开,则写入操作将覆盖现有文件。如果文件以 EXTEND 模式打开,则 write 动词会将记录添加到现有文件中。

语法

以下是当文件组织为 sequential(顺序)时写入记录的语法:

以下是当文件组织为 indexed(索引)或 relative(相对)时写入记录的语法:

示例

让我们看一个例子,展示如何在组织为 sequential(顺序)的新文件中插入记录:

输出

当您编译并执行此程序时,它将显示以下输出:

COBOL File Handling Verbs

当您打开文件 'file2.txt' 时,它将添加一条新记录:

COBOL File Handling Verbs

REWRITE (重写)

Rewrite (重写) 动词更新记录,但必须以 I-O 模式打开文件才能执行重写操作。我们只能在成功读取操作后执行重写操作。

Rewrite (重写) 动词覆盖上次读取的记录。为此,我们需要使用 READ 动词读取记录,然后更改记录的内容,然后执行 REWRITE 操作以更新记录。

语法

以下是当文件组织为 sequential(顺序)时写入记录的语法:

以下是当文件组织为 indexed(索引)或 relative(相对)时写入记录的语法:

DELETE

Delete (删除) 动词用于删除在文件最新读取中读取的记录。我们只能对 indexed 和 relatives 文件使用 Delete 动词。并且必须以 I-O 模式打开文件。

无法特定删除顺序文件中的记录。

在 sequential (顺序) 访问模式下,将删除 Read 语句上次读取的记录。您需要在 random (随机) 访问模式下定义记录键才能执行删除过程。

语法

开始

我们只能对 indexed 和 relative 文件执行 start 操作。start 动词用于将文件指针放置在特定记录处。此访问模式必须是 sequential (顺序) 或 dynamic (动态) 。必须以 I-O input 模式打开文件。start 不用于检索任何记录,它仅将指针设置为下一次读取以读取记录。

语法

以下语法用于将指针放置在特定记录处:

关闭

此动词用于显式关闭文件。当您关闭文件时,文件结构中的变量将无法用于处理。并且程序和文件之间的连接丢失。

语法

关闭文件的语法:


下一个主题COBOL 内部排序