📜  COBOL 中的文件组织

📅  最后修改于: 2022-05-13 01:55:50.499000             🧑  作者: Mango

COBOL 中的文件组织

基于记录的 COBOL 文件是记录的集合,文件组织处理记录如何存储在后备磁盘存储单元上。记录在设备上的组织方式很重要,因为这会影响记录的访问方式以及访问这些记录的延迟。

COBOL 提供 3 种不同类型的文件组织:

  • 顺序文件组织
  • 索引顺序文件组织
  • 相对文件组织

顺序文件组织:

在磁盘上组织记录的最简单方法。记录以序列化的方式一个接一个地组织。无论存储设备的类型如何,这些文件都是按顺序处理的。因此,访问此文件中的任何记录都需要访问所有以前的记录。因此,我们从第一次读取开始读取,并依次遍历每条记录,直到需要的记录或 EOF。

  • 任何记录都是一个集合字段。顺序文件可以根据称为“关键”字段的特定字段进行排序,也可以是无序的。例如,可以根据“StudentID”字段对存储学生记录的文件进行排序,这样“StudentID”值总是排序的,也可以没有任何顺序。
  • 在无序文件中插入记录很简单,我们只需在文件末尾插入记录即可。但在有序文件的情况下,这并不是那么简单,因为即使在插入之后我们也必须保持顺序。在这种情况下必须创建一个新文件,其中包含原始记录和新记录的错误顺序。
  • 从顺序文件中删除记录,无论是有序的还是无序的,都需要将整个文件重写到一个新文件中,而不会删除该记录。首先需要在文件中标识要删除的记录。记录匹配是使用关键字段完成的——提供要删除的记录的关键字段值,这些值与文件中记录的关键字段匹配。
  • 更新记录意味着不允许修改记录的字段、修改字段的长度或添加新字段。从顺序文件更新记录,无论是有序的还是无序的,都需要将整个文件重写到一个新文件中,并更新记录值。
  • 更新或删除顺序文件中的记录在计算方面都非常昂贵,因为它需要数据复制和存储,因为它需要额外的空间来存储新文件。
  • 如果要始终按顺序处理文件,则可以使用顺序文件。如果可以直接或随机访问文件,则应避免顺序组织。

句法:

INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file-name ASSIGN TO dd-name-jcl
ORGANIZATION IS SEQUENTIAL

顺序文件组织的优缺点:

  • 当文件中的大多数记录不受操作影响时,这些文件很慢,因为读取几乎所有记录以对少数记录进行操作不值得所需的资源。
  • 更新/删除记录暂时占用双倍存储空间。
  • 当文件中的大部分记录都将受到操作的影响时,对这些文件进行操作比其他类型的组织更快,因为没有要遍历的索引或要计算的记录位置。此外,由于所有记录都以连续方式存储,因此系统可以批量处理记录,从而减少所需的磁盘访问次数。
  • 尽管此文件组织在删除/更新记录时使用了额外的空间,但这种使用是暂时的,而其他文件系统则永久占用更多存储空间。该组织不使用索引,实际上从已删除的记录中恢复空间。
  • 除了磁盘,顺序文件也可以存储在更便宜的存储设备上,比如磁带。

索引顺序文件组织:

使用顺序组织无法直接访问记录,以克服使用此索引顺序文件组织。索引文件由两个文件组成——数据文件和索引文件。数据文件的创建与顺序文件一样,但也可以随机访问。索引文件由每个关键字段的值和后备存储设备上相应记录的地址组成。从索引文件中读取记录不需要读取文件中所有以前的记录,而是在索引文件中搜索给定的关键字段,一旦找到,直接访问存储的地址以读取相应的记录。

  • 文件系统根据主键从数据记录中建立索引。也可以使用称为“备用键”的其他字段来构建索引。索引文件允许您使用其任何键直接或按顺序访问记录。
  • 就像顺序组织一样,文件也可以通过索引组织顺序读取,顺序是键值的顺序。
  • 从索引文件中删除或更新记录不需要创建新文件和数据副本。但是索引文件不能存储在磁带等顺序存储设备上,它们只能存储在磁盘上。

句法:

INPUT-OUTPUT SECTION.
FILE-CONTROL.
  SELECT file-name ASSIGN TO dd-name-jcl
  ORGANIZATION IS INDEXED
  RECORD KEY IS primary-key
  ALTERNATE RECORD KEY IS rec-key

索引文件组织的优缺点:

  • 在允许直接访问的文件组织中,这些是最慢的,因为访问记录要经过多个索引级别,并且每个级别都需要磁盘访问。
  • 更新和删除记录可能需要重建索引。
  • 索引占用存储设备上的空间。
  • 删除记录后,在重建索引之前,不会完全恢复其空间。
  • 索引文件只能存储在支持直接访问的设备上,因此不能存储在磁带上。
  • 可以使用多个键,键也可以是字母数字。
  • 备用键允许重复,只有主键必须是唯一的。

相对文件组织:

相对文件组织还允许直接/随机访问存储的记录,但这种文件组织不使用索引。相反,关键字段本身被转换为实际的磁盘地址,因此无需搜索即可找到记录。这样一个关键字段的值称为“相对记录号”。相对文件中的记录按相对记录编号升序排列。与索引文件不同,只能有一个关键字段,并且必须是数字。此外,即使尚未填充所有记录,文件分配也会发生在从 1 开始到具有最高相对记录编号的记录的所有记录上。

一个简单的相对文件组织可能在键值和记录的磁盘位置之间具有一对一的相关性。例如。创建一个Student Info文件,以StudentID为记录键,取值范围从1到999,那么记录StudentID=1可以放在磁盘的第一个位置,StudentID=2放在下一个磁盘位置,以此类推。访问 StudentID=458 的记录意味着系统可以直接到磁盘位置 458 访问该记录。类似地,可以有一个不同的方案,例如,将基值添加到相对记录号。如果基值为 2000,则第一个记录键值为 2001,最后一个记录键值为 2999,给定这样的键值,我们将从中减去 2000 以获得相对记录数。

  • 插入新记录需要一个相对的记录号,以便系统可以找到相应的磁盘位置并将记录写入其中。
  • 更新一条记录也需要一个相对的记录号,以便系统可以找到相应的磁盘位置并重写记录。
  • 删除一条记录需要一个相对的记录号,以便系统可以找到相应的磁盘位置并将该记录标记为已删除。在相关文件组织中,系统并没有真正删除记录,只是将其标记为空闲。因此,相对文件通常是稀疏的,并且这些文件的空间需求大于其他类型的组织。

句法:

INPUT-OUTPUT SECTION.
FILE-CONTROL.
  SELECT file-name ASSIGN TO dd-name-jcl
  ORGANIZATION IS RELATIVE
  RELATIVE KEY IS rec-key

相对文件组织的优缺点:

  • 高存储空间要求,因为空记录也占用空间。
  • 无法从已删除的记录中恢复空间。
  • 最多只能使用一个键,并且该键必须是数字。
  • 相关文件只能存储在支持直接访问的设备上,因此不能存储在磁带上。
  • 在允许直接访问的文件组织中,这些是最快的。