|
このアプリケーションは、もともと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は、作成、変更および削除のような一連の古典的な機能を使用して企業の顧客を管理します。
z/OS CICS CSDファイルでは、CICSコンポーネントはすべて同じ名前を使用して宣言されます。リソース宣言はすべて、PJ01TERMという名前のz/OS CICS GROUP内で行われます。このグループは、CICSを自動インストールするために起動時に使用されたz/OS CICS LIST PJ01LISTで宣言されます。
最初の例では、UNIXのOracle表に変換されたz/OS VSAMファイルだけを使用する、CICS Simple File-to-Oracleアプリケーションを使用します。
この例では、プラットフォーム移行で生成されたUNIXコンポーネントは、すべてtrfディレクトリに格納されています。
COBOLプログラムおよびBMSマップセットは、コンパイルし、ディレクトリ${HOME}/trf/cobexeおよび${HOME}/trf/MAP_TCPで、実行可能モジュールとして使用できるようにする必要があります。
${HOME}/trf/cobexeディレクトリには、次のSimple Application CICS実行可能プログラムがあります。
${HOME}/trf/MAP_TCPディレクトリには、次のコンパイル済のSimple Application Data z/OS BMSマップセットがあります。
標準アプリケーションの場合は、初期設定のほか、同じグループの次のCICSリソースを実装する必要があります。
各リソースは、各タイプ(プログラム、トランザクションなど)に対応するファイル内で宣言されます。リソース・ファイルで定義された各リソースは、いずれかのグループに属する必要があります。
CICS Simple File-to-Oracle Applicationを使用する次のいくつかの例では、CICSランタイム・グループ名SIMPAPPを使用し、*.descファイルはすべて、${home}/trf/config/resourcesディレクトリに置かれます。
| 注: | これらの構成ファイルでは、「#」で始まる行はコメントとみなされ、CICS Runtimeによって処理されません |
これらの宣言は、実装の必要がある各トランザクションに対応する内容をtransactions.descファイルを記入することによって行われます。
各トランザクションに対して、csv形式で宣言する必要があります
File-to-Oracle Simple Applicationの例では、COBOLプログラムRSSAT000、RSSAT001、RSSAT002およびRSSAT003を起動する、SIMPAPPグループの4つのトランザクション、SA00、SA01、SA02およびSA03を宣言する必要があります。
記入が済むと、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
以前に宣言されたトランザクションによって、直接的または間接的(LINK、XCTL、STARTなどのEXEC CICS文を介して)に使用されるすべてのプログラムは、同じグループ内で宣言される必要があります。
これらの宣言は、各プログラムが実装するために、programs.descファイルで行われます。
Simple Applicationの例では、必要なプログラムはRSSAT000、RSSAT001、RSSAT002およびRSSAT003だけで、すべてCOBOL言語でコーディングされています
記入が済むと、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
| 注: | RSSAT002の言語フィールドでは何も宣言されませんが、これは、このプログラムの言語がデフォルトのCOBOLであることを意味します。 |
3270ターミナルまたはエミュレータを介してエンド・ユーザーと対話するには、このドキュメントでこれまで説明してきた特定のEXEC CICS文を介して以前に定義されたCOBOLプログラム内で使用された物理マップセット(*.mpdefファイル)のすべてを、CICS Runtimeに対して宣言します。
これらの宣言は、実装の必要がある各マップセットに対応する内容をmapsets.descファイルを記入することによって行われます。
各マップセット定義の入力書式は、次の書式の説明を遵守する必要があります。
このSimple Applicationの例では、COBOLプログラムで使用されるマップセットは、RSSAM00、RSSAM01、RSSAM02およびRSSAM03です。
記入が済むと、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変数を受け入れないため、このファイルには完全に展開したパスを指定する必要があります。 |
従来は、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プログラムからこのファイルにアクセスするために認識されている唯一のファイル名でもあります。 |
このSimple Applicationの例では、次の行を入力する必要があります(説明を簡単にするため、ファイルの場所をubbconfig、envfileおよびtuxconfigファイルと同じ場所に指定しましたが、これは必須でありません)。
DD_VSAMFILE=${HOME}/trf/config/tux/desc.vsamdesc.vsamファイルを物理的に作成します。 desc.vsamファイルを変更します。このSimple Applicationの例では、次の行が入力されます。
#DDname;Accessor;DSNOrganization;Format;MaxRecordLength;KeyStart;KeyLength
ODCSF0;ASG_ ODCSF0;I;F;266;1;6
以前に定義されたサーバーに加えてCICSアプリケーション・トランザクションを管理する手順:
Tuxedo ubbconfigファイルの*SERVERSセクションの次の例は、ARTSTRNサーバーの構成を示しています。
*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 "
…
ARTSTRNサーバーが起動されるためには、以前に定義された(かつコメントされていない)Tuxedoサーバー・グループ内のubbconfigファイルで定義される必要があります。
この例では、ARTSTRNはTuxedoサーバー・グループGRP02 (SRVGRP=GRP02)に属しています。
*GROUPS
…
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
TMSNAME="TMS_ORA"
…
Tuxedo tmadmin psrコマンドを入力して、必要なCICSランタイム・サーバー(ARTTCPL、ARTCNXおよびARTSTRN)がすべて実行されており、そのメッセージがTuxedoのドキュメントとこのドキュメントに準拠していことを確認します。
# 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 Servicesを表示することによって、別のチェックが可能です。
CICSランタイム・システムのトランザクション/サービス(CSGM、CESN、CESFなど)に加え、これで、CICSランタイム・アプリケーションSA00、SA01、SA02およびSA03のトランザクション・コードを参照できます。
# 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アプリケーションを使用する前に、アプリケーションがアクセスするISAMファイルにデータを移入する必要があります。次に、3270ターミナルまたはエミュレータで、UNIX x3270コマンドを使用してCICS Runtimeにアクセスします。それは、次であることが必要です:
# x3270 ${HOSTNAME}:${TCPNETADDR}
XAプロトコルを使用するBDBに基づき、COBOL-ITによってコンパイルされたCICS COBOLプログラムは、ART Workbenchを使用してMainframe VSAMファイルから変換される索引編成ISAMファイルにアクセスできます。次の項では、このアプリケーションを有効化するためにART CICS Runtimeで実行する必要がある構成について説明します。
MRMパラメータをTuxedo ubbconfigファイルの*GROUPSおよび*RMSセクションのグループ・エントリに追加します。次の例を参照してください。
*GROUPS
GRP02
GRPNO=12
MRM=Y
*RMS
MRMG_RM1
SRVGRP=GRP02
RMID=15
TMSNAME="TMS_BDB"
OPENINFO="BERKELEY-DB:/home2/work10/data"
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サーバーを起動する前に次の変数を明示的にエクスポートします。
一部の特定の事例では、たとえばパフォーマンスの制約のために、同じトランザクション・コードを扱う同時実行トランザクションの数を制限する必要があります。
z/OSでは、この制限はトランザクション・リソース自体で定義されることができず、同じトランザクションの同時インスタンス数の最大値を記述する固有のMAXACTIVEパラメータを含む、TRANCLASS(トランザクション・クラス)という名前の独立したリソースで定義されます。
トランザクションをトランザクション・クラスに関連付けて、そのパラメータ、特にMAXACTIVEパラメータを継承するために、z/OS CICSトランザクション・リソースには、TRANCLASSリソースの名前を含むTRANCLASSフィールドがあります。
このインスタンス管理は、CICS Runtimeを伴うUNIX上では、異なる方法で実行されます。同時実行トランザクションの最大数は、同じトランザクションを提供するサーバーの数によって定義されます。この最大数と最小数はそれぞれ、Tuxedoファイルubbconfigの*SERVERSセクションにあるARTSTRN定義のMAXおよびMINパラメータで示されます。
これは、次の非常に個別的な事例を除いて、これらの制限を管理するためにmaxactiveパラメータが考慮されないことを意味します。
MAXACTIVE=1は、この種類のトランザクション・クラスに属する同時トランザクションが同時実行できないことを示すため、この管理の例外です。
この非常に個別的な順次トランザクションの事例を管理するには、Tuxedo CICS Runtime機能を構成する必要があります
MAXACTIVEが2以上のトランザクション・クラスにリンクされているトランザクションはすべてCICS Runtime TuxedoサーバーARTSTRNによって管理されており、他に何も変更する必要がありません。MAXACTIVEパラメータが1に設定されているトランザクションでは、ARTSTR1という名前のCICS Runtime Tuxedoサーバーが、特定の管理を専門に扱います。
このサーバーをアクティブ化するには、次のようにubbconfigファイルを変更して、*SERVERSセクションにこのサーバーを追加します。
*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"
…
| 注: | CICSランタイム・トランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRNおよびARTATR1)はすべて、同じCICSランタイム・トランザクション・グループ・サーバーを共有しており、ubbconfigサーバー・グループ・セクション(*GROUPS)を変更する必要はありません。 |
ART CICSの場合、並列性がデフォルト動作であるため、同時トランザクションを、2以上のMAXACTIVEパラメータを持つトランザクション・クラスに制限する必要は、実際にはありません。
順次トランザクションの場合は、CICS Runtimeに対してこれらのトランザクションを宣言する唯一の方法であるため、必須です。MAXACTIVE=1パラメータで定義されている特定のトランザクション・クラスを宣言します。他のCICSランタイム・リソースと同様に、これはCICSランタイム・グループ名に属する必要があります。各TRANCLASSに対して、csv形式で次のように宣言します。
| 注: | MAXACTIVEパラメータは、バイナリ・スイッチのようなものと理解できます。 |
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サーバーの管理下で同時実行できることを示しているため、実際類似しています。
| 注: | これらの2つの最後の定義はオプションです。それらがなくても意味は同じです。 |
このcsv形式ファイルの最初の4つの必須フィールド(トランザクション名、グループ名、説明、プログラム名)に加えて、12番目のフィールド、TRANCLASS(トランザクション・クラス名)を追加する必要があります。
TRANCLASSフィールドは、1つ以上の空白をそれぞれの間に挟む8つのセミコロン(;)によって、Programフィールドから区切る必要があります。
この例では、CICS Runtime Simple Applicationに、次のMAXACTIVE制限を持っていると想定します。
これらのトランザクションは、以前に定義した次のtranclassesにリンクされる必要があります。
変更が済むと、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パラメータに関連付けられておらず、順次トランザクションではありません。SA02とSA03は、MAXACTIVE >= 2と定義されているトランザクション・クラスTRCLASS2とTRCLASS10にそれぞれ関連付けられています。これらのトランザクションが必要でないとわかっている場合、結果は、SA02とSA03がSA00のようにトランザクション・クラスなしで定義されている場合と正確に同じになります。SA01は、トランザクション・クラス・フィールドが必須である唯一のものです。それに関連付けられているトランザクション・クラス(TRCLASS1)が、実際にMAXACTIVE=1と定義されていることを確認します。 # 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
#
ARTSTRNが実行されている唯一のサーバーであるこの例では、ARTSTR1もアクティブにされた場合に何も変化がないことがわかります。
# 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
#
これらのトランザクションは、実行を遅らせるためにDELAYまたはTIMEパラメータを使用していないCICSプログラム内でコーディングされている特定のCICS EXEC CICS START TRANSIDリクエストによって起動されます。
プログラムの少なくとも1つにこの種の文が含まれる場合は、他のどの設定も変更することなく、CICS Runtime Tuxedoサーバーの一部の新機能をインストールし、アクティブ化します。
ARTSTRNサーバーとARTSTR1サーバーに関しては、ファイルは同じ方法で変更されますが、これらのサーバーの名前に接頭辞を付けるために使用される文字「s」(同期)を、文字「a」(非同期)に置き換える必要があります。
MAXACTIVEパラメータが厳密に1より大きい並列非同期トランザクションを使用するための専用サーバーがARTATRNです。atrn_serverをインストールするには、ARTSTRNサーバーのインストールについて説明している項を参照してください。
また、tmadmin psrおよびpscコマンドを使用して、設定を確認できます。
Simple Applicationの例では、次のようになります。
ARTATRNを実行していることを示します。 SA00 - SA03)は、非同期モードで実行できるように複製されることを示します(ASYNC_SA00 - ASYNC_SA03)。# 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の例では、次のようになります。
ARTATR1を実行していることを示します。# 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
#
ART CICS Runtimeでは、EXEC CICS START TRANSIDリクエストで起動される非同期CICS遅延トランザクションを、2つの方法で実装できます。
z/OSには、AT、TIME、AFTER、INTERVALなど、トランザクションを指定の時間または指定の間隔後に起動するための、時間に関係するいくつかのCICS START APIオプションがあります。ART CICS Runtimeには、これらのオプションを実装するサーバーARTSRMが用意されています。詳細は、 『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のARTSRMの構成に関する項を参照してください。
このサーバーをアクティブ化するには、UBBCONFIGファイルの*SERVERSセクションでARTSRMを構成します。一連のARTSRMサーバーが各CICSリージョンの同じグループにある場合のみ、これらを構成できます。次に例を示します。
*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を使用してリクエストを再ディスパッチします。 |
非同期トランザクションが起動されるのは、EXEC STARTのASYNC_QSPACEがオプションINTERVALまたはPROTECTを使用して設定される場合です。
この場合、トランザクション・リクエストはOracle Tuxedo /Qキューに保存され、時刻になると、トランザクションが自動的に起動されます。
この機能を有効にするには、次のコンポーネントを構成する必要があります。
CICS Runtimeには、すべてのTuxedo /Qコンポーネントを作成するUNIXスクリプト、mkqmconfig.shが用意されています。
TMQUEUEとTMQFORWARDを、ubbconfigファイルの*SERVERSセクションに追加する必要があります。*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"
…
tmadmin psrおよびpscコマンドを使用して、4台の新しいサーバーと2つの新しいサービスが実行されていることを確認します。
# 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
#
これらのトランザクションは、CICS一時記憶域キューに関連するEXEC CICSリクエストを含むCICSプログラムを使用します。
使用される文は、EXEC CICS WRITEQ TS … END-EXEC、EXEC CICS READQ TS … END-EXEC、EXEC CICS DELETEQ TS … END-EXECです。
プログラムの少なくとも1つがこれらの文の1つを含んでいる場合は、他の設定を変更せずに、CICS Runtimeの新機能をインストールし、アクティブにします。
TS Queuesを管理するには、ARTTSQ CICS Runtime Tuxedoサーバーをアクティブにします。
Tuxedo tmadmin psrおよびpscコマンドを使用して、サーバーが実行され、6つの新しいサービスが公開されていることを確認します。
# 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キューの場合、内容に関する整合性はCICS Runtimeによって保証されません。たとえば、CICSトランザクションのどこかの時点でabendが発生した場合、このTSにしたことは最後の整合性ポイントにロールバックされません。
TSキューは、KIX_TS_DIR UNIX環境変数で定義される専用ディレクトリの順編成ファイルに格納されます。この変数は、~/.profile UNIXシステム・ファイルで定義され、そこからエクスポートされます。
KIX_TS_DIR=${HOME}/trf/KIXTSDIR Tuxedo ubbconfigファイルを変更して、管理専用の新しいARTTSQサーバーをアクティブ化します。
これらのTSキューについては、CICS Runtimeが内容の整合性を保証します。たとえば、CICSトランザクションのどこかの時点でabendが発生した場合、最後の整合性ポイントにロールバックされ、すべて正常であれば、その内容がコミットされて新しい整合性ポイントになります。これらのTSキューは、RDBMS整合性管理を活用するために、にOracle表に格納されます。
TSキューに関しては、リカバリ可能なTSキューの強化動作があります。
ソースCICS z/OSで、CICSエンキューがREADQ TSコマンドに対して呼び出されないため、あるタスクが一時保存キュー・レコードを読み取ると同時に、別のタスクは同じレコードを更新することが可能になります。これを回避するには、タスクを同時に実行しても同じ一時保存識別子でキューを読み取るおよび変更することができるように、一時保存キューで明示的なエンキューを使用します。
また、この動作によって、リカバリ可能なTSキューがコミットされる前またはロールバックされた後でも、1つのトランザクションではそのキュー内に新しく書き込まれたレコードを参照または読み取ることが可能になります。
ターゲット側では、この制限はありませんが、特に次の場合には制限があります。
回復可能なTSキューを使用するには、TSキューを含むようにOracle表を定義する必要があります。CICS Runtimeには、これらの表すべてを作成するためのUNIXスクリプト、crtstable_Oracleが用意されています。
crtstable_Oracleスクリプトを実行します。*GROUPSセクションでOracleへの接続を確立するためにARTTSQによって使用されるサーバー・グループを変更します。*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"
…
# 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
#
CICS一時データ管理機能は、標準的なキューイング機能を提供します。データを後続の内部または外部処理のためにキューに格納できます。アプリケーション・プログラムで指定された選択データは、定義済のシンボリック一時データ・キューに、またはキューからルーティングできます。イントラパーティションまたはエキストラパーティションのどちらかです。
一時データ・キューは、CICSリージョンに割り当てられた機能と関連付けられた場合、イントラパーティションです。データがCICSリージョンの外部の宛先にダイレクトされる場合、エキストラパーティションです。一時データ・キューは、アプリケーション・プログラムによる最初のリファレンスより前に定義とインストールする必要があります。
| 注: | このドキュメントでは、特別にイントラパーティションTDキューに集中します。 |
イントラパーティションは、別のタスクとして実行中の1つ以上のプログラムで使用される直接アクセス・ストレージ・デバイスのデータを指します。これら内部キューに、またはキューからダイレクトされるデータはイントラパーティションと呼ばれます。可変長のレコードで構成されている必要があります。
ユーザー・タスクによってキューにデータが書き込まれた場合、このキューはCICSリージョン内の別のタスクの入力データとして使用できます。すべてのアクセスは順次で、読み込みと書込みポインタによって制御されます。一度読み込まれたレコードは別のタスクから読み込むことはできません。イントラパーティション・データは最終的にリクエストによりターミナルに転送されるか、出力データセットから順に取得されます。
イントラパーティション・データの典型的な使用には次が含まれます。
イントラパーティション一時データ・キューには次の3種類があります。
イントラパーティション・キューの場合は、CICSは自動トランザクション初期化(ATI)のオプションを提供します。
システム・プログラマが特定のイントラパーティション宛先の非ゼロ・トリガー・レベルを指定し、ATIの基準を確立します。(1つ以上のプログラムによって発行されたWRITEQ TDコマンドが作成した)キューでのエントリの数が指定されたトリガー・レベルに達した場合、キューの定義に指定されたトランザクションが自動的に開始されます。コントロールがキューでのデータを処理するプログラムに渡されます。キューを使い果たすためにプログラムは繰り返しREADQ TDコマンドを発行する必要があります。
キューを空にすると新しいATIサイクルが開始します。つまり、指定されたトリガー・レベルに達すると、前のタスクがまだ実行中でも新しいタスクの開始がスケジュールされます。新しいATIサイクルが開始する正確な時点は、キューが論理的にカバリ可能として定義されているかどうかによります。キューのRECOVSTATUSをNoまたはPhysicalとして定義した場合、新しいATIサイクルはキューがQZEROに読み込まれたときに開始されます。しかし、キューがLogicalのリカバリ可能な属性で定義された場合、新しいATIサイクルはキューをQZEROに読み込んでタスクが終了してから開始されます。
自動的に開始されたタスクがキューを空にしない場合、キューへのアクセスは禁止されません。タスクはキューが空になる前に正常終了または異常終了することがあります。(つまり、READQ TDコマンドへのレスポンスとしてQZERO状態が発生する前に)キューの内容をターミナルに送信する必要があり、前のタスクが正常終了している場合、QZEROに達していないことはトリガー処理がリセットされず、同じタスクが再開されたことを意味します。トリガー処理がリセットされていない場合、後続のWRITEQ TDコマンドは新しいタスクをトリガーしません。
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)が該当する非同期トランザクションの起動に使用されます。
CICS Runtimeの各CICSのようなリソースは、${KIXCONFIG}ディレクトリに保存される専用の構成ファイルによって宣言されます。
読み取りおよび書き込み処理に同じAPIを使用するとはいえ、TDキュー・エクストラパーティションおよびTDキュー・イントラパーティション・リソース宣言はわずかな引数しか共有せず、意味的にかなり異なるオブジェクトです。
この理由により、CICS Runtimeでは、TDキュー・エクストラ・パーティション・リソース構成とTDキュー・イントラパーティション・リソース構成をそれぞれ2つの異なるリソース・ファイルに分けて保存しています。
イントラパーティション・キューは、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』に記述されたtdqintra.descファイルに宣言されます。
qmadminと/Q configurationの正確で詳細な情報は、 Tuxedoドキュメントの『ATMI /Qコンポーネントの使用』を参照してください。
CICS Runtimeで配布されるスクリプトmk_td_qm_config.shは、qspaceの作成およびその後TDイントラパーティション・キューに対して使用する/Qへのキューの作成と構成の例を示します。
このスクリプトは3つの環境変数を使用します。これらの環境変数は、環境に応じて設定する必要があります。
デバイス(KIX_TD_QSPACE_DEVICE)およびQSPACEの作成方法は標準であり、ここでは説明を省略します。
キューを含むqspaceを開くためのqopen QspaceNameコマンドは、任意のキューを作成する前に発行する必要があります。QspaceNameは、これらのキューのリソース宣言でのQSPACENAMEと一致する必要があります。
qmadminを使用した対話型のキュー作成の例は次のとおりです。qmadminからの質問は標準のフォントで表示され、ユーザーが記入したエントリが太字で表示されています。
qopen TD_QSPACEqcreate
Queue name: TESTQueue order (priority, time, expiration, fifo, lifo): fifoOut-of-ordering enqueuing (top, msgid, [default=none]): noneRetries [default=0]: 5Retry delay in seconds [default=0]: 0High limit for queue capacity warning (b for bytes used, B for blocks used,
% for percent used, m for messages [default=100%]): 5mReset (low) limit for queue capacity warning [default=0%]: 0mQueue capacity command: "TDI_TRIGGER -t S049"qopen TD_QSPACE
qcreate TEST fifo none 3 0 5m 0m "TDI_TRIGGER -t S049"
noneに設定する使用方法があります。
トリガー・レベルに達した場合、このコマンドを発行します。CICS Runtimeでは、TDI_TRIGGER -t TRIDに設定する必要があります。TRIDはリソース構成のTRANSIDと一致する必要があるトリガーのトランザクションのトランザクション識別子です。
| ヒント: | ATRサーバーはATIを処理するとき、トランザクションがQZEROに到達したかどうか、また成功したかロールバックしたかどうかを認識します。QZEROに到達しない場合、ソース・プラットフォームと同じ方法でトランザクションを再発行します。 しかし、今では再試行回数が、ATIFACILITYパラメータに取ってかわり、ロールバックされたTDキュー・レコードが再発行されるかどうかという事実を制御します。 今では管理者が再発行の数を決定し、エラー・キュー上の障害メッセージを取得できるということは、ソースと比べると進歩です。 |
TDQ監視を有効にするには、ARTTDQサーバーをアクティブ化する必要があります。
*SERVERS…ARTTDQ SRVGRP=GRP02SRVID=40MIN=1 MAX=1CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tdq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tdq -r -- -s KIXR -l SIMPAPP"…
これらのトランザクションは、CICS一時記憶域キューに関連するEXEC CICSリクエストを含むCICSプログラムを使用します。
使用されている文はEXEC CICS WRITEQ TS ...END-EXEC、EXEC CICS READQ TS ...END-EXEC、EXEC CICS DELETEQ TS ...END-EXECです。
プログラムの少なくとも1つにこれらの文のいずれかが含まれ、キューがPOOLNAME (tsqmodel.desc)を使って定義されている場合は、他の設定を変更せずに、CICS Runtimeの新機能をインストールし、アクティブにします。
POOLを使って、TSキューを管理するには、次の手順を実行します。
CICS Runtimeには、このような表すべてを作成できるUNIXスクリプト、crtsptable_{Oracle|UDB}が用意されています。これらの表を作成するには、MT_DB_LOGIN環境変数を設定し、crtsptable_{Oracle|UDB}を実行します。MT_DB_LOGINを設定し、データベース接続情報を入力します。このファイルの例は、次のとおりです。DBUSER/DBPASSWD@DBSID。Oracleデータベース・ユーザーの例については、「リスト4-27」を参照してください。
UBBCONFIG *GROUPSセクションでOracleへの接続を確立するために、Tuxedo UBBCONFIGファイルを変更して、ARTTSQPが使用するサーバー・グループを変更します。ARTTSQP CICS Runtime Tuxedoサーバーをアクティブ化します。アクティブ化するには、このサーバーをUBBCONFIG *SERVERSセクションに追加します。例については、「リスト4-28」を参照してください。tmadmin psr、およびpscコマンドを使用して、サーバーが実行されていること、新しいサービスが公開されていることを確認します。例については、「リスト4-29」を参照してください。 ARTTSQP_UDBを使用する場合、新規DB2サーバー/表のサーバーを再バインドするために、次の手順の実行が必要になることがあります。
MT_DB_LOGINを設定し、データベース接続情報を入力します。$KIXDIR/binに進みます。../tools/bind.sh tspool_UDB.bnd
*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"
...
Oracle_XA Managerに送信されるパラメータです。
*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"
...
# 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
#
いくつかの理由で、z/OS上では、Distributed Program Link機能を使用して、ローカルのCICSプログラム(クライアント・プログラム)が、リモートCICSリージョンにある別のCICSプログラム(サーバー・プログラム)を、EXEC CICS LINK文を介して呼び出せます。CICS Runtimeでは、移行リージョン間のMROのようなマルチCICSアーキテクチャで使用されるこの機能をサポートしています。
UNIXで書かれたアプリケーションでDPLを使用したい場合を除き、z/OSアプリケーションのテクニカル特性をチェックします。
REMOTE ATRIBUTESセクションのフィールドの一部がファイルされています。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デフォルト値は下線で示されます):
ここまで説明してきたとおり、場合によっては、Remote Attributes宣言が存在しないか、不完全な場合があります。その理由は、これらのフィールドがデフォルト値の一部しか確立しないことであり、例の中で太字で示した、以前のパラメータの一部は、EXEC CICS LINK APIにはありません。
EXEC 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 defaultINPUTMSG(…)
INPUTMSGLEN(…)
END-EXEC
プログラムの少なくとも1つがDPLを使用する場合は、他の設定を変更せずに、ARTDPLサーバーをインストールしてアクティブ化します。
このサーバーをアクティブにするには、ubbconfigファイルを変更して、Tuxedo ubbconfigファイルの*SERVERSセクションにこのサーバーを追加します。このサーバーは、トランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRN、ARTATR1)と同じサーバー・グループに属しています。
*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"
…
Tuxedo tmadmin psrおよびpscコマンドを使用して、このサーバーが実行され、新しいサービスが公開されていないことを確認します。
# 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
#
EXEC CICS LINK文で呼び出される分散プログラムをアプリケーションが使用できるようにするには、これらのプログラムをCICS Runtimeに対して宣言する必要があります。
programs.descファイルで、REMOTESYSTEM (csv形式のデータセットの7番目のフィールド)をリモートSYSID名(リスト4-32のサンプル内のKIXD)に設定します。 デフォルトはlocal (empty field)で、これはFULL CICS APIを使用できるため、ローカル・プログラムが宣言されることを意味します。
このSimple Applicationの例では、RSSAT000とRSSAT001がリモートで、RSSAT002とRSSAT003がローカルだと想定すると、programs.desファイルは次のように設定されます。
#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
tmadmin psrおよびpscコマンドを使用して、DPLプログラムのための新しいサービスが、ARTDPL: KIXD_RSSAT0001およびKIXD_RSSAT0003によって公開および管理されていることを確認します。| 注: | 同名の問題を避けるために、これらの分散サービスの名前は、ubbconfigで定義されているTuxedo DOMAINIDと、その管理対象プログラムの名前から構成されます。 |
{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です。
# 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
#
z/OSでは、CWAは、プログラムがデータを相互に保存および交換するために使用できるCICSリージョンのために、このCICSリージョンが実行されているかぎりメモリー内に定義される共有記憶域です。
この領域は、CICS文EXEC CICS ADDRESS CWAが提供するポインタによってアドレッシングされます。アプリケーションにこのCICS文がある場合、CICS Runtime内にこの機能を実装する必要があります。
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起動時に固定および定義されます。
~/.profile UNIXシステム・ファイルを変更して新しいCICS Runtime変数(KIX_CWA_SIZE)をエクスポートし、それをDFHSITのWRKAREAにある値に設定します。この変数が宣言されない場合、デフォルト値は0で、認可される間隔は0 - 32760バイトになります。KIX_CWA_SIZE=512
~/.profile UNIXシステム・ファイルを変更して新しいCICS Runtime変数(KIX_CWA_IPCKEY)をエクスポートし、それをCWAとして使用されるクロス・メモリー・セグメントを定義するUnix IPCキーに指定します。KIX_CWA_ IPCKEY=200944
z/OSでは、TWAは、プログラムがデータを相互に保存および交換するために使用できるCICSリージョンのために、1つのCICSトランザクションの実行中にメモリー内に定義される共有記憶域です。つまり、このTWAには、トランザクションに参加しているプログラムのみがアクセスできます。この領域は、CICS文EXEC CICS ADDRESS TWAによって提供されるポインタによってアドレスが指定されます。ご使用のアプリケーション内にEXEC CICS ADDRESS TWA文があれば、この機能をCICS Runtimeに実装する必要があります。
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システム・トランザクションの結果が表示されます。

TWasize>0)をレポートするには、CICS Runtime transactions.descファイルを変更します。 CICS ADDRESS TWA文を持つプログラムを使用する各トランザクションに対して、transactions.descファイルを変更して、そのTWasizeをこのcsv形式ファイルの16番目のフィールドで宣言します。#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
| 注: | TWAサイズがゼロに等しいSA00トランザクションに対しては、何も示されません。 |
|---------------------------------|
| 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にもアクセスできるようになりました。
DFHMIRSは、インバウンド関数の送信を処理するCICS内の内部ミラー・プログラムです。CICS RTでは、このミラー・プログラムは、TWAが使用される場合に、トランザクション・リソース・ファイル内のリンク・プログラムの実行に使用するトランザクションの下で定義されている必要があります。リストでは、ARTDPLにより、CPMIという名前のトランザクションで、リモートのリンク・プログラムが実行され、そのTWAサイズは100に相当します。
| 注: | ユーザーは、アプリケーション・プログラムにDFHMIRSのような名前を付けることはできません。 |
|---------------------------------| | 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||-----------------------------------------------------------------------------------------------------|
ART CICS Transaction Trigger Monitor (ARTCKTI)は、CICS CKTIトランザクションと同じ動作をします。1つまたは複数のWebSphere MQ開始キュー上でリスニングし、トリガー・イベントが発生するとトリガー・メッセージを取得し、トリガー・メッセージをターゲット・トランザクションに転送します。
ARTCKTIは、スタンドアロンのOracle Tuxedoサーバーです。ARTCKTIサーバーは、次のように動作します。
1つのサーバー・インスタンスでは、同じWebSphere MQキュー・マネージャの範囲内のWebSphere MQ開始キューのみモニターできます。異なるWebSphere MQキュー・マネージャのキューは、別々のARTCKTIサーバー・インスタンスでモニターしてください。
ARTCKTIサーバーはメッセージを取得します。MQTMCからMQTMC2にトリガー・メッセージを転送します。 MQTMCには多くのフィールドがあるため、構造をEXEC CICS START呼出しのパラメータとして送信すると、いつでも複雑になりすぎます。MQTMC2はCKTIで使用され、構造をデータとしてトリガー・モニターのSTARTリクエストに渡します。
CICS CKTIトランザクションは、非同期呼出し(EXEC CICS START)を使用してターゲット・トランザクションを開始するため、ARTCKTIサーバーも、非同期呼び出し(Tuxedo tpacall)を使用してターゲット・トランザクションを開始します。
RETRIEVEによってトリガー・メッセージを取得し、WebSphere MQアプリケーション・キュー上で操作を実行します。ユーザー・トランザクションがメッセージを取得しないか、起動されたトランザクションが使用できない場合、WebSphere MQは、この条件ではトリガー・メッセージをもう送信しません。WebSphere MQ開始キューが再び開かれるか、新しいトリガー条件が満たされるまで、新しいトリガー・メッセージが発行されます。
図4-4に、動作を示します。
| 注: | デフォルトでは、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は、1つ以上のメッセージがキューに配置されるときCICSトランザクションをトリガーできます。ART for CICSには、トリガー・モニターとしてARTCKTIサーバーが用意されています(CICS CKTIトランザクションと同等)。
MQ ManagerでART for CICSトランザクションをトリガーできるようにするには、MQ Manager構成でトリガーのキューおよびプロセスを適切に定義する必要があります。リスト4-43にサンプルの構成を示します。
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トランザクション・サーバーが別のモードを使用してWebSphere MQにアクセスする場合は、次のようにする必要があります。
ローカルの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サーバーを構築し、setenvで設定されているPATHに含まれるディレクトリに、正しい実行権限で配置します(たとえば、$TUXDIR/binと$KIXDIR/bin)。
buildtms -r MQSeries_XA_RMI -o TMS_MQM
トランザクション・サーバーを構築し(ARTSTR*/ARTATR*/ARTDPL)、それを$KIXDIR/binディレクトリ、または$APPDIR以下のローカル・ディレクトリに配置します(ただし、ローカルの場合は正しい実行権限でsetenvの$PATH定義に追加します)。ARTATRNの例を参照してください。
buildartcics -M -r Oracle_XA -r MQSeries_XA_RMI_COB -o ARTATRN_ORA_MQM
| 注: |
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の構成」を参照してください。
ARTCKTIサーバーをTMSグループで構成する必要はありません。
ARTSTR*/ARTATR*/ARTDPLはTMSグループで構成する必要があり、TMSグループはMQMグループとして構成する必要があります。
*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"
WebSphere MQに正しく接続するためのシーケンスは、MQCONN、MQOPEN、MQxxx (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トランザクションをリサイクルするか、またはCICSトランザクション自体がそれをしない場合にMQ接続を解放します。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フラグを設定すると有効にできます。
COMPUTE MQGMO-OPTIONS = MQGMO-WAIT
+ MQGMO-SYNCPOINT
+ MQGMO-FAIL-IF-QUIESCING
+ MQGMO-CONVERT
END-COMPUTE.
MQPUTの場合、MQMD-FORMATがMQFMT-STRINGに設定されていれば、ASCIIからEBCDICへの変換は自動的に行われます。例:
MOVE MQFMT-STRING TO MQMD-FORMAT.
SENDERとしてチャネルを定義してローカルのWebSphere MQサーバーを使用する場合、チャネル定義でCONVERT (YES)を追加すれば、プログラムを変更せずにトランスコードを実行できます。
Oracle Tuxedo ART Workbenchは、部分的にはメインフレームの数値データ型(BINARY/COMP)を、互換性のあるデータ型COMP-5(ネイティブ等価)に変更することよって、COBOLプログラムをターゲット環境に適応させます。これは、COBOLアプリケーションで透過的に行われます。
ただしLinux環境のWebsphere MQでは、MQ呼出しで渡されるパラメータにBINARY型を使用する必要があるため、これが原因で問題が発生する可能性があります。同じようなデータ型マッピングは、Pro*COBOLプリプロセッサによって実行されます。
したがって、コンパイルの最終段階でWebSphere MQインタフェース定義をCOMP-5からBINARYに戻してください。変更後の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に接続する場合、前のトランザクションを終了せずにこのターミナルから様々なトランザクションを選択して実行し、アクティブなトランザクション間で切り替えることができます。
| 注: |
ART for CICSは、複数セッション管理の実行時にユーザーがアプリケーション・リストを取得および表示するためのDFHALSTというプログラム名のシステム・トランザクションを提供します。このトランザクションは、リストを取得するためにユーザー・プラグインを呼び出します。
このプラグインを提供し、DFHALISTが呼び出せるように正しいライブラリ・パスにライブラリを置く必要があります。詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』の「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.descでGMTRAN=CESNを構成する必要があります。
[kixr]
APPLID=DBDCkixR
GMTRAN=CESN
複数セッション管理を実行するには、セキュリティを有効にする必要があります。詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』の「セキュリティ構成」を参照してください。
次のサーバーをUBBCONFIGに構成する必要があります。例は、表4-47を参照してください。
ARTTCPL、-tオプションを指定します。詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』の「ARTTCPL/ARTTCPHの構成」を参照してください。ARTCNX、SYSIDを指定します。ARTSRM (同じユーザーが異なるターミナルを介してART for CICSに接続することを防ぎます)。ARTSTRN (アプリケーション・リスト・トランザクションおよびユーザー・トランザクションを実行します)。* 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)が自動的に実行され、アプリケーション・リストが表示されます。

