目次 前 次 PDF


CICSアプリケーションの実装

CICSアプリケーションの実装
この章では、次の項について説明します。
z/OS Simple Applicationの紹介
はじめに
このアプリケーションは、もともとz/OSプラットフォーム上で開発され、VSAMとQSAMファイルとDB2表を使用するバッチおよびCICSコンテキストで使用されるCOBOLプログラムを実装していました。
データはz/OSからアンロードされ、UNIXプラットフォーム上で、、Oracle Tuxedo Application Rehosting Workbenchを使用して変換および再ロードされました。
言語コンポーネントは、Oracle Tuxedo Application Rehosting Workbenchによって、z/OSからUNIXに変換または翻訳されました。
これらのコンポーネントは、2つの主要なOracle Tuxedo Applicationコンポーネント、Batch RuntimeとCICS Runtimeを使用して、元のz/OS環境のテクニカル集中機能をエミュレートしています。ここでは、CICS文とDB2文を使用するCOBOLプログラムを実装するCICS Runtimeの個別的な事例に重点を置きます。
このSimple Applicationは、作成、変更および削除のような一連の古典的な機能を使用して企業の顧客を管理します。
CICS Simple Applicationコンポーネントの説明
z/OS CICS CSDファイルでは、すべてのCICSコンポーネントが同じ名前を使用して宣言されます。リソース宣言はすべて、PJ01TERMという名前のz/OS CICS GROUP内で行われます。このグループは、CICSを自動インストールするために起動時に使用されたz/OS CICS LIST PJ01LISTで宣言されます。
マップセット
 
プログラム
 
トランザクション・コード
 
VSAMファイル
 
CICS Runtimeを伴う標準CICSアプリケーションの構成
最初の例では、UNIXのOracle表に変換されたz/OS VSAMファイルだけを使用する、CICS Simple File-to-Oracleアプリケーションを使用します。
この例では、プラットフォーム移行で生成されたUNIXコンポーネントは、すべてtrfディレクトリに格納されています。
COBOLプログラムおよびBMSマップセットは、コンパイルし、${HOME}/trf/cobexeおよび${HOME}/trf/MAP_TCPの各ディレクトリで実行可能モジュールとして使用できるようにする必要があります。
Simple File-to-Oracle ApplicationのUNIXコンポーネント
COBOLプログラム・ファイル
${HOME}/trf/cobexeディレクトリには、次のSimple Application CICS実行可能プログラムがあります。
マップセット・ファイル
${HOME}/trf/MAP_TCPディレクトリには、次のコンパイル済のSimple Application Data z/OS BMSマップセットがあります。
CICS Runtimeの構成
標準アプリケーションの場合は、初期設定のほか、同じグループの次のCICSリソースを実装する必要があります。
これらのリソースを構成する手順:
1.
2.
CICS Runtimeに対してCICSリソースを宣言する手順
各リソースは、そのリソースのタイプ(プログラム、トランザクションなど)に対応するファイル内で宣言されます。リソース・ファイルで定義された各リソースは、グループに属する必要があります。
CICS Simple File-to- Oracle Applicationを使用する次のいくつかの例では、CICS Runtimeグループ名SIMPAPPを使用し、*.descファイルはすべて、${home}/trf/config/resourcesディレクトリに置かれます。
注意:
CICSトランザクション・コードを宣言する手順
これらの宣言は、実装の必要がある各トランザクションのtransactions.descファイルを設定することによって行われます。
各トランザクションに対して、csv形式で宣言する必要があります
1.
2.
3.
4.
File-to-Oracle Simple Applicationの例では、COBOLプログラムRSSAT000RSSAT001RSSAT002およびRSSAT003を起動する、SIMPAPPグループの4つのトランザクション、SA00SA01SA02およびSA03を宣言する必要があります。
記入が済むと、transactions.descファイルは次のようになります。
リスト5‑1 Simple Applicationのtransactions.descファイル
#Transaction Name ;Group Name ; Description ;Program Name
SA00;SIMPAPP; Home Menu Screen of the Simple Application;RSSAT000
SA01;SIMPAPP; Customer Detailed Information Screen of the Simple Application;RSSAT001
SA02;SIMPAPP; Customer Maintenance Screen of the Simple Application;RSSAT002
SA03;SIMPAPP; Customer List of the Simple Application;RSSAT003
 
CICS COBOLプログラムを宣言する手順
以前に宣言されたトランザクションによって、(LINK、XCTL、STARTなどのEXEC CICS文を介して)直接的または間接的に使用されるすべてのプログラムは、同じグループ内で宣言される必要があります。
これらの宣言は、実装する各プログラムのprograms.descファイルで行われます。
各プログラムに対して、csv形式で宣言する必要があります
1.
2.
3.
4.
Simple Applicationの例では、必要なプログラムはRSSAT000RSSAT001RSSAT002およびRSSAT003のみで、これらはすべてCOBOL言語でコーディングされています
記入が済むと、programs.descファイルは次のようになります。
リスト5‑2 Simple Applicationのprograms.descファイル
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE;
RSSAT000;SIMPAPP; Home Menu Program of the Simple Application ;COBOL
RSSAT001;SIMPAPP; Customer Detailed Information Program of the Simple Application ;COBOL
RSSAT002;SIMPAPP; Customer Maintenance Program of the Simple Application
RSSAT003;SIMPAPP; Customer List of the Simple Application ;COBOL
 
注意:
CICSマップセットを宣言する手順
3270ターミナルまたはエミュレータを介してエンド・ユーザーと対話するには、このドキュメントでこれまで説明してきた特定のEXEC CICS文を介して以前に定義されたCOBOLプログラム内で使用された物理マップセット(*.mpdefファイル)のすべてを、CICS Runtimeに対して宣言します。
これらの宣言は、実装の必要がある各マップセットのmapsets.descファイルを設定することによって行われます。
各マップセット定義の入力書式は、次の書式の説明を遵守する必要があります。
1.
最初の空の物理行に、[mapset]キーワードを入力します。
2.
次の行で、キーワードname=に続けて、マップセットの名前を入力します。
3.
次の行で、キーワードfilename=に続けて、物理マップセット(.mpdefファイル)の物理パスを入力します。
このSimple Applicationの例では、COBOLプログラムで使用されるマップセットは、RSSAM00RSSAM01RSSAM02およびRSSAM03です。
記入が済むと、mapsets.descファイルは次のようになります。
リスト5‑3 Simple Applicationのmapsets.descファイル
[mapset]
name=ABANNER
filename=<KIXDIR>/sysmap/abanner.mpdef [mapset]
name=RSSAM00
filename=<HOME>/demo/MAP_TCP/RSSAM00.mpdef
[mapset]
name=RSSAM01
filename=<HOME>/demo/MAP_TCP/RSSAM01.mpdef
[mapset]
name=RSSAM02
filename=<HOME>/demo/MAP_TCP/RSSAM02.mpdef
[mapset]
name=RSSAM03
filename=<HOME>/demo/MAP_TCP/RSSAM03.mpdef
 
注意:
mapsets.descファイルはUNIX変数を受け入れないため、このファイルには完全に展開したパスを指定する必要があります。
<KIXDIR>: ~/.profile${KIXDIR}変数の値に置換する必要があります。
<HOME>: ~/.profile${HOME}変数の値に置換する必要があります。
z/OS VSAMファイル変換から生成されたISAMファイルを宣言する手順
従来は、1つ以上のファイルをCICS Runtimeに対して宣言する前に、すべての物理コンポーネント、ファイル、アクセッサ・プログラム、Cobolコピーブックなどが、Oracle Tuxedo Application Rehosting Workbench Dataコンポーネントによって生成されている必要がありました。
Oracle Tuxedo Application Rehosting Workbench Dataコンポーネントによってビルドまたは変換されたすべてのコンポーネントのうち、変換済VSAMファイルのアクセッサ・プログラムのみがCICS Runtimeによって使用されます。これは、移行後、ファイルには直接アクセスできなくなるためです。ファイルには、このファイルの管理専用のアクセッサ・プログラムを介して、間接的にのみアクセスできます(ソース・ファイル1つにつき、アクセッサ・プログラムは1つのみ)。
Simple Applicationは、z/OS VSAM KSDSファイルPJ01AAA.SS.VSAM.CUSTOMERのOracle Tuxedo Application Rehosting Workbenchデータ変換から生成されたCUSTOMER Oracle表のみを使用します。
このため、このFile-to-Oracleアプリケーションの例では、CICS Runtimeに対して宣言するためのアクセッサは、RM_ ODCSF0の1つのみとなります(RMはRelational Moduleの略)。
注意:
ODCSF0は、物理ファイル名PJ01AAA.SS.VSAM.CUSTOMERを指す、CICSで以前に定義された論理名を表します。従って、EXEC CICS文によりCICS Cobolプログラムからこのファイルにアクセスするために認識されている唯一のファイル名でもあります。
ISAM移行済ファイルを宣言する手順:
1.
このSimple Applicationの例では、次の行を入力する必要があります(説明を簡単にするため、ファイルの場所をubbconfig、envfileおよびtuxconfigファイルと同じ場所に指定しましたが、これは必須でありません)。
DD_VSAMFILE=${HOME}/trf/config/tux/desc.vsam
2.
ファイルが存在しない場合、示された場所に、desc.vsamファイルを物理的に作成します。
3.
このSimple Applicationの例では、次の行が入力されます。
リスト5‑4 Simple ApplicationのISAMファイル宣言
#DDname;Accessor;DSNOrganization;Format;MaxRecordLength;KeyStart;KeyLength
ODCSF0;ASG_ ODCSF0;I;F;266;1;6
 
説明:
ODCSF0
EXEC CICS文で使用されるデータ記述名(論理名)です。
RM_ODCSF0
以前のVSAMファイルのデータ変換から生成されたOracle表へのアクセスを管理するアクセッサ・プログラムの名前です。
I
データ・セット名組織は索引編成済です
F
FixedのFで、すべてのレコードが同じ固定長の形式です
266
最大レコード長。
1
ファイル内でのキー位置(1は1列めまたは1文字めを意味します)。
6
キー長。
CICS Runtime Tuxedoサーバーを変更する手順
以前に定義されたサーバーに加えてCICSアプリケーション・トランザクションを管理する手順:
1.
CICS Runtime TuxedoサーバーARTSTRNを実装します。
このサーバーは、同期(遅延なし)および同時(一度に1つずつでない)の、最も多く使用される基本的なCICSランタイム・トランザクションのみを管理します。
2.
SIMPAPP CICS Runtimeグループ名に属するトランザクションのみが開始されることを、CICS Runtimeに対して示します。
Tuxedo ubbconfigファイルの*SERVERSセクションの次の例は、ARTSTRNサーバーの構成を示しています。
リスト5‑5 Simple ApplicationのCICSランタイム・サーバーのTuxedoの構成
*SERVERS
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP "
 
ここでは、次のとおりです
*SERVERS
サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。
SRVGRP
ARTSTRNが属するTuxedoグループ名です。
SRVID
ARTSTRNのTuxedoサーバーの識別子です。
CONV=Y
このサーバーが対話モードで動作していることを示します。
MIN=1およびMAX=1
このサーバーのインスタンスは1つのみ実行可能であることを示します。
REPLYQ=Y
このサーバーが応答することを示します。
RQADDR=QCNX015
レスポンスに使用されるTuxedoキューの名前。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
-o
サーバーの標準出力メッセージのために使用されるファイルを示します。
-e
サーバーのエラー出力メッセージのために使用されるファイルを示します。
-r
統計レポートを提供するために使用されるTuxedoパラメータです。
-s KIXR
KIXRトランザクションが実行されるCICS Runtime名を示します。
-l SIMAPP
SIMAPPグループのトランザクションだけが選択されることを示します。
CICS Runtime Tuxedoサーバー・グループを変更する手順
ARTSTRNサーバーが起動されるためには、以前に定義された(かつコメントされていない) Tuxedoサーバー・グループ内のubbconfigファイルで定義される必要があります。
この例では、ARTSTRNはTuxedoサーバー・グループGRP02 (SRVGRP=GRP02)に属しています。
リスト5‑6 Simple ApplicationのCICS Runtime Tuxedoサーバー・グループの例
*GROUPS
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
TMSNAME="TMS_ORA"
 
ここでは、次のとおりです
*GROUPS
サーバー・セクション・グループ・セクションの定義を示すTuxedo ubbconfigキーワード。
GRPNO=
Tuxedoグループ。
ENVFILE=
Tuxedo envfileのパス。
TMSNAME=
Tuxedo Transaction Manager Server実行可能ファイルの名前。
CICSアプリケーションのインストールの検証
Tuxedo tmadmin psrコマンドの使用
Tuxedo tmadmin psrコマンドを入力して、必要なCICSランタイム・サーバー(ARTTCPLARTCNXおよびARTSTRN)がすべて実行されており、そのメッセージがTuxedoのドキュメントとこのドキュメントに準拠していることを確認します。
リスト5‑7 tmadmin psr Simple Applicationのインストール・チェック
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
BBL 200933 KIXR 0 2 100 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 2 100 ( IDLE )
ARTSTRN QKIX110 GRP02 20 6 300 ( IDLE )
 
> quit
#
 
Tuxedo tmadmin pscコマンドの使用
Tuxedo tmadmin pscコマンドを入力し、実行されているすべての異なるTuxedoサービスを表示することによって、別のチェックが可能です。
CICSランタイム・システムのトランザクション/サービス(CSGMCESNCESFなど)に加え、これで、CICSランタイム・アプリケーションSA00SA01SA02およびSA03のトランザクション・コードを参照できます
リスト5‑8 tmadmin psc Simple Applicationのインストール・チェック
# tmadmin
...
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 1 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 1 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 3 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 3 AVAIL
 
> quit
#
CICSランタイム・アプリケーションの使用
CICSアプリケーションを使用する前に、アプリケーションがアクセスするISAMファイルにデータを移入する必要があります。次に、3270ターミナルまたはエミュレータで、UNIX x3270コマンドを使用してCICS Runtimeにアクセスします。次のようになる必要があります。
# x3270 ${HOSTNAME}:${TCPNETADDR}
説明::
${HOSTNAME}
CICS Runtimeを実行しているUNIXマシンの名前を含んでいる、システムUNIX変数です。
${TCPNETADDR}
Tuxedo管理者により、インストール時にubbconfigファイルにセットアップされたUNIX 3270エミュレータのポート番号です。
1.
2.
3270エミュレータ・キーパッドの[Clear]キーを押してクリアします。
3.
図5‑1 Simple Applicationトランザクション・コード入力
4.
図5‑2 Simple Applicationメイン・メニュー
5.
COBOL-IT / BDBにおけるSimple Applicationの紹介
XAプロトコルを使用するBDBに基づき、COBOL-ITによってコンパイルされたCICS COBOLプログラムは、ART Workbenchを使用してMainframe VSAMファイルから変換される索引編成ISAMファイルにアクセスできます。次の項では、このアプリケーションを有効化するためにART CICS Runtimeで実行する必要がある構成について説明します。
CICS Runtimeにおけるubbconfigファイルの構成
MRMパラメータをTuxedo ubbconfigファイルの*GROUPSおよび*RMSセクションのグループ・エントリに追加します。次の例を参照してください。
リスト5‑9 ubbconfigファイルにMRMパラメータを追加する例
*GROUPS
GRP02
GRPNO=12
MRM=Y
*RMS
MRMG_RM1
SRVGRP=GRP02
RMID=15
TMSNAME="TMS_BDB"
OPENINFO="BERKELEY-DB:/home2/work10/data"
 
説明:
*GROUPS
サーバー・グループの定義を示すTuxedo ubbconfigキーワード。
GRPNO
Tuxedoグループを示します。
MRM= Y
このサーバー・グループが複数のリソース・マネージャをサポートできることを示します。
*RMS
リソース・マネージャの定義を示すTuxedo ubbconfigキーワード。
MRMG_RM1
RMSエントリの論理名を示します。
SRVGRP
このRMに関連付けられているグループ名を示します。
RMID
グループ内の対象RMの固有のID番号を示します。ID番号は1から31の間である必要があります。
TMSNAME
SRVGRPによって指定されるグループに関連付けられているトランザクション・マネージャ・サーバー名を示します。
OPENINFO
関連するグループのリソース・マネージャを開くときに必要な、リソース・マネージャに依存する情報を示します。
BDB TMSサーバーの構築
BDB TMSサーバーを構築するには、次の行を$TUXDIR/udataobj/RMに追加します。
BDB_HOME=/opt/cobol-it-64-bdb
BERKELEY-DB:db_xa_switch:-L/opt/cobol-it-64-bdb/lib -ldb-5
RMファイルを更新した後、次のコマンドを実行してBDB用TMSサーバーを構築します。
buildtms -v -r BERKELEY-DB -o $APPDIR/TMS_BDB
ARTサーバー起動前の変数のエクスポート
ARTサーバーを起動する前に次の変数を明示的にエクスポートします。
export DD_RBDB02=${DATA}/MTWART.ES.SFI.RCIBDB02.BDB0122
RBDB02は論理ファイル名です。
export COB_ENABLE_XA=1
限られた数の並列インスタンスを持つ同期CICSトランザクションの実装
一部の特定の事例では、たとえばパフォーマンスの制約のために、同じトランザクション・コードを扱う同時実行トランザクションの数を制限する必要があります。
z/OSでは、この制限はトランザクション・リソース自体で定義できず、TRANCLASS (トランザクション・クラス)という名前の独立したリソースで定義され、ここには、同じトランザクションの同時インスタンスの最大数を記述する、固有のMAXACTIVEパラメータが含まれます。
トランザクションをトランザクション・クラスにリンクし、そのパラメータ、特にMAXACTIVEパラメータを継承するために、z/OS CICSトランザクション・リソースには、TRANCLASSリソースの名前を含むTRANCLASSフィールドがあります。
このインスタンス管理は、CICS Runtimeを使用するUNIX上では、異なる方法で実行されます。同時実行トランザクションの最大数は、同じトランザクションを提供するサーバーの数によって定義されます。この最大数と最小数は、それぞれ、Tuxedoファイルubbconfig*SERVERSセクションにあるARTSTRN定義の、MAXおよびMINパラメータで示されます。
これは、次の非常に個別的な事例を除いて、これらの制限を管理するためにmaxactiveパラメータが考慮されないことを意味します。
MAXACTIVE=1のトランザクション・クラスの特例
MAXACTIVE=1は、この種類のトランザクション・クラスに属する同時トランザクションが同時実行できないことを示すため、この管理の例外です。
この非常に個別的な順次トランザクションの事例を管理するには、Tuxedo CICS Runtime機能を構成する必要があります
順次トランザクションの場合のubbconfigファイルの変更
MAXACTIVEが2以上のトランザクション・クラスにリンクされているトランザクションはすべてCICS Runtime TuxedoサーバーARTSTRNによって管理されており、他に何も変更する必要がありません。MAXACTIVEパラメータが1に設定されているトランザクションでは、ARTSTR1という名前のCICS Runtime Tuxedoサーバーが、特定の管理を専門に扱います。
このサーバーをアクティブ化するには、次のようにubbconfigファイルを変更して、*SERVERSセクションにこのサーバーを追加します。
リスト5‑10 ubbconfigへのARTSTR1サーバーの追加
*SERVERS
ARTSTR1 SRVGRP=GRP02
SRVID=200
CONV=Y
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_str1 -e /home2/work9/demo/Logs/TUX/sysout/stderr_str1 -r -- -s KIXR -l SIMPAPP"
 
説明:
*SERVERS
サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。
SRVGRP
ARTSTR1が属するTuxedoグループ名です。
SRVID
ARTSTR1 Tuxedoサーバーの識別子です。
CONV=Y
このサーバーが対話モードで動作していることを示します。
MIN=1およびMAX=1
必須で、このサーバーのインスタンスは1つのみ実行可能であることを示します。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
-o
サーバーの標準出力メッセージのために使用されるファイルを示します。
-e
サーバーのエラー出力メッセージのために使用されるファイルを示します。
-r
統計レポートを作成するために使用されるTuxedoパラメータです。
-s
KIXRは、KIXRトランザクションが実行されるCICS Runtime名を示します。
-l SIMAPP
SIMAPPグループのトランザクションだけが選択されることを示します。
注意:
CICS Runtimeトランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRNおよびARTATR1)はすべて、同じCICS Runtimeトランザクション・グループ・サーバーを共有しており、ubbconfigサーバー・グループ・セクション(*GROUPS)を変更する必要はありません。
tranclasses.descファイルの変更
ART CICSの場合、並列性がデフォルト動作であるため、同時トランザクションを、2以上のMAXACTIVEパラメータを持つトランザクション・クラスに制限する必要は、実際にはありません。
順次トランザクションの場合は、CICS Runtimeに対してこれらのトランザクションを宣言する唯一の方法であるため、必須です。MAXACTIVE=1パラメータで定義されている特定のトランザクション・クラスを宣言します。他のCICSランタイム・リソースと同様に、これはCICSランタイム・グループ名に属する必要があります。各TRANCLASSに対して、csv形式で次のように宣言します。
1.
2.
3.
4.
注意:
例:
TRCLASS1;SIMPAPP ; Tranclass with maxactive set to 1; 1
TRCLASS2;SIMPAPP ; Tranclass with maxactive set to 2; 2
TRCLAS10;SIMPAPP ; Tranclass with maxactive set to 10; 10
TRCLASS1が持っている最初のtransclassのmaxactiveパラメータは1であり、このtransclassに属するすべてのトランザクションがARTSTR1によって順次管理される必要があることを示します。
最後の2つのtranclasses (TRCLASS2およびTRCLASS10)は、maxactiveパラメータが1より大きく、これらのtranclassesに属するトランザクションがARTSTRNサーバーの管理下で同時実行できることを示しているため、実際類似しています。
注意:
transactions.descファイルの変更
このcsv形式ファイルの最初の4つの必須フィールド(トランザクション名、グループ名、説明、プログラム名)に加えて、12番目のフィールド、TRANCLASS(トランザクション・クラス名)を追加する必要があります。
TRANCLASSフィールドは、1つ以上の空白をそれぞれの間に挟む8つのセミコロン(;)によって、Programフィールドから区切る必要があります。
この例では、CICS Runtime Simple Applicationに、次のMAXACTIVE制限を持っていると想定します。
これらのトランザクションは、以前に定義した次のtranclassesにリンクされる必要があります。
変更が済むと、transactions.descファイルは次のようになります。
リスト5‑11 サンプルのtransactions.descファイル
#Transaction Name ;Group Name ; Description ;Program Name
SA00;SIMPAPP; Home Menu Screen of the Simple Application;RSSAT000
SA01;SIMPAPP; Customer Detailed Information Screen of the Simple ; Application;RSSAT001; ; ; ; ; ; ; ;TRCLASS1
SA02;SIMPAPP; Customer Maintenance Screen of the Simple Application;RSSAT002; ; ; ; ; ; ; ; TRCLASS2
SA03;SIMPAPP; Customer List of the Simple Application;RSSAT003; ; ; ; ; ; ; ; TRCLASS10
 
