DO

DO 構文の開始を示します。DO 構文は,文または構文のブロックの繰返し実行を制御します (この繰返し実行はループと呼ばれます)。

DO 構文は,以下のいずれかの形式を取ります。

形式

整構造形式

[name:] DO [label[, ] ] [loop-control]

block
[label] term-stmt

非整構造形式

DO label[,] [loop-control]

name
(省略可能) DO 構文の名前。

label
(省略可能) 終了文を識別する文番号。

loop-control
DO の繰返し (「繰返しループ制御」を参照) または DO WHILE 文。

block
ゼロ個以上の文または構文列。

term-stmt
構文の終了文。

規則と振る舞い

整構造 DO 構文は,END DO または CONTINUE 文によって終了します。整構造 DO 文が文番号を含んでいる場合,終了文は同じ文番号によって識別されなくてはなりません。文番号がない場合,終了文は END DO 文でなくてはなりません。

整構造 DO 文で構文名が指定されている場合,ブロックを終了させる END DO 文でも同じ名前が宣言されていなくてはなりません。整構造 DO 文で構文名が指定されていない場合,ブロックを終了させる END DO 文で名前を指定することはできません。

非整構造 DO 構文は,非整構造 DO 文で指定された文番号によって識別される実行文 (または構文) によって終了します。非整構造 DO 構文は他の非整構造 DO 構文と終了文を共有することができます。整構造 DO 構文は終了文を共有することはできません。

以下のものは,非整構造 DO 構文の終了文になることはできません。

非整構造 DO 構文は,Fortran 95 と Fortran 90 の廃止予定事項です。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

CONTINUECYCLEDO WHILEDO 構文EXIT実行制御

次の例は,(繰返し数も DO WHILE 文も含んでいない) 単純な整構造 DO 構文を示しています。

	DO
		READ *, N
		IF (N == 0) STOP
		CALL SUBN
	END DO

DO ブロックは,値ゼロが読み込まれるまで繰り返して実行されます。DO 構文は値ゼロが読み込まれた時点で終了します。

次の例は,名前付き整構造 DO 構文を示しています。

	LOOP_1:	DO I = 1, N
			A(I) = C * B(I)
		END DO LOOP_1

次の例は,共有終了文を持つ非整構造 DO 構文を示しています。

		DO 20 I = 1, N
		DO 20 J = 1 + I, N
	20	RESULT(I,J) = 1.0 / REAL(I + J)

以下の 2 つのプログラムの一部は,DO 文の例を示しています。

	!	20 個の要素を持つ実数配列の偶数要素を初期化します。
		DIMENSION array(20)
		DO j = 2, 20, 2
			array(j) = 12.0
		END DO
	!	関数を 11 回実行します。
		DO k = -30, -60, -3
			int = j / 3
			isb = -9 - k
			array(isb) = MyFunc (int)
		END DO

以下の例は,DO 変数の最終値 (この場合 11) を示しています。

	DO j = 1, 10
		WRITE (*, '(I5)') j
	END DO
	WRITE (*, '(I5)') j