トランザクション(セッションとも呼ばれる)を起動するには、次のいずれかを実行します。
ユーザー・トランザクション画面からアプリケーション・リスト・トランザクションに戻るには、PA1を押します。
次のアクティブなトランザクションに切り替えるには、PA2を押します。
トランザクションを終了するために、ユーザー・トランザクションでTRANSIDパラメータを指定しないでCICS RETURNを発行すると、ART for CICSはトランザクションのセッションを終了します。
アプリケーション・リスト・トランザクションは終了できません。かわりに、ART for CICSから切断して終了する必要があります。
z/OSで、CICS TCP/IPソケット・インタフェースによってリモート・ユーザーはTCP/IPインターネット経由でCICSクライアント/サーバー・アプリケーションにアクセスできます。CICS TCP/IPには、TCP/IPネットワークで広く使用され、UNIXシステムおよび他のオペレーティング・システムに基づいたBerkeley Software Distribution 4.3ソケット・インタフェースの変種が用意されています。ソケット・インタフェースは、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のみで、ユーザー作成リスナーはサポートされません。CICS TCP/IPソケットAPIは、アプリケーション・プログラム間での次の重要な通信機能の実行を可能にするソケット呼出しの集まりです。
これらの基本的な機能に加えて、これらのAPIでは次のことも可能です。
ART for CICSでは前述の関数もサポートされ、C APIおよび拡張COBOL APIのセットが提供されます。表4-7に、サポートされるC APIをリストします。最後の3つの関数はART for CICSによって提供され、その他の関数ではOSソケット・ライブラリを直接使用できます。表4-8に、サポートされる拡張COBOL APIをリストします。
| 注: | takesocket()の呼出しはARTATRN/ARTATR1でのみ使用できます。givesocket()の呼出しはサポートされません。 |
| 注: | GETSOCKOPT、IOCTL、SETSOCKOPTおよびGIVESOCKETはサポートされません。 |
図4-5に、設定に関係するCICSランタイム・コマンドおよびソケット呼出しのシーケンスを示します。CICSランタイム・コマンドの先頭にはEXEC CICSが付いています。この図の他の番号付きアイテムはすべてART for CICS TCP/IP呼出しです。
ここで、クライアントはOS/2オペレーティング・システムまたは各種UNIXオペレーティング・システムの1つ(AIX*など)でTCP/IPを実行しています。CICSランタイム・サーバーARTCSKLおよびARTATRN/ARTATR1プロセスは両方ともART for CICS TCP/IP下で実行されています。
リスナー・サーバーARTCSKLは、ART for CICS TCP/IPの一部として提供されます。図4-5に、ARTCSKLによって発行される呼出しを示します。クライアントおよびサーバーの呼出しシーケンスは、このシーケンスに則して準備する必要があります。詳細は、「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呼出しでアプリケーションに渡します。
listener.desc)で構成される必要があります。ARTATRN/ARTATR1サーバーに渡す新規ソケットを取得します。listener.desc)の情報に基づいてユーザー・トランザクションを開始します。 標準モードのARTCSKLは、クライアントからの最初の伝送内の次の入力書式を必要とします。クライアントはレスポンスを待ってから後続の伝送を送信します。入力は大文字の場合と小文字の場合があります。カンマが必要です。
エンハンス・モードのARTCSKLにはこの入力書式は必要ありません。ART for CICSは、TCP/IPソケット・リスナー構成ファイル(listener.desc)からトランザクション情報を取得します。