注意:
SA00には変更が行われませんが、これは、このトランザクション・コードにトランザクション・クラスが関連付けられていないことを意味しています。つまり、このトランザクションはMAXACTIVE=1パラメータに関連付けられておらず、順次トランザクションではありません。
SA02SA03は、MAXACTIVE >= 2と定義されているトランザクション・クラスTRCLASS2とTRCLASS10にそれぞれ関連付けられています。これらのトランザクションが必要でないとわかっている場合、結果は、SA02SA03がSA00のようにトランザクション・クラスなしで定義されている場合と正確に同じになります。
順次実行できるSA01は、トランザクション・クラス・フィールドが必須である唯一のものです。それに関連付けられているトランザクション・クラス(TRCLASS1)が、実際にMAXACTIVE=1と定義されていることを確認します。
ARTSTR1構成の確認
Tuxedo tmadmin psrコマンドの使用
ARTSTR1を次に示します。
リスト5‑12 tmadmin psrコマンドを使用したARTSTR1サーバーの確認
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 3 150 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
 
> quit
#
Tuxedo tmadmin pscコマンドの使用
新しいサービスやトランザクションは、表示されません。
ARTSTRNが実行されている唯一のサーバーであるこの例では、ARTSTR1もアクティブにされた場合に何も変化がないことがわかります。
リスト5‑13 tmadmin pscコマンドを使用したARTSTRNサーバーの確認
# tmadmin
...
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
 
> quit
#
非同期CICS非遅延トランザクションの実装
これらのトランザクションは、実行を遅らせるためにDELAYまたはTIMEパラメータを使用していないCICSプログラム内でコーディングされている特定のCICS EXEC CICS START TRANSIDリクエストによって起動されます。
プログラムの少なくとも1つにこの種の文が含まれる場合は、他のどの設定も変更することなく、CICS Runtime Tuxedoサーバーの一部の新機能をインストールし、アクティブ化します。
Tuxedo ubbconfigファイルの変更による非同期トランザクションの管理
ARTSTRNサーバーとARTSTR1サーバーに関しては、ファイルは同じ方法で変更されますが、これらのサーバーの名前に接頭辞を付けるために使用される文字「s」(同期)を、文字「a」(非同期)に置き換える必要があります。
並列非同期トランザクションの使用
MAXACTIVEパラメータが厳密に1より大きい並列非同期トランザクションを使用するための専用サーバーがARTATRNです。atrn_serverをインストールするには、ARTSTRNサーバーのインストールについて説明している項を参照してください。
また、tmadmin psrおよびpscコマンドを使用して、設定を確認できます。
Simple Applicationの例では、次のようになります。
psrコマンドは、新しいサーバーがARTATRNを実行していることを示します。
pscコマンドは、5つの新しいサービスが実行されており、1つは非同期トランザクション専用ですが、各同期トランザクション(SA00 - SA03)は、非同期モードで実行できるように複製されることを示します(ASYNC_SA00 - ASYNC_SA03)。
リスト5‑14 並列非同期トランザクションを示すtmadminコマンド
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL           200933 KIXR 0 4 200 ( IDLE )
ARTTCPL       00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
 
> quit
{deimos:work9}-/home2/work9/demo/config/tux#{deimos:work9}-/home2/work9/demo/config/tux#
 
非並列非同期トランザクションの使用
MAXACTIVEパラメータが正確に1に等しい非並列的な非同期トランザクションを使用するための専用サーバーはARTATR1です。
ARTSTR1サーバーをインストールするには、ARTSTR1サーバーの理由とインストールについて説明している項を参照してください。
また、Tuxedo tmadmin psrおよびpscコマンドを使用して、設定を確認できます
Simple Applicationの例では、次のようになります。
psrコマンドは、新しいサーバーがARTATR1を実行していることを示します。
リスト5‑15 非並列非同期トランザクションを示すtmadminコマンド
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 4 200 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
 
> quit
#
 
非同期CICS遅延トランザクションの実装
ART CICS Runtimeでは、EXEC CICS START TRANSIDリクエストで起動される非同期CICS遅延トランザクションを、次の2つの方法で実装できます。
ARTSRMサーバーを使用した非同期トランザクションの実装
z/OSには、ATTIMEAFTERINTERVALなど、トランザクションを指定の時間または指定の間隔後に起動するための、時間に関係するいくつかのCICS START APIオプションがあります。ART CICS Runtimeには、これらのオプションを実装するサーバーARTSRMが用意されています。詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』ARTSRMの構成に関する項を参照してください。
このサーバーをアクティブ化するには、UBBCONFIGファイルの*SERVERSセクションでARTSRMを構成します。一連のARTSRMサーバーが各CICSリージョンの同じグループにある場合のみ、これらを構成できます。次に例を示します。
リスト5‑16 UBBCONFIGでのARTSRMの構成の例
*SERVERS
ARTSRM
SRVGRP=ARTGRP
SRVID=500
RESTART=Y
MAXGEN=5
GRACE=3600
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_srm -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
 
注意:
/Qを使用した非同期トランザクションの実装は引き続きサポートされていますが、START TRANID/CANCELコマンドが呼び出されると、リクエストはまず、ARTSRMで通知されるTRANCTL_[SYSID]サービスに送信されます。呼出しがTPNOENTエラー・コードを受け取ると、次に/Qを使用してリクエストを再ディスパッチします。
/Qを使用した非同期トランザクションの実装
非同期トランザクションが起動されるのは、EXEC STARTASYNC_QSPACEがオプションINTERVALまたはPROTECTを使用して設定される場合です。
この場合、トランザクション・リクエストはOracle Tuxedo /Qキューに保存され、時刻になると、トランザクションが自動的に起動されます。
この機能を有効にするには、次のコンポーネントを構成する必要があります。
1.
ASYNC_QSPACEという名前のOracle Tuxedo /Qキュー・スペース
2.
ASYNC_QSPACE内のASYNC_QUEUEという名前のOracle Tuxedo /Qキュー。
3.
これらの非同期トランザクション専用のTMQUEUEサーバーとTMQFORWARDサーバー。
Tuxedo /Qの作成
CICS Runtimeには、すべてのTuxedo /Qコンポーネントを作成するUNIXスクリプト、mkqmconfig.shが用意されています。
1.
スクリプトを使用する前に、UNIX ~./.profileファイル内で、次のものを定義およびエクスポートします。
QMCONFIG変数QMCONFIG - Tuxedo /Qキュー・スペースASYNC_QSPACEが格納されているディレクトリのフルパスが含まれています。
KIX_QSPACE_IPCKEY変数 - キュー・スペースのIPCキーが含まれています。
~/.profile変数と値の例:
export QMCONFIG=${HOME}/trf/config/tux/kixqspace
export KIX_QSPACE_IPCKEY=200955
2.
コマンドラインからmkqmconfig.shを実行して、Tuxedo /Q機能を作成します。
Tuxedo /Qキュー管理のためのTuxedo ubbconfigファイルの変更
1.
GQUEUEサーバー・グループを、ubbconfigファイルの*GROUPセクションに追加する必要があります。
リスト5‑17 Simple Application Tuxedoキューubbconfigの例
*GROUPS
# /Q
GQUEUE GRPNO=1000
TMSNAME=TMS_QM TMSCOUNT=2
OPENINFO="TUXEDO/QM:/home2/work9/demo/config/tux/kixqspace:ASYNC_QSPACE"
 
説明:
*GROUPS
サーバー・グループの定義を示すTuxedo ubbconfigキーワード。
GRPNO=
Tuxedoグループ。
TMSCOUNT=
Tuxedoトランザクション・マネージャ・サービスの数
TMSNAME
Tuxedo Transaction Manager Server実行可能ファイルの名前。
OPENINFO=
Tuxedo /Qトランザクション・マネージャQMに対して、管理対象のQSPACE名とそのUNIX絶対パスを示します。
2.
それから、2台のサーバー、TMQUEUETMQFORWARDを、ubbconfigファイルの*SERVERSセクションに追加する必要があります。
リスト5‑18 Simple Application ubbconfigのTMQUEUEおよびTMQFORWARDの例
*SERVERS
# /Q
TMQUEUE SRVGRP=GQUEUE
SRVID=1010
GRACE=0 RESTART=Y CONV=N MAXGEN=10
CLOPT="-s ASYNC_QSPACE:TMQUEUE -- "
TMQFORWARD
SRVGRP=GQUEUE
SRVID=1020
GRACE=0 RESTART=Y CONV=N MAXGEN=10
CLOPT="-- -n -i 2 -q ASYNC_QUEUE"
 
説明:
*SERVERS
サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。
SRVGRP
サーバーが属するTuxedoグループ名です。
SRVID
Tuxedoサーバーの識別子です。
MAXGEN=10
プロセスが最大10のサーバーを再起動できるように指定します。
GRACE=0
サーバー再起動の数が含まれる制限間隔がないことを意味します。
CONV=N
このサーバーが非対話モードで動作していることを示します。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
tmadmin psrおよびpscコマンドを使用して、4台の新しいサーバーと2つの新しいサービスが実行されていることを確認します。
リスト5‑19 Simple Application TMQUEUEおよびTMQFORWARDのtmadminの例
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL           200933 KIXR 0 4 200 ( IDLE )
ARTTCPL       00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMS_QM        GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_QM        GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMQUEUE       01000.01010 GQUEUE 1010 0 0 ( IDLE )
TMQFORWARD    01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
 
> quit
#
 
一時記憶域(TS)キューを使用したCICSアプリケーションの実装
これらのトランザクションは、CICS一時記憶域キューに関連するEXEC CICSリクエストを含むCICSプログラムを使用します。
使用される文は、EXEC CICS WRITEQ TS … END-EXECEXEC CICS READQ TS … END-EXECEXEC CICS DELETEQ TS … END-EXECです。
プログラムの少なくとも1つがこれらの文の1つを含んでいる場合は、他の設定を変更せずに、CICS Runtimeの新機能をインストールし、アクティブにします。
TSキューを管理するには、ARTTSQ CICS Runtime Tuxedoサーバーをアクティブにします。
このサーバーをアクティブにするには、Tuxedo ubbconfigファイルの*SERVERSセクションに、このサーバーを追加します。
リスト5‑20 ubbconfigファイルでのARTTSQのアクティブ化
*SERVERS
ARTTSQ SRVGRP=GRP02
SRVID=40
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tsq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tsq -r -- -s KIXR -l SIMPAPP"
 
説明:
*SERVERS
サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。
SRVGRP
ARTTSQが属するTuxedoグループ名です。
SRVID
ARTTSQのTuxedoサーバーの識別子です。
MIN=1およびMAX=1
このサーバーのインスタンスは1つのみ実行可能であることを示します。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
-o
次のファイルがサーバーの標準出力メッセージのために使用されることを示します。
-e
次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。
-r
統計レポートを提供するために使用されるTuxedoパラメータです。
-s KIXR
トランザクションが実行されるCICS Runtime名がKIXRであることを示します。
-l SIMAPP
起動時にSIMAPPグループのコンポーネントだけが選択されることを示します。
Tuxedo tmadmin psrおよびpscコマンドを使用して、サーバーが実行され、6つの新しいサービスが公開されていることを確認します。
リスト5‑21 ARTTSQサーバーおよびサービスの実行確認
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL           200933 KIXR 0 3 150 ( IDLE )
ARTTCPL       00001.00101 TCP00 101 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
TSM00004_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00003_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00002_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00001_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00000_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
 
> quit
{deimos:work9}-/home2/work9/demo/config/tux#
 
回復できないTSキューの実装
回復できないTSキューの場合、内容に関する整合性はCICS Runtimeによって保証されません。たとえば、CICSトランザクションのどこかの時点で異常終了が発生した場合、このTSに対する作業は最後の整合性ポイントにロールバックされません。
TSキューは、KIX_TS_DIR UNIX環境変数で定義される専用ディレクトリの順編成ファイルに格納されます。この変数は、~/.profile UNIXシステム・ファイルで定義され、そこからエクスポートされます。
KIX_TS_DIR=${HOME}/trf/KIXTSDIR
Tuxedo ubbconfigファイルを変更して、管理専用の新しいARTTSQサーバーをアクティブ化します。
回復可能なTSキューの実装
これらのTSキューについては、CICS Runtimeが内容の整合性を保証します。たとえば、CICSトランザクションのどこかの時点で異常終了が発生した場合、最後の整合性ポイントにロールバックされ、すべて正常であれば、その内容がコミットされて新しい整合性ポイントになります。これらのTSキューは、RDBMS整合性管理を活用するために、Oracle表に格納されます。
TSキューに関しては、リカバリ可能なTSキューの強化動作があります。
ソースCICS z/OSで、CICSエンキューがREADQ TSコマンドに対して呼び出されないため、あるタスクが一時保存キュー・レコードを読み取ると同時に、別のタスクは同じレコードを更新することが可能になります。これを回避するには、タスクを同時に実行しても同じ一時保存識別子でキューの読取りおよび変更ができるように、一時保存キューで明示的なエンキューを使用します。
また、この動作によって、リカバリ可能なTSキューがコミットされる前またはロールバックされた後でも、1つのトランザクションではそのキュー内に新しく書き込まれたレコードを参照または読み取ることが可能になります。
ターゲット側では、この制限はありませんが、特に次の場合には制限があります。
回復可能なTSキューを使用する手順
回復可能なTSキューを使用するには、TSキューを含むようにOracle表を定義する必要があります。CICS Runtimeには、これらすべての表を作成するためのUNIXスクリプト、crtstable_Oracleが備えられています。
1.
スクリプトを使用する前に、UNIX ~./.profileファイルから、次のものを定義およびエクスポートします
~/.profile変数と値の例:
export ORA_USER="Oracle_User_1"
export ORA_PASSWD="Oracle_Pswd_1"
2.
変数の設定が完了したら、crtstable_Oracleスクリプトを実行します。
3.
続いて、Tuxedo ubbconfigファイルを変更して、*GROUPSセクションで、ARTTSQがOracleへの接続を確立するために使用するサーバー・グループを変更します。
リスト5‑22 ARTTSQサーバーで使用されるサーバー・グループGRP02に関連するTuxedo ubbconfigファイルの*GROUPセクションの例。
*GROUPS
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
TMSNAME="TMS_ORA" OPENINFO="Oracle_XA:Oracle_XA+Acc=P/work9/work9+SesTm=600+LogDir=/home2/work9/demo/Logs/TUX/xa+DbgFl=0x20"
 
説明:
*GROUPS
サーバー・グループの定義を示すTuxedo ubbconfigキーワード。
GRPNO=
Tuxedo Group number.
TMSNAME=
Tuxedo Transaction Manager Server実行可能ファイルの名前。
OPENINFO=
パラメータがOracle_XA Managerに送信します。
4.
リスト5‑23 Simple Applicationの回復可能なTSキューのチェック
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL           200933 KIXR 0 4 200 ( IDLE )
ARTTCPL       00001.00101 TCP00 101 0 0 ( IDLE )
TMS_ORA       GRP02_TMS GRP02 30001 0 0 ( IDLE )
TMS_ORA       GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA       GRP02_TMS GRP02 30003 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
TSM00004_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00003_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00002_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00001_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00000_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
 
> quit
#
 
TDキュー・イントラパーティションの管理
ソース・プラットフォーム・メカニズムの紹介
一時データ管理
CICS一時データ管理機能は、一般化されたキューイング機能を提供します。データを後続の内部または外部処理のためにキューに格納できます。アプリケーション・プログラムで指定して選択されたデータは、事前定義済のシンボリック一時データ・キューとの間で、イントラパーティションまたはエクストラパーティションでルーティングできます。
一時データ・キューは、CICSリージョンに割り当てられた機能と関連付けられた場合、イントラパーティションです。データがCICSリージョンの外部の宛先にダイレクトされる場合、エクストラパーティションです。一時データ・キューは、アプリケーション・プログラムによる最初のリファレンスより前に定義およびインストールする必要があります。
次の操作を実行できます。
注意:
イントラパーティション一時データ・キュー
イントラパーティションとは、別のタスクとして実行中の1つ以上のプログラムで使用される直接アクセス・ストレージ・デバイスのデータのことを指します。これら内部キューとの間でダイレクトされるデータはイントラパーティション・データと呼ばれます。可変長のレコードで構成されている必要があります。
ユーザー・タスクによってキューにデータが書き込まれた場合、このキューはその後CICSリージョン内の別のタスクの入力データとして使用できます。アクセスはすべて順次に行われ、読取りと書込みポインタによって制御されます。読み取られたレコードは、その後、別のタスクから読み取ることはできません。イントラパーティション・データは最終的にリクエストによりターミナルに転送されるか、出力データセットから順次取得されます。
イントラパーティション・データの典型的な使用には次が含まれます。
イントラパーティション一時データ・キューには次の3種類があります。
回復不能
回復不能なイントラパーティション一時データ・キューは、CICSのウォーム・スタートのみで回復されます。作業ユニット(UOW)が回復不能なイントラパーティション・キューを更新し、後で更新を取り消した場合、キューに対して行われた更新は取り消されません。
物理的に回復可能
物理的に回復可能なイントラパーティション一時データ・キューは、ウォーム再起動や緊急再起動のときに回復されます。UOWが物理的に回復可能なイントラパーティション・キューを更新して、後で更新を取り消した場合、キューに対して行われた更新は取り消されません。
論理的に回復可能
論理的に回復可能なイントラパーティション一時データ・キューは、ウォーム再起動や緊急再起動のときに回復されます。UOWが論理的に回復可能なイントラパーティション・キューを更新し、後で更新を取り消した場合、キューに対して行われた更新も取り消されます。ウォーム再起動や緊急再起動では、論理的に回復可能なイントラパーティション・キューのコミット状態が回復されます。進行中のUOWは無視されます。
自動的トランザクションの初期化(ATI)
イントラパーティション・キューの場合は、CICSは自動トランザクション初期化(ATI)のオプションを提供します。
ATIの基盤は、システム・プログラマが特定のイントラパーティション宛先の非ゼロ・トリガー・レベルを指定することによって確立されます。キューの(1つ以上のプログラムによって発行されたWRITEQ TDコマンドが作成した)エントリ数が、指定されたトリガー・レベルに達すると、キューの定義に指定されたトランザクションが自動的に開始されます。制御はキューでのデータを処理するプログラムに渡されます。キューを使い果たすには、プログラムは繰り返しREADQ TDコマンドを発行する必要があります。
キューが空になると、新しいATIサイクルが開始します。つまり、指定されたトリガー・レベルに再び達すると、前のタスクの実行が終了しているかどうかに関係なく、新しいタスクの開始がスケジュールされます。新しいATIサイクルが開始する正確な時点は、キューが論理的に回復可能として定義されているかどうかによって異なります。キューのRECOVSTATUSがNoまたはPhysicalとして定義されている場合は、キューがQZEROとして読み取られたとき、新しいATIサイクルが開始されます。一方、キューのリカバリ性の属性がLogicalとして定義されている場合は、タスクがキューをQZEROとして読み取って終了した後にのみ、新しいATIサイクルが開始されます。
自動的に開始されたタスクがキューを空にしない場合、キューへのアクセスは禁止されません。タスクはキューが空になる前に(つまり、READQ TDコマンドへのレスポンスとしてQZERO状態が発生する前に)正常終了または異常終了することがあります。キューの内容をターミナルに送信する必要があり、前のタスクが正常終了している場合、QZEROに達していないことはトリガー処理がリセットされず、同じタスクが再開されたことを意味します。トリガー処理がリセットされていない場合、後続のWRITEQ TDコマンドは新しいタスクをトリガーしません。
ターゲット・プラットフォーム・メカニズムの紹介
Tuxedo /Q
Tuxedo /QはTDキューなどと同じ機能を持つ強力で多目的なキューイング・システムを提供します。
キューは回復可能または回復不可として定義でき、複数のオプションを使用したトリガーも可能です。エラーの管理はより高度化され、ターゲットでATIトランザクションが失敗した場合のエラー管理が簡略化されます。
アーキテクチャ設計
 
