NUMVAL および NUMVAL-C 関数は、文字ストリング (英数字または国別リテラル、あるいはクラス英数字またはクラス国別データ項目) を数値に変換します。 これらの関数を使用して、数値的に処理できるよう、フリー・フォーマット文字表現の数値を数値形式に変換します。
01 R Pic x(20) Value “- 1234.5678”.
01 S Pic x(20) Value “ $12,345.67CR”.
01 Total Usage is Comp-1.
. . .
Compute Total = Function Numval(R) + Function Numval-C(S)
NUMVAL-C は、上の例で示されているように、引数に通貨記号またはコンマ (またはその両方) が含まれているときに使用します。文字ストリングの前または後ろに代数符号を入れることができ、その符号が処理されます。引数は、デフォルト・オプション ARITH(COMPAT) (互換モード) でコンパイルするときは 18 桁を超えてはならず、ARITH(EXTEND) (拡張モード) でコンパイルするときは 31 桁を超えてはなりません (桁数には編集記号は含みません)。
NUMVAL および NUMVAL-C は、互換モードでは長精度 (64 ビット) 浮動小数点値を戻し、拡張モードでは拡張精度 (80 ビット) 浮動小数点値を戻します。これらの関数への参照は、数値データ項目への参照を表します。
最大でも、正確に長精度浮動小数点に変換できるのは 15 桁の 10 進数字までです (変換および精度に関する以下の関連参照で説明されています)。 NUMVAL または NUMVAL-C の引数が 15 桁を超える場合、ARITH(EXTEND) コンパイラー・オプションを指定して、引数の値を正確に表現できる拡張精度関数結果が戻されるようにすることをお勧めします。
NUMVAL または NUMVAL-C を使用する場合は、数値データを固定形式で静的に宣言したり、入力データを正確な方法で入力したりする必要はありません。例えば、次のように入力される数値を定義するとします。
01 X Pic S999V99 leading sign is separate.
. . .
Accept X from Console
アプリケーションのユーザーは、PICTURE 文節で定義されているとおりに正確に数値を入力しなければなりません。以下に、その例を示します。
+001.23 -300.00
しかし、NUMVAL 関数を使用する場合は、次のようにコーディングすることができます。
01 A Pic x(10).
01 B Pic S999V99.
. . .
Accept A from Console
Compute B = Function Numval(A)
入力は次のようにすることができます。
1.23 -300
関連概念
数値データの形式
データ形式の変換
Unicode および言語文字のエンコード
関連タスク
国別 (Unicode) 表現との間の変換