在从事大型机的工作中,很多时候我们所做的都是读dump,然后反向找出VSAM/QSAM数据集中的不当记录,尤其当数据集很大的时候,精确定位一条记录很是不便。。。而这里介绍的利用浮点数反向查找就是一个捷径(比如:我们在dump里看到X'C411570A',如果能快速算出-4439.039,再在数据集中搜索-4439.039,相信很容易就能锁定到你想要的目标记录),下面我们解析下,大型机是如何存储浮点数及我们又怎样快速算出其对应的十进制数据。
我们知道在COBOL里:
COMP-1是用来定义单精度浮点数的,占四个字节(对应于HLASM/mainframe assembler里的E定义)
COMP-2是用来定义双精度浮点数的,占八个字节(对应于HLASM/mainframe assembler里的D定义)
具体内部存储见下图:
解析如下:
第0位(最左边的bit位为第0位,以此类推)是符号位,0为正,1为负。
第1—7位是指数位,初始值为X'40',如果小数点左移1位,