CICSの動詞READQ TD、WRITEQ TDおよびDELETEQ TD(イントラパーティション・キューに適用される)は、Tuxedoの語彙でいうと、Tuxedo /Qのキューから読取り、書込み、および削除します。(tpenqueueおよびtpdequeue)。
キューが論理的にリカバリ可能であれば、これらのアクションは現在のUOWで実行され、そうでなければ現在のUOWと関係なくアトミックに実行されます。
CICS Runtime内部では、非論理的にリカバリが可能なキューに対する操作にTPNOTRANフラグを追加することにより実行されます。
トリガー
トリガーの場合、ネイティブCICSのように、トランザクションは自動的にトリガーされます。このトランザクションは、対応するキューを読み、メッセージを処理します。
CICS Runtimeでは、これらの非同期トランザクションはARTATR1およびARTATRNのいずれかの専用サーバー・タイプARTATRにより提供および処理されます。
これらのサーバーは、すべての非同期トランザクション(より正確には、START TRANSIDまたはtdキュー・イントラパーティションに関する自動トランザクション起動により発行されたトランザクション)を処理します。
トリガー・レベルに達した場合、特定のCICSランタイム・クライアント(TDI_TRIGGER)が該当する非同期トランザクションの起動に使用されます。
TDキュー・イントラパーティションに対するRuntime CICS構成
CICS Runtimeリソース宣言
CICS RuntimeのCICSに類似した各リソースは、${KIXCONFIG}ディレクトリに格納される専用の構成ファイルによって宣言されます。
読み取りおよび書き込み処理に同じAPIを使用するとはいえ、TDキュー・エクストラパーティションおよびTDキュー・イントラパーティション・リソース宣言はわずかな引数しか共有せず、意味的にかなり異なるオブジェクトです。
この理由により、CICS Runtimeでは、TDキュー・エクストラ・パーティション・リソース構成とTDキュー・イントラパーティション・リソース構成をそれぞれ2つの異なるリソース・ファイルに分けて保存しています。
イントラパーティション・キューは、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』に記載されているtdqintra.descファイルで宣言されています。
重要な属性は、次のとおりです。
TDQUEUE(name)
キュー名(ソース構成にあるキュー名とまったく同じ) - この名前は、Tuxedo /Q構成にあるキュー名と同一でなければなりません。
RECOVSTATUS(status)
NOまたはLOGICALのステータスのみ使用できます。2つのモードの違いはWRITEQ TDおよびREADQ TDの処理に影響します。より正確には、LOGICALでは現在のUOWの一部となり、NOでは現在のUOWから独立したアトミック操作になります。
NOとPHYSICALの違いは、リソース構成ファイルに定義されませんが、永続/Qまたは非永続へマッピングしてネイティブTuxedo /Q構成パラメータを使用して実装されます。
TRANSIDおよびTRIGGERLEVEL
現在のリリースではtdqintra.descには文書化のためにのみ含められ、考慮されるのは、/Q構成におけるこれらの値です。
QSPACENAME
/Qのために必要な新規引数で、そのQSPACEに定義することで、現在の/Qが格納されます。この引数は必須で、実際の/Qキューが物理的に格納されるQSPACENAMEと一致する必要があります。
CICS Runtime内のTDキュー・イントラパーティションに対する/Q構成
qmadmin/Q構成の正確で詳細な情報は、TuxedoドキュメントのATMI /Qコンポーネントの使用に関する項を参照してください。
CICS Runtimeで配布されるスクリプトmk_td_qm_config.shは、qspaceの作成およびその後TDイントラパーティション・キューに対して使用する/Qへのキューの作成と構成の例を示します。
このスクリプトは3つの環境変数を使用します。これらの環境変数は、環境に応じて設定する必要があります。
KIX_TD_QSPACE_DEVICE: TDキューの/Qデータベースを含む物理ファイルのファイル名を含める必要があります。
KIX_TD_QSPACE_NAME: キューを含む、作成する論理QSPACEの名前を含みます。
KIX_TD_QSPACE_IPCKEY: /Qのインスタンスで使用されるIPCに対してマシン上で一意である必要がある特定のキー。
デバイス(KIX_TD_QSPACE_DEVICE)およびQSPACEの作成方法は標準であり、ここでは説明を省略します。
キューの構成については説明します。
キューを含むqspaceを開くためのqopen QspaceNameコマンドは、任意のキューを作成する前に作成する必要があります。QspaceNameは、これらのキューのリソース宣言でのQSPACENAMEと一致する必要があります。
qmadminを使用した対話型のキュー作成の例は次のとおりです。qmadminからの質問は標準のフォントで表示され、ユーザーが入力したエントリは太字で表示されています。
リスト5‑24 qopenダイアログ
qopen TD_QSPACE
qcreate
Queue name: TEST
Queue order (priority, time, expiration, fifo, lifo): fifo
Out-of-ordering enqueuing (top, msgid, [default=none]): none
Retries [default=0]: 5
Retry delay in seconds [default=0]: 0
High limit for queue capacity warning (b for bytes used, B for blocks used,
% for percent used, m for messages [default=100%]): 5m
Reset (low) limit for queue capacity warning [default=0%]: 0m
Queue capacity command: "TDI_TRIGGER -t S049"
 
次に、スクリプトでのこの手動入力に相当するものを示します。
リスト5‑25 qopenスクリプト
qopen TD_QSPACE
qcreate TEST fifo none 3 0 5m 0m "TDI_TRIGGER -t S049"
 
qopenパラメータ
TD_QSPACE
QspaceNameは、これらのキューのリソース宣言でのQSPACENAMEと一致する必要があります。
キュー名
キュー名は、リソース宣言での名前と完全に一致しなければなりません。
キュー順序
キューを読み込む場合のデフォルトのデキュー順序は、TDイントラ・ネイティブ動作をfifoに設定します。
順序無視のエンキュー
一部のアプリケーションがネイティブ/Qインタフェースを使用してこれらのキューに書き込む場合を除き、意味がありません。Runtime CICSのみではnoneに設定する使用方法があります。
再試行
キューを読み取って、UOWが中断された場合、メッセージがまたキューに移される回数を定義します。不正なメッセージのためATIトランザクションが失敗した場合、再実行の繰り返しを避けるために適切な数を設定します。
この回数に達した場合、または設定がゼロであれば最初の中断のとき、メッセージはキューから削除され、更なる分析のためにエラー・キューに移されます。
再試行遅延時間
再試行がNullでない場合、記録をキューに戻されるまでの遅延を定義します。ロールバックの場合、Runtime CICSの推奨値はデフォルト値の「0」です。
キュー・キャパシティ警告の上方限度
これは、TDキューのさらに柔軟性のあるトリガー・レベルに等価のものです。TDキューとの互換性を設定するために、トリガー・レベルに設定し、メッセージ数で表現します。たとえば、トリガーを一時停止する場合は0m、キュー内の5個のメッセージのトリガー・レベルの場合は5mです。
キュー・キャパシティ警告のリセット(下方)限度
これは、上限のトリガーをリセットする前に達する必要がある下方レベルです。TDキューの動作と互換性を持たせるために、これを0 (QZERO) - CICSでのTDキューのリセット値 - に設定する必要があります。
キュー・キャパシティ・コマンド
これは、トリガー・レベルに達した場合に起動されるコマンドです。CICS RuntimeではTDI_TRIGGER -t TRIDに設定する必要があります。TRIDはリソース構成のTRANSIDと一致する必要があるトリガーのトランザクションのトランザクション識別子です。
ヒント:
Tuxedo ubbconfigファイルでのARTTDQのアクティブ化
TDQ監視を有効にするには、ARTTDQサーバーをアクティブ化する必要があります。
 
 
 
 
 
 
 
 
 
リスト5‑26 ubbconfigファイルでのARTTDQのアクティブ化
*SERVERS
ARTTDQ SRVGRP=GRP02
SRVID=40
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tdq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tdq -r -- -s KIXR -l SIMPAPP"
 
説明:
*SERVERS
サーバー・セクションの定義を示すTuxedo ubbconfigキーワードです。
SRVGRP
ARTTDQが属するTuxedoグループ名です。
SRVID
ARTTDQのTuxedoサーバーの識別子です。
MIN=1およびMAX=1
このサーバーのインスタンスは1つのみ実行可能であることを示します。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
-o
次のファイルがサーバーの標準出力メッセージのために使用されることを示します。
-e
次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。
-r
統計レポートを提供するために使用されるTuxedoパラメータです。
-s KIXR
トランザクションが実行されるCICS Runtime名がKIXRであることを示します。
-l SIMAPP
起動時にSIMAPPグループのコンポーネントだけが選択されることを示します。
一時記憶域(TS)キュー、POOLを使用したCICSアプリケーションの実装
これらのトランザクションは、CICS一時記憶域キューに関連するEXEC CICSリクエストを含むCICSプログラムを使用します。
使用される文は、EXEC CICS WRITEQ TS ... END-EXECEXEC CICS READQ TS ... END-EXECEXEC CICS DELETEQ TS ... END-EXECです。
プログラムの少なくとも1つにこれらの文のいずれかが含まれ、キューがPOOLNAME (tsqmodel.desc)を使用して定義されている場合は、他の設定を変更せずに、CICS Runtimeの新機能をインストールし、アクティブにします。
POOLを使って、TSキューを管理するには、次の手順を実行します。
1.
CICS Runtimeには、このような表すべてを作成できるUNIXスクリプト、crtsptable_{Oracle|UDB}が用意されています。これらの表を作成するには、MT_DB_LOGIN環境変数を設定し、crtsptable_{Oracle|UDB}を実行します。MT_DB_LOGINを設定し、データベース接続情報を入力します。このファイルの例は、次のとおりです。DBUSER/DBPASSWD@DBSID。Oracleデータベース・ユーザーの例については、リスト5‑27を参照してください。
2.
続いて、Tuxedo UBBCONFIGファイルを変更して、UBBCONFIG *GROUPSセクションで、ARTTSQPがOracleへの接続を確立するために使用するサーバー・グループを変更します。
3.
次に、ARTTSQP CICS Runtime Tuxedoサーバーをアクティブ化します。アクティブ化するには、このサーバーをUBBCONFIG *SERVERSセクションに追加します。例については、リスト5-28を参照してください。
4.
最後に、Tuxedo tmadmin psrおよびpscコマンドを使用して、サーバーが実行されていること、および新しいサービスが公開されていることを確認します。例については、リスト5‑29を参照してください。
ARTTSQP_UDBを使用する場合、新規DB2サーバー/表を再バインドするために、次の手順を実行する必要がある場合があります。
1.
環境変数MT_DB_LOGINを設定し、データベース接続情報を入力します。
2.
$KIXDIR/binに移動します。
3.
../tools/bind.sh tspool_UDB.bnd
リスト5‑27 ARTTSQPサーバーで使用されるサーバー・グループGRP02に関連するUBBCONFIG構成の例
*GROUPS
...
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
TMSNAME="TMS_ORA"
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/work9/work9+SesTm=600+LogDir=/home2/work9/demo/Logs/TUX/xa+DbgFl=0x20"
...
 
説明:
*GROUPS
サーバー・グループの定義を示す、TuxedoのUBBCONFIGキーワードです。
GRPNO
Tuxedoのグループ番号です。
TMSNAME
Tuxedo Transaction Manager Server実行可能ファイルの名前です。
OPENINFO
Oracle_XA Managerに送信されるパラメータです。
リスト5‑28 UBBCONFIGファイルでのARTTSQPのアクティブ化
*SERVERS
...
ARTTSQP SRVGRP=GRP02
SRVID=40
MIN=2 MAX=2
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tsqp -e /home2/work9/demo/Logs/TUX/sysout/stderr_tsqp -r -- -L list1"
...
 
説明:
*SERVERS
サーバー・セクションの定義を示す、TuxedoのUBBCONFIGキーワードです。
SRVGRP
ARTTSQPが属するTuxedoグループ名です。
SRVID
ARTTSQPのTuxedoサーバーの識別子です。
MIN=2およびMAX=2
このサーバーのインスタンスを2つ実行できることを示します(このサーバーでは、1つ以上のインスタンスを実行できます)。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
-o
次のファイルがサーバーの標準出力メッセージのために使用されることを示します。
-e
次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。
-r
統計レポートを提供するために使用されるTuxedoパラメータです。
-L
このサーバーによってロードされるグループのリストを示します。
リスト5‑29 ARTTSQPサーバーおよびサービスのチェック
# tmadmin
 
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
BBL 42444 KIXR 0 30 1500 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
ARTADM 00011.00010 GRP01 10 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 21 0 0 ( IDLE )
ARTTSQP 00012.00040 GRP02 40 0 0 ( IDLE )
ARTTSQ 00012.00045 GRP02 45 0 0 ( IDLE )
> psc -I 40
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
arttsqp_mib+ tsqp_mib_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSPOOL_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00004_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00004_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00003_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00003_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00002_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00002_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00001_ADM tsqp_adm_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
TSM00001_TS+ tsqp_svc ARTTSQP GRP02 40 KIXR 0 AVAIL
> quit
#
 
Distributed Program Link (DPL)の実装
いくつかの理由で、z/OS上では、Distributed Program Link機能によって、ローカルのCICSプログラム(クライアント・プログラム)が、リモートCICSリージョンにある別のCICSプログラム(サーバー・プログラム)を、EXEC CICS LINK文を介して呼び出すことができます。CICS Runtimeでは、移行リージョン間のMROのようなマルチCICSアーキテクチャで使用されるこの機能をサポートしています。
DPLが必要であることを検出する手順
UNIXで書かれたアプリケーションでDPLを使用したい場合を除き、z/OSアプリケーションのテクニカル特性をチェックします。
1.
リスト5‑30 リモート・プログラムのチェック
DEF PROGR
OVERTYPE TO MODIFY CICS RELEASE = 0610
CEDA DEFine PROGram( )
PROGram ==>
Group ==>
DEscription ==>
....
REMOTE ATTRIBUTES
DYnamic ==> No No ! Yes
REMOTESystem ==> XXXX
REMOTEName ==> YYYYYYYY
Transid ==> ZZZZ
EXECUtionset ==> Dplsubset Fullapi !Dplsubset
 
ここでは、次のとおりです(CICSデフォルト値は下線で示されます):
DYNAMIC(YES|NO)
次のパラメータは、CICS LINK API内でオーバーライドされません。このフィールドがNOに設定され、次の3つのフィールドが空の場合、このフィールドはDPLの使用にのみ関連します。
REMOTESYSTEM(name)
リモートCICSリージョン名。空のフィールドは、DYNAMIC(YES)に関連しません
REMOTENAME(name)
リモート・サーバー・プログラム名。デフォルトがクライアント・プログラム名(PROGram ==>)であるため、空のフィールドはDYNAMIC(YES)に関連しません。
TRANSID(name)
リモート・ミラー・トランザクション。デフォルトがミラー・システム・トランザクションCSMIであるため、空のフィールドはDYNAMIC(YES)に関連しません。
EXECUTIONSET(FULLAPI|DPLSUBSET)
DPLは、完全なCICS APIでなく、サブセットのみを使用できます。DPLSUBSETパラメータは、CICS APIのDPLサブセットの明示的な使用を示しますが、このサブセットがエラーなしで非DPLコンテキストでLINKを十分実行できる場合もあることに注意してください。一方、このフィールドには、DPLコンテキストでFULLAPIが含まれることがありますが、非DPL APIが使用された場合、無効なリクエストを示すエラーが発生しない保証はありません。
前述のように、場合によっては、Remote Attributes宣言が存在しないか、不完全である場合があります。その理由は、これらのフィールドではデフォルト値の一部のみが確立されることです。前述の例の中で太字で示したパラメータの一部は、EXEC CICS LINK APIでは提供されていません。
2.
そこで、プログラム内、EXEC CICS LINK APIの内部で、次の項目をチェックします。
リスト5‑31 DPL用CICS LINK API
EXEC CICS LINK PROGRAM(…)
COMMAREA(…)
LENGTH(…)
DATALENGTH(…)
RETCODE(…)
SYSID(XXXX) : Remote CICS region name
SYNCONRETURN : Used for remote CICS syncpoint or rollback
TRANSID(XXXX) : Remote mirror transaction instead of the CSMI default
INPUTMSG(…)
INPUTMSGLEN(…)
END-EXEC
Tuxedo ubbconfigファイルの変更によるDPLの管理
プログラムの少なくとも1つがDPLを使用する場合は、他の設定を変更せずに、ARTDPLサーバーをインストールし、アクティブにします。
このサーバーをアクティブにするには、ubbconfigファイルを変更して、Tuxedo ubbconfigファイルの*SERVERSセクションにこのサーバーを追加します。このサーバーは、トランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRN、ARTATR1)と同じサーバー・グループに属しています。
リスト5‑32 ubbconfigファイルのARTDPLサーバーを記述している*SERVERSセクションの例。
*SERVERS
ARTDPL SRVGRP=GRP02
SRVID=500
CONV=N
MIN=1 MAX=1 RQADDR=QKIXDPL REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_dpl -e /home2/work9/demo/Logs/TUX/sysout/stderr_dpl -r -- -s KIXD -l SIMPAPP"
 
説明:
*SERVERS
サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。
SRVGRP
ARTDPLが属するTuxedoグループ名です。
SRVID
ARTDPLのTuxedoサーバーの識別子です。
CONV=N
このサーバーが非対話モードで動作していることを示します。
MIN=1およびMAX=1
このサーバーのインスタンスは1つのみ実行可能であることを示します。
REPLYQ=Y
このサーバーが応答することを示します。
RQADDR=QKIXDPL
レスポンスに使用されるTuxedoキューの名前。
CLOPT
パラメータを含むサーバーに渡される引用符付きテキスト文字列です。
-o
次のファイルがサーバーの標準出力メッセージのために使用されることを示します。
-e
次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。
-r
統計レポートを提供するために使用されるTuxedoパラメータです。
-s KIXD
KIXDトランザクションが実行されるCICS Runtime名を示します。
-l SIMAPP
起動時にSIMPDPLグループのコンポーネントだけが選択されることを示します。
Tuxedo tmadmin psrおよびpscコマンドを使用して、このサーバーが実行されていること、および新しいサービスが公開されていないことを確認します。
リスト5‑33 ARTDPLサーバーをチェックするtmadminコマンド
# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTDPL QKIXDPL GRP02 500 0 0 ( IDLE )
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 5 250 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30003 0 0 ( IDLE )
TMQUEUE 01000.01010 GQUEUE 1010 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMQFORWARD 01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
 
> quit
#
 
CICS Runtimeでのリモート・プログラムの宣言
EXEC CICS LINK文で呼び出される分散プログラムをアプリケーションが使用できるようにするには、これらのプログラムをCICS Runtimeに対して宣言する必要があります。
1.
programs.descファイルで、REMOTESYSTEM (csv形式データセットの7番目のフィールド)をリモートのSYSID名(リスト5‑32のサンプルのKIXD)に設定します。
デフォルトはlocal (空のフィールド)で、これはFULL CICS APIを使用できるため、ローカル・プログラムが宣言されることを意味します。
このSimple Applicationの例では、RSSAT000RSSAT001がリモートで、RSSAT002RSSAT003がローカルだと想定すると、programs.descファイルは次のように設定されます。
リスト5‑34 Simple Applicationのprograms.descでのリモート・プログラムの構成
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE;EXECKEY;STATUS;REMOTESYSTEM;REMOTENAME
RSSAT000;SIMPAPP;Home Menu Program of Simple Application;COBOL; ;ENABLE;KIXD
RSSAT001;SIMPAPP;Customer Detailed Inf Program of Simple Application;COBOL; ;ENABLE;KIXD
RSSAT002;SIMPAPP;Customer Maintenance Program of the Simple Application;COBOL; ;ENABLE
RSSAT003;SIMPAPP;Customer List of the Simple Application;COBOL; ;ENABLE
 
2.
3.
Tuxedo tmadmin psrおよびpscコマンドを使用して、DPLプログラムのための新しいサービスが、ARTDPL: KIXD_RSSAT0001およびKIXD_RSSAT0003によって公開および管理されていることを確認します。
注意:
同名の問題を避けるために、これらの分散サービスの名前は、ubbconfigで定義されているTuxedo DOMAINIDと、その管理対象プログラムの名前から構成されます。
リスト5‑35 tmadminコマンドによるDPLサービスのチェック
{deimos:work9}-/home2/work9/demo/Logs/TUX/sysout# tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
ARTDPL QKIXDPL GRP02 500 0 0 ( IDLE )
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 5 250 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30003 0 0 ( IDLE )
TMQUEUE 01000.01010 GQUEUE 1010 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMQFORWARD 01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
 
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
KIXD_RSSAT0+ dplsvc ARTDPL GRP02 500 KIXR 0 AVAIL
KIXD_RSSAT0+ dplsvc ARTDPL GRP02 500 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
TSM00004_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00003_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00002_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00001_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSM00000_TSQ tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
 
> quit
# .
 
切り詰められた値が表示されている場合に、その完全な詳細を参照するには、Tuxedo verboseコマンドを使用します。
リストされているサービスのスコープを、ARTDPL (SRVID=500)による管理対象のみに減らすには、Tuxedo pscコマンドに-i srvidパラメータを続けて使用し、表示を特定のサーバーIDに制限します。
この例では、すぐ上に表示されているように、ARTDPLサーバーのsrvidは500です。
リスト5‑36 tmadminコマンドによる詳細モードでの特定のDPLサービスのチェック
# tmadmin
...
 
> verbose
Verbose now on.
 
> psc -i 500
Service Name: KIXD_RSSAT003
Service Type: USER
Routine Name: dplsvc
Prog Name: /home2/work9/KIXEDO/bin/ARTDPL
Queue Name: QKIXDPL
Process ID: 1327244, Machine ID: KIXR
Group ID: GRP02, Server ID: 500
Current Load: 50
Current Priority: 50
Current Trantime: 30
Current Blocktime: 0
Current BUFTYPECONV: 0
Requests Done: 0
Current status: AVAILABLE
 
