糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > RDW详解

RDW详解

时间:2021-09-05 02:49:19

相关推荐

RDW详解

概述

本文需要对Mainframe文件结构有基本的了解.

RDW是Record Descriptor Word(记录描述字)的缩写. RDW只存在变长记录(variable-length record)中,用于记录变长记录的实际长度.

对COBOL程序员,RDW是透明的.但对HLASM程序员,若要操作变长记录,了解RDW的结构就非常必要了.

约定

每条变长记录的前4个Bytes为RDW.定义文件时LRECL应该考虑RDW的长度,如LRECL=80,那么记录实际上最长只能是76Bytes,还有4Bytes是RDW.

RDW的结构.RDW前2个Bytes为binary形式(half word)的记录长度,RDW后2个Bytes恒为low-value.

RDW=记录长度+RDW长度(即4Bytes)

以下都以文件TEST.FILEA为例:

****** ***************************************

000001 1

000002 22

000003 ABCDEFGHIGKLMNOPQRSTUVWXYZ

查看

要看RDW很简单,使用SyncSort(或DFSort)把前2个Bytes转换为Display:

OUTFIL BUILD=(1,2,BI,TO=ZD),VTOF

结果:

00005

00006

00030

扩展知识(BDW)

对于VB(Variable-bloacked),还有一个叫BDW的额外数据,BDW与RDW相似,BDW则是一个块的长度.

V(RECFM=V):

记录1 记录2

VB(RECFM=VB):

块1

块2

想要看到BDW的内容则需要用IDCAM把文件的内容DUMP出来,要注意RECFM=U,声明为无格式的文件(可想象为Windows的二进制文件).这样就会把所有的内容都DUMP出来(包括BDW):

//VIEWBDW EXEC PGM=IDCAM

//VBINPUT DD DSN=TEST.FILEA,DISP=SHR,RECFM=U

//SYSIN DD *

PRINT INFILE(VBINPUT) DUMP

//SYSPRINT DD SYSOUT=*

结果:

002D000000050000F1000600 00F2F200 1E0000C1 C2C3C4C5 C6C7C8C9 D1D2D3D4 D5D6D7D8 D9E2E3E4 E5E6E7

只有3条记录,都在第一个块中.2D(16)为块的长度,2D(16)=45(10) = 4(BDW) + 4*3(RDW) + 1(记录1) + 2(记录2) + 26(记录3)

如果觉得《RDW详解》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。