Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

WHILE、UNTIL を指定した DO ステートメントの例

WHILE オプションや UNTIL オプションを使用すると、指定の条件に従って、 DO グループを連続的に実行することができます。例えば、次のようになります。

  do while (A=B);

·
·
·
end;

これは、次のように書く場合と同等です。

  S:  if A=B then;
else goto R;

·
·
·
goto S; R: next statement

さらに、

  do until (A=B);

·
·
·
end;

これは、次のように書く場合と同等です。

  S:

·
·
·
if (A=B) then goto R; goto S; R: next statement

ほかのオプションが付いていない限り、DO UNTIL ステートメントで始まる DO グループは最低 1 回は実行されますが、DO WHILE ステートメントで始まる DO グループは 1 回も実行されないことがあります。 つまり、ステートメントの DO WHILE (A=B)DO UNTIL (A¬=B) は、同じではないということです。

次の例では、DO ステートメントに最初に制御が 到達したときに A¬=B であれば、 DO グループは 1 回も実行されません。

  do while(A=B) until(X=10);

ただし、A=B であれば、DO グループは実行されます。 DO グループの実行後、X=10 であれば、それ以上実行されません。 X=10 でない場合は、A がまだ B に等しい限り、さらに実行されます。

次の例では、DO グループは最低 1 回は実行され、 そのとき I は 1 です。

  do I=1 to 10 until(Y=1);

DO グループの実行後、Y=1 であれば、それ以上実行されません。 Y=1 でない場合は、デフォルトの増分値 (BY 1) が I に 加算され、I の新しい値が 10 と比較されます。 I が 10 より大きいときは、それ以上実行されませんが、 そうでないときは、新たに実行されます。

次のステートメントは、 C(I) がゼロより小さければ DO グループを 10 回実行し、 次に AB に等しい場合にのみ、 もう 1 回実行することを指定しています。

  do I = 1 to 10 while (C(I)<0),
         11 while (A = B);

Terms of use | Feedback

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