目的
DO WHILE ステートメントは、DO WHILE 構造体の最初のステートメントであり、指定された終端ステートメントまでの間にある (終端ステートメントも含む) のステートメントのブロックを、このステートメントに指定されている論理式が真であり続ける限り、繰り返し実行します。
構文
>>-+----------------------+--DO--+------------+--+---+----------> '-DO_construct_name--:-' '-stmt_label-' '-,-' >--WHILE--(--logical_expr--)----------------------------------->< |
DO WHILE ステートメントで DO_construct_name を指定する場合、同じ DO_construct_name が指定されている END DO でその構造体を終了させます。逆に、DO WHILE ステートメント上に DO_construct_name を指定せずに、END DO で DO WHILE 構造体を終了させる場合は、END DO ステートメントに DO_construct_name を指定してはなりません。
DO WHILE ステートメントにラベルを指定する場合、同じラベルの付いたステートメントで DO WHILE 構造体を終了させなければなりません。ラベル付き DO WHILE ステートメントを同じラベルが付いている END DO ステートメントで終了させることはできますが、ラベルなし END DO ステートメントで終了させることはできません。 DO WHILE ステートメントにラベルを指定しない場合は、END DO ステートメントで DO WHILE 構造体を終了させなければなりません。
MYDO: DO 10 WHILE (I .LE. 5) ! MYDO is the construct name SUM = SUM + INC I = I + 1 10 END DO MYDO END SUBROUTINE EXAMPLE2 REAL X(10) LOGICAL FLAG1 DATA FLAG1 /.TRUE./ DO 20 WHILE (I .LE. 10) X(I) = A I = I + 1 20 IF (.NOT. FLAG1) STOP END SUBROUTINE EXAMPLE2
関連情報