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