WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

RETURN ステートメント

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

構文

構文図を読む構文図をスキップする
>>-RETURN--+------------+--------------------------------------><
           '-expression-'   

Main 関数

Main 関数で使用する場合、RETURN ステートメントはモジュールの処理を停止し、メッセージ・フローの次のノードに制御を戻します。Main 関数では、RETURN ステートメントに BOOLEAN タイプの expression を含める必要があります。Main 関数での RETURN ステートメントの動作は、ノードに依存します。例えば、Compute ノードでは、expression が TRUE 以外であるとメッセージの伝搬が停止します。しかし、Filter ノードでは、expression の値 TRUE、FALSE、および UNKNOWN と一致するターミナルにメッセージが伝搬されます。次の表は、Compute、Filter、および Database ノードの Main 関数で RETURN ステートメントを使用する場合の違いを示しています。
ノード RETURN TRUE; RETURN FALSE; RETURN UNKNOWN (BOOLEAN タイプの場合) または RETURN NULL; RETURN;
Compute メッセージを Out ターミナルに伝搬する 伝搬を停止する 伝搬を停止する デプロイ失敗 (BIP2912E: RETURN のタイプが一致しません)
Database メッセージを Out ターミナルに伝搬する 伝搬を停止する 伝搬を停止する デプロイ失敗 (BIP2912E: RETURN のタイプが一致しません)
Filter メッセージを True ターミナルに伝搬する メッセージを False ターミナルに伝搬する メッセージを Unknown ターミナルに伝搬する デプロイ失敗 (BIP2912E: RETURN のタイプが一致しません)

ユーザー定義関数およびプロシージャー

関数またはプロシージャーで使用する場合、RETURN ステートメントはその関数の処理を停止し、呼び出し元の式に制御を戻します。 expression (RETURNS 文節を使って関数またはプロシージャーが宣言されている場合は必ず存在しなければならない) は評価され、関数の戻り値となります。戻り値のデータ・タイプは、関数の宣言にあるものと同一でなければなりません。次の表は、ユーザー定義関数およびプロシージャーで RETURN ステートメントを使用する場合の違いを示しています。

  RETURN expression; RETURN NULL; (または NULL と評価される return expression) RETURN; RETURN ステートメントなし
RETURNS 文節を持つユーザー定義関数またはプロシージャー expression の値で呼び出し側の式に制御を戻す NULL で呼び出し側の式に制御を戻す デプロイ失敗 (BIP2912E: RETURN のタイプが一致しません) 関数またはプロシージャーのすべてのステートメントが実行された後、NULL で呼び出し側の式に制御を戻す
RETURNS 文節を持たないユーザー定義関数またはプロシージャー デプロイ失敗 (BIP2401E: 構文エラー: ; が期待されていましたが、expression が見つかりました。) デプロイ失敗 (BIP2401E: 構文エラー: ; が期待されていましたが、NULL が見つかりました。) 呼び出し側の式に制御を戻す 関数またはプロシージャーのすべてのステートメントが実行された後、呼び出し側の式に制御を戻す

RETURN ステートメントは、必ず、宣言の中に RETURNS ステートメントが含まれている関数またはプロシージャーの本文で使用する必要があります。 この関数は、CALL ... INTO ステートメントを使用して呼び出すことができます。 RETURNS ステートメントは、関数やプロシージャーが CALL ステートメントに戻すデータ型を提供します。 CALL ... INTO ステートメントは、戻り値が割り当てられる変数を指定します。 このトピックの例では、RETURNS ステートメントと CALL ... INTO ステートメントを一緒に使用して RETURN ステートメントを割り当てる方法の例を示します。 RETURNS ステートメントが宣言されていない関数やプロシージャーを CALL ... INTO ステートメントを使用して呼び出すと、BIP2912E エラー・メッセージが生成されます。

次の例は、サンプル・メッセージに基づいており、RETURN、RETURNS および CALL...INTO ステートメントの使用方法を示しています。
CREATE FILTER MODULE ProcessOrder
 CREATE FUNCTION Main() RETURNS BOOLEAN  
  BEGIN  

      DECLARE SpecialOrder  BOOLEAN;
      SET  OutputRoot.MQMD = InputRoot.MQMD; 
      CALL IsBulkOrder(InputRoot.XMLNS.Invoice.Purchases) INTO SpecialOrder;
   
      --
      --  more processing could be inserted here
      --  before routing the order to the appropriate terminal
      -- 
      RETURN SpecialOrder;

  END;     

 CREATE FUNCTION IsBulkOrder (P1 REFERENCE)
        RETURNS BOOLEAN
  BEGIN 
      -- Declare and initialize variables--
      DECLARE a INT 1;
      DECLARE PriceTotal FLOAT 0.0;
      DECLARE NumItems INT 0;
      DECLARE iroot REFERENCE TO P1;

      -- 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(iroot.Item[]) DO 
             SET  NumItems = NumItems + iroot.Item[a].Quantity;
             SET  PriceTotal = PriceTotal + iroot.Item[a].UnitPrice;
             SET  a = a + 1;
      END WHILE;
      RETURN (PriceTotal/NumItems> 42);

  END;

  END MODULE; 
この例では、品目の平均価格が 42 より大きいなら、TRUE が戻されます。それ以外の場合、FALSE が戻されます。 Filter ノードにおいて、高価な品目を記述するメッセージが、そうでない品目を記述するメッセージとは異なるパスに従うようにすることができます。 この例の CALL IsBulkOrder(InputRoot.XMLNS.Invoice.Purchases) INTO SpecialOrder; ステートメントは、SpecialOrder = IsBulkOrder(InputRoot.XMLNS.Invoice.Purchases); のように書くこともできます。

ノードで PROPAGATE ステートメントを使用している場合は、RETURN FALSE; を使用して、メッセージ・フローの次のノードに自動的にメッセージが伝搬されないようにすることは重要です。 Compute ノードでの処理の終了時に暗黙的な伝搬が行われないようにする例は、PROPAGATE ステートメントを参照してください。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:22


参照トピック参照トピック | バージョン 8.0.0.5 | ak05130_