9型转x型 cobol_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.

;转换前数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值