Service Name: KIXD_RSSAT001
Service Type: USER
Routine Name: dplsvc
Prog Name: /home2/work9/KIXEDO/bin/ARTDPL
Queue Name: QKIXDPL
Process ID: 1327244, Machine ID: KIXR
Group ID: GRP02, Server ID: 500
Current Load: 50
Current Priority: 50
Current Trantime: 30
Current Blocktime: 0
Current BUFTYPECONV: 0
Requests Done: 0
Current status: AVAILABLE
 
> quit
#
CICS Common Work Area (CWA)の実装
z/OSでは、CWAは、プログラムがデータを相互に保存および交換するために使用できるCICSリージョンのために、このCICSリージョンが実行されているかぎりメモリー内に定義される共有記憶域です。
この領域は、CICS文EXEC CICS ADDRESS CWAが提供するポインタによってアドレッシングされます。アプリケーションにこのCICS文がある場合、CICS Runtime内にこの機能を実装する必要があります。
リスト5‑37 COBOLのCWA使用例
LINKAGE SECTION.
01 COMMON-WORK-AREA.
03 APPL-1-ID PIC X(4).
03 APPL-1-PTR USAGE IS POINTER.
03 APPL-2-ID PIC X(4).
03 APPL-2-PTR USAGE IS POINTER.
PROCEDURE DIVISION.
. . .
END-EXEC.
* Set up addressability to the CWA
EXEC CICS ADDRESS
CWA(ADDRESS OF COMMON-WORK-AREA)
END-EXEC.
 
CICS ADDRESS CWAの後では、COMMON-WORK-AREAという名前のCOBOLグループのアドレスは、CICSによって割り当てられるCWAのアドレスに設定されますが、これは、COMMON-WORK-AREAがこのメモリー領域をマップおよび調整することを意味します。この共有メモリーの総量は、CICS起動時に固定および定義されます。
CICS RuntimeでCICS ADDRESS CWA機能をレプリケートする手順
1.
2.
~/.profile UNIXシステム・ファイルを変更して新しいCICS Runtime変数(KIX_CWA_SIZE)をエクスポートし、それをDFHSITWRKAREAにある値に設定します。この変数が宣言されない場合、デフォルト値は0で、認可される間隔は0 - 32760バイトになります。
例:
KIX_CWA_SIZE=512
3.
~/.profile UNIXシステム・ファイルを変更して新しいCICS Runtime変数(KIX_CWA_IPCKEY)をエクスポートし、それをCWAとして使用されるクロス・メモリー・セグメントを定義するUNIX IPCキーに指定します。
例:
KIX_CWA_ IPCKEY=200944
4.
CICS Transaction Work Area (TWA)の実装
z/OSでは、TWAは、プログラムがデータを相互に保存および交換するために使用できるCICSリージョンのために、1つのCICSトランザクションの実行中にメモリー内に定義される共有記憶域です。つまり、このTWAには、トランザクションに参加しているプログラムのみがアクセスできます。この領域は、CICS文EXEC CICS ADDRESS TWAによって提供されるポインタによってアドレッシングされます。アプリケーションにEXEC CICS ADDRESS TWA文がある場合、CICS Runtimeにこの機能を実装する必要があります。
リスト5‑38 COBOLでのTWAの使用例
LINKAGE SECTION.
01 TRANSACTION-WORK-AREA.
03 APPL-1-ID PIC X(4).
03 APPL-1-PTR USAGE IS POINTER.
03 APPL-2-ID PIC X(4).
03 APPL-2-PTR USAGE IS POINTER.
PROCEDURE DIVISION.
. . .
END-EXEC.
* Set up addressability to the TWA
EXEC CICS ADDRESS
TWA(ADDRESS OF TRANSACTION-WORK-AREA)
END-EXEC.
 
CICS ADDRESS TWAの後では、TRANSACTION-WORK-AREAという名前のCOBOLグループのアドレスは、CICSによって割り当てられるTWAのアドレスに設定されますが、これは、TRANSACTION -WORK-AREAがこのメモリー領域をマップおよび調整することを意味します。この共有メモリーの総量は、z/OS CSD構成ファイルのフィールドTWasizeで、各トランザクションに対して定義されます。
次の画面には、SA00トランザクション・コードに対してTWasizeパラメータが122に設定される、z/OS CEDAシステム・トランザクションの結果が表示されます。
図5‑3 z/OS cedaシステム・トランザクションの例
CICS Runtimeでこの機能をレプリケートする手順:
1.
2.
CICS ADDRESS TWA文を持つプログラムを使用する各トランザクションに対して、transactions.descファイルを変更して、そのTWasizeをこのcsv形式ファイルの16番目のフィールドで宣言します。
 
リスト5‑39 transactions.descファイルのTWAの構成
#Transaction;Group;Description;Program; ; ; ; ; ; ;Status; ; ; ;Tranclass ;TWA Size
SA00;SIMPAPP;pg for simpapp;RSSAT000; ; ; ; ; ; ;ENABLED
SA01;SIMPAPP;pg for simpapp;RSSAT001; ; ; ; ; ; ;ENABLED; ; ; ; ;100
SA02;SIMPAPP;pg for simpapp;RSSAT002; ; ; ; ; ; ;ENABLED; ; ; ; ;200
SA03;SIMPAPP;pg for simpapp;RSSAT003; ; ; ; ; ; ;ENABLED; ; ; ; ;300
 
注意:
3.
リスト5‑40 stderr_strn TWAの例
|---------------------------------|
| TRANSACTIONS loaded : < 4> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP |RSSAT000 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA01|SIMPAPP |RSSAT001 | |N|N|001|N|N|ENABLED |USER |Y| |00100|999|
|SA02|SIMPAPP |RSSAT002 | |N|N|001|N|N|ENABLED |USER |Y| |00200|999|
|SA03|SIMPAPP |RSSAT003 | |N|N|001|N|N|ENABLED |USER |Y| |00300|999|
 
ARTDPLでのTWAのサポート
ARTDPLにより実行されたトランザクション内のプログラムは、次の手順でTWAにもアクセスできるようになりました。
1.
リスト5‑41 transactions.descファイルでのARTDPLのTWAの構成
#Transaction;Group;Description;Program; ; ; ; ; ; ;Status; ; ; ;Tranclass ;TWA Size
CPMI;SIMPAPP;pg for simpapp;DFHMIRS; ; ; ; ; ; ;ENABLED; ; ; ; ;100
 
DFHMIRSは、インバウンド関数の送信を処理するCICS内の内部ミラー・プログラムです。CICS RTでは、このミラー・プログラムは、TWAが使用される場合に、トランザクション・リソース・ファイル内のリンク・プログラムの実行に使用するトランザクションの下で定義されている必要があります。リストでは、ARTDPLにより、CPMIという名前のトランザクションで、リモートのリンク・プログラムが実行され、そのTWAサイズは100に相当します。
注意:
ユーザーは、アプリケーション・プログラムにDFHMIRSのような名前を付けることはできません。
2.
リスト5‑42 stdout_dpl TWAの例
|---------------------------------|
| TRANSACTIONS loaded : < 1> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|CPMI|SIMPAPP |DFHMIRS | |N|N|001|N|N|ENABLED |USER |Y| |00100|999|
|-----------------------------------------------------------------------------------------------------|
 
WebSphere MQとの統合の実装
ARTCKTI — ART CICSトランザクション・トリガー・モニター(ARTCKTI)の使用
ART CICSトランザクション・トリガー・モニター(ARTCKTI)は、CICS CKTIトランザクションと同じ動作をします。1つまたは複数のWebSphere MQ開始キュー上でリスニングし、トリガー・イベントが発生するとトリガー・メッセージを取得し、トリガー・メッセージをターゲット・トランザクションに転送します。
ワーク・フロー
ARTCKTIは、スタンドアロンのOracle Tuxedoサーバーです。ARTCKTIサーバーは、次のように動作します。
1.
1つのサーバー・インスタンスでは、同じWebSphere MQキュー・マネージャ内のWebSphere MQ開始キューのみをモニターできます。異なるWebSphere MQキュー・マネージャのキューは、別々のARTCKTIサーバー・インスタンスでモニターしてください。
2.
トリガー・メッセージが着信すると、ARTCKTIサーバーはメッセージを取得します。
3.
4.
構造MQTMCからMQTMC2にトリガー・メッセージを転送します。
MQTMCには多くのフィールドがあるため、構造をEXEC CICS START呼出しのパラメータとして送信すると、いつでも複雑になりすぎます。MQTMC2はCKTIで使用され、構造をデータとしてトリガー・モニターのSTARTリクエストに渡します。
5.
CICS CKTIトランザクションは、非同期呼出し(EXEC CICS START)を使用してターゲット・トランザクションを開始するため、ARTCKTIサーバーも、非同期呼出し(Tuxedo tpacall)を使用してターゲット・トランザクションを開始します。
6.
ユーザー・トランザクションはCICS RETRIEVEによってトリガー・メッセージを取得し、WebSphere MQアプリケーション・キュー上で操作を実行します。
ユーザー・トランザクションがメッセージを取得しないか、トリガーされたトランザクションを使用できない場合、WebSphere MQは、この条件ではトリガー・メッセージをもう送信しません。WebSphere MQ開始キューが再び開かれるか、新しいトリガー条件が満たされるまで、新しいトリガー・メッセージが発行されます。
図5‑4に、動作を示します。
図5‑4 WebSphere MQトリガー条件
注意:
デフォルトでは、ARTCKTIはクライアント・モードと特定のWebsphere MQバージョンで構築されます。ARTCKTIがサーバー・モードでWebsphere MQにアクセスする場合、またはWebsphere MQランタイムのバージョンが、デフォルトのARTCKTIを構築したときのバージョンより低い場合には、ARTCKTIサーバーを再構築する必要があります。詳細は、「ARTCKTIサーバーの再構築」を参照してください。
コマンドの構成
ARTCKTIは、ubbconfigファイル用に次のパラメータを受け入れます。
-i trigger_interval: メッセージがWebSphere MQ開始キューに着信するのをARTCKTIサーバーが待機する最大時間を指定します(単位はミリ秒)。
-s retry_interval: ARTCKTIがWebSphere MQキュー・マネージャに再接続するか、失敗時にWebSphere MQ開始キューを再オープンする場合の再試行間隔を指定します。
-m queue_manager_name: モニター対象のWebSphere MQキュー・マネージャの名前を指定します。
-q queue1,queue2,……: モニター対象のWebSphere MQ開始キューの名前を指定します。
WebSphere MQでART for CICSトランザクションをトリガーする構成
WebSphere MQは、1つ以上のメッセージがキューに配置されたとき、CICSトランザクションをトリガーできます。ART for CICSには、トリガー・モニターとしてARTCKTIサーバーが用意されています(CICS CKTIトランザクションと同等)。
MQ ManagerでART for CICSトランザクションをトリガーできるようにするには、MQ Manager構成でトリガーのキューおよびプロセスを適切に定義する必要があります。リスト5‑43にサンプルの構成を示します。
リスト5‑43 ART for CICSトランザクションをトリガーするサンプル構成
runmqsc MYMQM << EOF
 
DEFINE QLOCAL(INIT1) REPLACE LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE) DESCR('INITIATION QUEUE')
DEFINE QLOCAL(APP1) REPLACE LIKE(SYSTEM.DEFAULT.LOCAL.QUEUE) DESCR('APPLICATION QUEUE') INITQ('INIT1') PROCESS('APP1.P') TRIGGER TRIGTYPE(FIRST)
DEFINE PROCESS(APP1.P) DESCR('PROCESS DEFINITION') APPLTYPE(UNIX) APPLICID('SA01')
 
DEFINE QLOCAL(APP2)
 
DEFINE CHANNEL(APP.C) CHLTYPE(SVRCONN)
DEFINE LISTENER(APP.L) TRPTYPE( TCP )
 
ALTER QMGR TRIGINT(0)
DEFINE QMODEL('SYSTEM.SAMPLE.REPLY') REPLACE DESCR('GENERAL REPLY QUEUE')
EOF
 
前述の例では、INIT1がプロセスAPP1.Pに関連付けられたトリガー・キューとして定義されており、キューに配置されたFIRSTメッセージがトリガーに使用されることを指定しています。それに続くプロセス定義では、APPLTYPEをUNIXと定義し、ART for CICSトランザクションIDをトリガーするようにAPPLICIDとして指定しています。
この定義に基づいて、最初のメッセージがINIT1キューに配置されるとき、ARTCKTIトリガー・モニターがARTATRNサーバーでSTART TRANID('SA01')します。アプリケーション・トランザクションが実行されると通常、キューが進み、使用可能なメッセージがすべて処理されます。次に新しいメッセージがINIT1に配置されると、再びトリガーされます。
ART for CICSサーバーの再構築
サーバーを再構築する前に、次のことが必要です
ART for CICSトランザクション・サーバーが別のモードを使用してWebSphere MQにアクセスする場合は、次のようにする必要があります。
前述のサーバーを再構築した後で、次のことが必要です
WebSphere MQ RM定義の作成
ローカルのWebSphere MQサーバーを使用する場合は、$TUXDIR/udataobj/RMファイルで次のように追加して、WebSphere MQ RM定義を作成します。
# For building TMS_MQM server to work with local MQ server
MQSeries_XA_RMI:MQRMIXASwitchDynamic: /opt/mqm/lib64/libmqmxa64.so /opt/mqm/lib64/libmqm.so
# For building ARTSTR*/ARTATR*/ARTDPL server
MQSeries_XA_RMI_COB:MQRMIXASwitch: -L${MQMDIR}/lib64 -lmqmxa64 -lmqmcb
ローカルのWebSphere MQクライアントを使用して、WebSphere MQサーバーにリモート接続する場合は、次のバージョンを使用します(RMファイルで重複するエントリを使用しない)。
# For building TMS_MQM server to work with local MQ client
MQSeries_XA_RMI:MQRMIXASwitchDynamic: /opt/mqm/lib64/libmqcxa64.so /opt/mqm/lib64/libmqic.so
# For building ARTSTR*/ARTATR*/ARTDPL server
MQSeries_XA_RMI_COB:MQRMIXASwitch: -L${MQMDIR}/lib64 -lmqcxa64 -lmqicb
注意:
${MQMDIR}は、MQMのインストール・パスを示す環境変数です。
TMS_MQMサーバーの再構築
TMS_MQMサーバーを構築し、setenvで設定されているPATHに含まれるディレクトリに、正しい実行権限で配置します(たとえば、$TUXDIR/bin$KIXDIR/bin)。
buildtms -r MQSeries_XA_RMI -o TMS_MQM
ART for CICSトランザクション・サーバーの再構築
トランザクション・サーバー(ARTSTR*/ARTATR*/ARTDPL)を構築し、それを$KIXDIR/binディレクトリ、または$APPDIRの下のローカル・ディレクトリに正しい実行権限で配置します(ただし、その後setenv$PATH定義に追加します)。ARTATRNの例を参照してください。
buildartcics -M -r Oracle_XA -r MQSeries_XA_RMI_COB -o ARTATRN_ORA_MQM
注意:
-Mは「複数のRMを伴う」の意味です。
-rフラグには、リンクするRMを指定します。たとえば、-r Oracle_XAはOracle DBのRM定義を示し、-r MQSeries_XA_RMI_COBはCOBOLプログラムのMQ RMを示します。
ARTCKTIサーバーの再構築
MQで開始するトランザクション・サポートが必要な場合には、ARTCKTIサーバーを構築します。
一般的に、WebSphere MQのバージョンを変更した場合、またはMQサーバー・モードで使用する必要がある場合を除いて、デフォルトのARTCKTIの再構築は必要ありません。(デフォルトのバージョンは、WebSphere MQクライアント用です。)
ARTCKTIサーバーをビルドするには、$KIXDIR/binディレクトリへの書込み権限を持つOracle Tuxedo管理者として、次のコマンドを実行します。
buildserver -o $KIXDIR/bin/ARTCKTI -t -f "$KIXDIR/objs/ARTCKTI.o $KIXDIR/objs/list.o" -l "-L$MQMDIR/lib64 -lmqic_r"
ここではWebSphere MQクライアントで使用するものを構築しています。ローカルにインストールしたWebSphere MQサーバーで使用する場合は、次に示すライブラリを使用します。
buildserver -o $KIXDIR/bin/ARTCKTI -t -f "$KIXDIR/objs/ARTCKTI.o $KIXDIR/objs/list.o" -l "-L$MQMDIR/lib64 -lmqm_r"
注意:
$MQMDIRは、WebSphere MQがインストールされているパスです。
詳細は、「ARTCKTIの構成」を参照してください。
Oracle Tuxedo UBBCONFIGおよびOPENINFOの更新
ARTCKTIサーバーをTMSグループで構成する必要はありません。
ARTSTR*/ARTATR*/ARTDPLはTMSグループで構成する必要があり、TMSグループはMQMグループとして構成する必要があります。
リスト5‑44 Oracle Tuxedo UBBCONFIGおよびOPENINFOの更新の例
*GROUPS
# For ARTCKTI
GRP01
GRPNO=10
ENVFILE="/xxx/envfile"
 
 
#For ARTSTR/ATR/DPL
GRP02
GRPNO=12
ENVFILE="/xxx/envfile "
TMSNAME=TMS_ORA
TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/SYSADM1/SYSADM1+SqlNet=ANA99C1O+SesTm=600+LogDir=/home/oracle/DRIVERMQ/deploy/CICS_RT/LOGS/xa+DbgFl=0x20"
MRM=Y
 
*RMS
RM_MQM
SRVGRP=GRP02
RMID=2
TMSNAME="TMS_MQM"
TMSCOUNT=2
# For local MQ connection: The OPENINFO only needs to configure RM name and MQ manager name as following:
OPENINFO="MQSeries_XA_RMI_COB: MYMQM"
# For remote MQ connection: The OPENINFO needs to configure as following:
OPENINFO="MQSeries_XA_RMI_COB:qmname=MYMQM,channel=APP.C,trptype=TCP,AXLIB=/home/bofzhu/zhubf/tuxedo/tux1213L31/lib/libtux.so,conname=10.182.73.205(8000),tpm=Tuxedo"
AUTO=Y
 
*SERVERS
ARTCKTI
SRVGRP=GRP00
SRVID=1010
GRACE=0 RESTART=Y CONV=N MAXGEN=10
# -m means MQ manager name, -q means MQ queue name
# Refer to ARTCKTI Configuration in Oracle Tuxedo Application Runtime for CICS Reference Guide
CLOPT="-A -- -m MYMQM -q INIT1"
 
#Add all required ART*_MQM servers (here ARTSTRN, ARTATRN, and ARTDPL are shown)
ARTATRN_ORA_MQM
SRVGRP=GRP02
SRVID=60
MIN=3 MAX=3
CLOPT="-o xxx -e xxx -r -- -s xxx -l xxx"
 
ARTSTRN_ORA_MQM
SRVGRP=GRP02
SRVID=65
MIN=2 MAX=2
CLOPT="-o xxx -e xxx -r -- -s xxx -l xxx"
 
ARTDPL_ORA_MQM
SRVGRP=GRP02
SRVID=70
MIN=2 MAX=2
CLOPT="-o xxx -e xxx -r -- -s xxx -l xxx"
 
MQOPEN/MQCLOSE呼出しのCICS Runtime Preprocessorの処理
WebSphere MQに正しく接続するためのシーケンスは、MQCONNMQOPENMQxxx (GET/PUT)、MQCLOSEおよびMQDISCです。メインフレームCICSでは、MQCONNおよびMQDISCは多くの場合、リソース管理機能としてCICSによって処理され、アプリケーションはMQOPEN/MQxxx/MQCLOSEを実行するだけです。
ART for CICSでこれをサポートするには、ART for CICSのプリプロセッサを使用してMQOPEN/MQCLOSE呼出しをKIX_MQxxxxラッパーに変換し、それが内部でMQCONNおよびMQDISCを処理します。このアプローチで、ART for CICSの接続問題を処理し、必要に応じて再接続することもできます。プリプロセッサの出力をチェックし、KIX_MQxxxの呼出しがあることを確認します。
MQラッパーの場合、MQ接続のリサイクルまたは解放をCICSトランザクション自体が実行しなければ、MQラッパーがその実行についてCICSトランザクションを支援できます。prepro-cics.plは、スイッチMQ_wrapperを導入してMQラッパーを有効にします。各アプリケーション・サーバー(ARTSTR*/ARTATR*/ARTDPLなど)に対して、ターゲットのMQ Managerを指定するために、CLOPT -m queue_manager_nameが導入されています。MQラッパーはMQOPENより前にMQCONNECTを実行しますが、MQCONNECTはどのMQ Managerに接続すべきかを認識する必要がないからです。詳細は、「MQ_wrapper」「WebSphere MQキュー・マネージャ名」を参照してください。
キャラクタ・セットのエンコード
ローカルのWebSphere MQクライアントを使用して、z/OSベースのMQ Managerにリモート接続する場合、EBCDICからASCIIへの変換は自動的に有効になりません。これは、次の例のようにMQGETオプションでMQGMO-CONVERTフラグを設定すると有効にできます。
リスト5‑45 MQGMO-CONVERTの例
COMPUTE MQGMO-OPTIONS = MQGMO-WAIT
+ MQGMO-SYNCPOINT
+ MQGMO-FAIL-IF-QUIESCING
+ MQGMO-CONVERT
END-COMPUTE.
 
