Skip to main content

#if

条件テキストのブロックを開始します。

説明

このマクロ・プリプロセッサ指示文は、条件テキストのブロックを開始します。この指示文は、ObjectScript 式で引数の真理値をテストして、引数の真理値が True の場合にコード・ブロックをコンパイルします。このコード・ブロックは、#else#elseIf、または #endif のいずれかの指示文で終了します。

#if <expression>
  // subsequent indented lines for specified actions

  // next preprocessor directive

ここで、<expression> は有効な ObjectScript 式です。<expression> がゼロ以外の値の場合に True になります。

以下に例を示します。

 KILL ^MyColor, ^MyNumber
#define ColorDay $ZDate($H,12)
#if $$$ColorDay="Monday"
 SET ^MyColor = "Red"
 SET ^MyNumber = 1
#elseIf $$$ColorDay="Tuesday"
 SET ^MyColor = "Orange"
 SET ^MyNumber = 2
#elseIf $$$ColorDay="Wednesday"
 SET ^MyColor = "Yellow"
 SET ^MyNumber = 3
#elseIf $$$ColorDay="Thursday"
 SET ^MyColor = "Green"
 SET ^MyNumber = 4
#elseIf $$$ColorDay="Friday"
 SET ^MyColor = "Blue"
 SET ^MyNumber = 5
#else
 SET ^MyColor = "Purple"
 SET ^MyNumber = -1
#endif
 WRITE ^MyColor, ", ", ^MyNumber

このコードは、コンパイル時に、ColorDay マクロの値を曜日の名前に設定します。#if で開始する条件文は、ColorDay の値を使用して、^MyColor 変数の値を設定する方法を決定します。このコードには、ColorDay (月曜日の後の各曜日に 1 つずつ) に適用できる複数の条件があります。これらをチェックするために、コードで #elseIf 指示文を使用します。フォールスルー・ケースは、#else 指示文に続くコードです。#endif は、条件文を終了します。

任意個数のスペースで #if と <expression> を区切ることもできます。ただし、<expression> 内ではスペースが認められません。同一行にて <expression> に続くものはコメントと見なされるので、解析はされません。

Note:

リテラル値の 0 および 1 以外の引数を持つ #if をメソッド・コードで使用すると、コンパイラでは、スーパークラスにあるそのメソッドを呼び出さず、サブクラスにコードを生成します。このコードの生成を回避するには、0 または 1 の値の条件をテストします。この値を指定したほうが簡潔なコードになり、パフォーマンスも最適化できます。

FeedbackOpens in a new tab