ステートメント

ステートメントは、スクリプトが実行時に取るアクションを定義します。これには、変数の作成、新しい値の割り当て、計算の実行、与えられた条件に基づく論理的な選択などが含まれます。ステートメントの中には、変数に値を代入するなどのタスクを実行するだけのものもあります。また、スクリプトの流れに影響を与えるステートメントもあります。ステートメントは論理的な順序で実行されますが、その順序はスクリプトを実行するたびに変更されることがあります。

スニペット内のステートメントは、1行以上のコードで構成されます。次のようなシンプルな1行のステートメントでは、変数を作成してそこに値を代入することができます。

ASSIGN firstName = "Beowulf"

複雑なステートメントには、次のように複数の行がネストされていることがあります。

ASSIGN Names="Odin|Freya|Thor|Loki" ASSIGN SubCounter=1 FOREACH Name IN Names { IF Name = "Odin" | Name = "Freya" { ASSIGN NewNames[SubCounter]= "{Name}" ASSIGN SubCounter=SubCounter + 1 } }

スニペット内のステートメントの論理的な実行順序は、スニペットにエラーがあると変更される場合があります。エラーが発生すると、Snippetアクションは直ちに終了します。そしてスニペット内の残りのステートメントは実行されません。代わりに、エラーメッセージが、問題の内容を示す_ERR変数に保存されます。

ステートメントのタイプ

スニペットでは次のタイプのステートメントを使用できます。

  • 宣言宣言を使用して、新しい変数、オブジェクト、関数を宣言したり作成したりします。
  • 意思決定意思決定ステートメントを使用して、指定した条件に基づいて実行するタスクをスニペットコードに選択させることができます。これらを使って、スクリプトで起こることの直線的な流れを制御できます。
  • ループループステートメントを使用して、指定した終了条件が満たされるまで、スニペットに1つまたは一連のタスクを繰り返し実行させることができます。
  • その他:これらのステートメントを使用して、関数を終了したり、デバッグ中に結果をSnippet Editorウィンドウに表示したり、スニペットにウェブサービスプロキシDLLを含めたりできます。

キーワード

キーワードは、ステートメントを開始するコマンドです。これらはあらかじめ定義されている予約語です。コンパイラはキーワードを認識した後、それに関連するタスクを実行します。

スニペットで使用できるステートメントの各タイプに、キーワードが関連付けられています。例えば、変数を宣言するにはASSIGNを使用します。また、選択ステートメントを作成するにはIFを使用します。ステートメントとキーワードはどちらも同じ名前なので、IFステートメントはIFキーワードを使用します。

Snippet言語で使用できるキーワードは、各キーワードに関連するステートメントとともに説明されています。キーワードの完全なリストも用意されています。

ステートメントの構文

すべてのステートメントは、キーワードで始まり、その後にステートメントの動作を定義する単語やコードが続きます。各ステートメントに独自の構文があります。このページの構文サマリーセクションでは、ステートメントの構文の読み方について説明しています。

一部のステートメントは条件付きコードを必要とします。これは、条件を設定し、それが満たされた場合、または満たされなかった場合に何が起こるかを定義するコードです。条件付きコードは、1つのステートメントの場合もあれば、複数のステートメントの場合もあります。たとえ1行であっても、必ず中括弧({ })で囲まなければなりません。条件付きコードはブロックと呼ばれることもあります。

コンパイラーは、改行または中括弧を検出すると、ステートメントの終わりを認識します。中括弧の位置はある程度自由です。以下のすべてのフォーマットを使用できます。


IF x=1 {TRACE "one" } 

IF x=1 {TRACE "one" } IF x=2 {TRACE "two" }
IF x=1 {
  TRACE "one"
}

IF x=1
{
  TRACE "one"
}

埋め込みコードが複数のステートメントを必要とする場合は、以下のルールに従ってください。

  • 1行に1つのステートメントを記述します。
  • 複数のステートメントが必要な場合は、それぞれ別々の行に記述します。これにより、スクリプトが読みやすくなります。
  • 独自の埋め込みコードを必要とする埋め込みステートメントは行が複数必要となることがあります。中括弧の使用に関する有効なフォーマットに従ってください。

