의사결정 문

지정하는 조건에 따라 수행할 작업을 선택하도록 스크립트를 설정할 수 있습니다. 의사결정 문을 사용하여 스크립트가 여러 가능성 또는 출력을 고려하도록 설계할 수 있습니다. 이로써 스크립트에서 일어나는 일의 선형적인 흐름을 제어할 수 있습니다.

이러한 문에 대한 키워드는 다음과 같습니다.

의사 결정 문에는 항상 조건부 코드 블록이 필요합니다. 블록은 중괄호( { } )로 묶입니다. SELECTSWITCH 문에 대한 코드 블록은 두 가지 추가적인 키워드를 사용합니다.

  • CASE: 실행할 수 있는 가능성이 있는 문의 세트 중 하나를 정의합니다.
  • DEFAULT: 기본 CASE을(를) 정의합니다. 이는 기타 CASE 문 중 아무것도 실행할 수 없는 경우 실행되는 문입니다.

문의 각 유형에 대한 논의에는 구문 요약이 포함됩니다. 이러한 요약은 특정한 규칙을 사용하여 문의 일부를 나타내고 각 부분이 필수인지 선택 사항인지를 나타냅니다.

IF 및 IF... ELSE

설명: 표현식을 평가하고 평가의 결과에 따라 브랜치를 얻습니다.

구문: IF <expression> <{ ... }> [ ELSE { ... } ]

Studio 작업: If

세부 사항: IF 문은 <expression>을(를) 평가합니다. 표현식이 평가하는 방법에 따라 스크립트는 첫 중괄호 { ... } 세트의 코드를 실행합니다. 표현식은 참으로 평가되어야 하며, 아니면 스크립트가 코드를 실행하지 않습니다.

표현식이 거짓으로 평가되는 경우 스크립트가 수행하는 작업을 지정하려는 경우 ELSE 문을 포함할 수 있습니다. ELSE은(는) 선택 사항입니다. 가능한 작업이 두 가지 있고 스크립트가 둘 중 하나를 선택하게 설정하려면 이를 사용하십시오. 가능한 작업이 하나뿐이며, 특정한 조건(<expression>)이 충족되었을 때만 스크립트가 실행되기를 원하는 경우에는 IF만을 사용합니다.

IF 문의 일부인 표현식 <expression>부울닫힘 참 및 거짓과 같은 두 가지의 가능한 값을 가진 데이터 유형. 연산자를 사용합니다. 참 또는 거짓으로 평가되는 표현식을 사용해야 합니다. 예를 들어, x=5은(는) 변수 x의 값은 5와 일치하거나 일치하지 않으므로 유효한 표현식입니다.

Studio은(는) IF에 두 개 이상의 ELSE 문을 포함하는 경우를 지원하지 않습니다. 하지만, 다음과 같은 IF 문을 포함할 수 있습니다.


IF A > B {
// Do something
}
ELSE {
	IF A = B {
	// Do something else
	}
	ELSE {
	// Do this
	}
}

예시

IF TEST = 1
   {
      ASSIGN contactID = "123456780"
      ASSIGN customerName = "XYZ International"
      ASSIGN CBWindowStart = #"{date} 8:00 AM"
      ASSIGN CBWindowEnd = #"{date} 4:30 PM"
   }

//String Comparison

IF customerName = "ABC Corporation"
   {
      ASSIGN contractLevel = "Gold"
   }
   ELSE
      {
         ASSIGN contractLevel = "Silver"
      }

//Numeric Comparision

IF contactID % 10 = 0
   {
      ASSIGN logCall = 1
   }
   ELSE
      {
         ASSIGN logCall = 0
      }

//DateTime Comparison

ASSIGN myTime = #"{time}"

IF myTime >= CBWindowStart && myTime  <= CBWindowEnd
   {
      ASSIGN offerCallback = "True"
   }
   ELSE
      {
         ASSIGN offerCallback = "False"
      }

SELECT 

설명: 참으로 평가할 첫 번째 표현식에 기반하여 명령 세트를 수행합니다.

구문: SELECT <{ CASE <expression> [{ ... }] [CASE <expression> <{ ... }>] [CASE ...] [DEFAULT <{ ... }>] }>

세부 사항: SELECT 문에서 스크립트는 상단에서 시작하는 각 CASE <expression>을(를) 평가하며, 처음으로 참으로 평가되는 항목을 찾을 때까지 아래로 계속 작업합니다. 처음으로 참으로 평가되는 CASE <expression>의 경우, SELECT은(는) 코드를 해당 CASE <expression>의 중괄호 [{ ... }] 내에서 실행합니다.

참으로 평가되는 CASE <expression>이(가) 하나도 없는 경우, 스크립트는 선택 사항인 DEFAULT { ... } 코드를 실행합니다.

최소한 1개 이상의 CASE 문이 필요합니다. 포함된 경우 DEFAULT { ... } 문은 CASE 문 목록의 마지막 절이어야 합니다.

예:

SELECT
{
	CASE name="Odin" { agentid = 123 }
	CASE name="Frigg" { agentid = 345 }
	CASE name.length = 0
	 {
	   ASSIGN agentid = -1
	   ASSIGN error = "Invalid name"
	 }
	DEFAULT { ASSIGN agentid = 999 }
} 

SWITCH 

설명: 지정된 변수를 평가하고 일치하는 CASE에 의해 정의된 작업을 수행합니다.

구문: SWITCH <var> <{CASE <literal> [{ ... }] [CASE <literal> [{ ... }]] [CASE ...] [DEFAULT [{ ... }]] }>