MQPUTの場合、MQMD-FORMATMQFMT-STRINGに設定されていれば、ASCIIからEBCDICへの変換は自動的に行われます。例:
MOVE MQFMT-STRING TO MQMD-FORMAT.
SENDERとしてチャネルを定義してローカルのWebSphere MQサーバーを使用する場合、チャネル定義でCONVERT (YES)を追加すると、プログラムを変更せずにトランスコードを実行できます。
COMP-5をBINARYデータ型に再変更
Oracle Tuxedo ART Workbenchは、部分的にはメインフレームの数値データ型(BINARY/COMP)を、互換性のあるデータ型COMP-5 (ネイティブ等価)に変更することよって、COBOLプログラムをターゲット環境に適応させます。これは、COBOLアプリケーションで透過的に行われます。
ただしLinux環境のWebsphere MQライブラリでは、MQ呼出しで渡されるパラメータにBINARY型を使用する必要があるため、これが原因で問題が発生する可能性があります。同じようなデータ型マッピングは、Pro*COBOLプリプロセッサによって実行されます。
したがって、コンパイルの最終段階の前に、WebSphere MQインタフェース定義をCOMP-5からBINARYに戻してください。変更後のMQインタフェース定義の例(BINARYデータ型)を参照してください。
リスト5‑46 変更後のMQインタフェース定義(BINARYデータ型)の例
01 QM-NAME PIC X(48) VALUE SPACES.
01 HCONN PIC S9(9) BINARY.
01 Q-HANDLE PIC S9(9) BINARY.
01 OPTIONS PIC S9(9) BINARY.
01 COMPLETION-CODE PIC S9(9) BINARY.
01 OPEN-CODE PIC S9(9) BINARY.
01 REASON-CODE PIC S9(9) BINARY.
01 CONN-REASON PIC S9(9) BINARY.
01 USER-DATA-LENGTH PIC S9(9) BINARY.
01 DATA-LENGTH PIC S9(9) BINARY.
01 TOTAL-NUM PIC S9(9) BINARY.
 
複数セッション管理を使用した実装
ART for CICSには、複数セッション管理機能があります。1つの3270ターミナルを介してART for CICSに接続する場合、前のトランザクションを終了せずにこのターミナルから様々なトランザクションを選択して実行し、アクティブなトランザクション間で切り替えることができます。
注意:
この機能が有効な場合、ユーザー・アプリケーションで[PA1]/[PA2]を使用できません。
アプリケーション・リスト用ユーザー・プラグインの作成
ART for CICSは、複数セッション管理の実行時にユーザーがアプリケーション・リストを取得および表示するためのDFHALSTというプログラム名のシステム・トランザクションを提供します。このトランザクションは、リストを取得するためにユーザー・プラグインを呼び出します。
このプラグインを提供し、DFHALISTが呼び出すことができるように正しいライブラリ・パスにライブラリを置く必要があります。このプラグインの詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』CICS Runtimeのアプリケーション・リスト・トランザクションとの統合に関する項を参照してください。
CICS Runtime構成ファイルの構成
トランザクション構成ファイル
アプリケーション・リスト・トランザクション(ALST)をtransactions.descで定義し、プログラムをDFHALSTに設定する必要があります。ARTSTRNサーバーはこのトランザクションをロードします。
ALST;SIMPAPP;Application list transaction;DFHALST
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』ALST (アプリケーション・リスト・トランザクション)に関する項を参照してください。
システム構成ファイル
ユーザーが接続したときにART for CICSによってCESNトランザクションが自動的に開始されるようにするには、system.descGMTRAN=CESNを構成する必要があります。
[kixr]
APPLID=DBDCkixR
GMTRAN=CESN
UBBCONFIGの構成
複数セッション管理を実行するには、セキュリティを有効にする必要があります。詳細は、「CICS Runtimeのセキュリティ構成」を参照してください。
次のサーバーをUBBCONFIGに構成する必要があります。例については、表5‑47を参照してください。
ARTTCPL-tオプションを指定します。詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』ARTTCPL/ARTTCPHの構成に関する項を参照してください。
ARTCNXSYSIDを指定します。
ARTSRM (同じユーザーが異なるターミナルを介してART for CICSに接続することを防ぎます)。
ARTSTRN (アプリケーション・リスト・トランザクションおよびユーザー・トランザクションを実行します)。
リスト5‑47 UBBCONFIGの構成の例
* SERVERS
ARTTCPL
SRVGRP=TCP00
SRVID=101
CLOPT=" -- -M 4 -m 1 -L // hostname:34582 -n // hostname:34583 -t ALST"
 
ARTCNX
SRVGRP=GRP01
SRVID=15
CONV=Y
MIN=1 MAX=1 RQADDR=QCNX015 REPLYQ=Y
CLOPT="-o /home2/work9/demo/LOGS/sysout/stdout_cnx -e /home2/work9/demo /LOGS/sysout/stderr_cnx -r -- -s KIXR "
 
ARTSRM
SRVGRP=GRP02
SRVID=18
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/LOGS/sysout/stdout_srm -e /home2/work9/demoLOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP"
 
ARTSTRN
SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=2 MAX=10 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/LOGS/sysout/stdout_strn -e /home2/work9/demo/LOGS/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
 
セッションの開始、切替えおよび終了
アプリケーションを起動し、3270ターミナルを介してART for CICSに接続します。サインオンが完了すると、ART for CICSによりアプリケーション・リスト・トランザクション(ALST)が自動的に実行され、アプリケーション・リストが表示されます。
セッションの開始
トランザクション(セッションとも呼ばれる)を開始するには、次のいずれかを実行します。
アクティブ化するセッションの左側のフィールドにカーソルを移動し、[Enter]を押します。DFHALSTによりセッションがアクティブ化され、表示がアプリケーション画面に切り替わります。
コマンド・フィールドに/sessidと入力し、[Enter]を押します。
セッションの切替え
ユーザー・トランザクション画面からアプリケーション・リスト・トランザクションに戻るには、[PA1]を押します。
次のアクティブなトランザクションに切り替えるには、[PA2]を押します。
セッションの終了
トランザクションを終了するには、ユーザー・トランザクションでTRANSIDパラメータを指定しないでCICS RETURNを発行すると、ART for CICSはトランザクションのセッションを終了します。
アプリケーション・リスト・トランザクションは終了できません。かわりに、ART for CICSから切断して終了する必要があります。
ART for CICS TCP/IPソケット・インタフェースの使用の実装
z/OSでCICS TCP/IPソケット・インタフェースを使用すると、リモート・ユーザーはTCP/IPインターネット経由でCICSクライアント/サーバー・アプリケーションにアクセスできます。TCP/IPネットワークで広く使用され、UNIXシステムおよび他のオペレーティング・システムに基づくBerkeley Software Distribution 4.3ソケット・インタフェースについて、CICS TCP/IPではその変種を提供しています。ソケット・インタフェースは、CICSアプリケーション・プログラムで接続の設定、データの送受信および一般的な通信制御関数の実行に使用できる一連の呼出しで構成されます。
ART for CICSでCICS TCP/IPソケット・インタフェースがサポートされるようになり、接続の両端をプログラミング可能な新規ピアツーピア・アプリケーションの開発時に使用できるようになりました。
CICSランタイム・サーバーARTCSKLは、ART for CICS TCP/IPソケット・リスナーです。クライアント・リクエストを受信すると、作業タスクにリクエストを渡して処理を依頼し、別のクライアント・リクエストを待機します。CICSランタイム・トランザクション・サーバーARTATRN/ARTATR1は、ユーザー作成トランザクションを開始および実行します。
ART for CICS TCP/IPソケット・インタフェースを使用して、これらのトランザクションを記述できます。ユーザー作成トランザクションでは、EXEC CICS RETRIEVEコマンドを使用してARTATRN/ARTATR1でソケットを使用できるようにし(出力パラメータを使用してtakesocket()を呼び出す必要があります)、write/read()を使用してデータを転送し、ソケットを閉じます。
注意:
ARTATRN/ARTATR1で実行されるクライアント・アプリケーションおよびユーザー・トランザクションは、C言語でもCOBOL言語でも記述できます。すべてのサポートされるプラットフォーム上でCソケットAPIによって返されるerrnoおよびAIX/Solarisプラットフォーム上でCOBOLソケットAPIによって返されるerrnoは、メインフレームとは異なります。プログラムでerrno.hのマクロ定義を使用します。
EXEC CICS STARTを使用した遅延間隔なしでのユーザー・トランザクションの開始のみサポートされます。
ARTCSKLは、サポートされる唯一のソケット・リスナーです。ユーザー作成リスナーはサポートされません。
ART for CICS TCP/IPソケットAPI
CICS TCP/IPソケットAPIは、アプリケーション・プログラム間での次の重要な通信機能の実行を可能にするソケット呼出しの集まりです。
これらの基本的な機能に加えて、これらのAPIでは次のことも可能です。
ART for CICSでは前述の関数もサポートされ、C APIおよび拡張COBOL APIのセットが提供されます。表5‑7に、サポートされるC APIをリストします。最後の3つの関数はART for CICSによって提供され、その他の関数ではOSソケット・ライブラリを直接使用できます。表5‑8に、サポートされる拡張COBOL APIをリストします。
 
サーバーはaccept()呼出しを発行し、クライアントからの接続リクエストを受け入れます。呼出しではsocket()の呼出しですでに作成され、listen()の呼出しによってマークされたソケットを使用します。
bind()の呼出しでは、一意のローカル・ポートを既存のソケットにバインドします。socket()呼出しの正常完了時、新規ソケット記述子に関連付けられているポートはないことに注意してください。
close()の呼出しでソケットを停止し、そのソケットに割り当てられているすべてのリソースを解放します。ソケットが開いているTCP接続を参照している場合、接続は閉じられます。入力データのキュー登録時にストリーム・ソケットが閉じられている場合、TCP接続は完全に閉じられるのではなく、リセットされます。
connect()の呼出しでは、ローカル・ソケットとリモート・ソケットとの間の接続の確立を試みます。ストリーム・ソケットの場合、呼出しで2つのタスクが実行されます。
fcntl()の呼出しでは、ソケットがブロッキング・モードか非ブロッキング・モードかを制御します。
gethostid()では、ネットワーク・バイト・オーダーで現在のホストの一意の32ビット識別子を取得します。この値は、デフォルトのホームIPアドレスです。
gethostname()では、プログラムが実行されているホスト・プロセッサの名前を返します。
getpeername()では、指定されたソケットに接続されたピアの名前を返します。
getsockname()の呼出しでは、nameパラメータによって示されたsockaddr構造体内のソケットの現在の名前を返します。
getsockopt()では、ソケットに関連付けられているオプションを取得します。
ioctl()の呼出しでは、ソケットの動作特性を制御します。
listen()の呼出しでは、クライアント接続リクエストを受け入れる準備ができていることを示します。
read()の呼出しでは、指定された接続済ソケットでデータを読み取ります。
recv()の呼出しでは、指定されたソケットでデータを受信します。
recvfrom()の呼出しでは、指定されたソケットでデータを受信します。recvfrom()の呼出しは、接続済か未接続かに関係なく任意のデータグラム・ソケットに適用されます。
select()の呼出しは、複数の処理が発生する可能性のあるプロセスで有用で、プログラムが1つまたは複数の処理の完了を待機できる必要があります。
send()では、接続済のソケットでデータを送信します。
sendto()では、呼出しで指定されたアドレスにデータを送信します。
setsockopt()では、オプションを設定します。
shutdown()の呼出しでは、全二重接続のすべてまたは一部を停止します。
socket()の呼出しでは、通信のエンドポイントを作成し、エンドポイントを表すソケット記述子を返します。
write()では、接続済のソケットでデータを書き込みます。
getclientid()の呼出しでは、TCP/IPアドレス空間に既知の呼出し元アプリケーションの識別子を返します。
initapi()呼出しでは、アプリケーションをTCP/IPインタフェースに接続します。
takesocket()では、別のプログラムからソケットを取得します。
注意:
takesocket()の呼出しはARTATRN/ARTATR1でのみ使用できます。givesocket()の呼出しはサポートされません。
 
サーバーはACCEPT呼出しを発行し、クライアントからの接続リクエストを受け入れます。
一般的なサーバー・プログラムでは、SOCKETの呼出しの後にBINDの呼出しが続き、新規ソケットの作成のプロセスが完了します。
CLOSEの呼出しではソケットを停止し、そのソケットに割り当てられているすべてのリソースを解放します。
CONNECTの呼出しは、ローカル・ソケットとリモート・ソケットとの間に接続を確立するためにクライアントによって発行されます。
ソケットのブロッキング・モードは、問い合せることも、FCNTLの呼出しで記述されるFNDELAYフラグを使用して非ブロッキングに設定することもできます。
LISTENの呼出しでは、次の処理を行います。
ソケットに対してBINDがまだ呼び出されていない場合はバインドを完了します。
READの呼出しでは、ソケットでデータを読み取ります。
RECVの呼出しでは、READ同様、記述子Sのソケットでデータを受信します。
RECVFROMの呼出しでは、記述子Sのソケットでデータを受信し、バッファに格納します。
SENDの呼出しでは、指定された接続済ソケットでデータを送信します。
SENDTOは、宛先アドレス・パラメータが含まれている点以外SENDと同様です。
SHUTDOWNの呼出しを使用して、一方向トラフィックを閉じると同時に反対方向のデータ転送を完了します。
SOCKETの呼出しでは、通信のエンドポイントを作成し、エンドポイントを表すソケット記述子を返します。
WRITEの呼出しでは、接続済のソケットでデータを書き込みます。
GETCLIENTIDの呼出しでは、呼出し元プログラムでTCP/IPアドレス空間に既知の呼出し元アプリケーションの識別子を返します。
INITAPIの呼出しでは、アプリケーションをTCP/IPインタフェースに接続します。
TAKESOCKETの呼出しでは、別のプログラムからソケットを取得し、新規ソケットを作成します。
注意:
GETSOCKOPTIOCTLSETSOCKOPTおよびGIVESOCKETはサポートされません。
クライアント-リスナー-サーバー・アプリケーション・セット
図5‑5に、設定に関係するCICS Runtimeコマンドおよびソケット呼出しのシーケンスを示します。CICSランタイム・コマンドの先頭にはEXEC CICSが付いています。この図の他の番号付きアイテムはすべてART for CICS TCP/IP呼出しです。
ここで、クライアントはOS/2オペレーティング・システムまたは各種UNIXオペレーティング・システムの1つ(AIX*など)でTCP/IPを実行しています。CICSランタイム・サーバーARTCSKLとARTATRN/ARTATR1プロセスは両方ともART for CICS TCP/IP下で実行されています。
図5‑5 クライアント-リスナー-サーバー・アプリケーション・セット
クライアント呼出しシーケンス
 
CICS TCP/IPの場合、ドメインはTCP/IPインターネット・ドメイン(AF_INET)のみです。タイプは、ストリーム・ソケット(SOCK_STREAM)またはデータグラム・ソケット(SOCK_DGRAM)です。プロトコルは、TCPまたはUDPです。
成功の場合、SOCKETの呼出しはソケット記述子sを返します。これは常に小桁整数です。取得したソケットはローカルまたは宛先アドレスにまだアタッチされていないことに注意してください。
標準モードで実行される場合、これで最初のメッセージがARTCSKLに送信されます。標準モードのリスナーは、クライアントからの最初の伝送内のARTCSKL入力書式を必要とします。メッセージには、データの最初の4バイトとしてCICSトランザクション・コードが含まれています。バッファ・アドレスおよび送信するデータの長さも指定する必要があります。
リスナー呼出しシーケンス
リスナー・サーバーARTCSKLは、ART for CICS TCP/IPの一部として提供されます。図5‑5に、ARTCSKLによって発行される呼出しを示します。クライアントおよびサーバーの呼出しシーケンスは、このシーケンスに則して準備する必要があります。詳細は、「ART for CICS TCP/IPリスナー(ARTCSKL)」を参照してください。
ARTATRN/ARTATR1呼出しシーケンスで実行されるユーザー・トランザクション
 
これで、リスナー・プログラムのEXEC CICS STARTコマンドによって渡されるデータを取得します。このデータには、ソケット記述子およびリスナー・クライアントID、オプションでクライアントからの追加データが含まれます。
TAKESOCKETパラメータで取得するソケット記述子およびリスナーのクライアントIDを指定する必要があります。この情報は、EXEC CICS RETRIEVEコマンドによって取得されます。
ART for CICS TCP/IPリスナー(ARTCSKL)
説明
ARTCSKLはART for CICS TCP/IPソケットのリスナーで、CICS TCP/IPリスナーCSKLと同じ機能を実行できます。クライアント・リクエストを受信すると、作業タスクにリクエストを渡して処理を依頼し、別のクライアント・リクエストを待機します。ARTCSKLは標準モードまたはエンハンス・モードで実行できます。モードは、ART for CICS TCP/IPソケット・リスナー構成ファイル(listener.desc)のFORMATパラメータを介して設定できます。
注意:
ARTCSKLは、サポートされる唯一のソケット・リスナーです。ユーザー作成リスナーはサポートされません。
この図で示すように、クライアントAはすでにサーバーとの接続を確立しており、ARTATRN/ARTATR1で実行されるユーザー・トランザクションを作成しています。このため、サーバーはクライアントAのトランザクションの完了を待たずにクライアントBのリクエストを処理できます。このようにして複数のユーザー・トランザクションを開始できます。
ARTCSKLはこのアクティビティの一部をパラレルで実行するよう作成されており、着信接続リクエストを受信するポートを持つリスニング・ソケットがあります。接続リクエストを受信すると、ARTCSKLはこの接続のエンドポイントを表す新規ソケットを作成し、TCP/IPソケットのgivesocket/takesocket呼出しでアプリケーションに渡します。
リスナーは次の機能を実行します。
着信接続リクエストがあると、リスナーはこれを受け入れ、ARTATRN/ARTATR1サーバーに渡す新規ソケットを取得します。
標準モードのリスナーは、新規接続の最初のメッセージ内の情報に基づいてユーザー・トランザクションを開始します。この情報の書式は、次の「ARTCSKL入力書式」に示されています。エンハンス・モードのリスナーの場合、ART for CICS TCP/IPソケット・リスナー構成ファイル(listener.desc)の情報に基づいてユーザー・トランザクションを開始します。
ARTCSKL入力書式
標準モードのARTCSKLは、クライアントからの最初の伝送内の次の入力書式を必要とします。クライアントはレスポンスを待ってから後続の伝送を送信します。入力は大文字の場合と小文字の場合があります。カンマが必要です。
エンハンス・モードのARTCSKLにはこの入力書式は必要ありません。ART for CICSは、TCP/IPソケット・リスナー構成ファイル(listener.desc)からトランザクション情報を取得します。
tran
リスナーが開始するトランザクションID (大文字)。このフィールドは、1文字から4文字までです。
client-in-data
オプション。アプリケーション・データ。このフィールドの最大長は40バイトです(35バイトに1バイトのフィラーと4バイトの開始タイプ)。
kc (大文字のKCのみサポートされます)
オプション。ART for CICSタスク制御用の開始タイプ。大文字のKCのみがサポートされ、EXEC CICS STARTを使用して遅延間隔なしでユーザー・トランザクションが開始されることを示します。このフィールドが空白の場合、タスク制御(KC)を使用して即座に開始されます。
hhmmss (サポートされません)
これは、将来使用するために予約されています。
ARTCSKL出力書式
リスナー出力には2つの異なる形式があります。1つは標準リスナー経由で開始したユーザー・トランザクション(リスト5‑48を参照)用で、1つはエンハンスされたリスナー経由で開始したユーザー・トランザクション(リスト5‑49を参照)用です。
ユーザー・トランザクション・プログラムは、EXEC CICS RETRIEVE関数を使用してリスナーによって渡されたデータを取得し、IPv6ソケット・アドレス構造体を格納するために確保した記憶域を拡張します。EXEC CICS RETRIEVE関数で指定されたLENGTHには、リスナー出力書式を格納するために確保された記憶域の量が反映される必要があります。LENGTHが送信されたデータの量より小さい場合、LENGERRフラグが上げられます。HANDLE条件をコーディングすると、これを含めることができます。
注意:
ART for CICS一時データ・キューを介した(ARTCSKLによる)出力はサポートされません。
リスト5‑48 リスナー出力書式のC構造体 - 標準リスナー
struct sock_standard_tim { /* declaration of structure */
unsigned long give_take_socket; /* Socket being given */
char listen_name[8]; /* Listener name */
char listen_taskid[8]; /* Listener task id */
char client_in_data[35]; /* Client data */
char ote[1]; /* Threadsafe ind. @W1C */
union { /* Clients socket address */
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
} sockaddr_in_parm;
char reserved2[68]; /* reserved */
};
 
リスト5‑49 リスナー出力書式のC構造体 - エンハンスされたリスナー
struct sock_enhanced_tim { /* declaration of structure */
unsigned long give_take_socket; /* Socket being given */
char listen_name[8]; /* Listener name */
char listen_taskid[8]; /* Listener task id */
char client_in_data[35]; /* Client-in-data */
char ote[1]; /* Threadsafe ind. @W1C */
union { /* Clients socket address */
struct sockaddr_in sin;
struct sockaddr_in6 sin6;
} sockaddr_in_parm;
char reserved2[68]; /* reserved */
short client_in_data_length; /* Length of data recved */
char client_in_data_2; /* data from Client */
};
 
必要な構成
ART for CICS TCP/IPソケット・インタフェース関数を使用するには、次のようにします。
CICSランタイム・サーバーARTCSKLおよびARTATRN/ARTATR1を構成します。CICSランタイム・サーバーARTCSKLおよびARTATRN/ARTATR1は同じマシン上で構成する必要があります。ARTCSKLおよびARTATRN/ARTATR1サーバーの詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』を参照してください。
CICSリージョンの転送の実装
z/OSでは、ISSUE PASSコマンドを使用して、ターミナルに再接続しなくてもCICSリージョンを転送できます。ユーザーは、LOGONMSGを使用してデータ転送も実装できます。ISSUE PASSが呼び出されると、宛先リージョンのGMTRANが強制的に呼び出されます。
ART CICSも前述のシナリオをサポートします。次の構成が必要です。
ARTSRMサーバーの構成
ARTSRMを構成する必要があります。詳細は、ARTSRMの構成に関する項を参照してください。
環境変数の構成
環境変数ISC_ENABLEをYESに設定する必要があります。詳細は、ISC_ENABLEに関する項を参照してください。
CICS Runtime構成ファイルの宣言
system.desc
system.descでは、CICSリージョンのシステム初期化パラメータを定義します。
リスト5‑50 system.desc構成の例
[kixr]
APPLID=DBDCkixR
INITPARM=(ASINTP='Hello world')
[kixl]
APPLID=DBDCkixL
INITPARM=(ASINTP='Hello world')
GMTRAN=ISSS
LGNMSG=YES
 
