Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, コンパイラーおよびランタイム 移行ガイド

IBM1220: 無意味な比較

コードの一部をコンパイルしているときに、次の新しいメッセージが表示 されることもあります。

  IBM1220I W  Result of comparison is always constant

新しいコンパイラーは、例えば次のようなコードがあった場合にこのメ ッセージを出力します。

    DCL ZWSTRING     CHAR(80);
    DCL ZWSTRING2    CHAR(8);

    ZWSTRING = 'E R R O R';
    .....
    IF ZWSTRING2 = 'E R R O R' THEN

このメッセージが出力される理由は、「E R R O R」は最後の文字がブランク ではない CHAR(9) であるため、決して CHAR(8) フィールドに等しくなること はないからです。

このメッセージを生成するコードは、問題があるため詳しく調 べる必要があります。 実際に、このメッセージで DO ループ・ステートメントが示されている場 合に何も処置をとらなかった場合、コードで無限ループが発生する可能性が あります。 コンパイラーは、例えば次のような 3 つの実行可能ステートメントのすべてに ついてこのメッセージを出力し、最後のステートメントでは、LEAVE ステー トメントにより終了されない限りループが無限に実行されます。

    DCL ZZ9 PIC'ZZ9';
    DCL N  FIXED BIN(15);

    IF ZZ9 < 0 THEN  ...
    IF ZZ9 <= 999 THEN ...
    DO N = 1 TO 32768;  ...; END;

なお、LEAVE (または GOTO) ステートメントにより終了されるまで「無限に 」実行したいループがある場合は、このループ・ステートメントを DO FOREVER を使用してコーディングするのが最適な方法です。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)