我们如何消除现场的垃圾价值?

时间:2011-07-28 08:46:59

标签: cobol openvms

我有一些长度可变的csv记录,例如:

0005464560,45667759,ZAMTR ,!至ACC 12345678,DR,79.85

0006786565,34567899,ZAMTR ,!至ACC 26575443,DR,1000

我需要将每个字段分开,我需要最后一个应该是钱的字段。

但是,当我读取文件并将记录解压缩到字段中时,我发现最后一个字段在其末尾包含垃圾值。金额(金钱)字段应为8个字符,前面5个数字,1个点,最后2个数字。输入的值可以是任何值,例如13.5,1000和354.23。

    "FILE SECTION"

        FD INPUT_FILE.
            01 INPUT_REC                                   PIC X(66).

    "WORKING STORAGE SECTion"

            01 WS_INPUT_REC                                 PIC X(66).

            01 WS_AMOUNT_NUM                                PIC 9(5).9(2).
            01 WS_AMOUNT_TXT                                PIC X(8).

"MAIN SECTION"

                        UNSTRING INPUT_REC DELIMITED BY ","
                        INTO WS_ID_1, WS_ID_2, WS_CODE, WS_DESCRIPTION, WS_FLAG, WS_AMOUNT_TXT

                        MOVE WS_AMOUNT_TXT(1:8) TO WS_AMOUNT_NUM(1:8)

                        DISPLAY WS_AMOUNT_NUM

从显示中看,该值相当正常:345.23,1000,就像我将字段写入文件后一样,这就是它们的成果:

79.85 ^ M ^ @ ^ @ 137.35 ^ M ^ @

我检查了来自字段WS_AMOUNT_TXT的字段WS_AMOUNT_NUM,发现^ @是一种低值。但是,我找不到什么是^ M,它不是空格,不是高价值。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

^ M是回车。

Google Refine会对纠正这些数据有用吗?