COBOL语言数据类型转换方法

     计息是银行的一项重要业务,包括日常代理客户收、付计算客户利息和年度计息等。目前,这些工作大多数是在IBM ES9000主机的SAFE应用系统平台上进行,该系统联机程序和联机计息程序是用IBM 370汇编语言实现的。为方便汇编语言读写,在VSAM文件存储的数据中,数据存放格式进行了特殊的定义。如日期存放采用X(3)型,01年03月15日,存入EBCD码为X‘010315’。在进行年度计息时,为了实现各种复杂的运算工作,一般采用COBOL语言来实现各种运算。而采用COBOL语言读取X(3)型数据时,读出的是字符型数据,不能直接进行运算,必须转换为COBOL数据类型的数据后才能进行相应处理。如刚才的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-STORAGE SECTION. 中定义如下内容: 
WORKING-STORAGE SECTION. 
01 DATE-CASE. 
02 DATE-FIRST PIC X(3).  
02 DATE-SIGN PIC 9(4) COMP VALUE 12.;定点二进制数  
01 DATE-CHANGE REDEFINES DATE-CASE PIC 9(9) COMP-3. ;内部十进制数据 
01 DATE-HEX PIC X(3). ; 转换前数据 
01 DATE-DEC PIC S9(7)COMP-3 . ; 转换后数据 
然后,在过程部PROCEDURE DEVISION.中加入如下语句: 
PROCEDURE DEVISION. 
MOVE DATE-HEX TO DATE-FIRST . 
COMPUTE DATE-CHANGE = DATE- 
CHANGE / 1000.  
MOVE DATE-CHANGE TO DATE-DEC. 
由内部十进制转换为X(3)型 
在进行相反的转换时,要消除因COBOL语言数据类型标志“C”引起的原日期数据前多加的一个0,所以需要将转换数据乘以10,再取出前6位数据即可。 
首先,在COBOL程序WORKING-STORAGE SECTION. 中定义如下内容: 
WORKING-STORAGE SECTION. 
01 WORK-DATE PIC S9(7) COMP-3. 
01 AA REDEFINES WORK-DATE. 
02 A1 PIC X(3). 
02 A2 PIC X(1). 
01 DATE-HEX PIC X(3). ;转换后数据 
01 DATE-DEC PIC S9(7) COMP-3. 
;转换前数据 
然后,在过程部PROCEDURE DEVISION.中加入如下语句即可: 
PROCEDURE DIVISION.  
MOVE DATE-DEC TO WORK-DATE。 
COMPUTE WORK-DATE=WORK-DATE*10. 
MOVE A1 TO DATE-HEX . 



文章来自: 本站原创
引用通告地址: http://www.pjhome.net/trackback.asp?tbID=146
Tags: {216}{217}{218}
评论: 0 | 引用: -4 | 查看次数: 2054
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码:
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 500 字 | UBB代码 开启 | [img]标签 关闭