9型转x型 cobol_如何在COBOL中重新定义和执行PIC X子句的算术运算

你可以看一下内部函数NUMVAL。

你需要有“好”的数据显示,截至NUMVAL,大型机上,无论如何,失败,如果给定的无效数据(文本是不是有效的“编辑”编号)

COMPUTE X-TO-NUMERIC = FUNCTION NUMVAL (text-data)

你可以这样定义:

01 TEXT-NUMBER PIC X(10).

01 EDITED-NUMBER REDEFINES TEXT-NUMBER PIC 9(7).99 (or Z(6)9.99 or Z(7)9.99 or whatever)

01 X-TO-NUMERIC PIC 9(7)V99.

MOVE EDITED-NUMBER TO X-TO-NUMERIC

仍然可能失败,或者只是错误,无效的数据。

或者说,我的首选方法:

01 CONVERTED-NUMBER PIC 9(7)V99.

01 FILLER REDEFINES CONVERTED-NUMBER.

05 CN-INTEGER-PART PIC X(7).

05 CN-DECIMAL-PART PIC XX.

01 TEXT-NUMBER PIC X(10).

01 FILLER REDEFINES TEXT-NUMBER.

05 TN-INTEGER-PART PIC X(7).

05 TN-DECIMAL-POINT PIC X.

88 TN-DECIMAL-POINT VALID VALUE ".".

05 TN-DECIMAL-PART PIC XX.

IF (TN-INTEGER-PART NUMERIC)

AND (TN-DECIMAL-PART NUMERIC)

AND (TN-DECIMAL-POINT)

MOVE TN-INTEGER-PART TO CN-INTEGER-PART

MOVE TN-DECIMAL-PART TO CN-DECIMAL-PART

ELSE

deal with invalid

END-IF

不会失败,不会得到不正确的结果。

编辑:为什么我没有建议参考修改?如果仅使用文字,如果使用数据名称,仍然不像数据定义方法那样清晰和慢,那么对于人类而言,“读取”就不那么容易了,所以我改变了它们。

编辑。在这里再次引用另一个问题,我注意到:在这个例子中是。无需将CN-INTEGER-PART,CN-DECIMAL-PART,TN-INTEGER-PART或TN-DECIMAL-PART定义为数字字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值