文件组织

在创建文件时建立数据的组织。 创建文件后,可以展开该文件,但不能更改组织。

顺序组织

记录在文件中的物理顺序决定了记录的顺序。 文件中记录之间的关系不会更改,只是文件可以扩展。 记录可以是固定长度或可变长度; 没有键。

文件中的每个记录 (第一个记录除外) 都具有唯一的先行记录; 每个记录 (最后一个记录除外) 都具有唯一的后续记录。

建立索引的组织

文件中的每个记录都有一个或多个嵌入式键 (称为 键数据项); 每个键都与一个索引相关联。 索引根据关联的嵌入式记录键数据项的内容提供数据记录的逻辑路径。 已建立索引的文件必须是直接访问的存储文件。 记录可以是固定长度或可变长度。

索引文件中的每个记录都必须具有嵌入式主键数据项。 当插入,更新或删除记录时,仅通过其主键的值来标识这些记录。 因此,每个主键数据项中的值必须唯一,并且在更新记录时不得更改。 您可以在文件控制段的 RECORD KEY 子句中告诉 COBOL 主键数据项的名称。

此外,索引文件中的每条记录都可以包含一个或多个嵌入式备用键数据项。 每个备用键都提供了另一种方法来标识要检索的记录。 您可以在文件控制段的 ALTERNATE RECORD KEY 子句中告诉 COBOL 任何备用密钥数据项的名称。

用于任何特定输入/输出请求的键称为 引用键

相对组织

Think® 将文件视为一系列记录区,每个记录区包含一条记录。 每个记录区域由相对记录号标识; 访问方法根据其相对记录号存储和检索记录。 例如,第一个记录区的相对记录编号为 1,第 10 个记录区的相对记录编号为 10。 在文件中放置记录的物理顺序与存储记录的记录区域无关,因此不会影响每个记录的相对记录号。 相对文件必须是直接访问文件。 记录可以是固定长度或可变长度。

行顺序组织

在行顺序文件中,每个记录都包含以记录定界符结尾的字符序列。 定界符不计入记录的长度。

写入记录时,将在添加记录定界符之前除去任何尾部空格。 记录区域中从第一个字符到添加的记录定界符 (包括添加的记录定界符) 的字符构成一个记录并写入文件。

读取记录时,会将字符一次读取到记录区域中,直到:

  • 迂到第一个记录定界符。 将废弃记录定界符,并使用空格填充记录的其余部分。
  • 整个记录区域都填充了字符。 如果第一个未读字符是记录定界符,那么将废弃该字符。 否则,第一个未读字符将成为下一个 READ 语句读取的第一个字符。
  • 迂到文件结束。 记录区域的其余部分用空格填充。
记录长度由下列其中一项确定:
  • 请求的读取长度
  • 换行符的位置 (\n)
行顺序文件中唯一的特殊字符是换行符 (\n)。 包括 NULL (0x00) 在内的任何其他字符都是有效的,不会导致读或写错误。

写入行顺序文件的记录必须由描述为 USAGE DISPLAY 或 DISPLAY-1 的数据项或 DISPLAY 和 DISPLAY-1 项的组合组成。 如果 CHAR (EBCDIC) 编译器选项生效,那么可以使用 ASCII 或 EBCDIC 对 DISPLAY 或 DISPLAY-1 项进行编码,具体取决于数据项的 USAGE 子句中是否存在 NATIVE 短语。 分区十进制 数据项必须是无符号的,或者如果是有符号的,那么必须使用分隔符短语进行声明。

行顺序文件可以包含可打印字符和控制字符。 请注意,如果您的文件包含换行符( X'0A' ),则换行符将作为记录分隔符。

行顺序文件不支持以下子句:

  • APPLY WRITE-ONLY 子句
  • CODE-SET 子句
  • DATA RECORDS 子句
  • LABEL RECORDS 子句
  • LINAGE 子句
  • OPEN 语句的 i-O 短语
  • PADDING CHARACTER 子句
  • RECORD CONTAINS 0 子句
  • RECORD CONTAINS 子句格式 $TAG1 (例如: RECORD CONTAINS 100 到 200 个字符)
  • RECORD DELIMITER 子句
  • 录制 MODE 子句
  • RERUN 子句
  • RESERVE 子句
  • OPEN 语句的逆向短语
  • REWRITE 语句
  • 文件描述条目的 VALUE OF 子句
  • 写 ... 在推进 mnemonic-名称 之后
  • 写 ... 页面结束
  • 写 ... 在推进之前

作为注释处理的语言元素

对于其他文件 (顺序,相对和已建立索引) ,将检查以下语言元素 语法,但不会影响程序的执行:

  • APPLY WRITE-ONLY 子句
  • 关闭 ... 移去
  • 关闭 ... 不使用 REWIND
  • CODE-SET 子句
  • DATA RECORDS 子句
  • LABEL RECORDS 子句
  • MULTIPLE FILE TAPE 子句
  • 打开(O)... 向后
  • PADDING CHARACTER 子句
  • PASSWORD 子句
  • RECORD CONTAINS 0 子句
  • RECORD DELIMITER 子句
  • 录制 MODE 子句 (针对相对文件和已建立索引的文件)
  • RERUN 子句
  • RESERVE 子句
  • SAME AREA 子句
  • SAME SORT AREA 子句
  • SAME SORT-MERGE AREA 子句
  • 文件描述条目的 VALUE OF 子句

未生成任何错误消息 (LABEL RECORDS 的数据名称选项除外, USE ... 之后 ... LABEL PROCEDURE 和 GO TO MORE-LABELS 子句)。