CICS 用の Liberty サーバー・トランザクション: BBOC、BBO$、および BBO#

WebSphere® Optimized Local Adapters (WOLA) は、BBOC、BBO$、および BBO# の各トランザクションを介して CICS® 製品でサポートされます。

最適化されたローカル・アダプターは、リソース・マネージャー として CICS 領域で実行されます。CICS では、リソース・プロバイダーが使用する主要な手段となるのは、タスクに関連したユーザー出口 (TRUE) です。TRUE サポートによって、CICS アプリケーションのスレッドと、外部のリソース・マネージャーのスレッドの間の境界が提供されます。現在 CICS では、DB2®、WebSphere MQ、および TCPIP のソケットが、TRUE サポートを使用して稼働します。

CICS のもとで実行されるアプリケーションは、以下のワークフローに従って、最適化されたローカル・アダプター API を使用します。
  1. アプリケーションが、提供されているスタブ・ルーチンを実行します。
  2. スタブ・ルーチンが、CICS リソース・マネージャー・インターフェース・モジュールを開始し、最適化されたローカル・アダプター TRUE ルーチンの名前 BBOATRUE と各 API に固有のパラメーターを、このモジュールに渡します。
  3. CICS が、OPENAPI タスク制御ブロック (TCB) の 1 つに TRUE をディスパッチし、API 呼び出しが完了するまで実行されます。
  4. この呼び出しが、出力パラメーターとともに CICS に戻ります。

CICS 用の制御トランザクション: BBOC

BBOC トランザクションは、CICS 管理下でのアダプター・サポートのための WebSphere の制御トランザクション、すなわち操作トランザクションです。このトランザクションを使用して、Liberty サーバーの TRUE を使用可能にして開始したり、Liberty サーバーとのインターフェースとなっているコードおよび API をデバッグするためのトレース・レベルを設定したりすることができます。また、BBOC では、登録および登録抹消の設定や、CICS 内のリンク・サーバー・タスクの開始および停止も行います。 これらのサーバー・タスクは、既存の CICS プログラムを開始したり、COMMAREA オブジェクトまたは入力パラメーターを含むコンテナーによりデータをアダプター経由で渡したりするためのサポートを提供します。BBOC は、3270 ワークステーションで、または順次 (SDSCI タイプの) ワークステーションから実行できる CICS ワークステーション・ベース・トランザクションです。

BBOC トランザクションの構文は、BBOC operation_name parameters です。複数のパラメーターは、1 つ以上のスペースで区切ります。

RGN
12 文字の登録名
DGN
参加する WOLA グループの最初の 8 文字の名前
NDN
参加する WOLA グループの 2 番目の 8 文字の名前
SVN
参加する WOLA グループの 3 番目の 8 文字の名前
LSYNC
LSYNC は、CICS がターゲット・プログラムへのリンク時に SYNCONRETURN オプションを渡すかどうかを制御します。LSYNC=Y を指定すると、CICS リンク・サーバーは、EXEC CICS LINK コマンドで SYNCONRETURN オプションを渡します。ターゲット・プログラムが別の CICS 領域にある場合にこのオプションを指定する必要が生じることがあります。デフォルト値は LSYNC=N です。
SVC
最大 8 文字のサービス名。このパラメーターは、アスタリスク (*) によるマスキングをサポートしています。例えば、*、abc*、*abc、abc*xyz、abc*xy*z などのように指定できます。
MNC
最小接続数。最小値は 0 で、デフォルト値は 1 です。
MXC
最大接続数。最大値は 9999 で、デフォルト値は 10 です。
SEC
SEC パラメーターは、伝搬するユーザー ID を制御します。デフォルト値は SEC=N です。

SEC=N と指定し、CICS から Liberty サーバーに対して呼び出しを行った場合、CICS 領域ユーザー ID が伝搬されます。SEC=N と指定し、Liberty サーバーから CICS に対してリンク・サーバー・タスク (BBO$) の下で呼び出しを行った場合、リンク・タスクは、始動されているリンク・サーバーのユーザー ID で実行されます。