세부 정보:  SWITCH 문은 <var>변수의 값을 각 CASE <literal>의 리터럴 값과 비교합니다. 일치하는 CASE 을(를) 찾으면 SWITCH은(는) 일치하는 CASE <literal>과(와) 관련된 중괄호 { ... } 로 묶인 코드를 실행하고 브랜치합니다.

<var>과(와) 일치하는 CASE <literal>이(가) 없으면 선택 사항인 DEFAULT { ...} 코드가 실행됩니다. DEFAULT은(는) SWITCH 문에 내장된 문의 마지막 절이어야 합니다.

SWITCH은(는) 변수만을 평가할 수 있습니다. 표현식은 평가할 수 없습니다. 표현식을 사용하면 스크립트가 작동하지 않습니다.

최소한 1개 이상의 CASE이(가) 필요합니다. 모든 CASE 문에는 동일한 <literal>이 있어야 합니다. 첫 CASE은(는) 나머지 CASE 문의 유형을 결정합니다. CASE 문 중 첫 CASE에서 다른 유형이 있는 경우에는 컴파일러 오류가 발생합니다. 다음은 유효한 리터럴 형식의 모든 예입니다.

  • CASE "john"
  • CASE 512
  • CASE #"5/15/2050"
  • CASE #"6/1/2050 7:00am"
  • CASE #"7am"

예:

IF TEST = 1
{
  ASSIGN MyDate = "07/03/2023" //This date falls on a Monday
}
ASSIGN MyDow = MyDate.asdatedow
SWITCH MyDow
{
  CASE 0   { ASSIGN NewToday = "Sunday"  }
  CASE 1   { ASSIGN NewToday = "Monday"  }
  CASE 2   { ASSIGN NewToday = "Tuesday" }
  CASE 3   { ASSIGN NewToday = "Wednesday" }
  CASE 4   { ASSIGN NewToday = "Thursday" }
  CASE 5   { ASSIGN NewToday = "Friday"  }
  CASE 6   { ASSIGN NewToday = "Saturday"   }
}

두 개 이상의 CASE이(가) 동일한 코드 { ... }을(를) 사용하는 경우에는 각 코드 다음에 코드 블록을 사용할 필요가 없습니다. 대신 CASE 키워드를 하나씩 나열하고, 코드를 사용하는 마지막 CASE 다음에 코드를 사용합니다. 이는 케이스 폴스루라고 합니다. 코드 블록이 없는 발생할 SWITCH에 대한 케이스가 있다면 허용됩니다. 다음 예시에서는 케이스 폴스루를 보여줍니다. CASE 1, 2, 3의 경우 출력은 hi 값입니다. CASE 5 및 6의 경우 출력은 bye입니다.

SWITCH x
{
	CASE 1
	CASE 2
	CASE 3 { TRACE "hi" }
	CASE 5
	CASE 6 { TRACE "bye" }
}

사용 사례: SWITCH을(를) 사용하면 지정된 변수에 포함된 사항에 따라 특정한 결과가 출력됩니다. 예를 들면, 스크립트가 지역 번호가 포함된 변수를 평가하게 할 수 있습니다. 각 지역 코드에 대한 CASE을(를) 정의하고 지역 코드가 할당된 상태와 일치하는 state 변수에 스크립트가 값을 추가하게 할 수 있습니다. 예:

SWITCH areaCode
{
	CASE 603 { state =  "New Hampshire" }
	CASE 614 { state =  "Ohio" }
	CASE 628 { state =  "California" }
	CASE 646 { state =  "New York" }
	CASE 667 { state =  "Maryland" }
}

CASE

설명: 실행하기 위한 가능한 문 세트 중 하나를 정의합니다. SWITCH 또는 SELECT과(와) 함께 사용합니다.

구문: 다릅니다. SWITCH 또는 SELECT을(를) 참조하십시오.

Studio 작업: Case

세부 사항:  CASE은(는) SWITCH 또는 SELECT 문의 조건부 코드 블록에 사용해야 합니다. 한 개 이상의 CASE 문을 추가하여 실행할 스크립트의 가능한 블록을 정의합니다. 하나 이상의 CASE이(가) 필요합니다.

관련: DEFAULT 문을 포함하여 지정된 CASE 문 중 아무것도 적용되지 않는 경우 사용되는 케이스를 정의합니다.

DEFAULT 

설명: 지정된 CASE 중 아무 것도 적용되지 않는 경우 사용되는 CASE 블록을 정의합니다. SWITCHSELECT과(와) 함께 사용합니다.

구문: 달라집니다. SWITCH 또는 SELECT를 참조하십시오.

세부 사항: DEFAULT은(는) SWITCH 또는 SELECT 블록과 함께 사용해야 하며, 최소 1개 이상의 CASE 구문을 사용해야 합니다. DEFAULT은(는) 단독으로 사용할 수 없습니다. DEFAULT은(는) 항상 선택 사항입니다. 이는 CASE 문 목록의 마지막 절이어야 합니다.

ELSE 

설명: IF 표현식이 거짓으로 평가되면 스크립트가 실행하는 문을 정의합니다.

구문: { ELSE ... }; see IF를 참조하십시오.

세부 사항: ELSE은(는) 항상 선택 사항입니다. ELSE 문을 포함하면 표현식이 거짓으로 평가되는 경우 스크립트가 수행하는 일을 지정할 수 있습니다. 가능한 작업이 두 가지 있고 스크립트가 둘 중 하나를 선택하게 설정하려면 이를 사용하십시오.