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にした場合は無限ループになります。


DO...LOOP、EXITFOR


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