If 식(Crystal 구문)
If 식은 가장 유용한 제어 구조 중 하나입니다. 이 식을 사용하면 조건이 true일 경우 식을 평가하고 조건이 true가 아닐 경우 다른 식을 평가합니다.
![]() |
---|
조건부 수식으로 서식을 지정할 때는 항상 Else 키워드를 포함시키십시오. 그렇지 않으면 If 조건을 충족하지 않는 값이 원래의 서식을 잃을 수 있습니다. 이를 방지하려면 DefaultAttribute 함수(If...Else DefaultAttribute)를 사용하십시오. |
예제
어떤 회사에서 영업부 직원에게는 6%의 상여금을 지급하고 나머지 직원들에게는 4%의 상여금을 지급하려고 합니다. If 식을 사용하는 다음 수식으로 이 작업을 합니다.
If {Employee.Dept} = "Sales" Then
{Employee.Salary} * 0.06
Else
{Employee.Salary} * 0.04
이 예에서 조건 {직원.부서} = "영업"이 true이면
{Employee.Salary} * 0.06
식이 처리됩니다. 그렇지 않으면 Else 다음에 있는
{Employee.Salary} * 0.04
식이 처리됩니다.
직원들에게 4%의 상여금(최소 $1,000 이상)을 지급하는 경우를 가정해 봅니다. Else 절은 사용되지 않습니다. 이 절은 선택적이며 이 경우에는 필요하지 않습니다.
Local CurrencyVar bonus := {Employee.Salary} * 0.04;
If bonus < 1000 Then
bonus := 1000;
//최종 식은 변수 'bonus'입니다.
//이 식은 수식의 결과로서 변수의 값을 반환합니다.
bonus
예 2를 수행하는 다른 방법은 Else 절을 사용하는 것입니다.
Local CurrencyVar bonus := {Employee.Salary} * 0.04;
If bonus < 1000 Then
1000
Else
bonus
또한 이전 회사에서 상여금을 최대 $5,000까지 지급하는 경우를 가정해 봅니다. 이 경우에는 Else If 절을 사용해야 합니다. 다음 예에서는 하나의 Else If 절 하나만 사용되었으나 이 절은 필요한 만큼 추가할 수 있습니다. .
![]() |
---|
If 식 당 Else 절을 최대 하나만 사용할 수 있습니다. |
If 또는 ElseIf 조건이 모두 true가 아니면 Else 절이 실행됩니다.
Local CurrencyVar bonus := {Employee.Salary} * 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%를 세금으로 내야 합니다.
Local CurrencyVar tax := 0;
Local CurrencyVar income := {Employee.Salary};
Local StringVar message := "";
If income < 8000 Then
(
message := "no";
tax := 0
)
Else If income >= 8000 And income < 20000 Then
(
message := "lowest";
tax := (income - 8000)*0.20
)
Else If income >= 20000 And income < 35000 Then
(
message := "middle";
tax := (20000 - 8000)*0.20 + (income - 20000)*0.29
)
Else
(
message := "highest";
tax := (20000 - 8000)*0.20 + (35000 - 20000)*0.29 +
(income - 35000)*0.40
);
//2자리 소수 자릿수를 사용하고 쉼표를 천 단위 구분 기호로 사용합니다.
Local StringVar taxStr := CStr (tax, 2, ",");
"You are in the " & message & " tax bracket. " & "Your estimated tax is " & taxStr & "."
![]() |
---|
변수를 사용하면 계산 논리를 단순화할 수 있습니다. 또한 조건 중 하나를 만족할 때 실행되는 두 개의 식이 사용되고 있습니다. 즉, 식 하나는 세금 변수를 할당하고 다른 식은 메시지 변수를 할당합니다. 이것은 주로 조건의 결과로서 실행되는 다중 식이 있을 때 유용합니다. |