目的
繰り返し実行することもできるグループとして実行される一連の文を開始します。
構文
DO [while-until-spec]|[index = iteration-spec[,iteration-spec]…]| FOREVER | LOOP;
ここで、while-until-spec は次のようになります。
WHILE(test-expression)[UNTIL(test-expression)]
または
UNTIL(test-expression)[WHILE(test-expression)]
ここで、
iteration-spec は次のようになります。
start[to-by-spec|repeat-spec][while-until-spec]
ここで、
to-by-spec は次のようになります。
TO finish[BY increment]
または
BY increment[TO finish]
ここで、repeat-spec は次のようになります。
REPEAT next
パラメーター
- test-expression
- 長さが 1 以上のビット文字列のスカラー値に評価される任意の式。test-expression は、値のビットのいずれかが 1 である場合は真となり、それ以外の場合は偽となります。test-expression はかっこで囲む必要があります。
- index
- スカラー変数への参照。
- start、next、finish、increment
- index に代入可能な式。
説明
DO 文は、グループで実行される一連の文を開始します。グループは実行不可能な文 END で終了します。
DO グループは DO 文の制御下で可変回数実行されます。
DO 文は、ON-unit として使用することはできませんが、IF 文の THEN 句または ELSE 句を含めて、あるいは WHEN 句または OTHERWISE 句のオブジェクトとして、手続き内または BEGIN ブロック内の任意の場所に記述できます。
これは無限ループになります。GOTO 文または LEAVE 文を使用するか、プログラムを終了する以外に、このループを終了する方法はありません。
これも同じです。
以下のセクションでは、各 DO 文について説明します。これらすべての説明では、グループの文が 1 回、2 回、n 回といったように実行される場合に、DO グループからグループ外に制御が渡されることも、グループ内の文がスキップされることもないと想定できます。ただし、DO グループには、IF 文、その他の DO グループ、RETURN 文、実行順序を変更する GOTO 文を含めることができます。
単純ではない DO グループについては、DO グループの DO 文を実行する以外の方法でその DO グループに最初に制御を渡すことはできません。また、手続き呼び出しまたは関数呼び出し以外の方法で単純ではない DO グループから外部に制御が移された場合は、一般に、そのグループに制御を戻すことはできません。この規則に違反すると、予期しない結果になります。