このアプリケーションは、もともと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.vsam
desc.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_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"
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=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"
…
これらのトランザクションは、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 default
INPUTMSG(…)
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.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"
サブコマンドを参照)では、プログラム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}