意思決定のステートメント

指定した条件に基づいて実行するタスクをスクリプトに選択させることができます。意思決定ステートメントを使用すると、さまざまな可能性や結果を考慮に入れたスクリプトを設計できます。これにより、スクリプトで何が起こるかの直線的な流れを制御できます。

これらのステートメントのキーワードは次のとおりです。

  • IFブーリアン閉じた trueとfalseの2つの値を持つデータ型。式の評価結果に基づいて、実行するオプションを選択します。
  • SELECT:一連のステートメントのうちtrueと評価された最初のステートメントを実行します。
  • SWITCH:式を評価し、その結果を定義されたケースと比較します。そして、一致するケースで定義されているアクションを実行します。

意思決定ステートメントには、常に条件付きコードブロックが必要です。ブロックは中括弧({ })で囲みます。SELECTおよびSWITCHステートメントのコードブロックでは、2つのキーワードが追加されています。

  • CASE:一連のステートメントのうち実行するステートメントを1つ定義します。
  • DEFAULT:デフォルトのCASEを定義します。これは、他のどのCASEステートメントも実行できない場合に実行されるステートメントです。

各ステートメントのタイプに関する説明には構文サマリーが含まれています。これらのサマリーは、ステートメントの各部分と、各部分が必須であるかオプションであるかを示すために、特定の規約を使用しています。

IFおよびIF... ELSEステートメント

説明:表現を評価し、評価の結果に応じてブランチを取ります。

構文: IF <expression> <{ ... }> [ ELSE { ... } ]

Studioアクション:If

詳細:IFステートメントは<expression>を評価します。スクリプトは、表現の評価結果に応じて、最初の中括弧内のコード{ ... }を実行します。この表現の評価結果はtrueでなければならず、そうでない場合、スクリプトはコードを実行しません。

表現がfalseと評価された場合のスクリプトの動作を指定するには、ELSEステートメントを含めることができます。ELSEはオプションです。可能なアクションが2つあり、スクリプトにそのどちらかを選択させたい場合に使用します。可能なアクションが1つしかなく、指定した条件(<expression>)が満たされたときにのみそのアクションを実行する場合は、IFを単独で使用します。

IFステートメントの一部である表現<expression>では、ブーリアン演算子閉じた trueとfalseの2つの値を持つデータ型。を使用します。trueかfalseのどちらかに評価される表現を使う必要があります。例えば、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 ステートメント

説明:trueと評価された最初の式に基づいて一連のコマンドを実行します。

構文: SELECT <{ CASE <expression> [{ ... }] [CASE <expression> <{ ... }>] [CASE ...] [DEFAULT <{ ... }>] }>

詳細:SELECTステートメントでは、スクリプトは各CASE <expression>を上から順に評価し、trueと評価される最初の式を見つけるまで順次下へと評価を続けます。最初のCASE <expression>がtrueと評価されると、SELECTはそのCASE <expression>の中括弧内のコード[{ ... }]を実行します。

trueと評価されるCASE <expression>が1つもない場合、スクリプトはオプションの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ステートメントは、同じ型の<リテラル>を持たなければなりません。最初の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にコードブロックに遭遇するケースがある限り、この用法が許可されます。次の例はケースフォールスルーを示しています。CASE1、2、3の場合、出力値はhiとなります。CASE5と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 ステートメント

説明:実行できるステートメントセットの1つを定義します。SWITCHまたはSELECTと一緒に使用されます。

構文:はさまざまです。SWITCHまたはSELECTを参照してください。

Studioアクション:Case

詳細:CASEは、SWITCHまたはSELECTステートメントの条件コードブロック内で使用しなければなりません。スクリプトが実行可能なブロックを定義するために、1つ以上のCASEステートメントを追加します。少なくとも1つのCASEが必要です。

関連事項: 指定されたCASEステートメントがどれも適用されない場合に使用されるケースを定義するDEFAULTステートメントを含めます。

DEFAULT ステートメント

説明:指定されたCASEのどれも適用されない場合に使われるCASEブロックを定義します。SWITCHおよびSELECTと一緒に使用されます。

構文:さまざまです。SWITCHまたはSELECTを参照してください。

詳細:DEFAULTは、SWITCHまたはSELECTブロックとともに使用し、CASEステートメントが少なくとも1つ必要です。DEFAULTを単独で使用することはできません。DEFAULTは常にオプションです。これは、CASEステートメントのリストの最後の句でなければなりません。

ELSE ステートメント

説明:IF式がfalseと評価された場合にスクリプトが実行するステートメントを定義します。

構文: { ELSE ... }IFを参照してください。

詳細:ELSEは常にオプションです。式がfalseと評価された場合のスクリプトの動作を指定したい場合は、ELSEステートメントを含めることができます。可能なアクションが2つあり、スクリプトにそのどちらかを選択させたい場合に使用します。