欢迎来到天天文库
浏览记录
ID:8798933
大小:229.00 KB
页数:17页
时间:2018-04-08
《cobol语言数据类型转换方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、COBOL语言数据类型转换方法计息是银行的一项重要业务,包括日常代理客户收、付计算客户利息和年度计息等。目前,这些工作大多数是在IBMES9000主机的SAFE应用系统平台上进行,该系统联机程序和联机计息程序是用IBM370汇编语言实现的。为方便汇编语言读写,在VSAM文件存储的数据中,数据存放格式进行了特殊的定义。如日期存放采用X(3)型,01年03月15日,存入EBCD码为X‘010315’。在进行年度计息时,为了实现各种复杂的运算工作,一般采用COBOL语言来实现各种运算。而采用COBOL语言读取X(3)型数据时,读出的是字符型数据,不能直接进行运算,必须转换为COBOL
2、数据类型的数据后才能进行相应处理。如刚才的X‘010315’,需要转换为内部十进制数据X‘0010315C’。本文介绍一种用COBOL语言实现字符型X(3)与内部十进制数据相互转换的方法。由X(3)型转换为内部十进制由于日期数据总是大于零,在COBOL语言的工作单元节定义变量DATE-FIRST后,再追加定义COBOL语言的最小数据单元X‘000C’,即十进制12。由于重定义DATE-CASE为DATE-CHANGE后,DATE-CHANGE是原日期数据的1000倍,于是要在过程部将DATE-CHANGE除以1000。首先,在COBOL程序WORKING-STORAGESECT
3、ION.中定义如下内容:WORKING-STORAGESECTION.01DATE-CASE.02DATE-FIRSTPICX(3). 02DATE-SIGNPIC9(4)COMPVALUE12.;定点二进制数 01DATE-CHANGEREDEFINESDATE-CASEPIC9(9)COMP-3.;内部十进制数据01DATE-HEXPICX(3).;转换前数据01DATE-DECPICS9(7)COMP-3.;转换后数据然后,在过程部PROCEDUREDEVISION.中加入如下语句:PROCEDUREDEVISION.MOVEDATE-HEXTODATE-FIRST.
4、COMPUTEDATE-CHANGE=DATE-CHANGE/1000. MOVEDATE-CHANGETODATE-DEC.由内部十进制转换为X(3)型在进行相反的转换时,要消除因COBOL语言数据类型标志“C”引起的原日期数据前多加的一个0,所以需要将转换数据乘以10,再取出前6位数据即可。首先,在COBOL程序WORKING-STORAGESECTION.中定义如下内容:WORKING-STORAGESECTION.01WORK-DATEPICS9(7)COMP-3.01AAREDEFINESWORK-DATE.02A1PICX(3).02A2PICX(1).01DAT
5、E-HEXPICX(3).;转换后数据01DATE-DECPICS9(7)COMP-3.;转换前数据然后,在过程部PROCEDUREDEVISION.中加入如下语句即可:PROCEDUREDIVISION. MOVEDATE-DECTOWORK-DATE。COMPUTEWORK-DATE=WORK-DATE*10.MOVEA1TODATE-HEX.===================================================================用法子句(USAGE子句)使用用法(USAGE)子句可以使程序设计者自由选挥数据杯内存中的存放形式
6、。譬如,数据项A和B是需要多次进行运算,如果用外部十进制形式则来回转换会大大降低运算速度,这时,可以选择A和B为定点二进制形式或内部浮点形式.如果数据项C和D轻加运算次数少,而且需要多次打印出C和D的结果,这时用外部十进制比较适合,因为它最适合打印的要求,不必再进行转换。USAGEISDISPLAY/COMPDISPLAY(标准数据形式。一个字节放一字符)COMP定点二近制形式COMP-1:内部短浮点形式COMP-2:内部长浮点形式COMP-3:内部十进制形式如果对组合项描述为某一种存放形式,则表示这个组合项的下属各初等项都是这种形式。USAGE子句指定的数据存放形式不应与PI
7、C子句指定的数据类型矛盾.长、短浮点形式己确定了内存的长度,不应再用PIC子句.用WRITE语句输出时,是直接按内存中存放数据形式输出(不加转换的).这是和用DISPLAY语句时不同的.字符处理一.STRING 语句77 A PIC X(3) VALUE ‘ABC’。77 B PIC X(5) VALUE ALL“*”。PROCEDURE DIVISON. … STRING ADELIMITEDBYSIZEINTOB. …STRING语句执行后,B中内容为AB
此文档下载收益归作者所有