如何转换字母数字并将其用于计算?

编程入门 行业动态 更新时间:2024-10-24 04:31:50
本文介绍了如何转换字母数字并将其用于计算?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我将读取一个包含一些字符串的顺序文件,例如"79.85","1000","212.34".

I will read a sequential file which include some string such as "79.85", "1000", "212.34".

我想将字母数字转换为00000.00格式的数字吗?

I want to convert the alphanumeric into number in this format 00000.00 ?

我需要将这些数字加起来并将其移动到格式为0000000.00的字段中.

I will need to add up these numbers and move it to a field in the format 0000000.00 .

我尝试过:

01 WS_AMOUNT_TXT PIC X(8). 01 WS_AMOUNT PIC 9(5).9(2). MOVE WS_AMOUNT_TXT(1:8) TO WS_AMOUNT(1:8).

我得到的是意外的,字符串是一样的.它左对齐,并且不显示任何前导零.

What I got is unexpected, the string is just as same. It is left align and no leading zero display.

如何使其正确对齐并具有前导零?

How can I made it right align and have leading zero?

我尝试了NealB的建议,但不幸的是失败了:

01 WS_AMOUNT_NUM PIC 9(5)V9(2). 01 WS_AMOUNT_DISPLAY PIC 9(5).9(2). 01 WS_AMOUNT_TXT PIC X(8). DISPLAY WS_AMOUNT_TXT COMPUTE WS_AMOUNT_NUM = FUNCTION NUMVAL (WS_AMOUNT_TXT) MOVE WS_AMOUNT_NUM TO WS_AMOUNT_DISPLAY

79.85<<这是我致电DISPLAY WS_AMOUNT_TXT时显示的内容然后崩溃了.

79.85 << this is what was displayed when I called DISPLAY WS_AMOUNT_TXT AND THEN IT CRASHED.

%COB-F-NUMVALARGINV,NUMVAL或NUMVAL-C参数无效%TRACE-F-TRACEBACK,之后是符号堆栈转储图像模块常规线型PC PC ABS PCDEC $ COBRTL 0 000000000001F2B8 000000007C2F72B8DEC $ COBRTL 0 0000000000014764 000000007C2EC764DEC $ COBRTL 0 0000000000014C44 000000007C2ECC44DAILY_SPLIT_REFUND_ADJ DAILY_SPLIT_REFUND_ADJ DAILY_SPLIT_REFUND_ADJ121 00000000000003C4 00000000000303C4DAILY_SPLIT_REFUND_ADJ 0 00000000000313A0 00000000000313A00 FFFFFFFF80271EF4 FFFFFFFF80271EF4

%COB-F-NUMVALARGINV, NUMVAL or NUMVAL-C argument invalid %TRACE-F-TRACEBACK, symbolic stack dump follows image module routine line rel PC abs PC DEC$COBRTL 0 000000000001F2B8 000000007C2F72B8 DEC$COBRTL 0 0000000000014764 000000007C2EC764 DEC$COBRTL 0 0000000000014C44 000000007C2ECC44 DAILY_SPLIT_REFUND_ADJ DAILY_SPLIT_REFUND_ADJ DAILY_SPLIT_REFUND_ADJ 121 00000000000003C4 00000000000303C4 DAILY_SPLIT_REFUND_ADJ 0 00000000000313A0 00000000000313A0 0 FFFFFFFF80271EF4 FFFFFFFF80271EF4

推荐答案

尝试使用内部函数 NUMVAL 进行转换.像...

Try using the intrinsic function NUMVAL to do the conversion. Something like...

01 WS-AMOUNT-TEXT PIC X(8). 01 WS-AMOUNT-NUM PIC 9(5)V9(2). 01 WS-AMOUNT-DISPLAY PIC 9(5).9(2). COMPUTE WS-AMOUNT-NUM = FUNCTION NUMVAL (WS-AMOUNT-TEXT) MOVE WS-AMOUNT-NUM TO WS-AMOUNT-DISPLAY

NUMVAL将数字的文本表示形式转换为数字类型.在计算中使用数字数据类型: PIC 9(5)V9(2).然后使用 MOVE 将数值结果转换为带有显式小数点的可显示量.

NUMVAL converts the text representation of a number into a numeric type. Use the numeric data type: PIC 9(5)V9(2) in your calculations. Then use MOVE to convert the numeric result into a displayable amount with explicit decimal point.

注意:如果要执行大量计算,最好使用 PACKED-DECIMAL 数据类型以提高效率.

Note: If you have a lot of calculations to perform, it might be best to use a PACKED-DECIMAL data type to improve efficiency.

更多推荐

如何转换字母数字并将其用于计算?

本文发布于:2023-10-11 23:25:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483134.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字母   数字   并将其

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!