忘记您对 Windows 或 Unix/Linux 下硬盘上数据的了解。
固定长度记录(可以是记录格式 (RECFM) F 表示未阻塞,FB 表示阻塞(它们也可以是 FBS,它是固定块标准,但对于简单的一次性数据集(文件)它是等价的到 FB) 只包含数据,以及已知且不可更改的数据量。
它们包含的数据可以是任何可能的 256 位值。没有记录分隔符。
可变长度记录,(RECFM V 或 VB(VBS 是 Varible Blocked Spanned,它不是简单记录)以四个字节(记录描述符字 (RDW))为前缀,其中前两个表示记录的长度。因此它们包含控制信息和数据。没有记录分隔符(因为长度是已知的)。
VB 数据集的块也以块描述符字 (BDW) 为前缀,四个字节,前两个包含块的长度。
数据仅在块中写入和读取,由 io 例程完成解块。块大小越大,ios越少。但是,由于最大块大小小于磁盘上磁道的大小,因此最有效的阻塞是“半磁道阻塞”,其中一个记录的块大小不超过 27,998 或等于它。
固定块记录的开销较小,因为提供了唯一的信息(块大小(BLKSIZE)和最大记录长度(LRECL)(在目录中,或JCL,或由程序,特别是如果用汇编程序编写) ,不存储在数据中。
对于可变块记录,有两种类型的控制信息(BDW 和 RDW)嵌入到数据中,以及其他信息。
大型机上的程序员不需要对此了解太多。程序会处理记录,阻塞细节可以在程序外部。
这是一个 FB 块:
DATADATADATADATA
该块如何分解为固定长度的记录是在数据外部保存的。可以计算块中第三条记录的位置。有一种低级访问方法使用了这个事实。
这是一个 VB 块:
BDWRDWDATARDWDATARDWDATA
块中第三条记录的位置只有在它之前已经被io例程处理过的记录才知道。
选择错误的类型、错误的记录长度或错误的块大小会显着影响程序性能。
从大型机传输数据时,可以选择删除 RDW(如果存在)、插入分隔符、删除尾随空格等,以便数据现在看起来像本机文件。转移到大型机会经历相反的过程。
如果您要从大型机接收数据或向大型机发送数据,请仅以字符格式进行。没有“二进制”或“压缩”字段,并使用明确的符号、明确的小数位或比例因子。您将为自己省去很多麻烦,并让自己成为审计师的好书。