K歌之后
庆祝上午论文答辩结束,晚上喊了一行人出去K歌。回来之后大脑就一直处于兴奋状态了,躺在床上满脑子都在回响着《天高地厚》这一首歌,不管我是如何 地使劲想睡也还是睡不着,试了下“数羊子”的方法,依然于事无补,索性起来写点东西,正好把论文中关于COBOL程序里面数值型数据存储形式这一块东西拿 出来做一个总结,更新上博客,方便日后查阅。 论文第四章的2.1小节针对数值型(Numeric)数据在内存中的几种存储形式进行了分析比较,这里写出来的东西就是分析比较之后得出来的结果,也是我所认为毕业论文里面最精华的一块地方。 4.2.1——数值型(Numeric)在内存中的5种存储形式 数值型数据使用9型描述符,一个描述符只允许存储0-9当中的一个数字。数值型数据是COBOL程序中使用得最多的一种数据类型,数值型数据在内存中有5种存储形式,一般用USAGE子句来指定数据项在内存中的存储形式,但是USAGE子句通常可以省略,省略USAGE的条件下默认存储形式为Display类型,它表示该数值型数据在内存中以外部十进制形式存储。 (1)Display:外部十进制形式。表示数值在机器外部的表现形式,一个数字在内存中占一个字节。直接用9型描述符标识, Display关键字可以省略。 (2)COMP:定点二进制形式。这种存储形式不是将一个数字对应一个字节或者半个字节,而是先把十进制数转化成二进制数形式然后在内存中存储。因为机器存储的形式也是二进制,所以采用定点二进制存储形式的数据读取时速度最快的。COMP型数据经常用来做数学计算。COBOL规定在内存中根据数据项的长度分别用两个字节、四个字节或八个字节来存放定点二进制形式的数值。见表1。 表1 COMP型数据项长度与内存字节对应关系 PIC子句中 描述符’9′的个数 占内存空间大小 1-4 2Byte 5-9 4Byte 10-18 8Byte (3)COMP-1、COMP-2:内部浮点数形式。以内部的二进制指数形式来表示一个数,以固定长度的内存单元来存放一个数字。 COMP-1:单精度内部浮点数,默认为4个Byte。4个Byte表示一个数字,8位为指数部分、24位为数字部分。 COMP-2:双精度内部浮点数,默认为8个Byte。8个Byte表示一个数字,16位为指数部分、48位为数字部分。 注意:COMP-1和COMP-2只能使用USAGE子句进行定义,因为长度确定,不能用PIC描述符。 (4)COMP-3:内部压缩十进制。外部十进制形式一个数字在内存中占一个字节。数值型数据只用到0到9十个数字,从表2可以看出,0到9十个数字的代码前四位是相同的,见表2。 表2 外部十进制数EBCDIC编码 十进制数字 EBCDIC码 ASCII码 0 11110000 00110000 1 11110001 00110001 2 11110010 00110010 3 11110011 00110011 4 11110100 00110100 5 11110101 00110101 6 11110110 00110110 7 11110111 [...]