RULES(IBM) コンパイル時オプション (デフォルト) を指定した場合、 ゼロ以外のスケール因数を持つ FIXED BIN として変数を宣言できます。 スケールされた FIXED BIN による 2 項演算、プレフィックス演算、および比較演 算は、従来のコンパイラーと同じセマンティクスを使用して実行されます。
ただし、ADD、DIVIDE、または MULTIPLY 組み込み関数は、ゼロ以外のスケ ール因数を持つ FIXED BIN の結果は生成しません。
これらの組み込み関数は、次のどちらかの条件が満たされる場合、 従来のコンパイラーでは FIXED BIN として評価されていましたが、 新しいコンパイラーでは FIXED DEC として評価されます。
例えば、新しいコンパイラーは、次の代入ステートメントの DIVIDE 組み 込み関数を FIXED DEC 式として評価します。
dcl (i,j) fixed bin(15);
dcl x fixed bin(15,2);
...
x = divide(i,j,15,2);
この例では、結果は FIXED DEC(15,2) ではなく FIXED DEC(6,1) であることに注意してください。 一般的なケースでは、(p,q) の結果は (t,s) であり、t = 1 + ceil(p/3.32)、s = ceil(q/3.32) です。 属性 FIXED DEC(p,q) を持つ結果を得るには、DECIMAL 組み込み関数をすべての FIXED BIN 引数に適用してください。 したがって、この例では、式は DIVIDE( DEC(X), DEC(Y) 15, 2 ) となります。 PRECTYPE コンパイラー・オプションを使用して、コンパイラーが精度を解釈する方法を変更することもできますが、これにより他のステートメントの解釈も変更してしまう可能性があります。
コンパイラーは、メッセージ IBM1053 を出して、この相違点にフラグを立てます。