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

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

COMMAREA データ構造またはチャネル・データ構造

CICS® Transaction Server for z/OS® プログラムは、入力として COMMAREA データ構造またはチャネル・データ構造のいずれかを使用してリンクが可能です。どちらの構造の場合も、出力として同じデータ構造を返します。 CICSRequest ノードは、COMMAREA またはチャネルのデータ構造による CICS との対話をサポートしています。

チャネルは COMMAREA の最新の代替方法となり、COMMAREA の最大サイズ (32766 バイト) を緩和して、入出力データ構造に一層の柔軟性を持たせることができます。

COMMAREA

CICS と通信するための入力データ構造として COMMAREA を使用する場合、CICSRequest ノードは、CICSRequest ノードの「要求」プロパティーで定義されているように Input Body の一部を取得し、それを CICS に COMMAREA として送信します。

その後、戻される COMMAREA は Output ツリーに入れられて、CICSRequest ノードの「結果」プロパティーで定義された場所で既存の Body を置き換えます。 その後、COMMAREA は CICSRequest ノードの「応答メッセージの構文解析」プロパティーを使用して、構文解析のために構成されます。

入力として COMMAREA データ構造を定義する場合、CICSRequest ノードの「通信域の長さ」プロパティー値は、入力要求データまたは出力応答データが収まる十分な長さにしなければなりませんが、最大値の 32767 バイトは超えないようにしてください。 「通信域の長さ」値の長さが応答データまたは要求データで 使用するために十分でない場合は、CICS でメモリー・リークが 生じます。 COMMAREA のサイズを CICS プログラムで変更することはできません。 直列化された要求データが通信域の長さよりも大きい場合、データは通信域の長さとなるように切り捨てられます。 通信域の長さの値は、CICS 管理者または開発者から入手できます。

CICSRequest ノードの「データ構造」基本プロパティーのデフォルト値は、「通信域」です。

入力としての COMMAREA データ構造の使用法について詳しくは、CICS Transaction Server for z/OS データ構造の定義CICSRequest ノードでのメッセージ・フローの開発、および CICSRequest ノードのためのメッセージの作成を参照してください。

チャネル

CICS チャネルは、コンテナーと呼ばれる複数の構造を保持します。 コンテナーは、ターゲットの CICS プログラムがアクセスするビジネス情報を保持します。 各コンテナーは最大で 2 GB のデータを保持でき、チャネルには必要に応じていくつでもコンテナーを含めることができます。これにより、データのサイズとレイアウトの点で柔軟性が得られます。 それぞれのコンテナーには最大で 16 文字の英数字からなるコンテナー名があります。これはチャネル内で固有な名前で、チャネルからコンテナーのコンテンツを取り出すための手段として使用されます。

コンテナーには、文字またはバイナリーという 2 種類があります。 コンテナーのタイプは、WebSphere® Message BrokerCICS の間のデータ変換に影響を与える可能性がありますが、コンテナーのタイプそのものが、コンテナーに入れることが可能な情報の形式に影響を及ぼすことはありません。
文字コンテナー
文字コンテナーは個別のストリング項目または離散データ項目となることが多いものの、マップされた構造とすることもできます。ただし、コンテナー内のデータに対してデータ変換が適用されることを銘記しておくのは重要です。 文字コンテナーが構成されると、コンテナーに関するソースのコード化文字セット ID (CCSID) 情報がメタデータとして CICS に送信されます。 CICS プログラムは GET CONTAINER アプリケーション・プログラミング・インターフェース (API) 呼び出しを使用して、そのメタデータをその領域のデフォルト CCSID に変換します。ただし、別の CCSID が指定されている場合は例外です。 その後、CICS プログラムはコンテナーを再びチャネル内に戻します。そしてデータが変換され、WebSphere Message Broker アプリケーションがこれを取り出して使用するための準備が整います。
バイナリー・コンテナー
バイナリー・コンテナーは COBOL コピーブック構造を使用してマップできます。あるいは、離散値とすることもできます。 バイナリー・コンテナー内のデータに対してはデータ変換が適用されないので、バイナリー・コンテナー内のデータは CICS に送信されて、元の形式でのみ CICS から取り出されます。

COMMAREA 構造とは異なり、応答チャネルのサイズは要求に対応している必要はありません。一方、COMMAREA の場合は要求に応答のサイズを見込んでおく必要があります。

CICS におけるチャネルおよびコンテナー

以下の図の例の場合、CICS チャネルには、CustomerNameOrder という 2 つのコンテナーがあります。

2 つのコンテナーを持つ CICS 内のチャネル例を示す図。 最初のコンテナーは CustomerName という名前で、値 Joe Bloggs が含まれる文字コンテナーです。 2 番目のコンテナーは Order という名前のバイナリー・コンテナーで、COBOL コピーブックによって表された複合構造が含まれています。

