意思決定のステートメント
指定した条件に基づいて実行するタスクをスクリプトに選択させることができます。意思決定ステートメントを使用すると、さまざまな可能性や結果を考慮に入れたスクリプトを設計できます。これにより、スクリプトで何が起こるかの直線的な流れを制御できます。
これらのステートメントのキーワードは次のとおりです。
- IF:ブーリアン trueとfalseの2つの値を持つデータ型。式の評価結果に基づいて、実行するオプションを選択します。
- SELECT:一連のステートメントのうちtrueと評価された最初のステートメントを実行します。
- SWITCH:式を評価し、その結果を定義されたケースと比較します。そして、一致するケースで定義されているアクションを実行します。
意思決定ステートメントには、常に条件付きコードブロックが必要です。ブロックは中括弧(
- CASE:一連のステートメントのうち実行するステートメントを1つ定義します。
- DEFAULT:デフォルトのCASEを定義します。これは、他のどのCASEステートメントも実行できない場合に実行されるステートメントです。
各ステートメントのタイプに関する説明には構文サマリーが含まれています。これらのサマリーは、ステートメントの各部分と、各部分が必須であるかオプションであるかを示すために、特定の規約を使用しています。
IF およびIF... ELSE ステートメント
説明:表現を評価し、評価の結果に応じてブランチを取ります。
構文:
Studioアクション:If
詳細:IFステートメントは<expression>を評価します。スクリプトは、表現の評価結果に応じて、最初の中括弧内のコード{ ... }を実行します。この表現の評価結果はtrueでなければならず、そうでない場合、スクリプトはコードを実行しません。
表現がfalseと評価された場合のスクリプトの動作を指定するには、ELSEステートメントを含めることができます。ELSEはオプションです。可能なアクションが2つあり、スクリプトにそのどちらかを選択させたい場合に使用します。可能なアクションが1つしかなく、指定した条件(<expression>)が満たされたときにのみそのアクションを実行する場合は、IFを単独で使用します。
IFステートメントの一部である表現<expression>では、ブーリアン演算子 trueとfalseの2つの値を持つデータ型。を使用します。trueかfalseのどちらかに評価される表現を使う必要があります。例えば、x=5は、変数xの値が5に等しいか、等しくないかのどちらかなので、有効な表現です。
加減乗除の通常の数学演算子に加えて、以下の演算子を使用できます。
- モジュロ演算子(%)
- べき乗/指数(^)
- 整数除算(\)
- 排他的論理和(~)
すべての式に、通常の数学的演算順序が適用されます。括弧内のものはサブユニットとして最初に評価されます。指数/べき乗演算子は2番目に評価されます。そして次に乗算と除算、その後に加算と減算が評価されます。比較演算子は、すべての数学演算が終了した後、最後に評価されます。
ブーリアン演算
スニペットで次のブーリアン演算子を使用できます。これらの演算子はすべて、
演算子記号 | 演算子名 | 詳細 |
---|---|---|
= | 等しい | 式の両辺が等しい場合、式の結果は |
!= | 等しくない | 式の両辺が等しくない場合、式は |
> | より大きい |
式の右辺が左辺より小さい場合、式の結果は |
>= | 以上 |
式の右辺が左辺と等しいかそれより小さい場合、式の結果は |
< | 未満 |
式の左辺が右辺より小さい場合、式の結果は |
<= | 以下 |
式の左辺が右辺と等しいかそれより小さい場合、式の結果は |
& | および | すべての部分式がtrueと評価される場合、式全体の結果は |
| | または | いずれかの部分式がtrueと評価される場合、式の結果は |
Studioでは、
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>を上から順に評価し、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 [{ ... }]] }>
詳細:
<var>に一致するCASE <literal>がない場合、オプションの
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は常にオプションです。式がfalseと評価された場合のスクリプトの動作を指定したい場合は、ELSEステートメントを含めることができます。可能なアクションが2つあり、スクリプトにそのどちらかを選択させたい場合に使用します。