RETURN ステートメント

RETURN ステートメントは、処理を終了します。次に何が起きるかは、RETURN ステートメントが発行されるプログラミングのコンテキストに応じて異なります。

構文

関数で使用する場合、RETURN ステートメントはその関数の処理を停止し、呼び出し元の式に制御を戻します。 expression (必ず存在しなければならない) は評価され、関数の戻り値となります。関数がステートメントのリストを発行して戻るのは、エラーです。戻り値のデータ・タイプは、関数の宣言にあるものと同一でなければなりません。

プロシージャーで使用する場合、RETURN ステートメントはそのプロシージャーの処理を停止し、CALL ステートメントの呼び出しに制御を戻します。プロシージャーで使用される RETURN ステートメントには、expression があってはいけません。

Filter、Compute、または Database ノードのメインライン・コードで使用する場合、RETURN ステートメントは、ノードの ESQL の処理を停止させ、制御を次のノードに渡します。これらの場合に、expression が存在するならば、それは BOOLEAN 値に評価しなければなりません。expression が存在しない場合には、Filter ノードは UNKNOWN 値を想定し、その不明ターミナルに伝搬します。Compute および Database ノードはそれらの OUT ターミナルに伝搬します。

次の表は、Compute、Filter、および Database ノードで RETURN ステートメントを使用する場合の違いを示しています。
  戻り値 結果
Compute ノード:
RETURN TRUE メッセージを out ターミナルに伝搬する。
  FALSE 伝搬を行わない。
  UNKNOWN 伝搬を行わない。
RETURN;   メッセージを out ターミナルに伝搬する。
Filter ノード:
RETURN TRUE メッセージを true ターミナルに伝搬する。
  FALSE メッセージを false ターミナルに伝搬する。
  UNKNOWN メッセージを unknown ターミナルに伝搬する。
RETURN;   メッセージを unknown ターミナルに伝搬する。
Database ノード:
RETURN TRUE メッセージを out ターミナルに伝搬する。
  FALSE 伝搬を行わない。
  UNKNOWN 伝搬を行わない。
RETURN;   メッセージを out ターミナルに伝搬する。

次の例は、サンプル・メッセージに基づいており、このステートメントの使用方法を示しています。
-- Declare variables --
DECLARE a INT;
DECLARE PriceTotal FLOAT;
DECLARE NumItems INT;

-- Initialize values --
SET a = 1;
SET NumItems = 0;
SET PriceTotal = 0.0;

-- Calculate value of order, however if this is a bulk purchase, the --
-- order will need to be handled differently (discount given) so return TRUE --
-- or FALSE depending on the size of the order --
WHILE a <= CARDINALITY(Invoice.Purchases.Item[a] DO
   SET NumItems = NumItems + Invoice.Purchases.Item[a].Quantity;
   SET PriceTotal = PriceTotal + Invoice.Purchases.Item[a].UnitPrice;
   SET a = a + 1;
END;
RETURN PriceTotal/NumItems > 42;
品目の平均価格が 42 より大きいなら、TRUE が戻されます。それ以外の場合、FALSE が戻されます。Filter ノードにおいて、高価な品目を記述するメッセージが、そうでない品目を記述するメッセージとは異なるパスに従うようにすることができます。

Compute ノードでの処理の終了時に暗黙の伝搬が行われないようにする RETURN FALSE の例については、PROPAGATE ステートメントを参照してください。

関連概念
ESQL の概要
関連タスク
ESQL の開発
関連資料
Compute ノード
Filter ノード
構文図: 使用可能なタイプ
ESQL のステートメント
PROPAGATE ステートメント
サンプル・メッセージ
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05130_