CustomerName は文字 (CHAR) コンテナーで、単一文字ストリング Joe Bloggs が入っています。 CustomerName は文字コンテナーなので、コンテナー内のデータに対してデータ変換が適用可能です。 Order はバイナリー (BIN) コンテナーであり、COBOL コピーブック構造または C ヘッダー・ファイルを使用して作成できます。その後、COBOL コピーブック構造または C ヘッダー・ファイルをインポートすることにより、メッセージ・セットにメッセージ定義を取り込むことができます。 以下のコピーブック例には、CICS プログラムが受け取りを予期するデータのバイナリー・レイアウトが示されています。
01 ORDER_STRUCTURE.
          03 QTY                  COMP-1.
          03 ITEM                 PIC X(10).
          03 PRICE                PIC S9(9).
ターゲットの CICS プログラムは、GET CONTAINER API の使用時にコンテナー名を指定することにより、チャネルからどちらのコンテナーも取り出すことができます。 CICS プログラムにデータが提供されると、プログラムは自分が選んだ方法でデータを処理します。 例えば、プログラムは、PUT CONTAINER API を使用して、他のコンテナーをチャネルに入れて、呼び出されたコンテナーに対する応答を提供できます。

WebSphere Message Broker におけるチャネルおよびコンテナー

WebSphere Message Broker では、CICS チャネルはメッセージ・コレクション構造として表されます。 メッセージ・コレクションは子メッセージを持つことができ、CICSRequest ノードによってそれぞれがコンテナーとして扱われます。 メッセージ・コレクション構造は、チャネル・データ構造の使用時には CICSRequest ノードの入力と出力の両方として使用されます。 メッセージ・コレクションについて詳しくはメッセージ・コレクションを、メッセージ・コレクションの作成方法については ESQL によるメッセージ・コレクションの作成をそれぞれ参照してください。

メッセージ・コレクション名を使用して、チャネルに名前が付けられます。 メッセージ・コレクション内の子メッセージの名前は、チャネル内のコンテナーの名前として使用され、固有でなければなりません。 メッセージ・コレクション内の子メッセージ名が固有でない場合には、CICS で要求が拒否されます。

以下の表には、チャネルとコンテナーがメッセージ・コレクションと子メッセージにどのようにマッピングしているかが示されています。
CICS WebSphere Message Broker
チャネル名 メッセージ・コレクション名
コンテナー名 (親チャネルに対して固有でなければならない) 子メッセージ名 (メッセージ・コレクションに対して固有でなければならない)

名前値属性

WebSphere Message Broker では、コンテナーを作成するためにメッセージ・コレクションに名前値属性を追加することをサポートしています。 メッセージ・コレクションには 0 個以上の属性を指定できます。 属性名は、メッセージ・コレクションで固有でなければなりません。 メッセージ・コレクションの標準属性は、CollectionName と呼ばれる属性です。

名前値属性をメッセージ・コレクションに追加して、CICS コンテナーを作成できます。 メッセージ・コレクションで単純データに対して、CollectionName とは別の名前値属性を完全なメッセージ・フォルダーの代わりに使用できます。 例えば、メッセージ・コレクションで名前値ストリング属性を設定すると、そのエレメントのメッセージ・セットを作成しないでも、CICSRequest ノードがこの属性を直接使用することができます。

名前値属性は出力のコンテナーから生成できますし、入力としても受け入れられます。 コンテナーからメッセージ・フォルダーではなく属性を作成する方法については、CICSRequest ノードを参照してください。

以下の図の例の場合、CICS チャネルは Collection という名前のメッセージ・コレクションによって表されています。 Collection には、CustomerName および Order という名前の子メッセージによって表される 2 つのコンテナーがあります。 CollectionNameCustomerName はどちらも名前値属性ですが、CollectionName 属性は CICSRequest ノードによってコンテナーとして扱われないので、CICS には送信されません。

Collection という名前のメッセージ・コレクションによって表される CICS チャネルを示す図。
Collection には、CustomerName および Order という名前の子メッセージによって表される 2 つのコンテナーがあります。

CustomerName 属性が CICSRequest ノードによって文字コンテナーとして扱われる場合、LocalEnvironment でこれを反映する必要があります。

LocalEnvironment

メッセージ・コレクション内のそれぞれの子メッセージはデフォルト・タイプのバイナリーとして処理されます。これによって、データを CICS 領域の CCSID に変換するかどうかが決まります。 ただし、ローカル環境で、メッセージごとにこの値を文字に動的に指定変更できます。 例えば、LocalEnvironment.Destination.CICS.RequestChannel.Containers で以下の値を設定できます。
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.<myContainerName> = CHARACTER;