tran
client-in-data
kc (大文字のKCのみサポートされます)
KCのみがサポートされ、EXEC CICS STARTを使用して遅延間隔なしでユーザー・トランザクションが開始されることを示します。このフィールドが空白の場合、タスク制御(KC)を使用して即座に開始されます。
hhmmss(サポートされません)
リスナーの出力には2つの異なる書式があります。1つは、標準リスナーを介して開始されたユーザー・トランザクション用(リスト4-48を参照)で、もう1つはエンハンスされたリスナーを介して開始されたユーザー・トランザクション用(リスト4-49を参照)です。
ユーザー・トランザクション・プログラムは、EXEC CICS RETRIEVE関数を使用してリスナーによって渡されたデータを取得し、IPv6ソケット・アドレス構造体を格納するために確保した記憶域を拡張します。EXEC CICS RETRIEVE関数で指定されたLENGTHには、リスナー出力書式を格納するために確保された記憶域の量が反映される必要があります。LENGTHが送信されたデータの量より小さい場合、LENGERRフラグが上げられます。HANDLE条件をコーディングすると、これを含めることができます。
| 注: | ART for CICS一時データ・キューを介した(ARTCSKLによる)出力はサポートされません。 |
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 */
};
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ソケット・インタフェース関数を使用するには、次のようにします。
listener.desc)にリソースを宣言します。詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のTCP/IPソケット・リスナー構成ファイル(listener.desc)に関する項を参照してください。ARTCSKLおよびARTATRN/ARTATR1を構成します。CICSランタイム・サーバーARTCSKLおよびARTATRN/ARTATR1は同じマシン上で構成する必要があります。ARTCSKLおよびARTATRN/ARTATR1サーバーの詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』を参照してください。
z/OSでは、ISSUE PASSコマンドを使用して、ターミナルに再接続しなくてもCICSリージョンを転送できます。ユーザーは、LOGONMSGを使用してデータ転送も実装できます。ISSUE PASSが呼び出されると、宛先リージョンのGMTRANが強制的に呼び出されます。
ART CICSも前述のシナリオをサポートします。次の構成が必要です。
ARTSRMを構成する必要があります。詳細は、ARTSRMの構成に関する項を参照してください。
環境変数ISC_ENABLEをYESに設定する必要があります。詳細は、ISC_ENABLEに関する項を参照してください。
system.descでは、CICSリージョンの初期化パラメータを定義します。
[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 LOGONMSGでISSUE PASSを使用したデータ転送機能が有効になります。system.descの詳細は、システム構成ファイルに関する項を参照してください。
GMTRANが定義されている場合(CSGM、CESN、CESFなど、他のシステム・トランザクションではない)、トランザクション/プログラムをtransactions.desc/programs.descで構成し、ARTSTRN/ARTSTR1でロードする必要があります。transactions.desc/programs.descの詳細は、トランザクション構成ファイルに関する項およびプログラム構成ファイルに関する項を参照してください。
transactions.desc:
ISSS;SIMPAPPB;pg for simpapp;ISSPASSS
programs.desc:
ISSPASSS;SIMPAPPB;pg for simpapp;COBOL; ;ENABLED
この構成ファイルでは、ART CICSで使用可能なterminalを定義します。静的なLUNAMEを使用してART CICSにログオンする場合に、これは必須です。terminals.descの詳細は、 ターミナル構成ファイルに関する項を参照してください。
[terminal]
name=0001
netname=CICS0001
group=SIMPAPP
[terminal]
name=0002
netname=CICS0002
group=SIMPAPP
CICSリージョンの転送を実装するには、次の要件を満たす必要があります。
TMQUEUEを構成します。ARTLOGNを構成します。ARTCNXを構成します。ARTCNXで公開される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は、各リージョンに含まれています。
/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に接続でき、ログオン画面が表示されて、ログオンするCICSリージョン(APPLID)の指定が要求されます。

ART CICS Runtimeでは、2つのz/OS相互通信機能の実装をサポートしています。
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接続も有効です。典型的なエンドツーエンドの使用例を、次に示します。

このシナリオには、3つのART CICSリージョン(KIXA、KIXB、KIXC)があります。KIXAとKIXBはAPPCプロトコルを介して相互に通信し、KIXAとKIXCはLU61プロトコルを介して相互に通信します。
加えて、CICAという別のCICSリージョンがメインフレームにあり、KIXAまたはKIXBとAPPCプロトコルを介して通信します。
図4-7に示すように、これらのリージョンで発生する対話は、次のとおりです。
| 注: | CRM1はCICAからTMA LUへの接続です。 |
このシナリオでDTP接続が動作するために必要な構成を、次に示します。
system.desc構成ファイルでは、次のCICSリージョンが定義されます。
system.descの詳細は、システム構成ファイルに関する項を参照してください。
connection.desc構成ファイルでは、次の接続が定義されます。
| 注: | CICAは外部リージョンのため、CICAの接続定義はローカルでは存在しません。 |
connections.descの詳細は、接続構成ファイルに関する項を参照してください。
programs.desc構成ファイルでは、次のプログラムが定義されます。
programs.descの詳細は、プログラム構成ファイルに関する項を参照してください。
transactions.desc構成ファイルでは、次のトランザクションが定義されます。
transactions.descの詳細は、トランザクション構成ファイルに関する項を参照してください。
ARTSTRNおよびARTCTRNの詳細は、CICSランタイム・サーバーに関する項を参照してください。
| 注: | UBBCONFIGでのARTCTRN構成では、CONV=Yを指定する必要があります。 |
z/OSでは、非同期処理は、リモート・システム上のトランザクションを起動するSTARTコマンドを参照します。ART CICS Runtimeでは、STARTコマンドとSYSIDオプションを使用してこの機能の実装をサポートしています。
次の各項では、実行する必要がある構成タスクについて説明します。
system.desc構成ファイルでCICSリージョンを定義します。KIXRおよびKIXXという2つのリージョンを定義する例を、次に示します。DBDCkixRおよびDBDCKIXXは、それぞれのアプリケーション定義です。
[KIXR]
APPLID=DBDCkixR
INITPARM=(ASINTP='Hello world')
[KIXX]
APPLID=DBDCKIXX
INITPARM=(ASINTP='Hello worldL')
ARTSRMサーバーを構成する必要があります。詳細は、ARTSRMの構成に関する項を参照してください。
各CICSリージョンのUBBCONFIGファイルでARTATRNサーバーを構成する必要があります。
リスト4-55に示されているように、KIXRおよびKIXXという2つのリージョンが定義されているものとします。構成の例を、次に示します。
…
*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構成ファイルでCICSリージョンを定義します。KIXRおよびKIXXという2つのリージョンを定義する例を、次に示します。DBDCKIXRおよびDBDCKIXXは、それぞれのアプリケーション定義です。
[KIXR]
APPLID=DBDCKIXR
[KIXX]
APPLID=DBDCKIXX
リスト4-57に示されているように、KIXRおよびKIXXという2つのリージョンが定義されているものとします。構成の例を、次に示します。
*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にルーティングされます。
z/OSで、CICSプログラムはWRITEQ TDコマンドでJCL/KSHジョブを送信し、TDQによってJCL/KSHジョブ文をJES内部リーダーに渡すことができます。ART CICS Runtimeでは、特別なTDQ定義と、TuxJESシステムによって通知される内部サービスを使用して、この機能をサポートします。
この機能を使用する前に、ART Batch Runtime and TuxJES環境が設定されている必要があります。詳細は、 Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。
送信されたJCL/KSHジョブ文は、ARTTDQサーバーによってTuxJESに転送されます。このサーバーをアクティブ化するには、UBBCONFIGファイルの*SERVERSセクションで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"
JCL/KSH関数の送信を実装するには、tdqextra.desc構成ファイル内で次のフィールドを指定する必要があります。
IRDR;SIMPAPP;ON LINE SUBMIT JOB;EXTRAQJ; ; ; ;V; ;32767;OUTPUT;DSN; ; ;Y;U;
| 注: |
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のTDキュー・エクストラ・パーティション構成ファイルに関する項を参照してください。
z/OSで、CICSプログラムはSPOOLWRITEコマンドでJCL/KSHジョブを送信し、SPOOLでJCL/KSHジョブ文をJES内部リーダーに渡すことができます。ART for CICSでは、TuxJESシステムによって通知される内部サービスを使用して、この機能をサポートします。
この機能を使用する前に、ART Batch Runtime and TuxJES環境が設定されている必要があります。詳細は、 Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。
| 注: | 終了フラグをSPOOLファイルに書き込み、JCL/KSHジョブを送信します。そうしないと、SPOOLに書き込まれたジョブ・ファイルは、EXEC CICS SPOOLCLOSEが使用されると自動的にJCLジョブ・ファイルとしてTuxJESに送信されます。 |
詳細は、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のKIX_SPOOL_JOB_AUTO_SUBMITおよびKIX_SPOOL_OUTPUT_DIRに関する項を参照してください。
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がすべての処理の実行を担います。次のワークフローに従って、エンドツーエンド・モードでartcicsutilユーティリティを実装します(ここでは例としてIPCPコマンド・セットを使用します)。
IPCPコマンド・セットを含むJCLファイルがあるとします(例としてリスト4-60を参照してください)。
//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ファイルに変換します。
#!/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.IPCPCNTLm_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"サブコマンドを参照)では、プログラムIPCPBTCHがartcicsutilに翻訳され、EXEC PARMが位置パラメータとしてartcicsutilに渡され、その他のすべてのサブコマンド(SYSIN DDに含まれている)がartcicsutilが直接アクセスできるローカル・ファイルとしてART for Batchによって格納されます。-tオプションを使用してコマンド・セットのタイプが指定され、その値はIPCPBTCH (IPCPコマンド・セット)に設定されています。
ARTSRM(必須) ARTSRMはartcicsutilユーティリティのプロキシで、UBBCONFIGで構成する必要があります。対応するシステム構成ファイル(system.desc)も構成する必要があります。詳細は、「リソース・ファイルの構成」を参照してください。
各ART for CICSリージョンでARTSRMを構成する必要があります。
ARTATRN(オプション) IPCPコマンド・セットのコマンドINIT KCまたはENAB/DISA KC、またはCAFCコマンド・セットのSTRTをJCLファイルで使用する場合、UBBCONFIGでARTATRNを設定する必要があります。ターゲット・トランザクションをトランザクション構成ファイル(transactions.desc)およびプログラム構成ファイル(programs.desc)で構成する必要もあります。詳細は、「リソース・ファイルの構成」を参照してください。
例については、「リスト4-62」を参照してください。artcicsutilが発行するリクエストはすべて、まずARTSRMによって受信されるため、ARTSRMサーバーは必須です。その後ARTSRMはプロキシとして動作し、ターゲットCICSサーバーにこれらのリクエストの処理を依頼します。JCLでINIT KCサブコマンドが使用されるため(リスト4-60を参照)、ARTATRNサーバーも指定します。INIT KCサブコマンドのターゲットCICSトランザクションは、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"
...
system.desc) これは必須です。例については、「リスト4-63」を参照してください。CICSランタイム・リージョンCICS3を構成します。このCICS3がJCLファイルで指定されるためです(リスト4-60のEXEC PGM=IPCPBTCH,PARM='CICS CC ONLY=CICS3'サブコマンドを参照してください)。
transactions.desc)およびプログラム構成ファイル(programs.desc) オプションです。IPCPコマンド・セットのコマンドINIT KCまたはCAFCコマンド・セットのSTRTがJCLファイルで使用されるため、ARTATRNが必要です。ターゲット・トランザクションをターゲット構成ファイル(transactions.desc)およびプログラム構成ファイル(programs.desc)で定義する必要があります。
desc.vsam) これはオプションです。IPCPコマンド・セットのコマンドOPEN/CLOS DBがJCLファイルで使用されるため、このVSAM構成ファイル(desc.vsam)を構成する必要があります。
[KIXA]
APPLID=CICS1
[KIXB]
APPLID=CICS2
[KIXR]
APPLID=CICS3
エンドツーエンド・モードの場合、DMCONFIGを構成します。キー・サービス・エントリ$(APPLID)_CICS_CTRLをART for CICSドメイン(リスト4-64の太字のCICS3_CICS_CTRLを参照)とART for Batchドメイン(リスト4-65の太字のCICS3_CICS_CTRLを参照)との間でエクスポート/インポートします。このサービスは、構成されている各ARTSRM (ARTSRMは各ART for CICSリージョンで構成)によって通知されます。接頭辞CICS3は、ターゲットCICSリージョンのAPPLIDです。
ここで、${APPLID}は大文字である必要があることに注意してください。
*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
*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
このユースケースでは、対話型モードでartcicsutilユーティリティを起動する方法を示します。この例では、トランザクションEQDQが開始されます。
> artcicsutil -t native
> start EQDQ
start trans:
transaction ' EQDQ'
trmid ''
from ''
start trans done.
ART CICS Runtimeでは、2つの方法でアプリケーション・データをCICS 3270プリンタに出力できます。
どちらの方法を使用して出力を実装する場合も、まず、次の構成タスクを実行する必要があります。
| 注: | ART CICSでは、プリンタの代替サイズをサポートしません。そのため、IBM-3287-1の場合、typeterms.descで、scrnsize=alternate、altscreenrowおよびaltscreencolumnという属性を定義しないでください。 |
TRCLASS1;UNIGRP; A tranclass bidon for UNIGRP; 1
transactions.descで、プリンタ・プログラム定義をARTSTR1プログラム・グループに構成します。 PRNT;UNIGRP;pg for ARTSTR1; PRNTPROG; ; ; ; ; ; ;ENABLED; ; ; ;TRCLASS1
programs.descで、プリンタ・プログラムをARTSTR1プログラム・グループに構成します。PRNTPROG;UNIGRP;pg for UNIGRP;COBOL; ;ENABLED
terminals.descでプリンタ・ターミナルを定義して、プリンタLUNAMEおよびTERMIDを指定します。[terminal]
name=PRT1
netname=CICSPRT1
group=UNIGRP
UBBCONFIGでCLOPT -lオプションを使用して、プリンタ・プログラム・グループをARTSTR1プログラム・グループに構成します。 CLOPT="-o stdout_str1 -e stderr_str1 -r -- -s KIXR -l UNIGRP"

