FOR...NEXT
(ステートメント)
【SLIM準拠】

FOR~NEXTまでの区間中にある一連の命令を繰り返して実行します。

FOR <変数名> = <初期値> TO <最終値> [STEP <増分>]
:
NEXT [<変数名>]

FOR~NEXTまでの区間中にある一連の命令を、FOR行で指定した条件に従って繰り返して実行します。
<初期値>は、<変数名>で指定した変数の初期値を設定します。
<最終値>は、<変数名>で指定した変数の最終値を設定します。
<増分>は、初期値と最終値との間の増分を設定します。STEPを省略すると増分は1とみなされます。
次の場合には、FOR~NEXTは実行されずに、NEXTの次へ実行が移ります。
-
<増分>が正の値で、<初期値>が、<終値>より大きい場合。
-
<増分>が負の値で、<初期値>が、<終値>より小さい場合。
ただし、<変数>には<初期値>が代入されます。
1つのFOR~NEXTの中にはもう1つのFOR~NEXTを置くことができます(入れ子構造、ネスト構造等と呼ぶ)。
この場合、それぞれの<変数名>には別のものを使わなければなりません。
また、このとき、1つのFOR~NEXTは完全に他のFOR~NEXTの内部になければなりません。

FORとNEXTは必ず1対1に対応していなければなりません。
また、FOR~NEXTループ内へ外部からGOTOなどでジャンプして入ってきたり、逆にループ内から外部へジャンプしたりするようなプログラムは、その動作が保証されなくなります。増分を0にした場合は無限ループになります。

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
|
'繰り返します。
|