MAXPREC - 小数点以下の桁数の最大値

この Natural プロファイルパラメータは、Natural のコンパイラを制御するために使用されます。このオプションによって、Natural コンパイラが算術演算の結果として生成する小数点の後ろの最大桁数が決定されます。

可能な設定 7,…,29 この値によって、Natural コンパイラが算術演算の結果として生成する小数点の後ろの最大桁数が表されます。

デフォルト値 7 では、既存のアプリケーションのための上位互換性が提供されます。このようなアプリケーションは、MAXPREC=7 でカタログされ、以前と同じ結果を提供します。MAXPREC オプションをサポートしていなかった Natural バージョンでカタログされたオブジェクトは、MAXPREC=7 が設定されている場合と同様に実行されます。

中間結果用により高い精度が必要な場合、値を増やす必要があります。

MAXPREC の設定によって、ユーザー定義のフィールドおよび定数に指定できる小数点の後ろの桁数が制限されるわけではありません。ただし、このようなフィールドおよび定数の精度は、算術演算の結果の精度に影響します。これによって、選択した計算でコンパイラオプション MAXPREC を意図に反して他の計算に影響を与える値に設定することなく、拡張された精度を活用できるようになります。したがって、MAXPREC=7 が有効な場合でも、次のサンプルプログラムをカタログして実行できます。

DEFINE DATA LOCAL
1 P (P1.15)
END-DEFINE
P := P + 0.1234567890123456
END

プログラミングガイド』の「算術演算結果の精度」を参照してください。

デフォルト設定 7  
ダイナミックな指定  
セッション内の指定  
適用可能なステートメント OPTIONS  
適用可能なコマンド MAXPREC システムコマンドのオプション COMPOPT
注意:
Natural オフジェクトをカタログするために使用されている MAXPREC オプションの値を変更すると、オブジェクトソースが変更されていない場合でも、異なる結果が発生する場合があります。下記の例を参照してください。

例:

DEFINE DATA LOCAL
1 #R (P1.7)
END-DEFINE
#R := 1.0008 * 1.0008 * 1.0008
IF #R = 1.0024018 THEN ... ELSE ... END-IF

計算後の #R の値と IF ステートメントの実行は、MAXPREC の設定によって次のように異なります。

コンパイル時に有効な MAXPREC の設定 #R の値 IF ステートメントの実行される節
MAXPREC=7 1.0024018 THEN
MAXPREC=12 1.0024019 ELSE