CICS Transaction Server for z/OS Channel Connectivity サンプルについて

CICS プログラム WMBCHAN1 では、以下に示す複数のコンテナーを伴うチャネルが想定されています。

プログラム WMBCHAN1 は別の 2 つのコンテナーも戻します。 その 1 つは mirrorTran で、WMBCHAN1 を実行しているミラー・トランザクションが含まれます。 もう 1 つは ChannelName で、チャネルの名前 (入力メッセージ・コレクションの名前) が含まれます。

以下の例では、メッセージ・フローに対する XML 入力を示します。

<Data>
  <Explanation1>These numbers are added together by CICS. Each number is a separate input container</Explanation1>
  <Numbers>
    <number>10</number>
    <number>20</number>
    <number>30</number>
    <number>40</number>
    <number>50</number>
  </Numbers>
  <Explanation2>CICS examines each string and returns the longest
string in a response container</Explanation2>
  <Strings>
    <string>short data</string>
    <string>some other data, but not long enough</string>
    <string>A really long sentence that CICS can pick out and
return in a container.</string>
    <string>data</string>
    <string>some more strings</string>
  </Strings>
</Data>

入力チャネルはたとえば次のようになります。

コンテナー名 内容
number1 10
number2 20
number3 30
number4 40
number5 50
string1 短いデータ
string2 その他のあまり長くないデータ
string3 CICS が選出してコンテナーに戻すことができる、非常に長いセンテンス
string4 データ
string5 上記以外のストリング

入力メッセージ

このサンプルは、2 種類のモードで作業するように設計されています。 1 つ目のモードは、メッセージ・コレクション・モードです。 メッセージ・コレクション・モードでは、このサンプルは、メッセージ・コレクションを構成して、複数の入力コンテナーを表すために使用する方法を例示します。

2 つ目のモードは、単一メッセージ・モードです。 CICSRequest ノードは、(メッセージ・コレクションではなく) 単一のメッセージから単一のコンテナーを作成できます。 単一メッセージ・モードでは、このサンプルは、メッセージ・コレクションのオーバーヘッドを生じさせずに、1 つのメッセージを 1 つのコンテナーとして CICS に送信する方法を例示します。

メッセージ・コレクション・モード

メッセージ・コレクションは、Compute ノードを使用して ESQL で構成されます。 Compute ノードでは、以下のタスクを実行します。

単一メッセージ・モード

単一メッセージ・モードでは、単一の XML メッセージがフロー内に送信されます。 Compute ノードは、使用されるコンテナーとチャネルの名前を指定したメタデータをローカル環境内に設定します。 XML データは、ビット・ストリームになり、名前指定されたコンテナーの本体として送信されます。

これらのアクションをすべて行うために、Compute ノードには以下のステートメントがあります。

SINGLEMSG というチャネル名でメッセージを送信:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName='SINGLEMSG';

string1 というコンテナーに入れてメッセージ本体を送信:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName='string1';

string1 を文字コンテナーとして送信:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.string1='CHARACTER';

応答の処理

CICSRequest ノードに送信される入力のタイプに関係なく、チャネル・サポートの使用時には、出力は常にメッセージ・コレクションになります。

応答メッセージには、以下の 4 つの対象コンテナーが含まれます。

CICSRequest の「応答メッセージの構文解析」プロパティー・タブ上で、 テーブル内のエントリーは sum コンテナーを MRM ドメインにマップし、 入力数値コンテナーで使用されたのと同じメッセージ・セット (CICSIntegerMSet) も共にマップします。したがって、 sum コンテナーが戻される場合は、この構文解析情報にマップされます。

「応答メッセージの構文解析」タブ上のチェック・ボックスは、CICS から戻されるコンテナーのうちテーブル内で名前指定されていないものが、メッセージ・フォルダーではなく名前と値の属性として戻されるように設定されます。 コンテナー longestStringmirrorTran、および channelName はすべて追加の解釈を必要としない文字コンテナーなので、フローからの出力のための XML メッセージに直接入れることができます。

メッセージ・フロー

次の図は、CICS Transaction Server for z/OS Channel Connectivity サンプルの主なメッセージ・フローを示しています。

CICS Transaction Server for z/OS Channel Connectivity サンプルのメッセージ・フロー

