Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


固定小数点データと中間結果

コンパイラーは、中間結果における整数および小数点以下の桁数を、決定します。

加算、減算、乗算、および除算

次の表は、加算、減算、乗算、または除算の結果として理論上可能な精度を示しています。

演算 整数桁 小数桁
+ または - (i1 または i2) + 1、どちらか大きい方 d1 または d2、どちらか大きい方
* i1 + i2 d1 + d2
/ i2 + d1 (d2 - d1) または dmax、どちらか大きい方

算術ステートメントのオペランドを十分な小数桁で定義して、最終結果の正確度が希望どおりになるようにしなければなりません。

次の表は、互換モード (つまり、デフォルトのコンパイラー・オプション ARITH(COMPAT) が有効である場合) で加算、減算、乗算、または除算を伴う算術演算の固定小数点中間結果においてコンパイラーが 保持する桁数を示しています。

i + d の値 d の値 i + dmax の値 ir 用に保持される桁数
<30 または =30 任意の値 任意の値 i 整数桁数および d 小数桁数
>30 <dmax または =dmax 任意の値 30-d 整数桁数および d 小数桁数
>dmax <30 または =30 i 整数桁数および 30-i 小数桁数
>30 30-dmax 整数桁数および dmax 小数桁数

次の表は、拡張モード (つまり、コンパイラー・オプション ARITH(EXTEND) が有効である場合) で加算、減算、乗算、または除算を伴う算術演算の固定小数点中間結果においてコンパイラーが 保持する桁数を示しています。

i + d の値 d の値 i + dmax の値 ir 用に保持される桁数
<31 または =31 任意の値 任意の値 i 整数桁数および d 小数桁数
>31 <dmax または =dmax 任意の値 31-d 整数桁数および d 小数桁数
>dmax <31 または =31 i 整数桁数および 31-i 小数桁数
>31 31-dmax 整数桁数および dmax 小数桁数

指数

指数は、式 op1 ** op2 で表されます。 op2 の特性に基づいて、コンパイラーは固定小数点数のべき乗計算を次の 3 つのいずれかの方法で処理します。

  • op2 が小数部で表されている場合は、浮動小数点命令が使用されます。
  • op2 が整数リテラルまたは定数である場合、値 d は次のように計算されます。
    d = d1 * |op2|

    また、値 i は、op1 の特性に基づいて、次のように計算されます。

    • op1 がデータ名または変数である場合は、次のように計算されます。
      i = i1 * |op2|
    • op1 がリテラルまたは定数である場合、i は、op1 ** |op2| の値の整数の桁数に等しく設定されます。

    互換モード (ARITH(COMPAT) を使用してコンパイルする場合) では、コンパイラーは i および d を計算し終えると、次の表に示すアクションを取り、べき乗計算の中間結果 ir を処理します。

    i + d の値 その他の条件 取られるアクション
    <30 任意 ir において、i の整数桁数および d の小数桁数が保持される。
    =30 op1 が奇数の桁数を持つ。 ir において、i の整数桁数および d の小数桁数が保持される。
    op1 が偶数の桁数を持つ。 op2 が整数データ名または変数である場合と同じアクション (以下を参照)。例外: リテラル 1 の累乗に計算される 30 桁の整数の場合は、ir において、i の整数桁数および d の小数桁数が保持される。
    >30 任意 op2 が整数データ名または変数である場合と同じアクション (以下を参照)

    拡張モード (ARITH(EXTEND) を使用してコンパイルする場合) では、コンパイラーは i および d を計算し終えると、次の表に示すアクションを取り、指数計算の中間結果 ir を処理します。

    i + d の値 その他の条件 取られるアクション
    <31 任意 ir において、i の整数桁数および d の小数桁数が保持される。
    =31 または >31 任意 op2 が整数データ名または変数である場合と同じアクション (以下を参照)。例外: リテラル 1 の累乗に計算される 31 桁の整数の場合は、ir において、i の整数桁数および d の小数桁数が保持される。

    op2 が負である場合は、1 という値が予備計算によって作成された結果で除算されます。使用される id の値は、上記に示された固定小数点データの除算規則に従って計算されます。

  • op2 が整数データ名または変数である場合は、dmax の小数桁数と、30-dmax (互換モード) または 31-dmax (拡張モード) 整数桁数が使用されます。op1 はそれ自体によって (|op2| - 1) 回、乗算されます (op2 がゼロ以外の場合)。

    op2 が 0 であると、結果は 1 になります。0 による除算とべき乗計算の SIZE ERROR 条件が適用されます。

9 桁を超える有効数字を持つ固定小数点の指数部は、常に 9 桁に切り捨てられます。指数がリテラルまたは定数である場合、E レベルのコンパイラー診断メッセージが発行されます。それ以外の場合は、実行時に通知メッセージが発行されます。

例: 固定小数点の算術での指数


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)