SET ステートメントは、変数に値を割り当てます。
SourceExpression は、割り当てられる値を提供する式です。式はどんな種類でもよく、スカラー、行、またはリストの値を戻すことができます。
ターゲットが宣言済みのスカラー変数である場合、SourceExpression は評価され、変数に割り当てられます。必要があれば、値は変数のデータ・タイプに変換されます。この変換を行えない場合は、デプロイ時にエラーになるか、実行時に例外になります。
ヌル値は、その他の値とまったく同じ方法で扱われます。つまり、式がヌルに評価すると、値 "null" が変数に割り当てられます。
スカラー変数の場合、TYPE、NAME、NAMESPACE、および VALUE 文節は意味がなく、使用できません。
ターゲットが宣言済みの行変数、事前定義済みの行変数の 1 つ、いずれかの種類の行変数中のフィールド、いずれかの種類の行変数中のフィールドのリスト、またはこれらのいずれかを指す宣言済みの参照変数である場合、最終的なターゲットはフィールドになります。これらの場合、ターゲット・フィールドにナビゲートされます (必要な場合はフィールドを作成します)。
TargetFieldReference で配列指標が使用されている場合、ターゲット・フィールドにナビゲートすると、ルートからターゲット・フィールドへの直接パス上のみにフィールドを作成できます。例えば、以下の SET ステートメントでは、Structure の 1 つ以上のインスタンスがメッセージ中に既存である必要があります。
SET OutputRoot.XML.Message.Structure[2].Field = ...
list タイプのエレメントの処理について、詳しくは、xsd::list タイプのエレメントの処理を参照してください。
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
この例では、メッセージの中の 1 つのフィールドを英大文字にしています。1 番目のステートメントで、入力メッセージの完全コピーである出力メッセージを構成します。2 番目のステートメントで、Order.Name フィールドの値を、右辺の式で定義された新規の値に設定します。
オリジナルの入力メッセージに Order.Name フィールドがなかった場合、それは 1 番目のステートメントで生成される出力メッセージに存在しません。2 番目のステートメントの右辺の式は、ヌルを戻します (UPPER 関数呼び出しで参照されるフィールドが存在しないため)。フィールドにヌル値を割り当てると、フィールドがすでに存在している場合は、そのフィールドを削除することになります。したがって、結果として、2 番目のステートメントには何の作用もないことになります。
SET OutputRoot.XML.Order.Name VALUE = NULL;