我在从Mainframe系统获取的数据文件定义文档中遇到了这些术语。
我无法在任何词汇表或Google搜索中找到这些术语的定义-只有它们的提及。
有人能否解释一下这些术语的确切含义?
我在从Mainframe系统获取的数据文件定义文档中遇到了这些术语。
我无法在任何词汇表或Google搜索中找到这些术语的定义-只有它们的提及。
有人能否解释一下这些术语的确切含义?
忘记你对于在Windows或Unix/Linux下硬盘上的数据所了解的一切。
固定长度记录(可以是未阻塞的记录格式(RECFM)F,也可以是已阻塞的FB(它们也可以是Fixed Block Standard (FBS),但对于简单的单次使用数据集(文件),它等同于FB),只包含数据和一个已知且不可更改的数据量。
它们所包含的数据可以是256个位值中的任何一种。没有记录分隔符。
可变长度记录(RECFM V 或 VB(VBS是Varible Blocked Spanned,而不是简单记录))由四个字节前缀(记录描述词(RDW))开头,其中前两个指示记录的长度。因此,它们包含控制信息和数据。没有记录分隔符(因为长度是已知的)。
VB数据集的块也由块描述词(BDW),四个字节前缀,其中前两个包含块的长度。
数据仅以块形式写入和读取,并由io例程进行去块处理。块大小越大,io次数越少。但是,由于最大块大小小于磁盘上一轨道的大小,因此最有效的分块方式是“半轨道分块”,块大小为27,998以下或等于它的一条记录。
固定块记录具有较少的开销,因为只提供信息(块大小(BLKSIZE)和最大记录长度(LRECL)(在目录、JCL或程序中特别是汇编程序中)),而不存储在数据中。
对于可变块记录,除了其他信息外,还嵌入了两种类型的控制信息(BDW和RDW)与数据一起。
Mainframe上的程序员不需要太多了解这个。程序会处理记录,分块细节可以是程序外部的。
下面是一个FB块:
DATADATADATADATA
这个块如何分解为固定长度的记录是由数据之外的部分来维护的。第三条记录在块中的位置可以被计算出来。有一种低级访问方法可以利用这个事实。
这里有一个VB块:
BDWRDWDATARDWDATARDWDATA
只有在 I/O 例程处理之前的记录已知时,才能确定块中第三个记录的位置。
选择错误的类型、错误的记录长度或错误的块大小可能会显着影响程序性能。
当从主机传输数据时,可以选择取消 RDW(如果有),插入分隔符,删除尾随空格等选项,以使数据看起来像本地文件。传输到主机则经过相反的过程。
如果您要从主机接收数据或向主机发送数据,请只使用字符格式。没有"二进制"或"压缩"字段,并使用显式符号、显式小数位或比例因子。这样可以避免很多麻烦,并使您自己受到审计人员的好评。