IF 指示文構文

一般コンパイラ指示文IF および IF DEFINED 指示文は,条件付きコンパイル構文を指定します。IF は,論理式が .TRUE..FALSE. のどちらなのかを検証します。IF DEFINED は,シンボルが定義されているかどうかを検証します。

形式

cDEC$ IF (expr)
- または -
cDEC$ IF DEFINED (name)

block
[cDEC$ ELSEIF (expr)
block] ...
[cDEC$ ELSE
block]
cDEC$ ENDIF

c
次のいずれか:C (または c),!* (「一般コンパイラ指示文の構文規則」を参照)

expr
.TRUE. または .FALSE. に評価される論理式。

name
定義されているかどうかを検証するシンボルの名前。

block
IF 指示文構文の論理式の値に応じてコンパイルされる (またはコンパイルされない) 実行文です。

規則と振る舞い

IF および IF DEFINED 指示文構文は ENDIF 指示文で終わり,1 つまたは複数の ELSEIF 指示文と,最高で 1 つの ELSE 指示文を含むことができます。指示文中の論理条件がコンパイル時に .TRUE. に評価され,IF 構文中のそれ以前の全条件が .FALSE. に評価されていれば,その指示文ブロックに含まれている文がコンパイルされます。

nameDEFINE 指示文で定義することができ,オプションとして整数値を代入することができます。シンボルが定義されていれば,値が代入されているかどうかにかかわらず,IF DEFINED (name).TRUE. に評価されます。それ以外の場合は .FALSE. に評価されます。

IF または IF DEFINED 指示文中の論理条件が .TRUE. ならば,その IF または IF DEFINED ブロック中の文はコンパイルされます。条件が .FALSE. ならば,制御は次の ELSEIF または ELSE 指示文に移されます (存在する場合)。

ELSEIF 指示文中の論理式が .TRUE. ならば,その ELSEIF ブロック中の文はコンパイルされます。式が .FALSE. ならば,制御は次の ELSEIF または ELSE 指示文に移されます (存在する場合)。

IF 構文中のそれ以前のすべての論理条件が .FALSE. に評価されたために,制御が ELSE 指示文に達した場合,ELSE ブロック中の文が無条件にコンパイルされます。

指示文の中の論理式では,.LT., <, .GT., >, .EQ., ==.LE., <=, .GE., >=, .NE., /=, .EQV., .NEQV., .NOT., .AND., .OR.,および .XOR. を含む Fortran の任意の論理演算子,関係演算子,またはシンボルを使用することができます。論理式はどれだけ複雑であってもかまいませんが,指示文全体が 1 つの行に収まっていなくてはなりません。

構文中の各指示文は,cDEC$ の代わりに !MS$ で始めることができます。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

DEFINEUNDEFINEIF 構文一般コンパイラ指示文

	! 以下のコードがコンパイルされ,実行されると,
	! 出力は式の 1 つが .TRUE. と評価されるか,
	! すべてが .FALSE. と評価されるかどうかに依存します。

	!DEC$ DEFINE flag=3
	!DEC$ IF (flag .LT. 2)
	   WRITE (*,*) "This is compiled if flag less than 2."
	!DEC$ ELSEIF (flag >= 8)
	   WRITE (*,*) "Or this compiled if flag greater than &
	                or equal to 8."
	!DEC$ ELSE
	   WRITE (*,*) "Or this compiled if all preceding &
	                conditions .FALSE."
	!DEC$ ENDIF
	END