この例では、2つのCICSリージョンが定義されています。SYSIDは、kixrおよびkixlとしてそれぞれ指定されています。kixlではGMTRAN=ISSSを指定しており、ユーザーがDBDCkixLにログインすると、トランザクションが自動的に起動されます。一方、kixrではGMTRANを指定していないため、デフォルトのCSGMが使用されます。kixlで指定されたLGNMSGにより、EXTRACT LOGONMSGISSUE PASSを使用したデータ転送機能が有効になります。system.descの詳細は、システム構成ファイルに関する項を参照してください。
transactions.descとprograms.desc
GMTRANが定義されている場合(CSGMCESNCESFなど、他のシステム・トランザクションではない)、トランザクション/プログラムをtransactions.desc/programs.descで構成し、ARTSTRN/ARTSTR1でロードする必要があります。transactions.desc/programs.descの詳細は、トランザクション構成ファイルに関する項およびプログラム構成ファイルに関する項を参照してください。
リスト5‑51 transactions.desc構成およびprograms.desc構成の例
transactions.desc:
ISSS;SIMPAPPB;pg for simpapp;ISSPASSS
programs.desc:
ISSPASSS;SIMPAPPB;pg for simpapp;COBOL; ;ENABLED
 
terminals.desc (オプション)
この構成ファイルでは、ART CICSで使用可能なterminalを定義します。静的なLUNAMEを使用してART CICSにログオンする場合に、これは必須です。terminals.descの詳細は、ターミナル構成ファイルに関する項を参照してください。
リスト5‑52 terminals.desc構成の例
[terminal]
name=0001
netname=CICS0001
group=SIMPAPP
[terminal]
name=0002
netname=CICS0002
group=SIMPAPP
 
UBBの宣言
CICSリージョンの転送を実装するには、次の要件を満たす必要があります。
CICSリージョンごとにTMQUEUEを構成する必要があります。
ARTLOGNを構成する必要があります。
CICSリージョンごとに1つ以上のARTCNXを構成する必要があります。
ARTCNXで公開されるDDRを構成する必要があります(例については、次を参照)。
リスト5‑53 DDR構成の例
GRP00
GRPNO=10
ENVFILE="/home2/work9/demo/config/tux/envfile"
 
GRP01
GRPNO=11
ENVFILE="/home2/work9/demo/config/tux/envfile"
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
 
GQUEKIXR
GRPNO=1010
TMSNAME=TMS_QM TMSCOUNT=2
OPENINFO="TUXEDO/QM: /home2/work9/demo/sysfile/kixrqspace:DBDCkixR"
GQUEKIXL
GRPNO=1020
TMSNAME=TMS_QM TMSCOUNT=2
OPENINFO="TUXEDO/QM: /home2/work9/demo/sysfile/kixlqspace:DBDCkixL"
...
TMQUEUE
SRVGRP=GQUEKIXR
SRVID=1110
RESTART=Y GRACE=0 CONV=N MAXGEN=10
CLOPT="-s DBDCkixR:TMQUEUE -- "
TMQUEUE
SRVGRP=GQUEKIXL
SRVID=1210
RESTART=Y GRACE=0 CONV=N MAXGEN=10
CLOPT="-s DBDCkixL:TMQUEUE -- "
 
ARTCNX
SRVGRP=GRP01
SRVID=15
CONV=Y
MIN=1 MAX=1 RQADDR=QCNX015 REPLYQ=Y
CLOPT="-o /home2/work9/demo /LOGS/sysout/stdout_cnx_15 -e /home2/work9/demo /LOGS/sysout/stderr_cnx_15 -r -- -s KIXR -l SIMPAPP"
ARTCNX
SRVGRP=GRP02
SRVID=16
CONV=Y
MIN=1 MAX=1 RQADDR=QCNX016 REPLYQ=Y
CLOPT="-o /home2/work9/demo /sysout/stdout_cnx_16 -e /home2/work9/demo /LOGS/sysout/stderr_cnx_16 -r -- -s KIXL -l SIMPAPP"
ARTLOGN
SRVGRP=GRP00
SRVID=18
CONV=Y
MIN=1 MAX=1 RQADDR=QLGN018 REPLYQ=Y
CLOPT="-o /home2/work9/demo /LOGS/sysout/stdout_logn -e /home2/work9/demo /LOGS/sysout/stderr_logn -r --"
 
...
*SERVICES
DEFAULT: SVCTIMEOUT=0 TRANTIME=80
connect ROUTING=CICSISC
disconnect ROUTING=CICSISC
inquire ROUTING=CICSISC
update ROUTING=CICSISC
CSGM ROUTING=CICSISC
CESN ROUTING=CICSISC
CESF ROUTING=CICSISC
authfail ROUTING=CICSISC
 
*ROUTING
CICSISC FIELD=CX_APPLID RANGES="'DBDCKIXR':GRP01,'DBDCKIXL':GRP02,*:GRP01" BUFTYPE="FML32"
 
注意:
UBBでのDDR構成は必須です。DDRは、FMLフィールドCX_APPLIDにより、異なるCICSリージョン内のARTCNXにログイン・リクエストをルーティングします。
ROUTING RANGESで構成されるAPPLIDは、大文字で指定する必要があります。
ARTでは、8100-8191のFML FIELD IDをDDR用に予約しています。
環境変数の宣言
CICSリージョンを転送するには、環境変数ISC_ENABLE=YESを設定します。
ARTLOGNが正常に起動したかどうかを確認するには、Tuxedo tmadmin psrおよびtmadmin pscを使用します。ARTCNXおよびTMQUEUEは、各リージョンに含まれています。
リスト5‑54 環境変数宣言の例
/home2/work9/demo> tmadmin> tmadmin
...
 
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- ---------------
BBL 34790 KIXR 0 55 2750 ( IDLE )
TMS_QM GQUEKIXL_T+ GQUEKIXL 30001 0 0 ( IDLE )
TMS_QM GQUEKIXR_T+ GQUEKIXR 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEKIXL_T+ GQUEKIXL 30002 0 0 ( IDLE )
TMS_QM GQUEKIXR_T+ GQUEKIXR 30002 0 0 ( IDLE )
TMQUEUE 01020.01210 GQUEKIXL 1210 1 50 ( IDLE )
TMQUEUE 01010.01110 GQUEKIXR 1110 2 100 ( IDLE )
ARTADM 00011.00010 GRP01 10 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
ARTCNX QCNX016 GRP02 16 0 0 ( IDLE )
ARTLOGN QLGN018 GRP00 18 0 0 ( IDLE )
ARTSTRN QKIX110 GRP12 20 0 0 ( IDLE )
...
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
DBDCkixL TMQUEUE TMQUEUE GQUEK+ 1210 KIXR 1 AVAIL
DBDCkixR TMQUEUE TMQUEUE GQUEK+ 1110 KIXR 2 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
update cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
inquire cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
update cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
inquire cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP02 16 KIXR 0 AVAIL
delsess lognsvc ARTLOGN GRP00 18 KIXR 0 AVAIL
gensess lognsvc ARTLOGN GRP00 18 KIXR 0 AVAIL
ART_LOGON lognsvc ARTLOGN GRP00 18 KIXR 0 AVAIL
ISSS strsvc ARTSTRN GRP12 25 KIXR 0 AVAIL
...
 
ART CICSへのログオン
正常に起動されると、ユーザーはART CICSに接続でき、ログオン画面が表示されて、ログオンするCICSリージョン(APPLID)の指定が要求されます。
図5‑6 ログオン画面
システム間通信の実装
ART CICS Runtimeでは、2つのz/OS相互通信機能の実装をサポートしています。
分散トランザクション処理(DTP)の実装
ART CICSでは、APPCマップおよびLUTYPE6.1プロトコルを介して、複数のART CICSリージョン内でのDTP接続をサポートしています。このため、DTP (APPC/LUTYPE6.1)の動詞を使用するCOBOLアプリケーションは、Oracle Tuxedo Application Rehosting Workbenchによる変換後、ART CICSに直接デプロイできます。
ART CICSはOracle TMAとの統合もサポートしており、APPCを介したART CICSリージョンとメインフレームCICSリージョン間のDTP接続も有効です。典型的なエンドツーエンドの使用例を、次に示します。
図5‑7 典型的なエンドツーエンドの使用例
このシナリオには、3つのART CICSリージョン(KIXAKIXBおよびKIXC)があります。KIXAとKIXBはAPPCプロトコルを介して相互に通信し、KIXAとKIXCはLU61プロトコルを介して相互に通信します。
加えて、CICAという別のCICSリージョンがメインフレームにあり、KIXAまたはKIXBとAPPCプロトコルを介して通信します。
図5‑7に示すように、これらのリージョンで発生する対話は、次のとおりです。
KIXA内のターミナルからCICAへ発行されるAPPCアウトバウンド対話
KVA0 CICA KVA5
KVA2 CICA KVA5
CICA内のターミナルからKIXBへ発行されるAPPCインバウンド対話
KVA0 CRM1 KVA5
KVA2 CRM1 KVA5
注意:
CRM1はCICAからTMA LUへの接続です。
構成
このシナリオでDTP接続が動作するために必要な構成を、次に示します。
system.descでのCICSリージョンの定義
system.desc構成ファイルでは、次のCICSリージョンが定義されます。
KIXA: APPC/LU61フロントエンド
KIXB: APPCバックエンド
KIXC: LU61バックエンド
CICA: APPCフロント/バックエンド
system.descの詳細は、システム構成ファイルに関する項を参照してください。
connections.descでの接続の定義
connection.desc構成ファイルでは、次の接続が定義されます。
KIXAでは、次の3つの接続が定義されます。
KIXB: KIXBへの接続、プロトコルはAPPC
KIXC: KIXCへの接続、プロトコルはLU61
CICA: CICAへの接続、プロトコルはAPPC
KIXBでは、次の2つの接続が定義されます。
KIXA: KIXAへの接続、プロトコルはAPPC
CICA: CICAへの接続、プロトコルはAPPC
KIXCでは、次の1つの接続が定義されます。
KIXA: KIXAへの接続、プロトコルはLU61
注意:
connections.descの詳細は、接続構成ファイルに関する項を参照してください。
programs.descでのプログラムの定義
programs.desc構成ファイルでは、次のプログラムが定義されます。
KIXA内の2つのプログラム:
COVSATMC: view32を使用したAPPCクライアント
RVS61C: LU61クライアント
KIXB内の1つのプログラム:
COVSATMS: view32を使用したAPPCサーバー
KIXC内の1つのプログラム:
RVS61S: LU61サーバー
programs.descの詳細は、プログラム構成ファイルに関する項を参照してください。
transactions.descでのトランザクションの定義
transactions.desc構成ファイルでは、次のトランザクションが定義されます。
KIXA内の3つのトランザクション:
KVA0: COVSATMC上のAPPCクライアント、同期レベル0
KVA2: COVSATMC上のAPPCクライアント、同期レベル2
RV60: RVS61C上のLU61クライアント
KIXB内の1つのトランザクション:
KVA5: COVSATMS上のAPPCサーバー
KIXC内の1つのトランザクション:
RV65: RVS61S上のLU61サーバー
transactions.descの詳細は、トランザクション構成ファイルに関する項を参照してください。
UBBCONFIG構成
UBBCONFIGファイルでは、次のものが構成されます。
KIXAARTSTRNサーバーと、transactions.descで定義される3つのサービス(KVA0KVA2およびRV60)
KIXBARTCTRNサーバーと、transactions.descで定義される1つのサービス(KIXB_KVA5)
KIXCARTCTRNサーバーと、transactions.descで定義される1つのサービス(KIXC_RV65)
TMA統合用のGWSNAXゲートウェイ(CICA用)
ARTSTRNおよびARTCTRNの詳細は、CICSランタイム・サーバーに関する項を参照してください。
注意:
UBBCONFIGでのARTCTRN構成では、CONV=Yを指定する必要があります。
DMCONFIG構成
DMCONFIGファイルでは、次のものが構成されます。
CICA_KVA5サービスの外部からのインポート
KIXB_KVA5サービスの外部へのエクスポート
非同期処理の実装
z/OSでは、非同期処理は、リモート・システム上のトランザクションを起動するSTARTコマンドを参照します。ART CICS Runtimeでは、STARTコマンドとSYSIDオプションを使用してこの機能の実装をサポートしています。
次の各項では、実行する必要がある構成タスクについて説明します。
system.descでのリージョンの定義
system.desc構成ファイルでCICSリージョンを定義します。KIXRおよびKIXXという2つのリージョンを定義する例を、次に示します。DBDCkixRおよびDBDCKIXXは、それぞれのアプリケーション定義です。
リスト5‑55 system.descでのリージョン定義の例
[KIXR]
APPLID=DBDCkixR
INITPARM=(ASINTP='Hello world')
[KIXX]
APPLID=DBDCKIXX
INITPARM=(ASINTP='Hello worldL')
 
ARTSRMサーバーの構成
これは、ARTSRMサーバーを構成するために必要です。詳細は、ARTSRMの構成に関する項を参照してください。
UBBCONFIGファイルの変更
各CICSリージョンのUBBCONFIGファイルでARTATRNサーバーを構成する必要があります。
リスト5‑55に示されているように、KIXRおよびKIXXという2つのリージョンが定義されているものとします。構成の例を、次に示します。
リスト5‑56 UBBCONFIGの変更例
*SERVERS
ARTATRN
SRVGRP=GRP02
SRVID=30
CONV=N
MIN=1 MAX=1 RQADDR=QKIXATR REPLYQ=Y
CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_atrn -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS /sysout/stderr_atrn -r -- -s KIXR -l SIMPAPP"
ARTSRM SRVGRP= GRPX SRVID=36 MIN=1 MAX=1 RQADDR= QKIXATR REPLYQ=Y CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_srm -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP "
ARTATRN
SRVGRP=GRPX
SRVID=35
CONV=N
MIN=1 MAX=1 RQADDR=QKIXATRX REPLYQ=Y
CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_atrn -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS /sysout/stderr_atrn -r -- -s KIXX -l SIMPAPP"
ARTSRM SRVGRP= GRPX SRVID=36 MIN=1 MAX=1 RQADDR= QKIXATRX REPLYQ=Y CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_srm -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stderr_srm -r -- -s KIXX -l SIMPAPP "
*SERVICES
 
同期処理の実装
ART CICS Runtimeでは、リモートCICSシステム上にある同期トランザクションの起動をサポートします。この機能を実装するには、次の構成が必要です。
環境変数の構成
ISC_ENABLE環境変数をYESに設定して、同期処理機能を有効にします。
system.descでのリージョンの定義
system.desc構成ファイルでCICSリージョンを定義します。KIXRおよびKIXXという2つのリージョンを定義する例を、次に示します。DBDCKIXRおよびDBDCKIXXは、それぞれのアプリケーション定義です。
リスト5‑57 system.descでのリージョン定義の例
[KIXR]
APPLID=DBDCKIXR
[KIXX]
APPLID=DBDCKIXX
 
UBBCONFIGファイルの変更
UBBCONFIGファイルで次の構成を行います。
各CICSリージョンにおけるARTSTRNサーバーの構成
リスト5‑57に示されているように、KIXRおよびKIXXという2つのリージョンが定義されているものとします。構成の例を、次に示します。
リスト5‑58 UBBCONFIGの変更例
*GROUPS
GRPKIXR
GRPNO=11
TMSNAME="TMS_ORA"
TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/yfli/yfli+SqlNet=artkix+SesTm=600+LogDir=/LOGS/xa+DbgFl=0x20"
GRPKIXX
GRPNO=12
TMSNAME="TMS_ORA"
TMSCOUNT=2
OPENINFO="Oracle_XA:Oracle_XA+Acc=P/yfli/yfli+SqlNet=artkix+SesTm=600+LogDir=/LOGS/xa+DbgFl=0x20"
 
*SERVERS
ARTSTRN
SRVGRP=GRPKIXR
SRVID=1101
CONV=Y
MIN=1 MAX=1 RQADDR=QKIXSTRR REPLYQ=Y
CLOPT="-- -s KIXR -l SIMPAPP"
 
ARTSTRN
SRVGRP=GRPKIXX
SRVID=1201
CONV=Y
MIN=1 MAX=1 RQADDR=QKIXSTRX REPLYQ=Y
CLOPT="-- -s KIXX -l SIMPAPP"
 
 
*SERVICES
DEFAULT: SVCTIMEOUT=0 TRANTIME=80
SB00 ROUTING=APPLID
SB01 ROUTING=APPLID
SB02 ROUTING=APPLID
SB03 ROUTING=APPLID
 
*ROUTING
APPLID FIELD=CX_APPLID RANGES="'DBDCKIXX':GRPKIXX,*:GRPKIXR" BUFTYPE="FML32"
 
この例では、KIXXリージョンからのリクエストはGRPKIXX内のARTSTRNにルーティングされ、他のすべてのリクエストはGRPKIXR内のARTSTRNにルーティングされます。
JCL/KSHのオンラインでの送信の実装
JCL/KSHジョブのオンラインでの送信
z/OSで、CICSプログラムはWRITEQ TDコマンドでJCL/KSHジョブを送信し、TDQによってJCL/KSHジョブ文をJES内部リーダーに渡すことができます。ART CICS Runtimeでは、特別なTDQ定義と、TuxJESシステムによって通知される内部サービスを使用して、この機能をサポートします。
この機能を使用する前に、ART Batch RuntimeとTuxJES環境が設定されている必要があります。詳細は、Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。
UBBCONFIGファイルの設定
送信されたJCL/KSHジョブ文は、ARTTDQサーバーによってTuxJESに転送されます。このサーバーをアクティブ化するには、UBBCONFIGファイルの*SERVERSセクションでARTTDQを構成します。次に例を示します。
リスト5‑59 UBBCONFIGでのARTTDQの構成の例
*SERVERS
ARTTDQ
SRVGRP=GRP02
SRVID=50
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -L LIST1"
 
tdqextra.descの構成
JCL/KSH関数の送信を実装するには、tdqextra.desc構成ファイル内で次のフィールドを指定する必要があります。
BLOCKFORMAT: TuxJES内部リーダーへのインタフェースとして使用されるエクストラパーティション・キューの非ブロックまたはブロック・レコード書式。
INTRDR: TDQ定義を内部リーダーとして設定します。
例:
IRDR;SIMPAPP;ON LINE SUBMIT JOB;EXTRAQJ; ; ; ;V; ;32767;OUTPUT;DSN; ; ;Y;U;
説明:
Y
これが内部リーダーTDQであることを指定します。
U
ブロック書式がUNBLOCKEDであることを指定します。
注意:
JCLジョブ・ファイルの場合: JCLジョブをTuxJESに送信するには、1つのJCL終了フラグ、/*EOFをTDQ INTRDRに書き込む必要があります。tdqextra.descでTDQに対してBLOCKFORMAT=Bが設定されている場合、2つの終了フラグ"/*EOF"をTDQに書き込む必要があります。
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』TDキュー・エクストラ・パーティション構成ファイルに関する項を参照してください。
SPOOLによるJCL/KSHジョブのオンラインでの送信
z/OSで、CICSプログラムはSPOOLWRITEコマンドでJCL/KSHジョブを送信し、SPOOLでJCL/KSHジョブ文をJES内部リーダーに渡すことができます。ART for CICSでは、TuxJESシステムによって通知される内部サービスを使用して、この機能をサポートします。
この機能を使用する前に、ART Batch RuntimeとTuxJES環境が設定されている必要があります。詳細は、Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。
注意:
終了フラグをSPOOLファイルに書き込み、JCL/KSHジョブを送信します。そうしないと、SPOOLに書き込まれたジョブ・ファイルは、EXEC CICS SPOOLCLOSEが使用されると自動的にJCLジョブ・ファイルとしてTuxJESに送信されます。
SPOOL関連の環境変数の構成
次の環境変数を構成します。
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』KIX_SPOOL_JOB_AUTO_SUBMITに関する項およびKIX_SPOOL_OUTPUT_DIRに関する項を参照してください。
ART for CICS制御ユーティリティの実装
ART for CICSには、ART for BatchからCICS関連のリソースを追跡および管理するためのartcicsutilユーティリティが用意されています。常にART for Batchジョブによってトリガーされます。ART for Batchジョブは、1つのコマンドでファイルの開閉、CICSトランザクションの有効化/無効化、CICSトランザクションの開始などを行えます。
artcicsutilには、ART for CICSを制御するために2つのモードのコマンド・セットがあります。エンドツーエンド・モード(IPCPコマンド・セットとCAFCコマンド・セット)と対話型モード(対話型コマンド・セット)です。各コマンド・セットのサポートされるすべてのサブコマンドについては、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』artcicsutilに関する項を参照してください。
ART for CICS制御ユーティリティの実装には、一般的なユースケースがあります。
注意:
artcicsutilはART for CICSサーバーARTSRMと連携する必要があります。artcicsutilは、CICSリソース関連の処理を一元化するトリガーです。ARTSRMはART for CICSでの各CICSリージョンのポータルで、ARTSRMがすべての処理の実行を担います。
ユースケース1: エンドツーエンド・モード(IPCPコマンド・セット)でのART for CICS制御ユーティリティの実装
次のワークフローに従って、エンドツーエンド・モードでartcicsutilユーティリティを実装します(ここでは例としてIPCPコマンド・セットを使用します)。
ART for Workbenchを使用したJCLからKSHへの変換
IPCPコマンド・セットを含むJCLファイルがあるとします(例としてリスト5‑60を参照)。
リスト5‑60 IPCPサブコマンドを含むJCLの例
//IPCPEXP4 JOB 0001,'IPCP',CLASS=A
//IPCP01 EXEC PGM=IPCPBTCH,PARM='CICS CC ONLY=CICS3'
//STEPLIB DD DSN=IPCPvn.LOADLIB,DISP=SHR
//IPCPCDS DD DSN=IPCPvn.COMMAND.DATASET,DISP=SHR
//AUDIT DD SYSOUT=X
//SYSIN DD *
INIT KC HEL1
 
このJCLでは、IPCPプログラムIPCPBTCHが内部で発行され(EXEC PGM=IPCPBTCH)、ターゲットCICSリージョンがCICS3と設定され(EXEC PARM='CICS CC ONLY=CICS3')、CICSトランザクションHEL1がターゲットCICSリージョンで開始されます(INIT KC HEL1)。このケースでは、IPCPサブコマンドをEXEC PARMとJCL SYSIN DDの両方で発行できます。
ART for Workbenchを使用して、このJCLファイルを次のKSHファイルに変換します。
リスト5‑61 ART for Workbenchによって変換されたKSH
#!/usr/bin/ksh
 
m_JobBegin -j IPCPEXP4 -s START -v 2.0 -c A
while true ;
do
m_PhaseBegin
case ${CURRENT_LABEL} in
(START)
# ********************************************************//
JUMP_LABEL= IPCPEXP4
;;
(IPCPEXP4)
m_FileAssign -d SHR IPCPCDS ${DATA}/XXXX.IPCP.CICS.IPCPCNTL
m_OutputAssign -c "*" AUDIT
m_FileAssign -i SYSIN
artcicsutil -t IPCPBTCH "CICS CC ONLY=CICS3"
JUMP_LABEL=END_JOB
;;
(END_JOB)
break
;;
(*)
m_RcSet ${MT_RC_ABORT:-S999} "Unknown label : ${CURRENT_LABEL}"
break
;;
esac
m_PhaseEnd
done
m_JobEnd
#@(#)---------------------------------------------------------------------
 
