2011-07-27 12 views
0

"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 < <これは私が表示WS_AMOUNT_TXT と呼ばれるし、それがクラッシュしたときに表示されたものです。

%のCOB-F-NUMVALARGINV、NUMVALまたはNUMVAL-C引数無効 %TRACE-F-TRACEBACK、シンボリックスタックダンプが 画像モジュールルーチン行のrel PCのABS PCを以下の 12月$ COBRTL 0 000000000001F2B8 000000007C2F72B8 12月$ COBRTL 0 0000000000014764 000000007C2EC764 12月$ 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

+1

に複製することに失敗しました数値。そのフィールドには、数字、小数点、スペース以外のいくつかの「迷惑メール」があります。変換しようとする前にWS_AMOUNT_TXTをクリーンアップしてください。 – NealB

答えて

1

内部関数NUMVAL を使用して変換を実行してください。何かのように...

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 を使用して、数値結果を明示的な小数点付きの表示可能な数値に変換します。

注:実行する計算量が多い場合は、効率を上げるためにPACKED-DECIMALデータ型を使用するのが最善の方法です。

+0

それは失敗しました、私は後で質問を更新します。 – lamwaiman1988

0

再定義を使用してください。

01 WS-AMOUNT-TXT-GRP。 03 WS-금액PIC X(4)。 01 WS-AMOUNT-NUMはWS-AMOUNT-TXT-GRP PIC 9(4)を再定義します。 WS_AMOUNT_TXTにあったものは何でも有効に変換することができませんでしたので、

WS-量 - TXT-GRPまたはWS-量の再= licating値の後、自動的に値がWS-量 - NUM

+0

あなたはその質問を読んだことがありますか?入力は左揃えの「数値」で、実際の小数点が含まれています。それらは一緒に追加する必要があります。あなたの提案はうまくいかないでしょう。 –

関連する問題