図4-10は、典型的な使用例を示しています。このようなシナリオでのSTARTコマンドによる出力の実装手順は、次のとおりです。
LUNAMEを使用して、プリンタ・ターミナルからART TCPへの接続を確立します。STARTコマンドにより非同期トランザクションBを起動し、TERMIDを以前に定義したLUNAMEの1つとして指定します。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
terminals.descでPRT2を定義します。[terminal]
name=PRT2
netname=CICSPRT2
group=UNIGRP
LUNAME= CICSPRT2で指定されたプリンタ)とART CICSの間で接続を確立します。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で開始します。
ART CICSでは、INVOKE WEBSERVICEコマンドを使用した、CICSアプリケーションからのWebサービスの呼出しをサポートしています。この機能を実装するには、次の項で説明する構成タスクを実行する必要があります。
Oracle SALTコマンド・ユーティリティwsdlcvtを使用して、WSDLファイルをOracle Tuxedoメタデータ・リポジトリ入力ファイル(MIF)に変換します。COPYBOOKを生成するには、-Cオプションを指定します。詳細は、 Oracle SALTアプリケーションの構成を参照してください。
cpy2recordツールを使用して、前の手順で生成したCOPYBOOKからRECORD定義を生成し、RECORDの環境変数をエクスポートします。詳細は、「RECORD型バッファの使用」を参照してください。
(Oracle Tuxedo SALTユーティリティwsloadcfを使用して) SALT構成ファイルを作成し、(tmloadreposを使用して)サービス情報をOracle Tuxedoサービス・メタデータ・リポジトリにロードします。詳細は、「Oracle SALTアプリケーションの構成」を参照してください。
webservice.desc構成ファイルにサービス・セクションを追加し、webservice.descでREQUESTおよびRESPONSEを指定します。リスト4-69に例を示します。
[DFH0XCMNOperation]
REQUEST=DFH0XCMNOperation
RESPONSE=DFH0XCMNOperationResponse
TRANSACTION=N
UBBCONFIGファイルでTMMETADATAサーバーおよびGWWSサーバーを構成します。リスト4-70に例を示します。
*SERVERS
...
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f pmu.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
Oracle Tuxedo Application Runtime for CICSでは、カスタマイズ済の関数をサーバー起動時にロードし、サーバー終了時にその関数をアンロードすることによって、1つ以上のART for CICSアプリケーション・サーバーを拡張できます。この機能を実装するには、次のようにします。
| 注: | この機能をサポートしているART for CICSアプリケーション・サーバーは、ARTSTR1/N、ARTATR1/N、ARTCTR1/N、ARTWTR1/N、ARTDPLおよびARTDPL_XNのみです。 |
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に発行されます)、共有ライブラリの開発に便利です。ヘッダー・ファイル内部、次の列挙を定義します。
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;
ART for CICSアプリケーション・サーバーは、起動時に次の関数を呼び出します。
Input: input引数は、次の構造体へのポインタです。
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;
リターン・コード: 起動に成功するとゼロを返します。失敗した場合はゼロ以外を返します(この場合、サーバーは起動できません)。
ART for CICSアプリケーション・サーバーは、停止時に次の関数を呼び出します。
Linux/Solarisの場合は、$LD_LIBRARY_PATHにカスタマイズ済Cライブラリをインクルードします(AIXの場合は$LIBPATH)。このライブラリは、実行時に動的にロードされます。
ART for CICSアプリケーション・サーバーがカスタマイズ済の共有ライブラリを上のパスで見つけられない場合、この機能は無効になりますが、サーバーは正常に起動します。
ARTDPLサーバーの起動時に使用される共有メモリーを作成する場合は、libkixcallback.soという名前で共有ライブラリを作成する必要があります。これは、2つのコールバック関数をエクスポートし、$KIXDIR/lib/ディレクトリにある拡張共有ライブラリを置き換えます。詳細は、「共有ライブラリlibkixcallback.soの作成」を参照してください。
ARTDPLサーバーを起動すると、まず$KIXDIR/libの下にあるこの拡張共有ライブラリが検索されます。見つからなければ、Linux/Solarisの場合は$LD_LIBRARY_PATH (AIXの場合は$LIBPATH)の検索を続行します。この共有ライブラリが見つかると、ARTDPLサーバーでロードされます。
このサーバー起動時に、共有ライブラリを作成できます。関数が失敗した場合は、ゼロ以外が返されてARTDPLサーバーが起動に失敗します。成功した場合は、ゼロが返されてARTDPLサーバーが通常どおりに起動します。
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_RESSECをAまたはYに設定します。KIX_RESSEC=A: トランザクションでリソースにアクセスする際、リソースベースの認可が実行されます。これはすべてのトランザクションに適用されます。KIX_RESSEC=Y: トランザクションでリソースにアクセスする際、リソースベースの認可が実行されます。これは、transactions.descでRESSEC=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をカスタマイズした関数に置き換える必要があります。
関数インタフェースは、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』の外部セキュリティ・マネージャとの統合に関する項にリストされています。
UBBCONFIGでTuxedoセキュリティを有効にします。 Tuxedoセキュリティを有効にします。たとえば、UBBCONFIGでXAUTHSVRを構成し、LDAPベースの認証および認可を有効にします。
詳細は、『Oracle Tuxedoファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』のXAUTHSVR(5)に関する項を参照してください。
*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プログラムのデバッグを実装する代表的なユースケースがいくつかあります。
詳細は、『Oracle Tuxedo Application Runtime for CICSユーザー・ガイド』のCICSでのCOBOLプログラムのデバッグおよびエラー処理に関する項および『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のデバッグ構成ファイルに関する項を参照してください。
ART for CICSユーザーAがCOBOL Program1をデバッグし、ART for CICSユーザーBがCOBOL Program2をデバッグする場合、2人のユーザーは次のようにする必要があります。
1人のART for CICSユーザーが1つのトランザクション内の2つの異なるCOBOLプログラムをデバッグする(たとえば、ART for CICSユーザーがCOBOL Program1とCOBOL Program2をデバッグし、両方のプログラムが同一トランザクションにある)場合、次のようにします。
1人のART for CICSユーザーが2つの異なるプログラムをSTART TRANSIDコマンドでデバッグする場合、次のようにします。
これらの2つのプログラムがART for CICSアプリケーション・サーバーによって起動されると、ユーザーは2つのプログラムをそれぞれ別のターミナルでデバッグできます。
1人のART for CICSユーザーが2つの異なるプログラムをLINKコマンドでデバッグする場合、次のようにします。
2つのプログラムがART for CICSアプリケーション・サーバーによって起動されると、ユーザーは2つのプログラムをそれぞれ別のターミナルでデバッグできます。
他のTuxedoアプリケーションと同様に、CICS Runtimeは、専用のシステム・ログに特定のイベントと問題を記録するTuxedoによって管理されます。
このログは、名前がTuxedo ubbconfigファイルのシステム変数ULOGPFXに含まれる標準Tuxedoユーザー・ログ(ULOG)です。
ULOGPFX="/home2/work9/demo/Logs/TUX/log/ULOG"
Tuxedo ubbconfigファイルでサービスを宣言する場合、各サーバーでは、CLOPTオプションが次の2つのファイルを含むように定義されています。
各CICSランタイム・サーバー用の異なるstdoutとstderrメッセージ・ファイルは、次のとおりです。
| 注: | サーバーのstderrファイルには、マウントされているすべての構成ファイルが記述されます。stderrファイルには、サーバーがブートされるときに発生した問題に関するエラー・メッセージだけでなく、ロードされている様々なリソースに関する情報も含まれています。具体的には、次の情報があります。 |
-l listパラメータに応じてインストールされたリソースのグループ。.desc構成ファイルの指定に応じて使用可能なリソース(インストールされていても使用できないリソースもあります)。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
場合により、システムに大幅に影響を与えるプログラムで問題が発生し、エンド・ユーザーによる実行を禁止することによって、プログラムを緊急に除去する必要があります。当面のところ、これは一時的にシステムを安定させる助けになり、機能障害を解析および解決するための時間を提供します。
z/OS上と同様に、CICS Runtimeではプログラムを無効にすることができます。プログラムは無効にするには、CICS Runtime構成ファイルprograms.descを変更します。このファイルには専用のフィールド(STATUSフィールド)があり、プログラムがDISABLEDかENABLED(デフォルトのステータス)かを示します。
『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のCICSリソース情報の動的管理に関する項も参照してください。
トランザクションを有効から無効に切り替えるには、このcsvファイルの7番目のフィールドを変更し、以前の値を、暗黙的(「 」空白)または明示的なENABLEDステータスから、明示的なDISABLEDステータスに変更する必要があります。
CICS Runtime Tuxedoサーバーをシャットダウンしてブートすると、1つ以上のプログラムの変更が有効になります。
プログラムを無効にする場合、それを使用する人がいると、アプリケーションがCICSエラーを処理する方法に応じて、エラー・メッセージが表示されます。
#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_*ログで、変更されたステータスの変更に気づきます。
このサーバーの起動直後のログは、このプログラムが無効にされていることを(斜体で)示しています。
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!!
場合により、アプリケーションのすべてのコンポーネントを、特定のマシンから完全に削除するか、別のマシンに移動したいことがあります。アプリケーションで使用するすべてのリソースが、そのアプリケーション専用の1つ以上のリソース・グループで定義されている場合、CICS Runtimeでこれらのグループを抑制し、最終的に別の場所にインストールするだけで十分です。
各CICS Runtime Tuxedoサーバーは、CLOPTオプションの-lパラメータの後に含まれる、起動時に選択およびインストールされるグループのリストを読み取ります。アプリケーションに対してグループを削除または追加するには、各CICS Runtime Tuxedoサーバーに対して、このリストからグループを削除または追加すれば十分です。
1つ以上のプログラムでの変更は、CICS Runtime Tuxedoサーバーを停止して再起動すると有効になります。
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つ以上のグループを追加する場合、以前に定義されたグループに対し、新しいグループを「:」文字で区切って連結する必要があります。
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つだけ残します。
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"
| 注: |
ART CICSでは、CICSアプリケーションをC言語で実装して実行できます。
各CプログラムはCOBOLプログラムとしてロードされ、COBOLランタイムで実行されるため、CICS Cプログラム・サポートは、COBOL製品に依存します。
ART CICSにおけるCICS/Cサポートの制約と要件を、次にリストします。
EXEC CICSコマンドは、NOHANDLEまたはRESPオプションが指定されているものとして処理されます。/**/を使用して単一行のコメントを表します。EXEC CICSコマンドの中央にコメントを置かないでください。argc、argvおよびenvpはサポートされません。COMMAREAにアクセスできます。#ifndef行と#endif行で囲まれていますが、すべての変換済ファイルに含まれるわけではありません。ART CICSは、EIB内のすべてのフィールド定義を含めるために、ヘッダー・ファイルdfheiblk.hを公開しています。変換された各ファイルはこのヘッダー・ファイルをインクルードすることのみ必要であり、すべての処理はプリプロセッサによって自動的に実行されます。DFHBMSCAファイルおよびDFHAIDファイルがCICSによって提供されており、BMSの使用時にはアプリケーション・プログラマによってインクルードされる可能性があります。strcmpなど、C関数を使用する場合は、その点に注意する必要があります。cics.hで宣言されるiscics()も用意されていますが、ユーザーはmakefileを変更してヘッダー・ファイル・パスをインクルードすることのみ必要です。EXEC CICSは全体を1行で指定します。#pragmaは自動的にコメントに変換されます。exit()はreturnに変換されます。main()、そのパラメータ・リストおよびカッコは1行で指定します。例: void main(int argc, char **argv)
COMMAREAはポインタである必要があります。ART CICSでは、構造体の指定は、値ではなくポインタのみがサポートされます。EXECインタフェース・ブロック(EIB)のアドレスは、引数としてC main関数に渡されません。しかし、ユーザーは次の2つの方法を使用して、EIBのアドレスを取得できます。
COMMAREAのアドレスは、引数としてC main関数に渡されません。しかし、ユーザーは次の2つの方法を使用して、COMMAREAのアドレスを取得できます。
ART CICSには、CICS/COBOL API変換用のprepro-cics-C.plがあります。prepro-cics-C.plの詳細は、 prepro-cics-C.plに関する項を参照してください。
CプログラムをCOBOLランタイムで確実にロードするためには、gcc/g++ではなくCOBOLコンパイラを使用してCプログラムをビルドしてください。
cobを使用して、Cソース・コードを呼出し可能な共有オブジェクトとしてコンパイルします。動的ライブラリには、Cソース・ファイル名と同じ名前で大文字の名前が必要です。
CPYINC=../includes
cob -z,CC zample_treated.c -o ZAMPLE.so -CC -I${CPYINC}
|