RULES(IBM) オプションを使うと、コンパイラーはスケールされた FIXED BINARY をサポートします。パフォーマンスについてより重大なことは、いくつかの操作により、コンパイラーは、スケールされた FIXED BINARY の結果を生成します。RULES(ANS) を指定すると、スケールされた FIXED BINARY はサポートされず、スケールされた FIXED BINARY の結果は生成されません。つまり、RULES(ANS) を指定して生成されたコードは、常に RULES(IBM) を指定して生成されたコードと少なくとも同じ速さで実行され、場合によっては実行速度が速くなります。
例えば、次のような部分コードがあるとします。
dcl (i,j,k) fixed bin(15);
.
.
.
i = j / k;RULES(IBM) を指定した場合は、割り算の結果に属性 FIXED BIN(31,16) が含まれます。つまり、割り算の前にはシフト命令が必要で、割り当てを実行するためにさらにいくつかの命令が必要になります。
RULES(ANS) のもとでは、割り算の結果は属性 FIXED BIN(15,0) をもちます。つまり、割り算の前にシフトは必要なく、割り当てを実行するために追加の命令は必要ありません。
RULES(LAXCTL) オプションを使用すると、次に示すように、固定エクステントを用いて CONTROLLED 変数を宣言してから、異なるエクステントを用いてそれを ALLOCATE することを、コンパイラーが許可します。
DECLARE X BIT(1) CTL; ALLOCATE X BIT(63);
ただし、このプログラミング方法では、コンパイラーは、固定エクステントを持つ CONTROLLED 変数が存在しないことを前提としなければなりません。したがって、これらの変数が参照されている場合は、生成されるコードの効率が大幅に低下します。
しかし、CONTROLLED 変数用の固定エクステントを、常にその長さ (範囲) が変わらない場合にのみ指定するのであれば、オプション RULES(NOLAXCTL) を指定すると、パフォーマンスが大幅に向上します。