このKSH (artcicsutil -t IPCPBTCH "CICS CC ONLY=CICS3"サブコマンドを参照)では、プログラムIPCPBTCHartcicsutilに翻訳され、EXEC PARMが位置パラメータとしてartcicsutilに渡され、その他のすべてのサブコマンド(SYSIN DDに含まれている)がartcicsutilが直接アクセスできるローカル・ファイルとしてART for Batchによって格納されます。-tオプションを使用してコマンド・セットのタイプが指定され、その値はIPCPBTCH (IPCPコマンド・セット)に設定されています。
CICSランタイム・ドメインにおけるUBBCONFIGの構成
UBBCONFIGで、次のサーバーを設定します。
ARTSRM (必須)
ARTSRMartcicsutilユーティリティのプロキシであるため、UBBCONFIGで構成する必要があります。対応するシステム構成ファイル(system.desc)も構成する必要があります。詳細は、「リソース・ファイルの構成」を参照してください。
各ART for CICSリージョンでARTSRMを構成する必要があります。
ARTATRN (オプション)
IPCPコマンド・セットのコマンドINIT KCENAB/DISA KC、またはCAFCコマンド・セットのSTRTをJCLファイルで使用する場合、UBBCONFIGARTATRNを設定する必要があります。ターゲット・トランザクションをトランザクション構成ファイル(transactions.desc)およびプログラム構成ファイル(programs.desc)で定義する必要もあります。詳細は、「リソース・ファイルの構成」を参照してください。
ARTATRNを使用する場合、各ART for CICSリージョンでARTATRNを構成する必要があります。
例については、リスト5‑62を参照してください。artcicsutilが発行するリクエストはすべて、まずARTSRMによって受信されるため、ARTSRMサーバーは必須です。その後ARTSRMはプロキシとして動作し、ターゲットCICSサーバーにこれらのリクエストの処理を依頼します。JCLでINIT KCサブコマンドが使用されるため(リスト5‑60を参照)、ARTATRNサーバーも指定します。INIT KCサブコマンドのターゲットCICSトランザクションは、ARTATRNサーバーにデプロイされたものです。
リスト5‑62 CICS RuntimeドメインにおけるUBBCONFIGの構成の例(サーバーARTSRMおよびARTATRN)
*SERVERS
...
ARTATRN
SRVGRP=GRP02
SRVID=30
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/cics/LOGS/sysout/stdout_atrn -e /home2/work9/demo/cics/LOGS/sysout/stderr_atrn -r -- -s KIXR -l SIMPAPP"
 
ARTSRM
SRVGRP=GRP02
SRVID=25
CLOPT="-o /home2/work9/demo/cics/LOGS/sysout/stdout_srm -e /home2/work9/demo/cics/LOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP"
...
 
リソース・ファイルの構成
次のリソース・ファイルを構成します。
これは必須です。例については、リスト5‑63を参照してください。CICS RuntimeリージョンCICS3を構成します。このCICS3がJCLファイルで指定されるためです(リスト5‑60EXEC PGM=IPCPBTCH,PARM='CICS CC ONLY=CICS3'サブコマンドを参照)。
トランザクション構成ファイル(transactions.desc)およびプログラム構成ファイル(programs.desc)
これらはオプションです。IPCPコマンド・セットのコマンドINIT KCまたはCAFCコマンド・セットのSTRTがJCLファイルで使用される場合は、ARTATRNが必要です。ターゲット・トランザクションをターゲット構成ファイル(transactions.desc)およびプログラム構成ファイル(programs.desc)で定義する必要があります。
これはオプションです。IPCPコマンド・セットのコマンドOPEN/CLOS DBがJCLファイルで使用される場合は、このVSAM構成ファイル(desc.vsam)を構成する必要があります。
リスト5‑63 システム構成ファイルの構成の例
[KIXA]
APPLID=CICS1
[KIXB]
APPLID=CICS2
[KIXR]
APPLID=CICS3
 
ART for CICSドメインおよびART for BatchドメインでのDMCONFIGの構成
エンドツーエンド・モードの場合、DMCONFIGを構成する必要があります。キー・サービス・エントリ$(APPLID)_CICS_CTRLは、ART for CICSドメイン(リスト5‑64の太字のCICS3_CICS_CTRL)全体およびART for Batchドメイン(リスト5‑65の太字のCICS3_CICS_CTRL)全体でエクスポート/インポートする必要があります。このサービスは、構成されている各ARTSRM (ARTSRMは各ART for CICSリージョンで構成)によって通知されます。接頭辞CICS3は、ターゲットCICSリージョンのAPPLIDです。
ここで、${APPLID}は大文字である必要があることに注意してください。
リスト5‑64 ART for CICSドメインでのDMCONFIGの構成の例
*DM_RESOURCES
VERSION=U22
 
*DM_LOCAL
CICS1 GWGRP="GWGRP1"
TYPE=TDOMAIN
ACCESSPOINTID="CICSAP1"
DMTLOGDEV="/home/work9/demo/cics/config/tux/DMTLOG1"
DMTLOGNAME="DMTLOG1"
CONNECTION_POLICY="ON_STARTUP"
*DM_REMOTE
#
BATCH1
TYPE=TDOMAIN
ACCESSPOINTID="BATCHAP1"
*DM_TDOMAIN
CICS1 NWADDR="//optiplex:8301"
BATCH1 NWADDR="//optiplex:8401"
 
*DM_EXPORT
CICS3_CICS_CTRL RACCESSPOINT=BATCH1
*DM_IMPORT
 
リスト5‑65 ART for BatchドメインでのDMCONFIGの構成の例
*DM_RESOURCES
VERSION=U22
 
*DM_LOCAL
BATCH1 GWGRP="GWGRP1"
TYPE=TDOMAIN
ACCESSPOINTID="BATCHAP1"
DMTLOGDEV="/home/work9/demo/jes/config/tux/DMTLOG1"
DMTLOGNAME="DMTLOG1"
CONNECTION_POLICY="ON_STARTUP"
 
*DM_REMOTE
#
CICS1 TYPE=TDOMAIN
ACCESSPOINTID="CICSAP1"
*DM_TDOMAIN
CICS1 NWADDR="//optiplex:8301"
BATCH1 NWADDR="//optiplex:8401"
 
*DM_EXPORT
 
*DM_IMPORT
CICS3_CICS_CTRL
*DM_ROUTING
 
ユースケース2: 対話型モード(対話型コマンド・セット)でのART for CICS制御ユーティリティの実装
このユースケースでは、対話型モードでartcicsutilユーティリティを起動する方法を示します。この例では、トランザクションEQDQが開始されます。
リスト5‑66 対話型モードでのartcicsutilユーティリティの起動の例
> artcicsutil -t native
> start EQDQ
start trans:
transaction ' EQDQ'
trmid ''
from ''
start trans done.
 
CICSランタイム・アプリケーション・データの出力の実装
ART CICS Runtimeでは、2つの方法でアプリケーション・データをCICS 3270プリンタに出力できます。
STARTコマンドによる出力
全般的な構成
どちらの方法を使用して出力を実装する場合も、まず、次の構成タスクを実行する必要があります。
1.
typeterms.descでプリンタ・ターミナル定義を構成します。次に例を示します。
リスト5‑67 typeterms.descでのプリンタ・ターミナル定義の構成の例
[typeterm]
name=IBM-3287-1
color=YES
defscreencolumn=80
defscreenrow=24
description="IBM 327x family printer"
hilight=YES
logonmsg=NO
outline=NO
swastatus=ENABLED
uctran=NO
userarealen=100
 
注意:
ART CICSでは、プリンタの代替サイズをサポートしません。そのため、IBM-3287-1の場合、typeterms.descで、scrnsize=alternatealtscreenrowおよびaltscreencolumnという属性を定義しないでください。
2.
例:
TRCLASS1;UNIGRP; A tranclass bidon for UNIGRP; 1
3.
transactions.descで、プリンタ・プログラム定義をARTSTR1プログラム・グループに構成します。
例:
PRNT;UNIGRP;pg for ARTSTR1; PRNTPROG; ; ; ; ; ; ;ENABLED; ; ; ;TRCLASS1
4.
programs.descで、プリンタ・プログラムをARTSTR1プログラム・グループに構成します。
例:
PRNTPROG;UNIGRP;pg for UNIGRP;COBOL; ;ENABLED
5.
terminals.descでプリンタ・ターミナルを定義して、プリンタLUNAMEおよびTERMIDを指定します。
例:
[terminal]
name=PRT1
netname=CICSPRT1
group=UNIGRP
6.
UBBCONFIGCLOPT -lオプションを使用して、プリンタ・プログラム・グループをARTSTR1プログラム・グループに構成します。
例:
CLOPT="-o stdout_str1 -e stderr_str1 -r -- -s KIXR -l UNIGRP"
7.
例:
-tn IBM-3287-1
プリンタ・ターミナルとしてPCOMクライアントを使用している場合、次の図に示すように、Telnet3270インタフェースでLUNAMEを構成し、「Session Parameters」インタフェースで「Session Type」「Printer」に設定します。
図5‑8 LUNAMEの構成
図5‑9 PCOMセッション・タイプの設定
STARTコマンドによる出力の実装
図5‑10 STARTコマンドによる出力
図5‑10は、典型的な使用例を示しています。このようなシナリオでのSTARTコマンドによる出力の実装手順は、次のとおりです。
1.
2.
以前に指定したLUNAMEを使用して、プリンタ・ターミナルからART TCPへの接続を確立します。
3.
4.
トランザクションAはSTARTコマンドにより非同期トランザクションBを起動し、TERMIDを以前に定義したLUNAMEの1つとして指定します。
5.
一時データによる出力の実装
一時データによる出力を実装するには、次の操作を行います。
1.
tdqintra.descATIFACILITYおよびFACILITYIDを次のように構成します。
リスト5‑68 tdqintra.descでのATIFACILITYおよびFACILITYIDの構成の例
# TDQUEUE;GROUP;DESCRIPTION;RECOVSTATUS;TRANSID;TRIGGERLEVEL;USERID;WAIT;WAITACTION;QSPACENAME;TRT;ATIFACILITY;FACILITYID
MTI1;SIMPAPP;TDQ FOR PRINTER;;BBBB;1;;;;;;T;PRT2
 
2.
terminals.descでPRT2を定義します。
例:
[terminal]
name=PRT2
netname=CICSPRT2
group=UNIGRP
3.
ART CICSの開始後、PCOMM (LUNAME= CICSPRT2で指定されたプリンタ)とART CICSの間で接続を確立します。
4.
qcreate MTI1 fifo none 2 30 1m 0m "TDI_TRIGGER -q queue_name -d space_name"
ATIトリガー・レベルに達すると、TDI_TRIGGERクライアントが起動され、-qオプションと-dオプションがART CICSに通知して、queue_nameおよびspace_nameに関連するトランザクションがターミナルPRT2で開始します。
CICSアプリケーションからのWebサービスの呼出しの実装
ART CICSでは、INVOKE WEBSERVICEコマンドを使用した、CICSアプリケーションからのWebサービスの呼出しをサポートしています。この機能を実装するには、次の項で説明する構成タスクを実行する必要があります。
WSDLファイルのMIFへの変換およびCOPYBOOKの生成
Oracle SALTコマンド・ユーティリティwsdlcvtを使用して、WSDLファイルをOracle Tuxedoメタデータ・リポジトリ入力ファイル(MIF)に変換します。COPYBOOKを生成するには、-Cオプションを指定します。詳細は、Oracle SALTアプリケーションの構成を参照してください。
COPYBOOKからのRECORD定義の生成
cpy2recordツールを使用して、前の手順で生成したCOPYBOOKからRECORD定義を生成し、RECORDの環境変数をエクスポートします。詳細は、RECORD型バッファの使用に関する項を参照してください。
SALTおよびメタデータ・リポジトリの構成
(Oracle Tuxedo SALTユーティリティwsloadcfを使用して) SALT構成ファイルを作成し、(tmloadreposを使用して)サービス情報をOracle Tuxedoサービス・メタデータ・リポジトリにロードします。詳細は、「Oracle SALTアプリケーションの構成」を参照してください。
webservice.descの構成
webservice.desc構成ファイルにサービス・セクションを追加し、webservice.descREQUESTおよびRESPONSEを指定します。リスト5‑69に例を示します。
リスト5‑69 webservice.desc構成の例
[DFH0XCMNOperation]
REQUEST=DFH0XCMNOperation
RESPONSE=DFH0XCMNOperationResponse
TRANSACTION=N
 
UBBCONFIGの変更
UBBCONFIGファイルでTMMETADATAおよびGWWSサーバーを構成します。リスト5‑70に例を示します。
リスト5‑70 UBBCONFIGでTMMETADATAおよびGWWSを追加する例
*SERVERS
...
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f pmu.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
 
HTTPクライアントとしてのCICSの実装
Oracle Tuxedo Application Runtime for CICSでは、CICSがHTTPクライアントとして動作することがサポートされています。インターネットに接続するには、CICS WEB動詞を使用します。この機能を実装するには、次のようにします。
SALTでのRESTアウトバウンド・サービスの定義
Tuxedo SALTデプロイメント・ファイルで、アクセスする各HTTPエンドポイントに対してRESTアウトバウンド・サービスを構成します。Service要素のoutputbufferCARRAYに設定し、enableCustomHTTPHeadersおよびenableHTTPRequestLineプロパティを指定してWEB WRITE/READ HTTPHEADERWEB EXTRACT HTTPMETHOD/QUERYSTRING/などのサポートを有効にする必要があります。リスト5‑71はサンプルです。
また、WSDFおよびMetadata構成など、その他必要なTuxedo SALT構成を定義してロードする必要があります。詳細は、SALTデプロイメント・ファイル・リファレンスを参照してください。
リスト5‑71 SALTでのRESTアウトバウンド・サービスの定義の例
<GWInstance id="GWWS1">
<Outbound>
<HTTP>
<Service name="TOUPPOST"
content-type="XML"
method="POST"
address="http://demobox:8080/ARTCICS/DEMOS/TOUPSVR"
outputbuffer="CARRAY"/>
</HTTP>
</Outbound>
<Properties>
<Property name="enableMultiEncoding" value="true"/>
<Property name="enableCustomHTTPHeaders" value="true"/>
<Property name="enableHTTPRequestLine" value="true"/>
</Properties>
 
URIMAP構成ファイルurimaps.descの構成
URIMAP構成ファイルurimaps.descにエントリを追加します。例:
TOUPPOST;SIMPAPP; demo test; ENABLED ; /ARTCICS/DEMOS/TOUPSVR; HTTP ; CLIENT; demobox; 8080; ; ; ; ; TOUPPOST
UBBCONFIGの変更
ユーザー・プログラムを実行するようにARTトランザクション・サーバーを構成し、Tuxedo SALTのUBBCONFIGTMMETADATAおよびGWWSを構成します。例:
リスト5‑72 UBBCONFIGの変更例
ARTSTRN
SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1
CLOPT="-o /home/demo/restclnt/LOGS/sysout/stdout_strn -e /home/demo/restclnt/LOGS/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
……
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f artcics.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
 
HTTPサーバーとしてのCICSの実装
Oracle Tuxedo Application Runtime for CICSでは、CICSがHTTPサーバーとしてサポートされています。HTTPクライアントは、HTTPを介してOracle Tuxedo Application Runtime for CICSプログラムを呼び出すことができます。この機能を実装するには、次のようにします。
SALTでのRESTインバウンド・サービスの定義
Tuxedo SALTデプロイメント・ファイルで、HTTPクライアントに公開するRESTインバウンド・サービスを構成します。Method要素のinputbufferCARRAYに設定し、enableCustomHTTPHeadersおよびenableHTTPRequestLineプロパティを指定してWEB WRITE/READ HTTPHEADERWEB EXTRACT HTTPMETHOD /QUERYSTRING/などのサポートを有効にする必要があります。リスト5‑73はサンプルです。
また、WSDFおよびMetadata構成など、その他必要なTuxedo SALT構成を定義してロードする必要があります。詳細は、SALTデプロイメント・ファイル・リファレンスを参照してください。
リスト5‑73 SALTでのRESTインバウンド・サービスの定義の例
<GWInstance id="GWWS1">
<Inbound>
<HTTP>
<Network http="demobox:8080"/>
<Service name="ARTCICS/DEMOS/TOUPSVR">
<Method name="POST" service="KIXR_TOUPSVR" inputbuffer="CARRAY"/>
</Service>
</HTTP>
</Inbound>
<Properties>
<Property name="enableMultiEncoding" value="true"/>
<Property name="enableCustomHTTPHeaders" value="true"/>
<Property name="enableHTTPRequestLine" value="true"/>
</Properties>
</GWInstance>
 
UBBCONFIGの変更
ユーザーWeb認識プログラムを実行するようにARTDPLを構成し、Tuxedo SALTのUBBCONFIGTMMETADATAおよびGWWSを構成します。例:
リスト5‑74 UBBCONFIGの変更例
ARTDPL
SRVGRP=GRP02
SRVID=60
MIN=1 MAX=1
CLOPT="-o /home/demo/restsvr/LOGS/sysout/stdout_dpl -e /home/demo/restsvr/LOGS/sysout/stderr_dpl -r -- -s KIXR -l SIMPAPP"
……
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f artcics.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
 
ART for CICSアプリケーション・サーバーのカスタマイズ済コールバック・サポートの実装
Oracle Tuxedo Application Runtime for CICSでは、カスタマイズ済の関数をサーバー起動時にロードし、サーバー終了時にその関数をアンロードすることによって、1つ以上のART for CICSアプリケーション・サーバーを拡張できます。この機能を実装するには、次のようにします。
この機能を実装する典型的なユースケースがいくつかあります。
注意:
この機能をサポートしているART for CICSアプリケーション・サーバーは、ARTSTR1/NARTATR1/NARTCTR1/NARTWTR1/NARTDPLおよびARTDPL_XNのみです。
共有ライブラリlibkixcallback.soの作成
libkixcallback.soという共有ライブラリを1つのみ作成し、その共有ライブラリで次の2つのコールバック関数を宣言する必要があります。
注意:
この共有ライブラリは、CICS Runtime製品がインストールされているディレクトリの下に置くことをお薦めします。(このディレクトリの宣言には、環境変数$KIXDIRが使用されます。通常は、$KIXDIR/libディレクトリです。)これを行ったら、Oracle Tuxedo Application Runtime for CICSが更新中または移行中の場合には、このディレクトリからこの共有ライブラリを削除しないでください。
Oracle Tuxedo Application Runtime for CICSには、共有ライブラリの開発に役立つ、artkixcallback.hというユーザー・ヘッダー・ファイル(ディレクトリ$KIXDIR/includeで公開)が用意されています。ヘッダー・ファイル内部、次の列挙を定義します。
リスト5‑75 ユーザー・ヘッダー・ファイルartkixcallback.h
typedef enum artkix_svrtype
{
e_ARTKIX_STR1, // for Synchronous Transaction server type
e_ARTKIX_STRN,
e_ARTKIX_ATR1, // this is for Asynchronous Transaction servers type
e_ARTKIX_ATRN,
e_ARTKIX_CTR1, // for Converse Management server type
e_ARTKIX_CTRN,
e_ARTKIX_WTR1, // for Non-3270s Terminal server type
e_ARTKIX_WTRN,
e_ARTKIX_DPL // for Distributed Program Link server type
} ARTKIX_SVRTYPE;
 