要求に続いて、メッセージ・コレクションが CICSRequest ノードから発信されると、返されたコンテナーのタイプ情報が LocalEnvironment に入ります。 例えば、応答チャネルが CICS から戻ると、LocalEnvironment の以下の場所に、戻ってきたコンテナーのタイプが示されます。LocalEnvironment.CICS.ResponseChannel.Containers.<myContainerName> = CHARACTER

最大 16 文字の英数字で構成されるチャネル名は、次のようにして指定変更できます。
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName = <myNewChannelName>;
単一のコンテナーが入力だけに必要とされる場合、メッセージ・コレクションを構成する必要はありません。 代わりに通常のメッセージを使用できます。ただし、LocalEnvironment で最大 16 文字の英数字からなる ChannelName を設定する必要があります。 最大 16 文字の英数字で構成される SingleMessageContainerName を作成しなければならず、それを以下の場所で指定する必要もあります。
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName = <mySingleMessageContainerName>;

メッセージ・コレクションを使用するとチャネル内の各コンテナーを別個のメッセージとしてモデル化できるので、それぞれのメッセージには独自の構造と構文解析のオプションを指定できます。 例えば、あるコンテナーを XML にして、別のコンテナーをコピーブックに基づいて作成できます。それぞれは、メッセージ・コレクション内で XMLNSC メッセージと MRM メッセージを使用して表せます。

メッセージ・コレクション内の子メッセージにはそれぞれ、その子メッセージに関連する Properties フォルダーに入っている、メッセージ・ドメイン、セット、タイプ、形式、CCSID、およびエンコードに関する各情報が含まれています。子メッセージはバイト・ストリームに直列化されて、CICS に送信されます。 CICS に送信される、メッセージ・コレクション内にある各子メッセージ・フォルダーは、メッセージ・プロパティー・ドメインの最後の子のレベルで直列化されます。 すべての CICS コンテナーを表すためにメッセージ・セットが必要とされるわけではありません。

前述の例の場合、Order コンテナーは MRM として表すことができ、それを表すためにコピーブック ORDER_STRUCTURE からメッセージ・セットを作成することができます。 戻されるチャネルはメッセージ・コレクションに変換され、メッセージ・コレクション内のすべての子メッセージは、チャネルのコンテナーを表します。 メッセージ・コレクション内の子メッセージは、子メッセージ名を使用して、メッセージ・ドメイン、セット、タイプ、形式、CCSID およびエンコードの情報のリストにマップされますが、文字メッセージの場合、CCSID とエンコードの情報は無視されます。 メッセージ内でマッピングが見つからない場合、デフォルトのマッピングを使用できます。

応答に含まれるコンテナー数を把握することはできないので、出力としては常にメッセージ・コレクションが生成されます。

CICSRequest ノードの「応答メッセージの構文解析」プロパティーを使用して、戻されるコンテナーを、メッセージ・ドメイン、セット、タイプ、形式、CCSID、およびエンコードの情報にマップできます。 特に、「結果データのロケーション」プロパティーを使用すると、結果ツリーを 1 つのメッセージ・フォルダーや、1 つの出力のフィールドまたはサブツリーまで減らすことができます。 「結果データのロケーション」プロパティーについては、CICSRequest ノードを参照してください。

CICSRequest ノードの入力ターミナルに到着したメッセージを処理して一連のコンテナーにするため、および応答チャネル内のそれらのコンテナーを再びメッセージに収めてノードから出力するためには、以下の詳細情報を指定する必要があります。
  • チャネルには、最大 16 文字の英数字でなる名前を指定しなければなりません。

    チャネルは WebSphere Message Broker ではメッセージ・コレクションで表されるので、メッセージ・コレクション名を設定することにより、チャネル名を作成できます。 メッセージ・コレクション名は CollectionName 属性を使用して設定します。 メッセージ・コレクションの作成とメッセージ・コレクション名の設定について詳しくは、ESQL によるメッセージ・コレクションの作成を参照してください。

  • 以下の詳細情報を、チャネルの各コンテナーに関して指定する必要があります。
    • 最大 16 文字の英数字で構成される名前。

      コンテナーは WebSphere Message Broker では子メッセージによって表されるので、子メッセージ名を設定することにより、コンテナー名を作成できます。 メッセージ・コレクションの作成および子メッセージ名の設定について詳しくは、ESQL によるメッセージ・コレクションの作成を参照してください。

    • コンテナー・タイプ。binary または character など。
    • 応答データを格納するディレクトリー。

CICSRequest ノードのメッセージ・コレクションを作成してデータを取り込むことによりチャネル・ベースの CICS プログラムを呼び出す方法、および呼び出し後にコレクションを処理する方法を示す例が提供されています。 詳しくは、CICS Transaction Server for z/OS Channel Connectivityを参照してください。

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

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:27


概念トピック概念トピック | バージョン 8.0.0.5 | bc16120_