![]() ![]() ![]() ![]() ![]() ![]() ![]() |
このアプリケーションは、もともと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 Runtimeグループ名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 Runtimeサーバー(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 Runtimeシステムのトランザクション/サービス(CSGM
、CESN
、CESF
など)に加え、これで、CICS Runtimeアプリケーション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
RVGRP=GRP02
RMID=15
TMSNAME="TMS_BDB"
OPENINFO="BERKELEY-DB:/home2/work10/data"
BDB TMSサーバーを構築するには、次のテキストの最初の3行を$TUXDIR/udataobj/RM
に追加します。
# BDB
BDB_HOME=/opt/cobol-it-64-bdb
BERKELEY-DB:db_xa_switch:-L/opt/cobol-it-64-bdb/lib -ldb-5
Build 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 Runtimeトランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRN およびARTATR1 )はすべて、同じCICS Runtimeトランザクション・グループ・サーバーを共有しており、ubbconfigサーバー・グループ・セクション(*GROUPS)を変更する必要はありません。 |
ART CICSの場合、並列性がデフォルト動作であるため、同時トランザクションを、2以上のMAXACTIVE
パラメータを持つトランザクション・クラスに制限する必要は、実際にはありません。
順次トランザクションの場合は、CICS Runtimeに対してこれらのトランザクションを宣言する唯一の方法であるため、必須です。MAXACTIVE=1
パラメータで定義されている特定のトランザクション・クラスを宣言します。他のCICS Runtimeリソースと同様に、これはCICS Runtimeグループ名に属する必要があります。各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 Runtimeクライアント(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"
…
いくつかの理由で、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-29
のサンプル内の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サーバー・インスタンスで監視してください。
MQTMCには多くのフィールドがあるため、構造をEXEC CICS START呼出しのパラメータとして送信すると、いつでも複雑になりすぎます。MQTMC2はCKTIで使用され、構造をデータとしてトリガー・モニターのSTARTリクエストに渡します。
CICS CKTIトランザクションは、非同期呼出し(EXEC CICS START)を使用してターゲット・トランザクションを開始するため、ARTCKTIサーバーも、非同期呼び出し(Tuxedo tpacall)を使用してターゲット・トランザクションを開始します。
ユーザー・トランザクションがメッセージを取得しないか、起動されたトランザクションが使用できない場合、WebSphere MQは、この条件ではトリガー・メッセージをもう送信しません。WebSphere MQ開始キューが再び開かれるか、新しいトリガー条件が満たされるまで、新しいトリガー・メッセージが発行されます。
図4-4に、動作を示します。
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開始キューの名前を指定します。
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-6に示すように、これらのリージョンで発生する対話は、次のとおりです。
注意: | 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 Runtimeサーバーに関する項を参照してください。
注意: | 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-45に示されているように、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-47に示されているように、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を送信し、TDQによってJCL文をJES内部リーダーに渡すことができます。ART CICS Runtimeでは、特別なTDQ定義と、TuxJESシステムによって通知される内部サービスを使用して、この機能をサポートします。
この機能を使用する前に、ART Batch Runtime and TuxJES環境が設定されている必要があります。詳細は、 Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。
送信されたJCL文は、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関数の送信を実装するには、tdqextra.desc
構成ファイル内で次のフィールドを指定する必要があります。
IRDR;SIMPAPP;ON LINE SUBMIT JOB;EXTRAQJ; ; ; ;V; ;32767;OUTPUT;DSN; ; ;Y;U;
詳細は、 『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』のTDキュー・エクストラパーティション構成ファイルに関する項を参照してください。
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-9は、典型的な使用例を示しています。このようなシナリオでの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ファイルをTuxedoメタデータ・リポジトリ入力ファイル(MIF)に変換します。詳細は、Oracle SALTアプリケーションの構成に関する項を参照してください。
ART CICSには、MIFに従ってVIEW32定義を生成し、指定のFML32定義ファイルを更新する、Mif2View32
というユーティリティがあります。生成されるVIEW32定義は、MIFと同じ構造を保持します。
Mif2View32 -i miffile -o viewfile -f fml32file -w webservice.desc [-v]
-i miffile
-o viewfile
-f fml32file
詳細は、 Mif2View32(1)に関する項を参照してください。
ART CICSで作成されたアプリケーションの場合、viewc32 – C – S viewfile
を実行すると、生成されたVIEW32定義からCOBOLコピーブックが生成されます。詳細は、『Oracle Tuxedoコマンド・リファレンス』のviewc、viewc32(1)に関する項を参照してください。
メインフレームから移行された特定の種類のアプリケーションについては、VIEW32定義フィールドを変更し、オフセットを手動で調整して、コピーブックとVIEW32定義間の1対1マッピングを有効にする必要があります。
次の説明は、関連する特性を持つCOBOLコピーブックに適用されます。
コピーブックに、次のような-cont
で終わるコンテナ・フィールドがある場合があります。
09 privateData-cont PIC X(16).
struct privateData_v privateData 100 - - 0
コピーブックにマップするには、その行を次のように変更します。
string privateData1 privateDataList_cont 1 - 16 '\0'
WSDLスキーマ定義に、次のような属性nillable="false"
が含まれる項目がある場合があります。
<element name="walletId" nillable="false" type="xsd:string"/>
09 attr-nil-walletId-value PIC X DISPLAY.
VIEW32定義には対応する項目がないため、オフセット値を設定して、次の項目が正しいアドレスを指すようにする必要があります。例:
string walletId_v walletId 1 - 255 "-4"
"-4
"は、VIEW32構造が次の項目から4バイトのオフセットを持つことを指定します。
コピーブックの位置合せルールは、C構造とは異なります。位置合せルールが原因でコピーブックとVIEW32定義の間にオフセットが生じる場合は、VIEW32定義に適切なオフセット値を設定する必要があります。
VIEW32定義には、オカレンス数を指定するヘルパー項目があります。例:
short payment_v_times payment_times 1 - - 0
コピーブックには対応する項目がないため、VIEW32定義でこのような項目を削除するか、オフセット値を設定して、次の項目が正しいアドレスを指すようにする必要があります。
次に例を示します。たとえば、リスト4-52のようなコピーブックがあり、リスト4-53のようなVIEW32定義を生成してVIEW32定義をコピーブックにマップした場合、VIEW32をリスト4-54のように変更する必要があります。
03 doAuthorizationRequest.
06 buyer.
...
09 email-length PIC S9(4) COMP-5 SYNC.
09 email PIC X(255).
09 attr-nil-email-value PIC X DISPLAY.
09 shippingAdress.
12 attr-nil-shippingAdres-value PIC X DISPLAY.
12 name-length PIC S9(4) COMP-5 SYNC.
12 name PIC X(255).
...
09 walletId-length PIC S9(4) COMP-5 SYNC.
09 walletId PIC X(255).
09 attr-nil-walletId-value PIC X DISPLAY.
06 privateDataList.
09 attr-nil-privateDataLi-value PIC X DISPLAY.
09 privateData-num PIC S9(9) COMP-5 SYNC.
09 privateData-cont PIC X(16).
VIEW buyer_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
...
short email_v_times email_times 1 - - 0
string email_v email 1 - 255 '\0'
short shippingAdress_v_times shippingAdress_times 1 - - 0
struct shippingAdress_v shippingAdress 1 - - 0
...
short walletId_v_times walletId_times 1 - - 0
string walletId_v walletId 1 - 255 '\0'
END
VIEW shippingAdress_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
short name_v_times name_times 1 - - 0
string name_v name 1 - 255 '\0'
...
END
VIEW privateData_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
short key_v_times key_times 1 - - 0
string key_v key 1 - 255 '\0'
short value_v_times value_times 1 - - 0
string value_v value 1 - 255 '\0'
END
VIEW privateDataList_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
short privateData_v_times privateData_times 1 - - 0
struct privateData_v privateData 100 - - 0
END
VIEW doAuthorizationRequest_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
short buyer_v_times buyer_times 1 - - 0
struct buyer_v buyer 1 - - 0
short privateDataList_v_times privateDataList_times 1 - - 0
struct privateDataList_v privateDataList 1 - - 0
END
VIEW buyer_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
...
short email_v_times email_times 1 - - 0
string email_v email 1 - 255 "-2"
struct shippingAdress_v shippingAdress 1 - - 0
...
short walletId_v_times walletId_times 1 - - 0
string walletId_v walletId 1 - 255 "-4"
END
VIEW shippingAdress_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
short name_v_times name_times 1 - - 0
string name_v name 1 - 255 '\0'
...
END
VIEW doAuthorizationRequest_v
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
struct buyer_v buyer 1 - - 0
short privateData_v_times privateData_times 1 - - 0
string privateData1 privateDataList_cont 1 - 16 '\0'
END
webservice.desc構成ファイルでNEWCPY
およびTRANSACTION
を指定します。次に例を示します。
[DFH0XCMNOperation]
REQUEST=DFH0XCMNOperation_v
RESPONSE=DFH0XCMNOperationResponse_v
NEWCPY=Y
TRANSACTION=N
UBBCONFIG
ファイルでTMMETADATA
サーバーおよびGWWS
サーバーを構成します。次に例を示します。
*SERVERS
...
TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f pmu.repos"
GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"
他のTuxedoアプリケーションと同様に、CICS Runtimeは、専用のシステム・ログに特定のイベントと問題を記録するTuxedoによって管理されます。
このログは、名前がTuxedo ubbconfig
ファイルのシステム変数ULOGPFX
に含まれる標準Tuxedoユーザー・ログ(ULOG)です。
ULOGPFX="/home2/work9/demo/Logs/TUX/log/ULOG"
Tuxedo ubbconfig
ファイルでサービスを宣言する場合、各サーバーでは、CLOPTオプションが次の2つのファイルを含むように定義されています。
各CICS Runtimeサーバー用の異なる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}
![]() ![]() ![]() |