自由形式構文 | FOR{(MR)} 指標名 {= 開始値} {BY 増分} {TO|DOWNTO 限界} |
コード | 演算項目 1 | 拡張演算項目 2 | ||||
---|---|---|---|---|---|---|
FOR | 指標名 = 開始値 BY 増分 TO | DOWNTO 限界 |
FOR 命令は、命令のグループを開始してそのグループを処理する回数を制御 します。命令グループを処理する回数を指示するためには、指標名、開始値、 増分値、および限界値を指定します。オプションの開始値、増分値、 および限界値は、自由形式の式にすることができます。 対応する END または ENDFOR ステートメント が、このグループの終わりを指示します。 FOR グループの詳細について は、構造化プログラミング命令を参照してください。
FOR 命令の構文は次のとおりです。
FOR 指標名 { = 開始値 } { BY 増分値 } { TO | DOWNTO 限界値 } { ループ本体 } ENDFOR | END
開始値、増分値、および限界値 は、小数点以下の桁数がゼロの数値または式にすることができます。 増分値が指定されている場合、この値はゼロにはできません。
BY および TO (または DOWNTO) 文節は、どの順序でも指定できます。 "BY 2 TO 10" と "TO 10 BY 2" は両方とも可能です。
FOR 命令自体のほかに、FOR グループは、FOR および ENDFOR (また は END) ステートメントおよび ENDFOR ステートメントの条件付け標識によっても制御 されます。 FOR ステートメントの条件付け標識は、FOR 命令を開始するかどうかを 制御します。これらの標識は for ループの始めに 1 回だけ 検査されます。対応する END または ENDFOR ステートメントの条件付け標識 は、FOR グループをもう一度繰り返すかどうかを制御します。 これらの標識はそれぞれのループの終わりに検査されます。
FOR 命令は、次のように実行されます。
TO 文節が指定され、指標名の値が限界値より大きい場合、制御 は、ENDFOR ステートメント以降の最初のステートメントに渡されます。 DOWNTO が指定され、指標名が限界値より小さい場合、制御は、ENDFOR の 後の最初のステートメントに渡されます。
FOR 命令を指定する場合には次のことに留意してください。
これらの命令が FOR 命令にどのような影響を与えるかについて は、LEAVE (Do/For グループからの抜け出し)および ITER (繰り返し)を参照してください。
詳細については、構造化プログラミング命令を参照してください。
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+.... /free // Example 1 // Compute n! factorial = 1; for i = 1 to n; factorial = factorial * i; endfor; // Example 2 // Search for the last nonblank character in a field. // If the field is all blanks, "i" will be zero. // Otherwise, "i" will be the position of nonblank. for i = %len (field) downto 1; if %subst(field: i: 1) <> ' '; leave; endif; endfor; // Example 3 // Extract all blank-delimited words from a sentence. WordCnt = 0; for i = 1 by WordIncr to %len (Sentence); // Is there a blank? if %subst(Sentence: i: 1) = ' '; WordIncr = 1; iter; endif; // We've found a word - determine its length: for j = i+1 to %len(Sentence); if %subst (Sentence: j: 1) = ' '; leave; endif; endfor; // Store the word: WordIncr = j - i; WordCnt = WordCnt + 1; Word (WordCnt) = %subst (Sentence: i: WordIncr); endfor; /end-free
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.