IF 構造体では、実行対象として、1 つのステートメント・ブロックのみを選択します。
>>-Block_IF_statement------------------------------------------>< >>-statement_block--------------------------------------------->< >>-+-------------------+--------------------------------------->< | .---------------. | | V | | '---ELSE_IF_block-+-' >>-+------------+---------------------------------------------->< '-ELSE_block-' >>-END_IF_statement-------------------------------------------->< |
ELSE_IF_block
>>-ELSE_IF_statement------------------------------------------->< >>-statement_block--------------------------------------------->< |
ELSE_block
>>-ELSE_statement---------------------------------------------->< >>-statement_block--------------------------------------------->< |
IF 構造体 (つまり、ブロック IF および ELSE IF ステートメント) 内のスカラー論理式は、真の値、ELSE ステートメント、または END IF ステートメントが検出されるまで、指定した順に計算されます。
IF 構造体名を指定する場合、その構造体名は IF ステートメントおよび END IF ステートメントに必ず指定が必要ですが、 ELSE IF ステートメントまたは ELSE ステートメントへの指定はオプションとなります。
! Get a record (containing a command) from the terminal DO WHICHC: IF (CMD .EQ. 'RETRY') THEN ! named IF construct IF (LIMIT .GT. FIVE) THEN ! nested IF construct ! Print retry limit exceeded CALL STOP ELSE CALL RETRY END IF ELSE IF (CMD .EQ. 'STOP') THEN WHICHC ! ELSE IF blocks CALL STOP ELSE IF (CMD .EQ. 'ABORT') THEN CALL ABORT ELSE WHICHC ! ELSE block ! Print unrecognized command END IF WHICHC END DO END