DO...LOOP
(ステートメント)

判定反復(繰り返し)を行ないます。

DO [{WHILE|UNTIL}[<条件式>]]
:
LOOP
または
DO
:
LOOP [{WHILE|UNTIL}[<条件式>]]

DO WHILEとDO UNTILは、前判定反復です。
LOOP WHILEとLOOP UNTILは、後判定反復です。
WHILE文は、条件式が満たされている間(真(0以外))は繰り返し、UNTIL文は、条件式が満たされるまで繰り返します。
<条件式>の右辺を省略すると値が真(0以外)かどうか判定します。
<条件式>を省略すると条件式を真(0以外)とみなし、WHILE文では無限ループになり、UNTIL文では前判定時には未処理で、後判定時にはループを一度だけ実行します。
DO WHILE~LOOPと同じ機能で、WHILE~WENDという構文もありますが、DO WHILE~LOOPで統一した方がよいでしょう。
DO~LOOP UNTILと同じ機能で、REPEAT~UNTILという構文もありますが、DO~LOOP UNTILで統一した方がよいでしょう。
WHILEおよびUNTILは省略が可能ですが、この場合は無限ループとなります。

DEFINT li1, li2, li3, li4, li5, li6, li7, li8, li9
|
|
DO WHILE li1 > li2
|
'前判定反復を行ないます。
|
IF li1 = 4 THEN EXIT DO
|
'li1 = 4の場合、DO~LOOPから脱出します。
|
FOR li3 = 0 TO 5
|
'FOR~NEXTの処理を5回繰り返します。
|
FOR li4 = li5 TO li6
|
'FOR~NEXTの処理をli5の値を1ずつ加算し、li6にな
'るまで繰り返します。
|
FOR li7 = 1 TO li8 STEP 2
|
'FOR~NEXTの処理を1から2ずつ加算し、li8になるま
'で繰り返します。
|
IF li2 = 2 THEN EXIT FOR
|
'li2 = 0の場合、FOR~NEXTから脱出します。
|
DO WHILE li2 < li9
|
'前判定反復を行ないます。
|
GOSUB *samp2
|
|
li9 = li9 + 1
|
|
LOOP
|
'li2 < li9になるまでGOSUB *samp2文を呼びます。
|
NEXT li7
|
'繰り返します。
|
NEXT
|
'繰り返します。
|
NEXT
|
'繰り返します。
|
li9 = 0
|
|
DO
|
'後判定反復を行ないます。
|
GOSUB *samp2
|
|
li9 = li9 + 1
|
|
LOOP UNTIL li9 < 5
|
'li9 < 5になるまでGOSUB *samp2文を呼びます。
|
LOOP
|
'繰り返します。
|