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

IBM1181: 誤ってコーディングされた DO ループ

今までは常に正常にコンパイルされてきたプログラムが、次のメッセージを出すようになることがあります。

  IBM1181I W A WHILE or UNTIL option at the end of a series DO specifications
             applies only to the last specification.

このメッセージは次のようなステートメントに対して発せられます。

DO I = 1, 2 WHILE( X = ’Z’ );

このメッセージは、この DO ループは、X = ’Z’ が真であるか否かによらず I = 1 の状態で 一度実行され、そして X = ’Z’ が真である場合、I = 2 の状態でもう一度実行されます。 以下の DO ステートメントは、上記と同じステートメントではありません (上記のステートメントの作成者が意図したものはこちらと考えられます)。

DO I = 1 WHILE( X = ’Z’ ), 2 WHILE( X = ’Z’ )

このような処理を行う場合は、ステートメントを次のようにコーディングするのが最適でしょう。

DO I = 1 TO 2 WHILE( X = ’Z’);

そして、本当に 2 回目の実行の前のみに X = ’Z’ であるか検査したいのなら、 ステートメントを次のようにコーディングするのが最適でしょう。

DO I = 1 TO 2 UNTIL( X ^= ’Z’ );

Terms of use | Feedback

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