|
このアプリケーションは、もともと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.vsamdesc.vsamファイルを物理的に作成します。 desc.vsamファイルを変更します。このSimple Applicationの例では、次の行が入力されます。
#DDname;Accessor;DSNOrganization;Format;MaxRecordLength;KeyStart;KeyLength
ODCSF0;ASG_ ODCSF0;I;F;266;1;6
以前に定義されたサーバーに加えてCICSアプリケーション・トランザクションを管理する手順:
Tuxedo ubbconfigファイルの*SERVERSセクションの次の例は、ARTSTRNサーバーの構成を示しています。
*SERVERS
…
ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP "
…
ARTSTRNサーバーが起動されるためには、以前に定義された(かつコメントされていない)Tuxedoサーバー・グループ内のubbconfigファイルで定義される必要があります。
この例では、ARTSTRNはTuxedoサーバー・グループGRP02(SRVGRP=GRP02)に属しています。
*GROUPS
…
GRP02
GRPNO=12
ENVFILE="/home2/work9/demo/config/tux/envfile"
TMSNAME="TMS_ORA"
…
Tuxedo tmadmin psrコマンドを入力して、必要なCICS 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_QSPACEqcreate
Queue name: TESTQueue order (priority, time, expiration, fifo, lifo): fifoOut-of-ordering enqueuing (top, msgid, [default=none]): noneRetries [default=0]: 5Retry delay in seconds [default=0]: 0High limit for queue capacity warning (b for bytes used, B for blocks used,
% for percent used, m for messages [default=100%]): 5mReset (low) limit for queue capacity warning [default=0%]: 0mQueue capacity command: "TDI_TRIGGER -t S049"qopen TD_QSPACE
qcreate TEST fifo none 3 0 5m 0m "TDI_TRIGGER -t S049"
noneに設定する使用方法があります。
トリガー・レベルに達した場合、このコマンドを発行します。CICS Runtimeでは、TDI_TRIGGER -t TRIDに設定する必要があります。TRIDはリソース構成のTRANSIDと一致する必要があるトリガーのトランザクションのトランザクション識別子です。
| ヒント: | ATRサーバーはATIを処理するとき、トランザクションがQZEROに到達したかどうか、また成功したかロールバックしたかどうかを認識します。QZEROに到達しない場合、ソース・プラットフォームと同じ方法でトランザクションを再発行します。 しかし、今では再試行回数が、ATIFACILITYパラメータに取ってかわり、ロールバックされたTDキュー・レコードが再発行されるかどうかという事実を制御します。 今では管理者が再発行の数を決定し、エラー・キュー上の障害メッセージを取得できるということは、ソースと比べると進歩です。 |
TDQ監視を有効にするには、ARTTDQサーバーをアクティブ化する必要があります。
*SERVERS…ARTTDQ SRVGRP=GRP02SRVID=40MIN=1 MAX=1CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tdq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tdq -r -- -s KIXR -l SIMPAPP"…
いくつかの理由で、z/OS上では、Distributed Program Link機能を使用して、ローカルのCICSプログラム(クライアント・プログラム)が、リモートCICSリージョンにある別のCICSプログラム(サーバー・プログラム)を、EXEC CICS LINK文を介して呼び出せます。CICS Runtimeでは、移行リージョン間のMROのようなマルチCICSアーキテクチャで使用されるこの機能をサポートしています。
UNIXで書かれたアプリケーションでDPLを使用したい場合を除き、z/OSアプリケーションのテクニカル特性をチェックします。
REMOTE ATRIBUTESセクションのフィールドの一部がファイルされています。DEF PROGR
OVERTYPE TO MODIFY CICS RELEASE = 0610
CEDA DEFine PROGram( )
PROGram ==>
Group ==>
DEscription ==>
....
REMOTE ATTRIBUTES DYnamic ==> No No ! Yes
REMOTESystem ==> XXXX REMOTEName ==> YYYYYYYY Transid ==> ZZZZ EXECUtionset ==> Dplsubset Fullapi ! Dplsubset ここでは、次のとおりです(CICSデフォルト値は下線で示されます):
ここまで説明してきたとおり、場合によっては、Remote Attributes宣言が存在しないか、不完全な場合があります。その理由は、これらのフィールドがデフォルト値の一部しか確立しないことであり、例の中で太字で示した、以前のパラメータの一部は、EXEC CICS LINK APIにはありません。
EXEC CICS LINK APIの内部で、次の項目をチェックします。EXEC CICS LINK PROGRAM(…)
COMMAREA(…)
LENGTH(…)
DATALENGTH(…)
RETCODE(…)
SYSID(XXXX) : Remote CICS region name SYNCONRETURN : Used for remote CICS syncpoint or rollback TRANSID(XXXX) : Remote mirror transaction instead of the CSMI defaultINPUTMSG(…)
INPUTMSGLEN(…)
END-EXEC
プログラムの少なくとも1つがDPLを使用する場合は、他の設定を変更せずに、ARTDPLサーバーをインストールしてアクティブ化します。
このサーバーをアクティブにするには、ubbconfigファイルを変更して、Tuxedo ubbconfigファイルの*SERVERSセクションにこのサーバーを追加します。このサーバーは、トランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRN、ARTATR1)と同じサーバー・グループに属しています。
*SERVERS
…
ARTDPL SRVGRP=GRP02
SRVID=500
CONV=N
MIN=1 MAX=1 RQADDR=QKIXDPL REPLYQ=Y
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_dpl -e /home2/work9/demo/Logs/TUX/sysout/stderr_dpl -r -- -s KIXD -l SIMPAPP"
…
Tuxedo tmadmin psrおよびpscコマンドを使用して、このサーバーが実行され、新しいサービスが公開されていないことを確認します。
# tmadmin
...
> psr
Prog Name Queue Name Grp Name ID RqDone Load Done Current Service
--------- ---------- -------- -- ------ --------- --------------
ARTDPL QKIXDPL GRP02 500 0 0 ( IDLE )
ARTATR1 00012.00300 GRP02 300 0 0 ( IDLE )
ARTSTR1 00012.00200 GRP02 200 0 0 ( IDLE )
BBL 200933 KIXR 0 5 250 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30001 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30001 0 0 ( IDLE )
ARTTCPL 00001.00101 TCP00 101 0 0 ( IDLE )
TMS_QM GQUEUE_TMS GQUEUE 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30002 0 0 ( IDLE )
TMS_ORA GRP02_TMS GRP02 30003 0 0 ( IDLE )
TMQUEUE 01000.01010 GQUEUE 1010 0 0 ( IDLE )
ARTCNX QCNX015 GRP01 15 0 0 ( IDLE )
TMQFORWARD 01000.01020 GQUEUE 1020 0 0 ( IDLE )
ARTSTRN QKIX110 GRP02 20 0 0 ( IDLE )
ARTATRN QKIXATR GRP02 30 0 0 ( IDLE )
ARTTSQ 00012.00040 GRP02 40 0 0 ( IDLE )
> psc
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
TMS TMS TMS_QM GQUEUE 30001 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30001 KIXR 0 AVAIL
TMS TMS TMS_QM GQUEUE 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30002 KIXR 0 AVAIL
TMS TMS TMS_ORA GRP02 30003 KIXR 0 AVAIL
ASYNC_QSPACE TMQUEUE TMQUEUE GQUEUE 1010 KIXR 0 AVAIL
authfail cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESF cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CESN cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
CSGM cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
disconnect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
connect cnxsvc ARTCNX GRP01 15 KIXR 0 AVAIL
SA03 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA02 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA01 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
SA00 kixsvc ARTSTRN GRP02 20 KIXR 0 AVAIL
ASYNC_QUEUE ASYNC_QUEUE ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA03 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA02 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA01 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
ASYNC_SA00 atrsvc ARTATRN GRP02 30 KIXR 0 AVAIL
TSQUEUE tsqsvc ARTTSQ GRP02 40 KIXR 0 AVAIL
> quit
#
EXEC CICS LINK文で呼び出される分散プログラムをアプリケーションが使用できるようにするには、これらのプログラムをCICS Runtimeに対して宣言する必要があります。
programs.descファイルで、REMOTESYSTEM (csv形式のデータセットの7番目のフィールド)をリモートSYSID名(リスト4-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}
|