構文のサマリー

各ステートメントタイプをカバーするオンラインヘルプページには、ステートメントタイプごとに構文サマリーが記載されています。サマリーには、その種のステートメントが使用するフォーマットが示されています。どの要素が必須で、どの要素がオプションかがわかります。また、構文要素をネストする方法も示されています。

次の表は、構文サマリーに含まれる各要素を定義したものです。すべてのステートメントにすべての要素が含まれるわけではありません。構文サマリーを参照する際は、要素のネスティングに細心の注意を払ってください。

エレメント

詳細

COMMAND

ステートメントで使用するキーワードの名前です。COMMAND を、作成するステートメントのキーワードに置き換えます。

キーワードでは大文字と小文字が区別されません。例えば、FOREACHforeachと同じです。ただし、Snippetアクションは、次にスニペットを開いたときに、すべてのキーワードを自動的に大文字に変換します。

オンラインヘルプでは、キーワードは常に大文字で表示されます。

<required>

山括弧は必須の要素を示します。括弧内のテキストは、式、変数、リテラル値など、要素の種類を示します。

例えば、FOREACHステートメントの構文サマリーには、2つの必須要素があります:

FOREACH <var> in <array> { ... [ BREAK]}

山括弧とその中のテキストは、スクリプト中で決してリテラルとして使うことはできません。その部分を、対応するコード要素に置き換えてください。例えば、<expression>を、i = 0などの式に置き換えます。

[optional]

角括弧はオプションの要素を示します。括弧内のテキストは、使用できる要素の種類を示します。例えば、IFの構文サマリーでは、オプションのELSE句が角括弧で囲まれています:[ELSE { ... }

オプションの要素を使用する場合、構文サマリーにある他の要素との相対位置を守って配置しなければなりません。

角括弧は、スクリプト中でリテラルとして使うことは決してできません。

{ ... } 中括弧はコードブロックが使えることを示します。

中括弧は、構文サマリーで使われる山括弧や角括弧とは異なります。山括弧と角括弧はコードに含めませんが、中括弧は文字通りコードに含める必要があります。ただし、構文サマリーの中括弧内の省略記号(...)は、Snippetステートメントに置き換えてください。

パイプ(|)

パイプ文字は、ステートメントに含めるものを選択できる場所を示します。例えば、ASSIGNステートメントの構文サマリーでは、パイプ文字によって値を二重引用符で囲むかどうかの選択肢があることを示しています。

ASSIGN <variable> = "<value>" | <value>

構文の説明に、その選択について記載されています。

省略記号(...)

省略記号は2つのうちどちらかを示します:

  • 中括弧で囲まれている場合、ブロック内のどこにコードを記述するか。
  • 角括弧でキーワードとともに囲まれている場合、継続パターン。

省略記号が継続パターンを示すために使われる例は、SELECTの構文サマリーにあります。

SELECT <{ CASE <expression> [{ ... }] [CASE <expression> <{ ... }>] [CASE ...] [DEFAULT <{ ... }>] }>

[CASE ...]は、事前に決められたパターンに従って、必要な数のCASE句を追加できることを示します。

例えば、このページで使われているIFステートメントの構文サマリーは以下のとおりです。

IF <expression> <{ ... }>

このサマリーには以下が示されています:

  • キーワードはIFである。
  • 次の要素は必須の表現である。
  • 最後の要素は必須のコードブロックで、これは中括弧で囲む必要がある。

SWITCHステートメントの構文サマリーはさらに複雑です。

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

このサマリーには以下が示されています:

  • キーワードはSWITCHである。
  • 次の要素は必須の変数名である。
  • コードブロックは必須であり、リテラル値を持つCASE句を含まなければならない。
  • 必須の CASE句には、オプションのコードブロックを含めることができる。
  • SWITCHステートメントのコードブロックには、サマリーで確立されたパターンに従って、オプションのCASE句を追加することができる。
  • SWITCHステートメントのコードブロックには、オプションのコードブロックを持つオプションのDEFAULT句を含めることができる。