IF、WHILE、UNTIL、および優位でない WHEN 文節内の式は、 属性 BIT(1) NONVARYING を持つ必要があります。しかし、新旧すべての コンパイラーは、これらの文節ではどのような計算式でも 許可します。例えば、次のように記述することもできます。
dcl x fixed bin(31);
if x then ...
この IF ステートメントの意図は、次に示すステートメントと同じ意味であるかもしれません。
if x ¬= 0 then
しかし、新旧のコンパイラーとも、このステートメントを次のように解釈します。
if abs(x) ¬= 0 then
このステートメントや、これに類似したステートメントは、条件式がブールになるように コーディングしたほうが、はるかに優れています。
コンパイラー・オプション RULES(NOLAXIF) を指定すると、 コンパイラーは、属性 BIT(1) NONVARYING を持たないすべての 条件式に、E レベルのメッセージと共にフラグを立てます。 そのため、このオプションは、この良いコーディング習慣を実践するために使用できます。
RULES(NOLAXIF) を指定すると、コンパイラーは、BIT(8) 変数、 つまり Y への参照だけからなる IF 文節にもフラグを立てます。 この場合、生成されたコードは、8 ビットのうちのいずれかがオンであればこの式を真として扱いますが、 この IF 文節を Y ^= ’’b に変更したほうが良い場合があります。
RULES(NOLAXIF) オプションは、フラグが立てられた どのステートメントに対して生成されたコードでも有効になることに注意してください。