codecamp

COBOL 文件组织

文件组织是指记录如何在文件中进行组织。有不同类型的文件的组织,以提高访问记录的效率。以下是文件组织方案的类型:

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

在该章节中提及的语法及其各自的术语,仅涉及它们在程序中的用法。使用这些语法的完整程序在上一章“COBOL-文件处理”中讨论。

顺序文件组织

顺序文件由按照顺序存储和访问的记录组成。以下是顺序文件组织的关键属性:

  • 记录可以按顺序读取。读取第10条记录时,应该先阅读前面的9条记录。

  • 记录按顺序写入。记录间不能插入新纪录。新记录总是插入在该文件的末尾。

  • 将记录放入顺序文件后,则无法删除,缩短或延长的记录。

  • 记录的顺序,一旦插入,就永远不会改变。

  • 记录是可以更新的。如果新的记录的长度与旧记录的长度相同,则可以覆盖记录。

  • 按顺序输出文件是打印的好选择。

语法

以下是顺序文件组织的语法:

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

相对文件组织

相对文件由依据相对地址排序的记录组成。以下是相对文件组织的关键属性:

  • 记录可以按顺序读取,就像顺序和索引顺序文件组织一样。

  • 记录可以使用relative key(相对键)访问。relative key表示记录相对于文件起始地址的位置。

  • 记录可以使用relative key插入。相对地址使用relative key计算。

  • 相对文件提供对记录最快的访问。

  • 这个文件系统的主要缺点是,如果某些中间记录丢失,它们也将占据空间。

语法

以下是相对文件组织的语法:

INPUT-OUTPUT SECTION.
FILE-CONTROL.
   SELECT file-name ASSIGN TO dd-name-jcl
   ORGANIZATION IS RELATIVE
   RELATIVE KEY IS rec-key
COBOL 文件处理
COBOL 文件访问模式
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

COBOL 资源

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }