Crystal Reports  

If 式(Crystal 構文)

If 式は、最も便利な制御構造の 1 つです。If 式を使用すると、条件が真の場合にある式を評価し、条件が偽の場合にまた別の式を評価できます。

   条件式を使用する場合は、必ず Else キーワードを含めてください。含まれていないと、If 条件に合致しない値が元の書式に残る場合があります。これを回避するには、DefaultAttribute 関数を使用します(If...Else DefaultAttribute)。

ある会社で、営業部の社員には 6 パーセントのボーナスを支給し、それ以外の社員には 4 パーセントのボーナスを支給するとします。次の式では、If 式を使ってこれを実現しています。

//If の例 1
If {Employee.役職} (1 to 2) = "営業" Then
{Employee.給与} * 0.06
Else
{Employee.給与} * 0.04

この例で、条件{Employee.役職}=“営業”が真と評価された場合は、

{Employee.給与} * 0.06

式が処理されます。そうでなかった場合は、Else に続く式、つまり

{Employee.給与} * 0.04

が処理されます。

別の会社では、社員に 4 パーセントのボーナスを支給し、ボーナスの最低額を 1,000 ドルにするとします。次の例でその方法を示しますが、Else 句がないことに注目してください。この句は省略できます。この場合は必要ありません。

//If の例 2
Local CurrencyVar bonus := {Employee.給与} * 0.04;
If bonus < 1000 Then
bonus := 1000;
//最後の式は変数 'bonus' だけです
//これは、この変数の値を返し、
//それが式の結果になります
bonus

例 2 と同じ結果を得る別の方法では、Else 句を使用します。

//If の例 3
Local CurrencyVar bonus := {Employee.給与} * 0.04;
If bonus < 1000 Then
   1000
Else
bonus

次に、この会社でボーナスの最高額を 5,000 ドルにするとします。今度は、Else If 句を使用する必要があります。次の例では、Else If 句が 1 つしかありませんが、必要なだけ追加することもできます。

   1 つの If 式に使用できる Else 句は 1 つだけです。

Else 句は、If および Else If のどの条件も真でない場合に実行されます。

//If の例 4
Local CurrencyVar bonus := {Employee.給与} * 0.04;
If bonus < 1000 Then
   1000
Else If bonus > 5000 Then
   5000
Else
bonus;

ある会社で、社員が支払う予定の納税額を概算し、適切なメッセージを出力するとします。所得が 8,000 ドル未満の場合は非課税、8,000 ドル以上 20,000 ドル未満の場合は 20%、20,000 ドル以上 35,000 ドル未満の場合は 29%、35,000 ドル以上の場合は 40% が課税されます。

//If の例 5
Local CurrencyVar tax := 0;
Local CurrencyVar income := {Employee.給与};
Local StringVar message := "";
If income < 8000 Then
(
message := "なし";
tax := 0
)
Else If income >= 8000 And income < 20000 Then
(
message := "最低";
tax := (income - 8000)*0.20
)
Else If income >= 20000 And income < 35000 Then
(
message := "中間";
tax := (20000 - 8000)*0.20 + (income - 20000)*0.29
)
Else
(
message := "最高";
tax := (20000 - 8000)*0.20 + (35000 - 20000)*0.29 +
(income - 35000)*0.40
);
//小数点以下は 2 桁にする
//桁区切りにカンマを使用する
Local StringVar taxStr := CStr (tax, 2, ",");
"あなたに適用される課税率は「" & message & "」です。 " &
"課税額は約 " & taxStr & " ドルです。"
   計算の手順を単純化するために変数を使用しています。また、条件の 1 つが満たされた場合には、2 つの式が実行されます。1 つは tax 変数への代入、もう 1 つは message 変数への代入です。条件の評価の結果として複数の式を実行する方法はよく使用されます。

参照

式のグループ化