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

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

EBCDIC の NL から ASCII の CR LF への変換

テキスト・メッセージ中の改行 (NL) 文字を、復帰 (CR) および改行 (LF) 文字の対に変更したい場合があります。 この例では、これらの文字を変換できる 1 つの方法を示します。

この変換は、EBCDIC プラットフォーム (例えば CCSID 1047 を使用するもの) からのメッセージを、 ASCII プラットフォーム (例えば CCSID 437 を使用するもの) に送信する場合に役立ちます。 問題が生じることがあるのは、 EBCDIC NL 文字 16 進 '15' が、未定義 ASCII 文字 16 進 '7F' に変換されるためです。 ASCII コード・ページには、NL 文字に対応するコード・ポイントはありません。

この例では、入力メッセージを BLOB ドメインのメッセージとして解釈するメッセージ・フローが作成されます。 このメッセージは ResetContentDescriptor ノードに渡され、データを MRM ドメイン内のメッセージにリセットします。 メッセージは msg_nl (EBCDIC の NL 文字で区切られた反復ストリング・エレメントのセット) と呼ばれます。 Compute ノードが使用されて、"msg_crlf" という MRM ドメインの別のメッセージに基づいて出力を作成します (CR LF 対によって区切られた反復ストリング・エレメントのセット)。 その後メッセージ・ドメインは、別の ResetContentDescriptor ノードで変更され、BLOB に戻されます。 このメッセージ・フローは、以下の図に示されています。

図は、次のノードで構成される、リニア・メッセージ・フローを示します。
MQInput、その Out ターミナルに接続された ResetContentDescriptor、その Out ターミナルに接続された Compute、
その Out ターミナルに接続された ResetContentDescriptor1、その Out ターミナルに接続された MQOutput。
それ以外のターミナルは接続されていません。

以下に、メッセージが作成され、メッセージ・フローが構成される方法を説明します。

  1. MRM ドメインのメッセージにメッセージ・モデルを作成する
    1. myProj というメッセージ・セット・プロジェクトを作成する。
    2. TDS 物理形式 (デフォルト名は Text1) を使用して、 myMessageSet というメッセージ・セットを作成する。
    3. xsd:string タイプのエレメント string1 を作成する。
    4. t_msg_nl という複合タイプを作成し、複合タイプ・プロパティーを以下のとおりに指定する。
      • 構成 = 順序セット
      • Content Validation = Closed
      • データとエレメントの分離 = 全エレメントを区切る
      • 区切り文字 = <U+0085> (16 進 '0085' は NL 文字の UTF-16 表記)
      • 反復 = はい
      • 最小オカレンス = 1
      • 最大オカレンス = 50 (メッセージのテキストは 50 行以下が前提)
    5. エレメント string1 を追加し、以下のプロパティーを設定する。
      • 反復エレメント区切り文字 = <U+0085>
    6. メッセージ msg_nl を作成し、関連した複合タイプを t_msg_nl に設定する。
    7. t_msg_crlf という複合タイプを作成し、複合タイプ・プロパティーを以下のとおりに指定する。
      • 構成 = 順序セット
      • Content Validation = Closed
      • データとエレメントの分離 = 全エレメントを区切る
      • 区切り文字 = <CR><LF> (<CR> および <LF> は CR および LF 文字の簡略記号)
      • 反復 = はい
      • 最小オカレンス = 1
      • 最大オカレンス = 50
    8. エレメント string1 を追加し、以下のプロパティーを設定する。
      • 反復エレメント区切り文字 = <CR><LF>
    9. メッセージ msg_crlf を作成し、複合タイプを t_msg_crlf に設定する。
  2. 上の図に示されたメッセージ・フローを構成します。
    1. MQInput ノードから開始する。
      • メッセージ・ドメイン = BLOB に設定する。
      • キュー名 = <ご使用の入力メッセージ・キュー名> に設定する。
    2. ResetContentDescriptor ノードを追加して、MQInput ノードの OUT ターミナルに接続する。
      • メッセージ・ドメイン = MRM に設定する。
      • 「メッセージ・ドメインのリセット」を選択する。
      • メッセージ・セット = <ご使用のメッセージ・セット ID> に設定する。(このフィールドは最大 13 文字です)
      • 「メッセージ・セットのリセット」を選択する。
      • メッセージ・タイプ = msg_nl に設定する。
      • 「メッセージ・タイプのリセット」を選択する。
      • メッセージ・フォーマット = Text1 に設定する。
      • 「メッセージ形式のリセット」を選択する。
    3. Compute ノードを追加して、ResetContentDescriptor ノードの OUT ターミナルに接続する。
      • このノードに対して ESQL モジュールの名前を入力する、またはデフォルトを受け入れる (<メッセージ・フロー名>_Compute)。
      • Compute ノードを右クリックし、「ESQL を開く」を選択します。 以下の ESQL コードをモジュールに追加します。
        -- Declare local working variables
        DECLARE I INTEGER 1;
        DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
        
        -- Loop to copy all message headers from input to output message
        WHILE I < J DO
         	SET OutputRoot.*[I] = InputRoot.*[I];
         	SET I=I+1;
        END WHILE; 
        
        -- Set new output message type which uses CRLF delimiter
        SET OutputRoot.Properties.MessageType = 't_msg_crlf';
        
        -- Loop to copy each instance of string1 child within message body
        SET I = 1;
        SET J = CARDINALITY("InputBody"."string1"[]);
        WHILE I <= J DO
          SET "OutputRoot"."MRM"."string1"[I] = "InputBody"."string1"[I];
          SET I=I+1;
        END WHILE;

        メッセージ内の既存ヘッダーの基数値に初期設定されている変数 J を使用するほうが、 以下の WHILE 文をコーディングする場合に起こる、ループのそれぞれの反復上での基数の計算より効率的です。

        WHILE I < CARDINALITY(InputRoot.*[]) DO
    4. ResetContentDescriptor1 ノードを追加して、Compute ノードの OUT ターミナルに接続する。
      • メッセージ・ドメイン = BLOB に設定する。
      • 「メッセージ・ドメインのリセット」を選択する。
    5. 最後に、MQOutput ノードを追加して、ResetContentDescriptor1 ノードの OUT ターミナルに接続する。 出力メッセージを必要なキューに送信するプロパティーを構成します。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:45:30


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | ac11630_