SEC=Y と指定し、CICS から Liberty サーバーに対して呼び出しを行った場合、タスク・レベルのユーザー ID が Liberty サーバーに伝搬されます。SEC=Y と指定し、Liberty サーバーから CICS に対して呼び出しを行った場合、リンク・サーバーは、Liberty サーバーから伝搬されたユーザー ID を使用して、リンク・タスク (BBO#) を開始しようとします。伝搬が機能するのは、リンク・サーバーのユーザー ID が EXEC CICS START TRAN('BBO#') USERID(<propagated_id>) コマンドを発行するのを許可する System Authorization Facility (SAF) SURROGAT クラス定義を作成した場合のみです。

STX
使用するリンク・サーバー CICS トランザクション ID の 4 文字の名前。デフォルト値は BBO$ です。
注: デフォルトとは異なるトランザクション名を定義した場合、BBO$ と同じプログラム名と属性を使用して、基本 CICS システム定義 (CSD) ファイル DFHCSD でトランザクションを定義する必要もあります。
LTX
使用する、プログラムにリンクする CICS トランザクション ID の 4 文字の名前。デフォルト値は BBO# です。
注: デフォルトとは異なるトランザクション名を定義した場合、BBO# と同じプログラム名と属性を使用して、基本 CICS システム定義 (CSD) ファイル DFHCSD でトランザクションを定義する必要もあります。
TRC
このパラメーターに値を定義することで、以下のレベルでトレースを使用可能にすることができます。
  • 0 に設定した場合: トレースなし、エラー・メッセージのみ
  • 1 に設定した場合: 基本トレース
  • 2 に設定した場合: 詳細トレース
TDQ
アダプター・メッセージが書き込まれる CICS 追加区画の一時データ・キュー (TDQ) の 4 文字の名前。このパラメーターを指定しなかった場合、デフォルトで BBOQ になります (DD BBOUT)。指定された TDQ にメッセージを書き込めない場合、そのメッセージは、CICS 領域の標準出力に書き込まれます (tdq CESO dd CEEOUT)。
REU
REU は、リンク・サーバーがプログラム呼び出し要求間でプログラム・リンク呼び出しタスク ((BBO# トランザクション) を再利用するかどうかを制御します。デフォルト値は N です。
重要: SEC=N および REU=Y を指定してリンク・サーバーを実行した場合、最適化されたローカル・アダプターの JCA では、別個のリンク・トランザクション ID を渡すことがサポートされなくなります。別個のトランザクション ID を要求すると、アプリケーションで ResourceException が発生します。SEC=Y および REU=Y を指定してリンク・サーバーを実行しようとした場合、リンク・サーバーは要求ごとに新しいプログラム・リンク・タスクを開始して、伝搬された ID を表明する必要があるため、再利用オプションは強制的に No になります。
REUC
CICS リンク・タスク (BBO#) をアクティブなままにして再利用する要求数。この数に達すると、リンク・タスクは終了します。 最大値は 2147483648 です。
重要: トランザクションのシナリオの場合、リンク・タスクは、この数に達して次のコミットを Liberty サーバーから受信した後に終了します。
REUT
CICS リンク・タスク (BBO#) をアクティブなままにして再利用する秒数。この時間間隔が期限切れになると、次の要求を受信して処理した後に、リンク・タスクは終了します。最大値は 2147483648 です。
重要: トランザクションのシナリオの場合、リンク・タスクは、要求した時間に達して次のコミットを Liberty サーバーから受信した後に終了します。
RETRY
要求されたターゲット・サーバーに接続できない場合に、サーバーの始動要求または登録要求を再試行することを指示します。RETCNT および RETINT が指定されていない場合、デフォルトの再試行回数は 10 回であり、デフォルトの再試行間隔は 30 秒です。
RETCNT
RETRY=Y が指定されている場合、RETCNT は、コマンドの失敗後から要求が試行されなくなるまでの、コマンドの再試行回数を指示します。最小値は 1、最大値は 99999999 です。値 0 の場合、最大値が暗黙指定されます。値が指定されておらず、RETRY=Y オプションが指定されている場合のデフォルトの再試行回数は 10 です。
RETINT
RETRY=Y が指定されている場合、RETINT は、再試行の時間間隔 (秒数) を指示します。最小値は 1 で、最大は 359000 です。値 0 の場合、最大値が暗黙指定されます。値が指定されておらず、RETRY=Y オプションが指定されている場合のデフォルトの再試行間隔 (秒数) は 30 です。
RTXP
RTXP=(Y|N) は、リンク呼び出しタスク (BBO#) によって実行される EXEC CICS LINK PROGRAM() で、TRANSID() オプションが組み込まれている必要があることを指示します。RTX (リモート・トランザクション) パラメーターなしでこれが指定された場合、現在の EIBTRNID 値が TRANSID() パラメーターに入ります。
RTX
RTX は、RTXP パラメーターとともに使用されると、リンク呼び出しタスク (BBO#) によって実行される EXEC CICS LINK PROGRAM() で TRANSID()オプションが組み込まれている必要があることを指示します。このオプションの値は、RTX パラメーターから取得されます。これが渡されておらず、RTXP=Y が指定されている場合、現在の EIBTRNID 値が TRANSID() パラメーターで使用されます。
TXN
TXN は、BBOC トランザクションにより生成された登録のトランザクション動作を記述します。このオプションは、WebSphere Traditional サーバー・インスタンスへの登録でのみサポートされます。

BBOC が REGISTER 操作を使用して WOLA 登録を作成する場合、TXN=Y は、この登録を使用している WebSphere Application Server で開始されたすべての Java Platform, Enterprise Edition アプリケーションが現在の CICS 作業単位に参加することを意味します。TXN=Y の場合、CICS と WebSphere Application Server 間にグローバル・トランザクションが作成されます。このトランザクションは、CICS アプリケーションが EXEC CICS SYNCPOINT を発行した場合、または同期ポイントが暗黙指定された場合 (CICS タスクが終了した場合など) に、2 フェーズ・コミット・プロトコルを使用して完了します。

START_SRVR 関数によってリンク・サーバーを作成するために BBOC が使用される場合、TXN=Y は、CICS リンク・サーバー・タスクがサービスの開始時に現在の WebSphere Application Server トランザクションに参加することを意味します。例えば、Java Platform, Enterprise Edition アプリケーションがリソース・マネージャー・ローカル・トランザクション (RMLT) を開始し、最適化されたローカル・アダプターの JCA コネクターを使用して CICS プログラムを開始した場合、リンク・タスクはローカル・トランザクションに参加してから、ターゲット CICS プログラムを開始します。CICS プログラムに対する更新のコミットまたはバックアウトは、Java Platform, Enterprise Edition アプリケーションがコミット API または ロールバック API を使用して RMLT を完了するまで行われません。

表 1. BBOC. 以下の表に BBOC の操作名、説明、およびパラメーターの要約を示します。
操作名 省略語 説明 パラメーター
START_TRUE STR Liberty サーバーの TRUE を開始する TRC=<0|1|2>

TDQ=<tdqname>

STOP_TRUE PTR Liberty サーバーの TRUE を停止する TRC=<0|1|2>

TDQ=<tdqname>

REGISTER REG Liberty サーバーの WOLA グループに登録する RGN=<name>

DGN=<name>

NDN=<name>

SVN=<name>

MNC=<minimum_number_ of_connections>

MXC=<maximum_number_ of_connections>

SEC=<Y|N>

TRC=<0|1|2>

TDQ=<tdqname>

RTXP=<Y|N>

RTX=<remote_transaction_ID>

RETRY=<Y|N>

RETCNT=<number_of_requests>

RETINT=<number_of_seconds>

TXN=<Y|N>

UNREGISTER   Liberty サーバーの最適化されたローカル・アダプターから登録抹消する RGN=<name>
START_SRVR STA 渡された登録名の Liberty サーバー・タスクを開始する RGN=<name>

DGN=<name>

NDN=<name>

SVC=<name>

SVN=<name>

MNC=<minimum_number_ of_connections>

MXC=<maximum_number_ of_connections>

SEC=<Y|N>

STX=<CICS_link_server_ transaction_ID>

LTX=<CICS_link_server_ transaction_ID>

TRC=<0|1|2>

TDQ=<tdqname>

REU=<Y|N>

REUC=<number_of_requests>

REUT=<number_of_seconds>

RTXP=<Y|N>

RTX=<remote_transaction_ID>

RETRY=<Y|N>

RETCNT=<number_of_requests>

RETINT=<number_of_seconds>

TXN=<Y|N>

STOP_SRVR STP 当該登録名の Liberty サーバー・タスクを停止する RGN=<name>

TRC=<0|1|2>

TDQ=<tdqname>

DOCTEMPLATE DOC DOCTEMPLATE (DOC) は、コマンド・ストリング (BBOC コマンドおよびすべての引数) を CICS 文書テンプレート・ソースから読み取ることを指示します。BBOC DOC NAME=<template_name> の指定は、要求全体が、指定された名前の文書テンプレートの単一行にあることを示します。文書テンプレートの定義については、CICS 資料を参照してください。これにより、データ・セット、データ・セット・メンバー、および CICS 領域のファイル・システム内のファイルから長いコマンド・ストリング (最大 500 文字まで) を読み取ることができるようになります。文書テンプレート・ソース・ファイル内での BBOC DOC NAME=<> 要求の指定は、サポートされません。 NAME=<CICS_document_template_name>TRC=<0|1|2>

サンプル BBOC コマンド

以下に、BBOC 呼び出しのサンプルを示します。これらのサンプルは、CICS アダプターのプログラム・リンク・サポートを使用してさまざまなタスクと構成を実現する方法を示しています。
  • アダプターの CICS TRUE プログラムを開始します。

    bboc start_true

  • アダプターの CICS TRUE プログラムを停止します。

    bboc stop_true

  • 最大接続数 10、最小接続数 5、セキュリティー伝搬ありという設定で、名前 LIB1、LIB2、および LIB3 を持つ WOLA グループに、名前 CICS-HR1 を使用して登録します。

    bboc register rgn=CICS-HR1 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y

  • 名前 CICS-HR1 の登録を抹消します。

    bboc unregister rgn=CICS-HR1

  • 最大接続数 10、最小接続数 5、セキュリティー伝搬ありという設定で、WOLA グループを使用して、登録名 CICSPAYR の下で、すべてのサービス名およびプログラム名に対して、BBO$ としてサーバー・トランザクションを開始します。

    bboc start_srvr rgn=CICSPAYR dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y

  • 登録名 CICSPAYR で実行されている BBO$ サーバー・トランザクションを停止します。

    bboc stop_srvr rgn=CICSPAYR

  • 最大接続数 10、最小接続数 5、セキュリティー伝搬ありという設定で、WOLA グループを使用して、登録名 CICSPAY1 の下で、PAYR で始まるサービス名およびプログラム名に対して、BBO$ としてサーバー・トランザクションを開始します。

    bboc start_srvr rgn=CICSPAY1 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y svc=PAYR*

  • 最大接続数 10、最小接続数 5、基本トレース、セキュリティー伝搬ありという設定で、WOLA グループ内のすべてのサービス名およびプログラム名に対して、トランザクション ID PAY2 の下でサーバー・トランザクションを開始し、名前 PAYROLL2 で登録します。

    bboc start_srvr rgn=PAYROLL2 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y stx=PAY2 trc=1

  • トランザクション ID PAY3、リンク・トランザクション ID PY3L の下でサーバー・トランザクションを開始します。最大接続数 10、最小接続数 5、基本トレース、セキュリティー伝搬ありという設定で、WOLA グループ内の PAYRL3 で始まるサービス名およびプログラム名に対して、名前 PAYROLL3 で登録します。

    bboc start_srvr rgn=PAYROLL3 dgn=LIB1 ndn=LIB2 svn=LIB3 mnc=5 mxc=10 sec=y svc=PAYRL3* stx=PAY3 ltx=PY3L trc=1

  • パラメーターがすべて、LONGCMD という名前の CICS 文書テンプレート・ソースから読み取られるリンク・サーバー・トランザクションを開始します。

    bboc doc name=LONGCMD

CICS 始動時における BBOC コマンドの自動実行

2 つの CICS Program List Table Post-Initialization (PLTPI) プログラム BBOACPLT および BBOACPL2 が、GitHub でサンプルとして提供されています。詳しくは、『Liberty のための最適化されたローカル・アダプターのサンプル』を参照してください。
  • CICS の始動時に最適化されたローカル・アダプターの TRUE を開始するには、CICS PLT のフェーズ 2 またはフェーズ 3 のエントリーとして BBOACLPT を追加します。
  • CICS の始動時に INITPARM データを使用して BBOC コマンドを発行するには、CICS PLT のフェーズ 2 またはフェーズ 3 のエントリーとして BBOACLP2 を追加します。
INITPARM 内で CICS の制限である 60 文字までのコマンドのストリングを渡すことができます。 以下のサンプル INITPARM ストリングでは、BBOACPL2 を呼び出し、WOLA グループ名 LIB1、LIB2、および LIB3 で、登録名 PAYROLL の下にリンク・サーバーを始動する要求を渡しています。SVC=* を指定することで、このリンク・サーバーは、すべてのサービス名に対する要求を受け取ります。
INITPARM=(BBOACPL2='STA RGN=PAYROLL DGN=LIB1 NDN=LIB2 SVN=LIB3 SVC=*')
コマンド・ストリングは、以下のサンプル INITPARM ストリング内の REG など、任意の BBOC コマンドにすることができます。CICS の始動時に、このストリングは、最小接続 10 および最大接続 100 で構成される登録を、名前 LIBAPP で作成します。
INITPARM=(BBOACPL2='REG RGN=LIBAPP DGN=LIB1 NDN=LIB2 SVN=LIB3 MNC=10 MXC=100')

CICS の始動時に登録を作成する場合、アプリケーションで登録 API を使用しないでください。代わりに、起動または接続取得などの他の API を直接使用してください。

重要: BBOACPL2 プログラムごとに使用できる INITPARM ストリングは 1 つのみです。
PLT プログラムを使用して登録またはリンク・サーバーを自動的に作成する場合は、CICS が最適化されたローカル・アダプターの残りのトランザクションをキャンセルしている間の遅延を回避するために、CICS をシャットダウンする前にサーバーを必ず登録抹消または停止してください。以下の方法で、最適化されたローカル・アダプターのリソースを削除できます。
  • すべての CICS リンク・サーバーに対して BBOC STOP_SERVER を実行するか、すべての登録に対して BBOC URG を実行します。
  • BBO$ タスクをパージします。
  • STOP_SERVER ストリングを渡すリンク・サーバーごとに BBOACNTL に対して EXEC CICS LINK コマンドを実行する、プログラム・リスト・テーブル (PLT) シャットダウン・プログラムを作成します。
  • コマンド CEMT P SHUT,IMMED を発行します。

CICS 用のリンク・サーバー・トランザクション: BBO$

BBO$ CICS トランザクションでは、Liberty サーバーから CICS への呼び出しがサポートされます。BBO$ トランザクションは、特定の登録名およびサービス名に対して BBOC START_SRVR 操作で開始されたサーバー・タスクのインスタンスを表す非ワークステーション・トランザクションです。このサーバー・タスクは、プログラム・リンク呼び出し機能を提供します。この機能では、最適化されたローカル・アダプター API を介して Liberty サーバーから既存の CICS プログラムを開始できます。

BBOC START_SRVR コマンドで STX=name を指定することで、トランザクションの名前 BBO$ をオーバーライドできます。 新しいトランザクション名は、BBO$ と同じプログラム名と属性を使用して CICS に定義しなければなりません。 詳しくは、CICS 用の最適化されたローカル・アダプターの定義を参照してください。

CICS 用のプログラム・リンク呼び出しトランザクション: BBO#

BBO# CICS トランザクションでは、Liberty サーバーから CICS への呼び出しがサポートされます。BBO# トランザクションは、プログラム・リンクを呼び出すためにリンク・サーバー・タスク BBO$ が開始するタスクのインスタンスを表す非ワークステーション・トランザクションです。BBO$ トランザクションは、Liberty サーバー・アプリケーションからの CICS プログラム・リンク要求ごとに BBO# を開始します。

BBOC START_SRVR コマンドで LTX=name を指定することで、トランザクションの名前 BBO# をオーバーライドできます。 新しいトランザクション名は、BBO# と同じプログラム名と属性を使用して CICS に定義しなければなりません。 詳しくは、CICS 用の最適化されたローカル・アダプターの定義を参照してください。 あるいは、Liberty サーバー・アプリケーションで、JCA setLinkTaskTransid メソッドを使用して、新しいトランザクション名を CICS に渡すことができます。


トピックのタイプを示すアイコン 参照トピック

ファイル名: rwlp_dat_cics.html