固定形式命令コード (プログラマーが個々の演算の結果を常に指定 しなければならない) の場合とは異なり、RPG が、式の中の各演算の 結果の形式および精度を決定しなければなりません。
演算に、浮動形式、整数形式、または符号なし形式の結果が ある場合、精度はその型式の最大サイズとなります。 整数および符号なし演算は、4 バイト値を生成し、浮動演算は 8 バイト値を 生成します。
ただし、演算にパック 10 進数、ゾーン 10 進数、または 2 進数型式が ある場合、結果の精度はオペランドの精度によって異なります。
10 進演算の精度規則をよく知っておくことは重要です。これは、 比較的単純な式でも、予期しない結果が出る場合があるためです。 たとえば、乗算の 2 つのオペランドの大きさ十分である場合、乗算の結果 の小数位はゼロになります。2 つの 40 桁の数を乗算している場合、その乗算で出される 可能性のあるすべての結果を収容するために、理想的には 80 桁が必要になります。 しかし、RPG は 63 桁までの数値しかサポートしないため、 その結果は 63 桁に調整されます。この場合、結果から最大 17 桁の数字が切り捨てられることになります。
中間結果のサイズを制御するために、次の 2 組の精度規則を使用する ことができます。
実際には、数値式のコーディング時にコンパイル・リストを調べる場合に は、正確な精度について心配する必要はありません。 診断メッセージが、中間結果の小数点以下の桁数が切り捨てられていることを 示します。 式の中に割り当てが含まれている場合、命令コード拡張 (R) を コーディングすることによって、そのステートメントに関して「結果の 小数点以下の桁数」精度規則を使用すると、その小数点以下の桁数を 確保することができます。
「結果の小数点以下の桁数」精度規則が使用できない場合 (たとえば、 関係式の中などで)、組み込み関数 %DEC を使用して、副次式の結果 を小さい精度に変換し、小数点以下の桁数が失われないように することができます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.