个性化阅读
专注于IT技术分析

COBOL-文件处理动词

本文概述

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

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

  • 打开
  • 改写
  • 删除
  • 开始
  • 继续阅读
  • 阅读上一页

打开

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

通过打开文件, 没有数据传输到记录缓冲区;它只是提供访问权限。

我们可以在每次文件操作后使用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

输出如下:

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

COBOL文件处理动词

语法如下:

当文件访问方式为随机时, 以下是动词的语法:

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.

输出如下:

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

COBOL文件处理动词

当你打开文件” file2.txt”时, 它将添加一个新记录:

COBOL文件处理动词

改写

重写动词会更新记录, 但是必须以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.

赞(0)
未经允许不得转载:srcmini » COBOL-文件处理动词

评论 抢沙发

评论前必须登录!