数据集记录格式 传统的z/OS数据集是面向记录的。正常使用下,它没有PC系统和UNIX系统中的字节流文件。(z/OS UNIX有字节流文件,并且字节流函数也存在于其他特定区域中。这些不是传统的数据集。) 在z/OS中,没有新行(NL)或回车换行(CR+LF)字符来指示记录的结束。在一个给定的数据集里,记录可以是定长或变长的。例如,当用ISPF编辑数据集时,每一行都是一个记录。 LRECL 最大记录长度— 数据集 DCB属性之一。 172 Chapter 5. Working with data sets 第5章 数据集操作 133 传统的数据集可以有如下五种记录格式: F-Fixed 定长不组块记录格式是指磁盘上的一个物理块就是一个逻辑记录,并且所有的块/记录大小相同。该格式很少用。 FB-Fixed Blocked 定长组块记录格式是指一些逻辑记录组合成一个物理块。这能提供有效的空间利用和操作。该格式通常适用于定长记录。 V-Variable 变长不组块记录格式是指一个逻辑记录就作为一个物理块,变长逻辑记录包含一个记录描述字(RDW),之后是数据。 记录描述字是一个4字节的用来描述记录的域。前2位包含了逻辑记录的长度(包括这4字节的RDW)。长度可以从4到32760字节。第3和第4字节必须是0,因为其他值是用来表示跨范围记录的。该格式很少被使用。 VB-Variable Blocked 变长组块记录格式,是指一个物理块由若干条变长逻辑记录组成,每条记录都有RDW描述。软件必须在块的开始处放一个附加的块描述字(BDW),里面包含了整个块的长度。 U-Undefined 无定义格式, 该格式是由没有预定义结构的变长的物理记录/块组成的。虽然这种格式可能对许多特殊的应用程序来说很有吸引力,但是它通常只用于可执行模块。 我们必须强调块和记录之间的区别。块是写在磁盘上的而记录是一个逻辑实体。 这里提到的术语在z/OS环境中都是普遍使用的。关键的术语有: ► 块大小(BLKSIZE)是针对F和FB记录的写在磁盘上的物理块大小。对V,VB和U记录格式,是数据集可以使用的最大物理块大小。 ► 逻辑记录大小(LRECL)是数据集的逻辑记录的大小(F, FB)或允许的最大逻辑记录大小(V,VB)。U格式记录没有LRECL。 ► 记录格式(RECFM)有F,FB,V,VB或U,正如前面介绍的。 这些术语都是数据控制块(DCB)特性,这是根据它们在汇编语言程序中定义的控制块来命名的。创建一个新数据集时,用户应该给这些参数指定参数值。数据集的类型和长度是根据记录格式(RECFM)和逻辑记录长度(LRECL)来决定的。固定长度的数据集的RECFM可能是F,FB,FBS等。变长数据集的RECFM可能是V,VB,VBS等。 RECFM=FB及LRECL=25是一个固定长度(FB)的数据集,记录长度为25个字节(B表示blocked)。 对一个FB数据集来说, LRECL告诉您数据集中每个记录的长度;几乎所有记录都是一样长的。FB记录中第一个数据字节在位置1。LRECL值为25的FB数据集中一条记录可能是这样的: 位置1-3: Country Code = ‘USA’ 位置4-5: State Code = ‘CA’ 块大小 是针对 F 和FB 记录的写在磁盘上的物理块大小。 RECFM 记录格式;是数据控制块特征之一。 174 173134 Introduction to the New Mainframe: z/OS Basics 新型主机介绍:z/OS基础 位置6-25: City = ‘San Jose’ 右边用12个空格填满。 RECFM=VB,LRECL=25的数据集是一个变长的数据集,最大记录长度为25个字节。 在一个VB数据集中, 记录长度可以不同。 每个记录的头四个字节包含了RDW,RDW的头两个字节包含了那条记录的长度(以字节为单位)。一条VB记录的第一个数据字节位于位置5,在4个字节的RDW之后。LRECL值为25的VB数据集的一条记录可能是这样的: 位置1-2: Length in RDW = hex 0011 = decimal 17 位置3-4: Zeros in RDW = hex 0000 = decimal 17 位置5-7: Country Code = ‘USA’ 位置8-9: State Code = ‘CA’ 位置10-17:City = ‘San Jose’