LIMITS オプションでは、各種のインプリメンテーションの制限を指定します。
.-+---+-------------------------------------. | '-,-' | V .-7-. | >>-LIMITS--(----+-EXTNAME--(--+-n--+--)-----------------+-+--)->< | .-31-. | +-FIXEDBIN--(--+-63-+--+-----------+--)-+ | | .-31-. | | | '-,--+-63-+-' | | .-15-. | +-FIXEDDEC--(--+-31-+--+-----------+--)-+ | | .-15-. | | | '-,--+-31-+-' | | .-100-. | '-NAME--(--+-n---+--)-------------------'
FIXEDDEC(15,31) を指定した場合は、15 よりも大きい精度を指定した FIXED DECIMAL 変数を宣言できますが、式に 15 よりも大きい精度のオペランド が含まれていないかぎり、すべての算術演算は、最大精度として 15 を使用して行われます。
FIXEDDEC(15,31) は、FIXEDDEC(31) よりもかなり良いパフォーマンスを提供します。
FIXEDDEC(15) と FIXEDDEC(15,15) は等価であり、同様に FIXEDDEC(31) と FIXEDDEC(31,31) も等価です。
FIXEDDEC(31,15) は指定できません。
FIXEDBIN(31,63) を指定した場合は、8 バイト整数を宣言できますが、式に 8 バイト整数が含まれていない場合、整数算術演算はすべて 4 バイト整数を使用して行われます。
ただし、FIXEDBIN(31,63) または FIXEDBIN(63) オプションを指定すると、コンパイラーはデータ・タイプが混在する式に、8 バイト整数算術計算を使用する場合があります。 例えば FIXED BIN(31) の値が FIXED DEC(13) の値に加算される場合、コンパイラーは FIXED BIN の結果を生成し、LIMITS(FIXEDBIN(31,63)) が指定されていると、その結果の精度は 31 より大きくなります (FIXED DEC の精度が 9 より大きいため)。 この状況が発生すると、コンパイラーは通知メッセージ IBM2809 を発行します。
FIXEDBIN(31,63) は、FIXEDBIN(63) よりもかなり良いパフォーマンスを提供します。
FIXEDBIN(31) と FIXEDBIN(31,31) は等価であり、同様に FIXEDBIN(63) と FIXEDBIN(63,63) も等価です。
FIXEDBIN(63,31) は指定できません。
UNSIGNED FIXED BINARY の最大精度は、1 を加えた数、つまり 32 または 64 です。