WHILE ステートメントは、条件式を評価し、それが TRUE であれば、一連のステートメントを実行します。
>>-+-| While |----------------------+-------------------------->< '-Label--:--| While |--+-------+-' '-Label-' While |--WHILE--condition--DO--statements--END WHILE------------------|
WHILE ステートメントは、condition が TRUE である間、DO で指定されたステップを繰り返します。 プログラムの論理の中で、ご自分の責任で、必ずループが終了するようにしなければなりません。condition が UNKNOWN と評価される場合、ループは直ちに終了します。
もしあれば、Label はステートメントに名前を与えます。このことは WHILE ステートメントそれ自体の動作に影響を与えませんが、ステートメントは ITERATE および LEAVE ステートメント、または中に それらのステートメントを組み込む他のラベル付きステートメントを組み込めるようになります。2 番目の LABEL を取れるのは、最初の LABEL がある場合だけであり、そのとき 2 つの LABEL は同一でなければなりません。同じレベルの 2 つ以上のラベル付きステートメントが同じ Label を持つことはエラーではありませんが、2 番目の Label の利点は部分的に否定されます。その利点とは、これがあいまいさなしに正確に各 END をその WHILE と一致させることです。ただし、ステートメント内のラベル付きステートメントが同じ Label を持つとエラーになります。なぜなら、この場合 ITERATE と LEAVE ステートメントの動作があいまいになるからです。
DECLARE i INTEGER;
SET i = 1;
X : WHILE i <= 3 DO
...
SET i = i + 1;
END WHILE X;