「79.85」、「1000」、「212.34」などの文字列を含むシーケンシャル ファイルを読み込みます。
英数字をこの形式の数値に変換したい 00000.00 ?
これらの数値を合計して、 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).
私が得たのは予想外で、文字列はまったく同じです。左揃えで、先行ゼロ表示はありません。
どうすれば右揃えになり、先行ゼロを持つことができますか?
編集: 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 を呼び出してクラッシュしたときに表示されたものです。
%cob-f-numvalarginv、numvalまたはnumval-c引数無効な%trace-f-traceback、シンボリックスタックダンプは画像モジュールルーチンラインレルPC ABS PC DEC $ COBRTL 0 000000000001F2B8 00000000000000007C2F72B8 DEC $ COBRTL 0 00000000001474000000000000007C2000000000000000000000000000000000000000000000000000000 0000007C2ECC44 DAILY_SPLIT_REFUND_ADJ DAILY_SPLIT_REFUND_ADJ DAILY_SPLIT_REFUND_ADJ 121 00000000000000000003C4 000000000003C4 DAYANY_SPLIT_REFUND_ADJ 0 000000000000000000027131313131313A0