ノード・タイプ ノード名
MQInput CICSCHANNEL_IN、CICSSingleMsg_IN
Compute CreateCollection、AddLENames、ProcessChannel、ProcessAbend
CICSRequest CICS 要求
MQOutput CICSCHANNEL_OUT、CICSCHANNEL_ABEND

CICS Transaction Server for z/OS Channel Connectivity サンプルで使用される各ノードの詳細については、WebSphere Message Broker の資料の『組み込みノード』を参照してください。

チャネル・サンプル・メッセージの経路

入力キューにいずれかのメッセージを書き込むと、そのメッセージは各ノードを通過します。 いずれかのキューが使用不可になっている場合には、メッセージはこのパスを通ることはできません。

次のセクションでは、メッセージの進む経路、および CICS Transaction Server for z/OS Channel Connectivity の主なメッセージ・フローのサンプルに含まれているノードの機能について説明します。

メッセージ・コレクション・モード: メッセージがキュー CICSCHANNEL_IN に送られる

  1. CICSCHANNEL_IN: CICSCHANNEL_IN MQInput ノードは、入力キューから入力メッセージを取得します。
  2. CreateCollection: CreateCollection Compute ノードは、まず Collection と呼ばれるルート・エレメントの直下の子を作成し、次に入力プロパティー・フォルダーをコピーして、メッセージ・コレクションを作成します。 このノードは、エレメント (CollectionName) を作成し、名前を付けます (この名前がチャネル名になります)。 次にこのノードは、入力メッセージからの各数値フォルダーに対して操作を繰り返し、フォルダーごとに固有な名前のメッセージ・フォルダーを作成します。 ストリング・フォルダーの場合、このノードはフォルダーではなく固有のエレメントを作成します。 このノードは、エレメントごとにローカル環境値を設定して、各エレメントを文字コンテナーとして識別します。
  3. CICS Request: CICSRequest ノードは、チャネル・データ構造用に構成されます。 このノードは、CICS プログラム WMBCHAN1 を呼び出し、チャネル応答を予期します。
  4. ProcessChannel: ProcessChannel Compute ノードは、CICSRequest ノードで作成されたメッセージ・コレクションに基づいて、新しい XMLNSC 出力メッセージを作成します。 このノードは、 メッセージ・フォルダー sum から XML コードに整数値をコピーし、 3 つのストリング属性 longestStringchannelName、 および mirrorTran も一緒にコピーします。
  5. CICSCHANNEL_OUT: CICSCHANNEL_OUT MQOutput ノードは、CICSCHANNEL_OUT 出力キューにメッセージを書き込みます。

単一メッセージ・モード: メッセージがキュー CICS_SINGLEMSG_IN に送られる

  1. CICSSingleMsg_IN: CICSSingleMsg_IN MQInput ノードは、入力キューから入力メッセージを取得します。
  2. AddLENames: AddLENames Compute ノードは、チャネルの名前と、入力メッセージ・データを保持するコンテナーの名前を設定します。 さらにこのノードは、コンテナーが文字コンテナーになるように設定します。
  3. CICS Request: CICSRequest ノードは、チャネル・データ構造用に構成されます。 このノードは、CICS プログラム WMBCHAN1 を呼び出し、チャネル応答を予期します。
  4. ProcessChannel: ProcessChannel Compute ノードは、CICSRequest ノードで作成されたメッセージ・コレクションに基づいて、新しい XMLNSC 出力メッセージを作成します。 このノードは、 メッセージ・フォルダー sum から XML コードに整数値をコピーし、 3 つのストリング属性 longestStringchannelName、および mirrorTran も一緒にコピーします。
  5. CICSCHANNEL_OUT: CICSCHANNEL_OUT MQOutput ノードは、CICSCHANNEL_OUT 出力キューにメッセージを書き込みます。

CICS Transaction Server for z/OS Channel Connectivity サンプルは、入力メッセージを読み取り、メッセージ・コレクションを構成し、CICS に接続して、チャネル・ベースのプログラムを駆動する方法を示します。 戻されるメッセージ・コレクションは、XML に変換されて、キューに出力されます。

詳しくは、WebSphere Message Broker 資料のCICS Transaction Server for z/OS に関する作業を参照してください。

これで、『CICS Transaction Server for z/OS Channel Connectivity サンプルのセットアップ』で説明されているセットアップ手順を実行できるようになりました。その後、そのサンプルを実行します。

サンプルのホームに戻る