int ARTKIX__svrinit_callback(ARTKIX_SRVINIT_PARA*) (サーバー起動時)
ART for CICSアプリケーション・サーバーは、起動時に次の関数を呼び出します。
Input: input引数は、次の構造体へのポインタです。
リスト5‑76 構造体
typedef struct artkix_svrinfo_t
{
long tux_svr_grpno;
/* this is the server's group id. */
long tux_svr_id;
/* this is the server's id. */
char kix_applid[8];
/* this is the server's applid. */
char kix_sysid[4];
/* this is the server's sysid. */
ARTKIX_SVRTYPE kix_svrtype;
/* this is the server's type. */
int tux_svr_argc;
const char ** tux_svr_argv;
/* these are command line options to be passed to server when it is activated. */
} ARTKIX_SRVINIT_PARA;
 
出力: なし
リターン・コード: 起動に成功するとゼロを返します。失敗した場合はゼロ以外を返します(この場合、サーバーは起動できません)。
void ARTKIX__svrdone_callback() (サーバー停止時)
ART for CICSアプリケーション・サーバーは、停止時に次の関数を呼び出します。
入力: なし
出力: なし
リターン・コード: なし
動的なロードのためのカスタマイズ済Cライブラリのインクルード
Linux/Solarisの場合は、$LD_LIBRARY_PATHにカスタマイズ済Cライブラリをインクルードします(AIXの場合は$LIBPATH)。このライブラリは、実行時に動的にロードされます。
ART for CICSアプリケーション・サーバーがカスタマイズ済の共有ライブラリを前述のパスで見つけられない場合、この機能は無効になりますが、サーバーは正常に起動します。
ユースケース1: サーバー起動時に共有メモリーを作成
ARTDPLサーバーの起動時に使用される共有メモリーを作成する場合は、libkixcallback.soという名前で共有ライブラリを作成する必要があります。この共有ライブラリは、2つのコールバック関数をエクスポートし、$KIXDIR/lib/ディレクトリにある拡張共有ライブラリを置き換えます。詳細は、「共有ライブラリlibkixcallback.soの作成」を参照してください。
ARTDPLサーバーを起動すると、まず$KIXDIR/libの下にあるこの拡張共有ライブラリが検索されます。見つからなければ、Linux/Solarisの場合は$LD_LIBRARY_PATH (AIXの場合は$LIBPATH)の検索を続行します。この共有ライブラリが見つかると、ARTDPLサーバーでロードされます。
このサーバー起動時に、共有ライブラリを作成できます。関数が失敗した場合は、ゼロ以外が返されてARTDPLサーバーが起動に失敗します。成功した場合は、ゼロが返されてARTDPLサーバーが通常どおりに起動します。
ユースケース2: サーバー起動時にデータベース表を開く
ARTDPLサーバーの起動時に、Linuxプラットフォームでデータベース表の一部を開きたい場合は、libkixcallback.soという名前の共有ライブラリを作成します。それによって2つのコールバック関数がエクスポートされ、このC共有ライブラリのパス名が$LD_LIBRARY_PATH環境変数に含まれていることが確認されます。詳細は、「共有ライブラリlibkixcallback.soの作成」を参照してください。
ARTDPLサーバーを起動すると、まず$KIXDIR/libの下にあるこのカスタマイズ済共有ライブラリが検索されます。見つからなければ、$LD_LIBRARY_PATHの検索を続行します。この共有ライブラリが見つかると、ARTDPLサーバーでロードされます。
共有ライブラリを開始するとき、データベース表を開くことができます。関数が失敗した場合は、ゼロ以外が返されてARTDPLサーバーが起動に失敗します。成功した場合は、ゼロが返されてARTDPLサーバーが通常どおりに起動します。
リソースベースの認可の実装
ART for CICSにはセキュリティ・フレームワークが用意されているため、カスタマは外部セキュリティ・マネージャとの統合を選択できます。このフレームワークを使用すると、トランザクションでリソースにアクセスするとき、ART for CICSでは認可チェックを実行できます。たとえば、CICS WRITEQ TSコマンドを発行すると、まず、TSキューへの書込み権限があるかどうかがART for CICSによって外部セキュリティ・マネージャに確認されます。
リソースベースの認可を有効にするには、次のようにします。
環境変数KIX_RESSECAまたはYに設定します。
KIX_RESSEC=A: トランザクションでリソースにアクセスする際、リソースベースの認可が実行されます。これはすべてのトランザクションに適用されます。
KIX_RESSEC=Y: トランザクションでリソースにアクセスする際、リソースベースの認可が実行されます。これは、transactions.descRESSEC=Yが指定されたトランザクションにのみ適用されます。
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』KIX_RESSECに関する項を参照してください。
KIX_RESSEC=Yを設定する場合、transactions.descでリソースベースの認可をチェックするトランザクションに対してRESSEC=Yを構成します。
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』トランザクション構成ファイルに関する項を参照してください。
ART for CICSには、CheckResourceAuth.gntという名前のデフォルトの認可関数があります(ART for CICSインストール・ディレクトリ)。外部ESMと統合するには、デフォルトのCheckResourceAuth.gntをカスタマイズした関数に置き換える必要があります。
関数インタフェースは、「外部セキュリティ・マネージャとの統合」にリストされています。
UBBCONFIGでTuxedoセキュリティを有効にします。
Tuxedoセキュリティを有効にします。たとえば、UBBCONFIGXAUTHSVRを構成し、LDAPベースの認証および認可を有効にします。
詳細は、『Oracle Tuxedoファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』XAUTHSVR(5)に関する項を参照してください。
リスト5‑77 UBBCONFIGでのTuxedoセキュリティの有効化
*RESOURCES
SECURITY ACL
AUTHSVC "..AUTHSVC"
OPTIONS EXT_AA, EXT_MON
 
*GROUPS
AUTHGRP
GRPNO=25
*SERVERS
XAUTHSVR SRVGRP=AUTHGRP
SRVID=5
MIN=1 MAX=1
CLOPT="-A -- -n /opt/oracle/CICS_RT/atnldap -z /opt/oracle/CICS_RT/atzldap"
 
 
CICSランタイムでのCOBOLプログラム・デバッグの実装
CICSランタイムでCOBOLプログラムのデバッグを実装する代表的なユースケースがいくつかあります。
1つのトランザクション内でXCTLまたはLINK (ローカル)も発行できます。
詳細は、『Oracle Tuxedo Application Runtime for CICSユーザー・ガイド』CICS RuntimeでのCOBOLプログラムのデバッグおよびエラー処理に関する項および『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』デバッグ構成ファイルに関する項を参照してください。
ユースケース1: 2人のユーザーが2つのCOBOLプログラムをそれぞれデバッグします。
ART for CICSユーザーAがCOBOL Program1をデバッグし、ART for CICSユーザーBがCOBOL Program2をデバッグする場合、これら2人のユーザーは次を実行する必要があります。
1.
COBOLデバッグ情報をkix_cobol_dbg.cfg構成ファイルに追加します。
myAnimSrvID1;;;;; Program1
myAnimSrvID2;;;;; Program2
2.
animコマンドラインを入力します。
anim %XmyAnimSrvID1
anim %XmyAnimSrvID2
3.
ユーザーAおよびBは、animユーティリティを起動したものと同じLinuxアカウントで独自のART for CICSアプリケーション・サーバーを起動するか、ART for CICSサーバーを再起動せずにデバッグ構成リソース・ファイルを動的に変更します。
注意:
ART for CICSサーバーを起動するLinuxユーザー・アカウントは、animコマンドラインを実行するLinuxユーザー・アカウントと同じである必要があります。animユーティリティで指定されるANIMSRVIDのみがデバッグされます。
ユースケース2: 1人のユーザーが1つのトランザクション内の2つのCOBOLプログラムをデバッグします。
1人のART for CICSユーザーが1つのトランザクション内の2つの異なるCOBOLプログラムをデバッグする(たとえば、ART for CICSユーザーがCOBOL Program1とCOBOL Program2をデバッグし、両方のプログラムが同一トランザクションにある)場合、次のようにします。
1.
COBOLデバッグ情報をkix_cobol_dbg.cfg構成ファイルに追加します。
myAnimSrvID1;;;;transaction1;
2.
anim %XmyAnimSrvID1
ユースケース3: 1人のユーザーが2つのプログラムをSTART TRANSIDでデバッグします。
1人のART for CICSユーザーが2つの異なるCOBOLプログラムをSTART TRANSIDコマンドでデバッグする場合、次のようにします。
1.
COBOLデバッグ情報をkix_cobol_dbg.cfg構成ファイルに追加します。
myAnimSrvID1;;;;; program1
myAnimSrvID2;;;;; program2
2.
anim %XmyAnimSrvID1
anim %XmyAnimSrvID2
これらの2つのプログラムがART for CICSアプリケーション・サーバーによって起動されると、ユーザーは2つのプログラムをそれぞれ別のターミナルでデバッグできます。
ユースケース4: 1人のユーザーが2つのプログラムをLINK(リモート)でデバッグします。
1人のART for CICSユーザーが2つの異なるCOBOLプログラムをLINKコマンドでデバッグする場合、次のようにします。
1.
次のCOBOLデバッグ情報をkix_cobol_dbg.cfg構成ファイルに追加します。
myAnimSrvID1;;;;; program1
myAnimSrvID2;;;;; program2
2.
anim %XmyAnimSrvID1
anim %XmyAnimSrvID2
2つのプログラムがART for CICSアプリケーション・サーバーによって起動されると、ユーザーは2つのプログラムをそれぞれ別のターミナルでデバッグできます。
CICSランタイム・ログ
Tuxedoシステム・ログ
他のTuxedoアプリケーションと同様に、CICS Runtimeは、専用のシステム・ログに特定のイベントと問題を記録するTuxedoによって管理されます。
このログは、名前がTuxedo ubbconfigファイルのシステム変数ULOGPFXに含まれる標準Tuxedoユーザー・ログ(ULOG)です。
例:
ULOGPFX="/home2/work9/demo/Logs/TUX/log/ULOG"
CICSランタイム・サーバー・ログ
Tuxedo ubbconfigファイルでサービスを宣言する場合、各サーバーでは、CLOPTオプションが次の2つのファイルを含むように定義されています。
このファイルの名前はstdout_<server name>で、ART接頭辞はありません。
たとえば、ARTSTRNサーバーにはstdout_strnという名前の標準出力があります。
このファイルの名前はstderr_<server name>で、ART接頭辞はありません。
たとえば、ARTSTRNサーバーにはstderr_strnという名前のエラー出力があります。
各CICSランタイム・サーバー用の異なるstdoutとstderrメッセージ・ファイルは、次のとおりです。
 
注意:
各CICSランタイム・サーバーの-l listパラメータに応じてインストールされたリソースのグループ。
正常にインストールされ、各.desc構成ファイルの指定に応じて使用可能なリソース(インストールされていても使用できないリソースもあります)。
リスト5‑78 起動直後のARTSTRNサーバーのstdout_strnの例
Groups loaded: <0001>
|----------|
| GROUP |
|----------|
|SIMPAPP |
|----------|
ARTSTRN: Read config done
|---------------------------------------------------|
| TRANCLASS loaded : < 2> |
|---------------------------------------------------|
| TRANCLASS | GROUP |MAXACTIVE|
|------------------------------|----------|---------|
|TRCLASS1 |SIMPAPP | 001|
|TRCLASS2 |SIMPAPP | 002|
|---------------------------------------------------|
|--------------------------------------------------|
| PROGRAMS loaded : < 4> |
|------------------------------------------------------------------|
| PROGRAM | GROUP |LANGUAGE|EXEC| STATUS |
| | | |KEY | |
|------------------------------|----------|--------|----|----------|
|RSSAT000 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT001 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT002 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT003 |SIMPAPP |COBOL |USER|ENABLED |
|------------------------------------------------------------------|
|---------------------------------|
| TRANSACTIONS loaded : < 4> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP |RSSAT000 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA01|SIMPAPP |RSSAT001 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA02|SIMPAPP |RSSAT002 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA03|SIMPAPP |RSSAT003 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|-----------------------------------------------------------------------------------------------------|
Warning: zero TSQMODEL loaded!!
FILES<FILE> lineNo(1) skipping Record: Group not to load
FILES<FIC3> lineNo(4) skipping Record: Group not to load
 
この例では次の点に注意してください。
-lオプションで、1つのグループ(SIMPAPP)が選択されています
プログラムの無効化と有効化
場合により、システムに大幅な影響を与えるプログラムで問題が発生し、エンド・ユーザーによる実行を禁止することによって、プログラムを緊急に除去する必要があります。このことは、短期的な処置として、一時的にシステムを安定化して機能障害を解析および解決する時間を確保する助けになります。
z/OS上と同様、CICS Runtimeではプログラムを無効にできます。プログラムを無効にするには、CICS Runtime構成ファイルprograms.descを変更します。このファイルには、プログラムがDISABLEDかENABLED (デフォルトのステータス)かを示す専用のフィールドであるSTATUSフィールドがあります。
『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のCICSリソース情報の動的管理に関する項も参照してください。
プログラムの無効化
トランザクションを有効から無効に切り替えるには、このcsvファイルの7番目のフィールドを変更し、以前の値を、暗黙的(「 」空白)または明示的なENABLEDステータスから、明示的なDISABLEDステータスに変更する必要があります。
CICS Runtime Tuxedoサーバーをシャットダウンしてブートすると、1つ以上のプログラムの変更が有効になります。
プログラムを無効にする場合、それを使用する人がいると、アプリケーションがCICSエラーを処理する方法に応じて、エラー・メッセージが表示されます。
リスト5‑79 programs.descでDISABLEDに設定されたサンプルSimple Application SA02 COBOLプログラム
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE; ; ;STATUS
RSSAT000;SIMPAPP; Home Menu Program of the Simple Application ;COBOL
RSSAT001;SIMPAPP; Customer Detailed Information Program of the Simple Application ;COBOL; ; ;ENABLED;
RSSAT002;SIMPAPP; Customer Maintenance Program of the Simple Application;COBOL; ; ;DISABLED;
RSSAT003;SIMPAPP; Customer List of the Simple Application ;COBOL
 
プログラムの有効化
プログラムを有効化するには、反対のことを行うことのみが必要となり、STATUSフィールドをDISABLEDからENABLED、または「 」(少なくとも1つのスペース)に変更します。
CICS Runtime Tuxedoサーバーを停止して再起動すると、1つ以上のプログラムの変更が有効になります。
プログラム・ステータスの変更チェック
異なるトランザクション・サーバーまたはCICS Runtimeのログを確認すると、stderr_*ログで、変更されたステータスの変更に気付きます。
このサーバーの起動直後のログは、このプログラムが無効にされていることを(斜体で)示しています。
リスト5‑80 プログラム・ステータスを示すログ・レポート
Groups loaded: <0001>
|----------|
| GROUP |
|----------|
|SIMPAPP |
|----------|
ARTSTRN: Read config done
|---------------------------------------------------|
| TRANCLASS loaded : < 2> |
|---------------------------------------------------|
| TRANCLASS | GROUP |MAXACTIVE|
|------------------------------|----------|---------|
|TRCLASS1 |SIMPAPP | 001|
|TRCLASS2 |SIMPAPP | 002|
|---------------------------------------------------|
|--------------------------------------------------|
| PROGRAMS loaded : < 4> |
|------------------------------------------------------------------|
| PROGRAM | GROUP |LANGUAGE|EXEC| STATUS |
| | | |KEY | |
|------------------------------|----------|--------|----|----------|
|RSSAT000 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT001 |SIMPAPP |COBOL |USER|ENABLED |
|RSSAT002 |SIMPAPP |COBOL |USER|DISABLED |
|RSSAT003 |SIMPAPP |COBOL |USER|ENABLED |
|------------------------------------------------------------------|
|---------------------------------|
| TRANSACTIONS loaded : < 4> |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
| | | | |C|C| |R|R| | |T| | | |
|TRAN| GROUP | PROGRAM |ALIA|M|O|PRI|E|E| STATUS |TASK |R| TRAN | TWA |MAX|
| | | | |D|N| |S|S| |DATA |A| CLASS | SIZ |ACT|
| | | | |S|F| |S|T| |KEY |C| | |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP |RSSAT000 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA01|SIMPAPP |RSSAT001 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|SA02|SIMPAPP |RSSAT002 | |N|N|001|N|N| ENABLED |USER |Y| |00000|999|
|SA03|SIMPAPP |RSSAT003 | |N|N|001|N|N|ENABLED |USER |Y| |00000|999|
|-----------------------------------------------------------------------------------------------------|
Warning: zero TSQMODEL loaded!!
 
CICS Runtime用のアプリケーションの削除と追加
場合により、アプリケーションを特定のマシンから削除して、そのすべてのコンポーネントを完全に削除するか、別のマシンに移動する必要があります。アプリケーションで使用するすべてのリソースが、そのアプリケーション専用の1つ以上のリソース・グループで定義されている場合、CICS Runtimeでこれらのグループを抑制し、最終的に別の場所にインストールすることのみが必要です。
各CICS Runtime Tuxedoサーバーは、CLOPTオプションの-lパラメータの後に含まれる、起動時に選択およびインストールされるグループのリストを読み取ります。アプリケーションに対してグループを削除または追加するには、各CICS Runtime Tuxedoサーバーに対して、このリストからグループを削除または追加すれば十分です。
1つ以上のプログラムでの変更は、CICS Runtime Tuxedoサーバーを停止して再起動すると有効になります。
リスト5‑81 ARTSTRNサーバーにおけるアプリケーションの例
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn
-e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
s KIXR -l SIMPAPP"
 
1つ以上のグループを追加する場合、以前に定義されたグループに対し、新しいグループを「:」文字で区切って連結する必要があります。
リスト5‑82 ARTSTRNサーバーでgroup1とgroup2を追加する例
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn
-e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
s KIXR -l SIMPAPP:GROUP1:GROUP2"
 
グループを削除する場合、それらが-lリストにあれば削除し、残りのグループの間に「:」の1文字のみを残します。
リスト5‑83 ARTSTRNサーバーでgroup1を削除する例
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn
-e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
s KIXR -l SIMPAPP:GROUP2"
 
注意:
CICS RuntimeのCプログラム・サポート
ART CICSでは、CICSアプリケーションをC言語で実装して実行できます。
CICS RuntimeでのCプログラムの実行
各CプログラムはCOBOLプログラムとしてロードされ、COBOLランタイムで実行されるため、CICS Cプログラム・サポートは、COBOL製品に依存します。
Cプログラミングの制限と要件
ART CICSにおけるCICS/Cサポートの制約と要件を、次にリストします。
Cアプリケーションでは、すべてのEXEC CICSコマンドは、NOHANDLEまたはRESPオプションが指定されているものとして処理されます。
/**/を使用して単一行のコメントを表します。EXEC CICSコマンドの中央にコメントを置かないでください。
ART CICSでは、argcargvおよびenvpはサポートされません。
ART CICSでは、次の2つの方法でCOMMAREAにアクセスできます。
ART CICSプリプロセッサが自動的に宣言するexternグローバル・ポインタ__commptrを指定します。__commptrはシステムによる予約済で、ユーザーは他の用途で定義できません。
ART CICSプリプロセッサが自動的に宣言するexternグローバル・ポインタ__eibptrを指定します。__eibptrはシステムによる予約済で、ユーザーは他の用途で定義できません。
EIB宣言は#ifndef行と#endif行で囲まれていますが、すべての変換済ファイルに含まれるわけではありません。ART CICSは、EIB内のすべてのフィールド定義を含めるために、ヘッダー・ファイルdfheiblk.hを公開しています。変換された各ファイルはこのヘッダー・ファイルをインクルードすることのみ必要であり、すべての処理はプリプロセッサによって自動的に実行されます。
BMS画面属性定義: CバージョンのDFHBMSCAファイルおよびDFHAIDファイルがCICSによって提供されており、BMSの使用時にはアプリケーション・プログラマによってインクルードされる可能性があります。
ART CICSには、cics.hで宣言されるiscics()も用意されていますが、ユーザーはmakefileを変更してヘッダー・ファイル・パスをインクルードすることのみ必要です。
EXEC CICSは全体を1行で指定します。
#pragmaは自動的にコメントに変換されます。
C関数のexit()はreturnに変換されます。
C関数のmain()、そのパラメータ・リストおよびカッコは1行で指定します。例:
void main(int argc, char **argv)
COMMAREAはポインタである必要があります。ART CICSでは、構造体の指定は、値ではなくポインタのみがサポートされます。
CからEIBへのアクセス
EXECインタフェース・ブロック(EIB)のアドレスは、引数としてC main関数に渡されません。しかし、ユーザーは次の2つの方法を使用して、EIBのアドレスを取得できます。
ADDRESS EIBの使用
CからCOMMAREAへのアクセス
COMMAREAのアドレスは、引数としてC main関数に渡されません。ただし、ユーザーは次の2つの方法を使用して、COMMAREAのアドレスを取得できます。
ADDRESS COMMAREAの使用
COMMAREAを指すグローバル・ポインタ__commptrの使用
CICSコマンド・トランスレータ
ART CICSには、CICS/COBOL API変換用のprepro-cics-C.plがあります。prepro-cics-C.plの詳細は、prepro-cics-C.plに関する項を参照してください。
Cプログラムのコンパイル
CプログラムをCOBOLランタイムで確実にロードするためには、gcc/g++ではなくCOBOLコンパイラを使用してCプログラムをビルドしてください。
cobを使用して、Cソース・コードを呼出し可能な共有オブジェクトとしてコンパイルします。動的ライブラリには、Cソース・ファイル名と同じ名前で大文字の名前が必要です。
例:
CPYINC=../includes
cob -z,CC zample_treated.c -o ZAMPLE.so -CC -I${CPYINC}

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved