付録C. 中間結果および算術精度
コンパイラーは、算術ステートメントを、演算子優先順位に従って実行される一連の操作として処理し、それらの演算の結果を入れる中間フィールドをセットアップします。
コンパイラーはいくつかのアルゴリズムを使用して、確保する整数および小数部の桁数を判別します。
中間結果は、次の場合に得ることができます。
- 動詞の直後に複数のオペランドが入った ADD または SUBTRACT ステートメント。
- 一連の算術演算または複数の結果フィールドを指定する COMPUTE ステートメント。
- 条件ステートメントまたは参照変更指定に含まれている算術式。
- GIVING オプションおよび複数の結果フィールドを使用する ADD、SUBTRACT、MULTIPLY、または DIVIDE
ステートメント。
- 組み込み関数をオペランドとして使用するステートメント。
例: 中間結果の計算
中間結果の精度は、デフォルト・オプション ARITH(COMPAT)
(互換モード と呼ばれる) を使用してコンパイルするか、または ARITH(EXTEND) (拡張モード と呼ばれる) を使用してコンパイルするかによって異なります。
互換モードでの算術演算の計算は、IBM
VisualAge® COBOL での場合と変わりません。
- 固定小数点の中間結果の場合は、最大 30 桁が使用されます。
- 浮動小数点組み込み関数は、長精度 (64 ビットの) 浮動小数点結果を戻します。
- 浮動小数点オペランド、分数指数、または浮動小数点組み込み関数を含む式は、浮動小数点でないすべてのオペランドが長精度浮動小数点に変換され、式の計算に浮動小数点演算が使用されるかのように評価されます。
- 浮動小数点リテラルおよび外部浮動小数点データ項目は、長精度浮動小数点に変換されてから処理されます。
拡張モードでの算術演算の計算には、次のような特性があります。
- 固定小数点の中間結果の場合は、最大 31 桁が使用されます。
- 浮動小数点組み込み関数は、拡張精度浮動小数点結果を戻します。(COBOL for Windows の場合は 80 ビットの拡張精度 IEEE 浮動小数点を使用するため、拡張精度浮動小数点結果の正確性は、Enterprise COBOL for z/OS で使用される 128 ビットの拡張精度浮動小数点と比較すると大幅に低くなります。)
- 浮動小数点オペランド、分数指数、または浮動小数点組み込み関数を含む式は、浮動小数点でないすべてのオペランドが拡張精度浮動小数点に変換され、式の計算に浮動小数点演算が使用されるかのように評価されます。
- 浮動小数点リテラルおよび外部浮動小数点データ項目は、拡張精度浮動小数点に変換されてから処理されます。
関連概念
数値データの形式
固定小数点演算と浮動小数点演算の対比
関連参照
固定小数点データと中間結果
浮動小数点データと中間結果
非算術ステートメントの算術式
ARITH
|