ユーザー・ガイド

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

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

この章では、次の項について説明します。

 


z/OS Simple Applicationの紹介

概要

このアプリケーションは、もともとz/OSプラットフォーム上で開発され、VSAMとQSAMファイルとDB2表を使用するバッチおよびCICSコンテキストで使用されるCOBOLプログラムを実装していました。

データはz/OSからアンロードされ、UNIXプラットフォーム上で、、Oracle Tuxedo Application Rehosting Workbenchを使用して変換および再ロードされました。

言語コンポーネントは、Oracle Tuxedo Application Rehosting Workbenchによって、z/OSからUNIXに変換または翻訳されました。

これらのコンポーネントは、2つの主要なOracle Tuxedo Applicationコンポーネント、Batch RuntimeとCICS Runtimeを使用して、元のz/OS環境のテクニカル集中機能をエミュレートしています。ここでは、CICS文とDB2文を使用するCOBOLプログラムを実装するCICS Runtimeの個別事例に焦点を絞ります。

このSimple Applicationは、作成、変更および削除のような一連の古典的な機能を使用して企業の顧客を管理します。

CICS Simple Applicationコンポーネントの説明

z/OS CICS CSDファイルでは、CICSコンポーネントはすべて同じ名前を使用して宣言されます。リソース宣言はすべて、PJ01TERMという名前のz/OS CICS GROUP内で行われます。このグループは、CICSを自動インストールするために起動時に使用されたz/OS CICS LIST PJ01LISTで宣言されます。

マップセット

表4-1 Simple Applicationのマップセット
名前
説明
RSSAM00
顧客保守エントリ・メニュー
RSSAM01
顧客データ問合せ画面
RSSAM02
顧客データ保守画面(顧客の作成、更新および削除)
RSSAM03
顧客リスト画面

プログラム

表4-2 Simple Applicationプログラム
名前
説明
RSSAT000
顧客保守エントリ・プログラム
RSSAT001
顧客データ問合せプログラム
RSSAT002
顧客データ保守プログラム(新規顧客、顧客更新および顧客削除)
RSSAT003
顧客リスト・プログラム

トランザクション・コード

表4-3 Simple Applicationのトランザクション・コード
名前
説明
SA00
メイン・エントリ・トランザクション・コード(プログラムRSSAT000)
SA01
顧客問合せ(プログラムRSSAT001)
SA02
顧客保守(プログラムRSSAT002)
SA03
顧客リスト(プログラムRSSAT003)

VSAMファイル

表4-4 Simple Application VSAMファイル
DDName
DataSetName
説明
ODCSF0
PJ01AAA.SS.VSAM.CUSTOMER
VSAM主要顧客ファイル

CICS Runtimeを伴う標準CICSアプリケーションの構成

最初の例では、UNIXのOracle表に変換されたz/OS VSAMファイルだけを使用する、CICS Simple File-to-Oracleアプリケーションを使用します。

この例では、プラットフォーム移行で生成されたUNIXコンポーネントは、すべてtrfディレクトリに格納されています。

COBOLプログラムおよびBMSマップセットは、コンパイルし、ディレクトリ${HOME}/trf/cobexeおよび${HOME}/trf/MAP_TCPで、実行可能モジュールとして使用できるようにする必要があります。

Simple File-to-Oracle ApplicationのUNIXコンポーネント

COBOLプログラム・ファイル

${HOME}/trf/cobexeディレクトリには、次のSimple Application CICS実行可能プログラムがあります。

マップセット・ファイル

${HOME}/trf/MAP_TCPディレクトリには、次のコンパイル済のSimple Application Data z/OS BMSマップセットがあります。

CICS Runtimeの構成

標準アプリケーションの場合は、初期設定のほか、同じグループの次のCICSリソースを実装する必要があります。

これらのリソースを構成する手順:

  1. これらのリソースを、それぞれのCICS Runtimeリソース構成ファイル内で宣言します。
  2. これらのリソースを管理するために、CICS Runtime Tuxedoサーバー・グループおよびサーバーを構成します。各サーバーで使用されている構成ファイルの詳細説明は、「リファレンス」を参照してください。

CICS Runtimeに対してCICSリソースを宣言する手順

各リソースは、各タイプ(プログラム、トランザクションなど)に対応するファイル内で宣言されます。リソース・ファイルで定義された各リソースは、いずれかのグループに属する必要があります。

CICS Simple File-to-Oracle Applicationを使用する次のいくつかの例では、CICS Runtimeグループ名SIMPAPPを使用し、*.descファイルはすべて、${home}/trf/config/resourcesディレクトリに置かれます。

注意: これらの構成ファイルでは、「#」で始まる行はコメントとみなされ、CICS Runtimeによって処理されません

CICSトランザクション・コードを宣言する手順

これらの宣言は、実装の必要がある各トランザクションに対応する内容をtransactions.descファイルを記入することによって行われます。

各トランザクションに対して、csv形式で宣言する必要があります

  1. トランザクションの名前(必須)。
  2. CICS Runtimeグループ名(必須)。
  3. トランザクションの短い説明(オプション、少なくとも1つの空白)。
  4. このトランザクションによって起動されるプログラムの名前(必須)。

File-to-Oracle Simple Applicationの例では、COBOLプログラムRSSAT000RSSAT001RSSAT002およびRSSAT003を起動する、SIMPAPPグループの4つのトランザクション、SA00SA01SA02およびSA03を宣言する必要があります。

記入が済むと、transactions.descファイルは次のようになります。

リスト4-1 Simple Applicationのtransactions.descファイル
#Transaction Name ;Group Name ; Description ;Program Name
SA00;SIMPAPP; Home Menu Screen of the Simple Application;RSSAT000
SA01;SIMPAPP; Customer Detailed Information Screen of the Simple Application;RSSAT001
SA02;SIMPAPP; Customer Maintenance Screen of the Simple Application;RSSAT002
SA03;SIMPAPP; Customer List of the Simple Application;RSSAT003

CICS COBOLプログラムを宣言する手順

以前に宣言されたトランザクションによって、直接的または間接的(LINK、XCTL、STARTなどのEXEC CICS文を介して)に使用されるすべてのプログラムは、同じグループ内で宣言される必要があります。

これらの宣言は、各プログラムが実装するために、programs.descファイルで行われます。

各プログラムに対して、csv形式で宣言する必要があります

  1. プログラムの名前(必須)。
  2. CICS Runtimeグループ名(必須)
  3. プログラムの短い説明(オプション、少なくとも1つの空白)
  4. プログラムが記述される言語(デフォルトはCOBOL)

Simple Applicationの例では、必要なプログラムはRSSAT000RSSAT001RSSAT002およびRSSAT003だけで、すべてCOBOL言語でコーディングされています

記入が済むと、programs.descファイルは次のようになります。

リスト4-2 Simple Applicationのprograms.descファイル
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE; 
RSSAT000;SIMPAPP; Home Menu Program of the Simple Application ;COBOL
RSSAT001;SIMPAPP; Customer Detailed Information Program of the Simple Application ;COBOL
RSSAT002;SIMPAPP; Customer Maintenance Program of the Simple Application
RSSAT003;SIMPAPP; Customer List of the Simple Application ;COBOL
注意: RSSAT002の言語フィールドでは何も宣言されませんが、これは、このプログラムの言語がデフォルトのCOBOLであることを意味します。

CICSマップセットを宣言する手順

3270ターミナルまたはエミュレータを介してエンド・ユーザーと対話するには、このドキュメントでこれまで説明してきた特定のEXEC CICS文を介して以前に定義されたCOBOLプログラム内で使用された物理マップセット(*.mpdefファイル)のすべてを、CICS Runtimeに対して宣言します。

これらの宣言は、実装の必要がある各マップセットに対応する内容をmapsets.descファイルを記入することによって行われます。

各マップセット定義の入力書式は、次の書式の説明を遵守する必要があります。

  1. 最初の空の物理行に、[mapset]キーワードを入力します。
  2. 次の行で、キーワードname=に続けて、マップセットの名前を入力します。
  3. 次の行で、キーワードfilename=に続けて、物理マップセット(.mpdefファイル)の物理パスを入力します。

このSimple Applicationの例では、COBOLプログラムで使用されるマップセットは、RSSAM00RSSAM01RSSAM02およびRSSAM03です。

記入が済むと、mapsets.descファイルは次のようになります。

リスト4-3 Simple Applicationのmapsets.descファイル
[mapset]
name=ABANNER
filename=<KIXDIR>/sysmap/abanner.mpdef [mapset]
name=RSSAM00
filename=<HOME>/demo/MAP_TCP/RSSAM00.mpdef
[mapset]
name=RSSAM01
filename=<HOME>/demo/MAP_TCP/RSSAM01.mpdef
[mapset]
name=RSSAM02
filename=<HOME>/demo/MAP_TCP/RSSAM02.mpdef
[mapset]
name=RSSAM03
filename=<HOME>/demo/MAP_TCP/RSSAM03.mpdef
注意: mapsets.descファイルはUNIX変数を受け入れないため、このファイルには完全に展開したパスを指定する必要があります。

z/OS VSAMファイル変換から生成されたISAMファイルを宣言する手順

従来は、1つ以上のファイルをCICS Runtimeに対して宣言する前に、すべての物理コンポーネント、ファイル、アクセッサ・プログラム、Cobolコピーブックなどが、Oracle Tuxedo Application Rehosting Workbench Dataコンポーネントによって生成されている必要がありました。

Oracle Tuxedo Application Rehosting Workbench Dataコンポーネントによってビルドまたは変換されたすべてのコンポーネントのうち、変換済VSAMファイルのアクセッサ・プログラムだけがCICS Runtimeによって使用されます。理由は、移行後は、直接アクセスできるファイルがないことです。ファイルには、このファイルの管理専用のアクセッサ・プログラムを介して、間接的にのみアクセスできます(ソース・ファイル1つにつき、アクセッサ・プログラムは1つのみ)。

Simple Applicationは、z/OS VSAM KSDSファイルPJ01AAA.SS.VSAM.CUSTOMERのOracle Tuxedo Application Rehosting Workbenchデータ変換から生成されたCUSTOMER Oracle表だけを使用します。

このため、このFile-to-Oracleアプリケーションの例では、CICS Runtimeに対して宣言するためのアクセッサは、RM_ ODCSF0の1つだけとなります(RMはRelational Moduleの略)。

注意: ODCSF0は、物理ファイル名PJ01AAA.SS.VSAM.CUSTOMERを参照する、CICSで以前に定義された論理名を表します。従って、EXEC CICS文によりCICS Cobolプログラムからこのファイルにアクセスするために認識されている唯一のファイル名でもあります。
ISAM移行済ファイルを宣言する手順:
  1. 以前に定義されたプログラムで使用されたすべてのVSAM/ISAMファイルを記述する新しい変数が存在しなければ追加して、Tuxedo envfileを変更します。
  2. このSimple Applicationの例では、次の行を入力する必要があります(説明を簡単にするため、ファイルの場所をubbconfig、envfileおよびtuxconfigファイルと同じ場所に指定しましたが、これは必須でありません)。

    DD_VSAMFILE=${HOME}/trf/config/tux/desc.vsam
  3. ファイルが存在しない場合、示された場所に、desc.vsamファイルを物理的に作成します。
  4. 使用される各アクセッサ/ファイルに対して、アクセッサによって使用される、異なる情報フィールドを記述する新しい行をcsv形式で追加することによって、desc.vsamファイルを変更します。

このSimple Applicationの例では、次の行が入力されます。

リスト4-4 Simple ApplicationのISAMファイル宣言
#DDname;Accessor;DSNOrganization;Format;MaxRecordLength;KeyStart;KeyLength
ODCSF0;ASG_ ODCSF0;I;F;266;1;6

説明:

ODCSF0

EXEC CICS文で使用されるデータ記述名(論理名)です。

RM_ODCSF0

以前のVSAMファイルのデータ変換から生成されたOracle表へのアクセスを管理するアクセッサ・プログラムの名前です。

I

データ・セット名組織は索引編成済です

F

FixedのFで、すべてのレコードが同じ固定長の形式です

266

最大レコード長。

1

ファイル内でのキー位置(1は1列めまたは1文字めを意味します)。

6

キー長。

CICS Runtime Tuxedoサーバーを変更する手順

以前に定義されたサーバーに加えてCICSアプリケーション・トランザクションを管理する手順:

  1. CICS Runtime TuxedoサーバーARTSTRNを実装します。
  2. このサーバーは、同期(遅延なし)および同時(一度に1つずつでない)の、最も多く使用される基本的なCICS Runtimeトランザクションのみを管理します。

  3. SIMPAPP CICS Runtimeグループ名に属するトランザクションだけが開始されることを、CICS Runtimeに対して示します。

Tuxedo ubbconfigファイルの*SERVERSセクションの次の例は、ARTSTRNサーバーの構成を示しています。

リスト4-5 Simple Application CICS RuntimeサーバーTuxedo構成
*SERVERS
ARTSTRN    SRVGRP=GRP02
            SRVID=20
            CONV=Y
            MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
            CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP "

説明:

*SERVERS

サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。

SRVGRP

ARTSTRNが属するTuxedoグループ名です。

SRVID

ARTSTRNのTuxedoサーバーの識別子です。

CONV=Y

このサーバーが対話モードで動作していることを示します。

MIN=1 and MAX=1

このサーバーのインスタンスは1つのみ実行可能であることを示します。

REPLYQ=Y

このサーバーが応答することを示します。

RQADDR=QCNX015

レスポンスに使用されるTuxedoキューの名前。

CLOPT

パラメータを含むサーバーに渡される引用符付きテキスト文字列です。

-o

サーバーの標準出力メッセージのために使用されるファイルを示します。

-e

サーバーのエラー出力メッセージのために使用されるファイルを示します。

-r

統計レポートを提供するために使用されるTuxedoパラメータです。

-s KIXR

KIXRトランザクションが実行されるCICS Runtime名を示します。

-l SIMAPP

SIMAPPグループのトランザクションだけが選択されることを示します。

CICS Runtime Tuxedoサーバー・グループを変更する手順

ARTSTRNサーバーが起動されるためには、以前に定義された(かつコメントされていない)Tuxedoサーバー・グループ内のubbconfigファイルで定義される必要があります。

この例では、ARTSTRNはTuxedoサーバー・グループGRP02(SRVGRP=GRP02)に属しています。

リスト4-6 Simple Application CICS Runtime Tuxedoサーバー・グループの例
*GROUPS
GRP02
   GRPNO=12
   ENVFILE="/home2/work9/demo/config/tux/envfile"
   TMSNAME="TMS_ORA"

説明:

*GROUPS

サーバー・セクション・グループ・セクションの定義を示すTuxedo ubbconfigキーワード。

GRPNO=

Tuxedoグループ。

ENVFILE=

Tuxedo envfileのパス。

TMSNAME=

Tuxedo Transaction Manager Server実行可能ファイルの名前。

 


CICSアプリケーションのインストールの検証

Tuxedo tmadmin psrコマンドの使用

Tuxedo tmadmin psrコマンドを入力して、必要なCICS Runtimeサーバー(ARTTCPLARTCNXおよびARTSTRN)がすべて実行されており、そのメッセージがTuxedoのドキュメントとこのドキュメントに準拠していことを確認します。

リスト4-7 tmadmin psr Simple Applicationのインストール・チェック
# tmadmin
...
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- ---------------
BBL            200933      KIXR           0      2       100 (  IDLE )
ARTTCPL 00001.00101 TCP00        101      0         0 (  IDLE )
ARTCNX        QCNX015     GRP01         15      2       100 (  IDLE )
ARTSTRN       QKIX110     GRP02         20      6       300 (  IDLE )
> quit
#

Tuxedo tmadmin pscコマンドの使用

Tuxedo tmadmin pscコマンドを入力し、実行されているすべての異なるTuxedo Servicesを表示することによって、別のチェックが可能です。

CICS Runtimeシステムのトランザクション/サービス(CSGMCESNCESFなど)に加え、これで、CICS RuntimeアプリケーションSA00SA01SA02およびSA03のトランザクション・コードを参照できます。

リスト4-8 tmadmin psc Simple Applicationのインストール・チェック
# tmadmin
...
> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       1 AVAIL
disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX    GRP01     15       KIXR       1 AVAIL
SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       3 AVAIL
SA02         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       3 AVAIL
> quit
#

CICS Runtimeアプリケーションの使用

CICSアプリケーションを使用する前に、アプリケーションがアクセスするISAMファイルにデータを移入する必要があります。次に、3270ターミナルまたはエミュレータで、UNIX x3270コマンドを使用してCICS Runtimeにアクセスします。それは、次であることが必要です:

# x3270 ${HOSTNAME}:${TCPNETADDR}

説明:

${HOSTNAME}

CICS Runtimeを実行しているUNIXマシンの名前を含んでいる、システムUNIX変数です。

${TCPNETADDR}

Tuxedo管理者により、インストール時にubbconfigファイルにセットアップされたUNIX 3270エミュレータのポート番号です。
  1. 「Good Morning」メッセージを受信します。
  2. 3270エミュレータ・キーパッドの[Clear]キーを押してクリアします。
  3. 左上隅で、CICS Runtimeアプリケーションのメイン・トランザクション・コードSA00を入力します。
  4. 図4-1 Simple Applicationトランザクション・コード入力


    Simple Applicationトランザクション・コード入力

  5. アプリケーションのメイン・メニューが表示されます。
  6. 図4-2 Simple Applicationメイン・メニュー


    Simple Applicationメイン・メニュー

  7. アプリケーションの画面をナビゲートし、エラーなく表示されることを確認します。

 


COBOL-IT / BDBにおけるSimple Applicationの紹介

XAプロトコルを使用するBDBに基づき、COBOL ITによってコンパイルされたCICS COBOLプログラムは、ART Workbenchを使用してMainframe VSAMファイルから変換される索引編成ISAMファイルにアクセスできます。次の項では、このアプリケーションを有効化するためにART CICS Runtimeで実行する必要がある構成について説明します。

CICS Runtimeにおけるubbconfigファイルの構成

MRMパラメータをTuxedo ubbconfigファイルの*GROUPSおよび*RMSセクションのグループ・エントリに追加します。次の例を参照してください。

リスト4-9 ubbconfigファイルにMRMパラメータを追加する例
*GROUPS
GRP02 
GRPNO=12 
MRM=Y 
*RMS 
MRMG_RM1 
RVGRP=GRP02 
RMID=15 
TMSNAME="TMS_BDB" 
OPENINFO="BERKELEY-DB:/home2/work10/data"

説明:

*GROUPS

サーバー・グループの定義を示すTuxedo ubbconfigキーワード。

GRPNO=

Tuxedoグループを示します。

MRM= Y

このサーバー・グループが複数のリソース・マネージャをサポートできることを示します。

*RMS

リソース・マネージャの定義を示すTuxedo ubbconfigキーワード。

MRMG_RM1

RMSエントリの論理名を示します。

RVGRP=

このRMに関連付けられているグループ名を示します。

RMID=

グループ内の対象RMの固有のID番号を示します。ID番号は1から31の間である必要があります。

TMSNAME

SRVGRPによって指定されるグループに関連するトランザクション・マネージャ・サーバーの名前を指定します。

OPENINFO=

関連するグループのリソース・マネージャを開くときに必要な、リソース・マネージャに依存する情報を示します。

BDB TMSサーバーの構築

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サーバー起動前の変数のエクスポート

ARTサーバーを起動する前に次の変数を明示的にエクスポートします。

 


限られた数の並列インスタンスを持つ同期CICSトランザクションの実装

一部の特定の事例では、たとえばパフォーマンスの制約のために、同じトランザクション・コードを扱う同時実行トランザクションの数を制限する必要があります。

z/OSでは、この制限はトランザクション・リソース自体で定義されることができず、同じトランザクションの同時インスタンス数の最大値を記述する固有のMAXACTIVEパラメータを含む、TRANCLASS(トランザクション・クラス)という名前の独立したリソースで定義されます。

トランザクションをトランザクション・クラスに関連付けて、そのパラメータ、特にMAXACTIVEパラメータを継承するために、z/OS CICSトランザクション・リソースには、TRANCLASSリソースの名前を含むTRANCLASSフィールドがあります。

このインスタンス管理は、CICS Runtimeを伴うUNIX上では、異なる方法で実行されます。同時実行トランザクションの最大数は、同じトランザクションを提供するサーバーの数によって定義されます。この最大数と最小数はそれぞれ、Tuxedoファイルubbconfig*SERVERSセクションにあるARTSTRN定義のMAXおよびMINパラメータで示されます。

これは、次の非常に個別的な事例を除いて、これらの制限を管理するためにmaxactiveパラメータが考慮されないことを意味します。

MAXACTIVE=1のトランザクション・クラスの特例

MAXACTIVE=1は、この種類のトランザクション・クラスに属する同時トランザクションが同時実行できないことを示すため、この管理の例外です。

この非常に個別的な順次トランザクションの事例を管理するには、Tuxedo CICS Runtime機能を構成する必要があります

順次トランザクションの場合のubbconfigファイルの変更

MAXACTIVEが2以上のトランザクション・クラスにリンクされているトランザクションはすべてCICS Runtime TuxedoサーバーARTSTRNによって管理されており、他に何も変更する必要がありません。MAXACTIVEパラメータが1に設定されているトランザクションでは、ARTSTR1という名前のCICS Runtime Tuxedoサーバーが、特定の管理を専門に扱います。

このサーバーをアクティブ化するには、次のようにubbconfigファイルを変更して、*SERVERSセクションにこのサーバーを追加します。

リスト4-10 ubbconfigへのARTSTR1サーバーの追加
*SERVERS
ARTSTR1    SRVGRP=GRP02
            SRVID=200
            CONV=Y
            MIN=1 MAX=1
            CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_str1 -e  /home2/work9/demo/Logs/TUX/sysout/stderr_str1 -r -- -s KIXR -l SIMPAPP"

説明:

*SERVERS

サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。

SRVGRP

ARTSTR1が属するTuxedoグループ名です。

SRVID

ARTSTR1 Tuxedoサーバーの識別子です。

CONV=Y

このサーバーが対話モードで動作していることを示します。

MIN=1 and MAX=1

必須で、このサーバーのインスタンスは1つのみ実行可能であることを示します。

CLOPT

パラメータを含むサーバーに渡される引用符付きテキスト文字列です。

-o

サーバーの標準出力メッセージのために使用されるファイルを示します。

-e

サーバーのエラー出力メッセージのために使用されるファイルを示します。

-r

統計レポートを作成するために使用されるTuxedoパラメータです。

-s

KIXRは、KIXRトランザクションが実行されるCICS Runtime名を示します。

-l SIMAPP

SIMAPPグループのトランザクションだけが選択されることを示します。
注意: CICS Runtimeトランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRNおよびARTATR1)はすべて、同じCICS Runtimeトランザクション・グループ・サーバーを共有しており、ubbconfigサーバー・グループ・セクション(*GROUPS)を変更する必要はありません。

tranclasses.descファイルの変更

ART CICSの場合、並列性がデフォルト動作であるため、同時トランザクションを、2以上のMAXACTIVEパラメータを持つトランザクション・クラスに制限する必要は、実際にはありません。

順次トランザクションの場合は、CICS Runtimeに対してこれらのトランザクションを宣言する唯一の方法であるため、必須です。MAXACTIVE=1パラメータで定義されている特定のトランザクション・クラスを宣言します。他のCICS Runtimeリソースと同様に、これはCICS Runtimeグループ名に属する必要があります。各TRANCLASSに対して、csv形式で次のように宣言します。

  1. トランザクション・クラスの名前(必須)
  2. CICS Runtimeグループ名(必須)
  3. トランザクション・クラスの短い説明(オプション、少なくとも1つの空白)
  4. RUNを行う同じトランザクションの最大数(MAXACTIVE)。
注意: 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つの最後の定義はオプションです。それらがなくても意味は同じです。

transactions.descファイルの変更

このcsv形式ファイルの最初の4つの必須フィールド(トランザクション名、グループ名、説明、プログラム名)に加えて、12番目のフィールド、TRANCLASS(トランザクション・クラス名)を追加する必要があります。

TRANCLASSフィールドは、1つ以上の空白をそれぞれの間に挟む8つのセミコロン(;)によって、Programフィールドから区切る必要があります。

この例では、CICS Runtime Simple Applicationに、次のMAXACTIVE制限を持っていると想定します。

これらのトランザクションは、以前に定義した次のtranclassesにリンクされる必要があります。

変更が済むと、transactions.descファイルは次のようになります。

リスト4-11 サンプルのtransactions.descファイル
#Transaction Name ;Group Name ; Description ;Program Name
SA00;SIMPAPP; Home Menu Screen of the Simple Application;RSSAT000
SA01;SIMPAPP; Customer Detailed Information Screen of the Simple ;  Application;RSSAT001; ; ; ; ; ; ; ;TRCLASS1
SA02;SIMPAPP; Customer Maintenance Screen of the Simple Application;RSSAT002; ; ; ; ; ; ; ; TRCLASS2
SA03;SIMPAPP; Customer List of the Simple Application;RSSAT003; ; ; ; ; ; ; ; TRCLASS10
注意:

ARTSTR1構成の確認

Tuxedo tmadmin psrコマンドの使用

ARTSTR1を次に示します。

リスト4-12 tmadmin psrコマンドを使用したARTSTR1サーバーの確認
# tmadmin
...
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- ---------------
ARTSTR1       00012.00200 GRP02        200      0         0 (  IDLE )
BBL            200933      KIXR           0      3       150 (  IDLE )
ARTTCPL 00001.00101 TCP00        101      0         0 (  IDLE )
ARTCNX        QCNX015     GRP01         15      0         0 (  IDLE )
ARTSTRN       QKIX110     GRP02         20      0         0 (  IDLE )
> quit
#

Tuxedo tmadmin pscコマンドの使用

新しいサービスやトランザクションは、表示されません。

ARTSTRNが実行されている唯一のサーバーであるこの例では、ARTSTR1もアクティブにされた場合に何も変化がないことがわかります。

リスト4-13 tmadmin pscコマンドを使用したARTSTRNサーバーの確認
# tmadmin
...
> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA02         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
> quit
#

 


非同期CICS非遅延トランザクションの実装

これらのトランザクションは、実行を遅らせるためにDELAYまたはTIMEパラメータを使用していないCICSプログラム内でコーディングされている特定のCICS EXEC CICS START TRANSIDリクエストによって起動されます。

プログラムの少なくとも1つにこの種の文が含まれる場合は、他のどの設定も変更することなく、CICS Runtime Tuxedoサーバーの一部の新機能をインストールし、アクティブ化します。

Tuxedo ubbconfigファイルの変更による非同期トランザクションの管理

ARTSTRNサーバーとARTSTR1サーバーに関しては、ファイルは同じ方法で変更されますが、これらのサーバーの名前に接頭辞を付けるために使用される文字「s」(同期)を、文字「a」(非同期)に置き換える必要があります。

並列非同期トランザクションの使用

MAXACTIVEパラメータが厳密に1より大きい並列非同期トランザクションを使用するための専用サーバーがARTATRNです。atrn_serverをインストールするには、ARTSTRNサーバーのインストールについて説明している項を参照してください。

また、tmadmin psrおよびpscコマンドを使用して、設定を確認できます。

Simple Applicationの例では、次のようになります。

非並列非同期トランザクションの使用

MAXACTIVEパラメータが正確に1に等しい非並列的な非同期トランザクションを使用するための専用サーバーはARTATR1です。

ARTSTR1サーバーをインストールするには、ARTSTR1サーバーの理由とインストールについて説明している項を参照してください。

また、Tuxedo tmadmin psrおよびpscコマンドを使用して、設定を確認できます

Simple Applicationの例では、次のようになります。

 


非同期CICS遅延トランザクションの実装

ART CICS Runtimeでは、EXEC CICS START TRANSIDリクエストで起動される非同期CICS遅延トランザクションを、2つの方法で実装できます。

ARTSRMサーバーを使用した非同期トランザクションの実装

z/OSには、ATTIMEAFTERINTERVALなど、トランザクションを指定の時間または指定の間隔後に起動するための、時間に関係するいくつかのCICS START APIオプションがあります。ART CICS Runtimeには、これらのオプションを実装するサーバーARTSRMが用意されています。詳細は、 『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』ARTSRMの構成に関する項を参照してください。

このサーバーをアクティブ化するには、UBBCONFIGファイルの*SERVERSセクションでARTSRMを構成します。一連のARTSRMサーバーが各CICSリージョンの同じグループにある場合のみ、これらを構成できます。次に例を示します。

リスト4-16 UBBCONFIGでのARTSRMの構成の例
*SERVERS
ARTSRM
       SRVGRP=ARTGRP
       SRVID=500
       RESTART=Y
       MAXGEN=5
       GRACE=3600
        CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_srm -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"
注意: /Qを使用した非同期トランザクションの実装は引き続きサポートされていますが、START TRANID/CANCELコマンドが呼び出されると、リクエストはまず、ARTSRMで通知されるTRANCTL_[SYSID]サービスに送信されます。呼出しがTPNOENTエラー・コードを受け取ると、次に/Qを使用してリクエストを再ディスパッチします。

/Qを使用した非同期トランザクションの実装

非同期トランザクションが起動されるのは、EXEC STARTASYNC_QSPACEがオプションINTERVALまたはPROTECTを使用して設定される場合です。

この場合、トランザクション・リクエストはOracle Tuxedo /Qキューに保存され、時刻になると、トランザクションが自動的に起動されます。

この機能を有効にするには、次のコンポーネントを構成する必要があります。

  1. ASYNC_QSPACEという名前のOracle Tuxedo /Qキュー・スペース
  2. ASYNC_QSPACE内のASYNC_QUEUEという名前のOracle Tuxedo /Qキュー
  3. これらの非同期トランザクション専用のTMQUEUEサーバーとTMQFORWARDサーバー

Tuxedo /Qの作成

CICS Runtimeには、すべてのTuxedo /Qコンポーネントを作成するUNIXスクリプト、mkqmconfig.shが用意されています。

  1. スクリプトを使用する前に、UNIX ~./.profileファイル内で、次のものを定義およびエクスポートします。
  1. コマンド・ラインからmkqmconfig.shを実行して、Tuxedo /Q機能を作成します。

Tuxedo /Qキュー管理のためのTuxedo ubbconfigファイルの変更

  1. GQUEUEサーバー・グループを、ubbconfigファイルの*GROUPセクションに追加する必要があります。
  2. リスト4-17 Simple Application Tuxedoキューubbconfigの例
    *GROUPS
    # /Q
    GQUEUE      GRPNO=1000
                TMSNAME=TMS_QM TMSCOUNT=2
                OPENINFO="TUXEDO/QM:/home2/work9/demo/config/tux/kixqspace:ASYNC_QSPACE"

説明:

*GROUPS

サーバー・グループの定義を示すTuxedo ubbconfigキーワード。

GRPNO=

Tuxedoグループ。

TMSCOUNT=

Tuxedoトランザクション・マネージャ・サービスの数

TMSNAME

Tuxedo Transaction Manager Server実行可能ファイルの名前。

OPENINFO=

Tuxedo /Qトランザクション・マネージャQMに対して、管理対象のQSPACE名とそのUNIX絶対パスを示します。
  1. それから、2台のサーバー、TMQUEUETMQFORWARDを、ubbconfigファイルの*SERVERSセクションに追加する必要があります。
  2. リスト4-18 Simple Application ubbconfigのTMQUEUEおよびTMQFORWARDの例
    *SERVERS 
    # /Q
    TMQUEUE     SRVGRP=GQUEUE
                SRVID=1010
                GRACE=0 RESTART=Y CONV=N MAXGEN=10
                CLOPT="-s ASYNC_QSPACE:TMQUEUE -- "
    TMQFORWARD
                SRVGRP=GQUEUE
                SRVID=1020
                GRACE=0 RESTART=Y CONV=N MAXGEN=10
                CLOPT="-- -n -i 2 -q ASYNC_QUEUE"

説明:

*SERVERS

サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。

SRVGRP

サーバーが属するTuxedoグループ名です。

SRVID

Tuxedoサーバーの識別子です。

MAXGEN=10

プロセスが最大10のサーバーを再起動できるように指定します。

GRACE=0

サーバー再起動の数が含まれる制限間隔がないことを意味します。

CONV=N

このサーバーが非対話モードで動作していることを示します。

CLOPT

パラメータを含むサーバーに渡される引用符付きテキスト文字列です。

tmadmin psrおよびpscコマンドを使用して、4台の新しいサーバーと2つの新しいサービスが実行されていることを確認します。

リスト4-19 Simple Application TMQUEUEおよびTMQFORWARDのtmadminの例
# tmadmin
...
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- --------------
ARTATR1       00012.00300 GRP02        300      0         0 (  IDLE )
ARTSTR1       00012.00200 GRP02        200      0         0 (  IDLE )
BBL           200933      KIXR           0      4       200 (  IDLE )
ARTTCPL       00001.00101 TCP00        101      0         0 (  IDLE )
ARTCNX        QCNX015     GRP01         15      0         0 (  IDLE )
TMS_QM        GQUEUE_TMS  GQUEUE     30001      0         0 (  IDLE )
TMS_QM        GQUEUE_TMS  GQUEUE     30002      0         0 (  IDLE )
TMQUEUE       01000.01010 GQUEUE      1010      0         0 (  IDLE )
TMQFORWARD    01000.01020 GQUEUE      1020      0         0 (  IDLE )
ARTSTRN       QKIX110     GRP02         20      0         0 (  IDLE )
ARTATRN       QKIXATR     GRP02         30      0         0 (  IDLE )
> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
TMS          TMS          TMS_QM     GQUEUE 30001       KIXR       0 AVAIL
TMS          TMS          TMS_QM     GQUEUE 30002       KIXR       0 AVAIL
ASYNC_QSPACE TMQUEUE      TMQUEUE    GQUEUE  1010       KIXR       0 AVAIL
authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA02         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
ASYNC_QUEUE  ASYNC_QUEUE  ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA03   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA02   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA01   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA00   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
> quit
#

 


一時記憶域(TS)キューを使用したCICSアプリケーションの実装

これらのトランザクションは、CICS一時記憶域キューに関連するEXEC CICSリクエストを含むCICSプログラムを使用します。

使用される文は、EXEC CICS WRITEQ TS … END-EXECEXEC CICS READQ TS … END-EXECEXEC CICS DELETEQ TS … END-EXECです。

プログラムの少なくとも1つがこれらの文の1つを含んでいる場合は、他の設定を変更せずに、CICS Runtimeの新機能をインストールし、アクティブにします。

TS Queuesを管理するには、ARTTSQ CICS Runtime Tuxedoサーバーをアクティブにします。

説明:

*SERVERS

サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。

SRVGRP

ARTTSQが属するTuxedoグループ名です。

SRVID

ARTTSQのTuxedoサーバーの識別子です。

MIN=1 and MAX=1

このサーバーのインスタンスは1つのみ実行可能であることを示します。

CLOPT

パラメータを含むサーバーに渡される引用符付きテキスト文字列です。

-o

次のファイルがサーバーの標準出力メッセージのために使用されることを示します。

-e

次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。

-r

統計レポートを提供するために使用されるTuxedoパラメータです。

-s KIXR

トランザクションが実行されるCICS Runtime名がKIXRであることを示します。

-l SIMAPP

起動時にSIMAPPグループのコンポーネントだけが選択されることを示します。

Tuxedo tmadmin psrおよびpscコマンドを使用して、サーバーが実行され、6つの新しいサービスが公開されていることを確認します。

リスト4-21 ARTTSQサーバーおよびサービスの実行確認
# tmadmin
...
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- --------------
ARTATR1       00012.00300 GRP02        300      0         0 (  IDLE )
ARTSTR1       00012.00200 GRP02        200      0         0 (  IDLE )
BBL           200933      KIXR           0      3       150 (  IDLE )
ARTTCPL       00001.00101 TCP00        101      0         0 (  IDLE )
ARTCNX        QCNX015     GRP01         15      0         0 (  IDLE )
ARTSTRN       QKIX110     GRP02         20      0         0 (  IDLE )
ARTTSQ        00012.00040 GRP02         40      0         0 (  IDLE )
> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA02         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
TSM00004_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
TSM00003_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
TSM00002_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
TSM00001_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
TSM00000_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
TSQUEUE      tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
> quit
{deimos:work9}-/home2/work9/demo/config/tux#

回復できないTSキューの実装

回復できないTSキューの場合、内容に関する整合性はCICS Runtimeによって保証されません。たとえば、CICSトランザクションのどこかの時点でabendが発生した場合、このTSにしたことは最後の整合性ポイントにロールバックされません。

TSキューは、KIX_TS_DIR UNIX環境変数で定義される専用ディレクトリの順編成ファイルに格納されます。この変数は、~/.profile UNIXシステム・ファイルで定義され、そこからエクスポートされます。

KIX_TS_DIR=${HOME}/trf/KIXTSDIR

Tuxedo ubbconfigファイルを変更して、管理専用の新しいARTTSQサーバーをアクティブ化します。

回復可能なTSキューの実装

これらのTSキューについては、CICS Runtimeが内容の整合性を保証します。たとえば、CICSトランザクションのどこかの時点でabendが発生した場合、最後の整合性ポイントにロールバックされ、すべて正常であれば、その内容がコミットされて新しい整合性ポイントになります。これらのTSキューは、RDBMS整合性管理を活用するために、にOracle表に格納されます。

TSキューに関しては、リカバリ可能なTSキューの強化動作があります。

ソースCICS z/OSで、CICSエンキューがREADQ TSコマンドに対して呼び出されないため、あるタスクが一時保存キュー・レコードを読み取ると同時に、別のタスクは同じレコードを更新することが可能になります。これを回避するには、タスクを同時に実行しても同じ一時保存識別子でキューを読み取るおよび変更することができるように、一時保存キューで明示的なエンキューを使用します。

また、この動作によって、リカバリ可能なTSキューがコミットされる前またはロールバックされた後でも、1つのトランザクションではそのキュー内に新しく書き込まれたレコードを参照または読み取ることが可能になります。

ターゲット側では、この制限はありませんが、特に次の場合には制限があります。

回復可能なTSキューを使用する手順

回復可能なTSキューを使用するには、TSキューを含むようにOracle表を定義する必要があります。CICS Runtimeには、これらの表すべてを作成するためのUNIXスクリプト、crtstable_Oracleが用意されています。

  1. スクリプトを使用する前に、UNIX ~./.profileファイルから、次のものを定義およびエクスポートします。
  1. 変数の設定が完了したら、crtstable_Oracleスクリプトを実行します。
  2. 続いて、Tuxedo ubbconfigファイルを変更して、*GROUPSセクションでOracleへの接続を確立するためにARTTSQによって使用されるサーバー・グループを変更します。
  3. リスト4-22 ARTTSQサーバーで使用されるサーバー・グループGRP02に関連するTuxedo ubbconfigファイルの*GROUPセクションの例。
    *GROUPS
    GRP02
       GRPNO=12
       ENVFILE="/home2/work9/demo/config/tux/envfile"
       TMSNAME="TMS_ORA" OPENINFO="Oracle_XA:Oracle_XA+Acc=P/work9/work9+SesTm=600+LogDir=/home2/work9/demo/Logs/TUX/xa+DbgFl=0x20"

説明:

*GROUPS

サーバー・グループの定義を示すTuxedo ubbconfigキーワード。

GRPNO=

Tuxedoグループ番号。

TMSNAME=

Tuxedo Transaction Manager Server実行可能ファイルの名前。

OPENINFO=

パラメータがOracle_XA Managerに送信します。
  1. Tuxedo psrおよびpscコマンドを使用して、Oracleが使用できることを確認します。3台の新しいサーバーと3つの新しいサービスが示されるはずです。
  2. リスト4-23 Simple Applicationのリカバリ可能なTSキューのチェック
    # tmadmin
    ...
    > psr
    Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
    ---------      ----------  --------      -- ------ --------- --------------
    ARTATR1       00012.00300 GRP02        300      0         0 (  IDLE )
    ARTSTR1       00012.00200 GRP02        200      0         0 (  IDLE )
    BBL           200933      KIXR           0      4       200 (  IDLE )
    ARTTCPL       00001.00101 TCP00        101      0         0 (  IDLE )
    TMS_ORA       GRP02_TMS   GRP02      30001      0         0 (  IDLE )
    TMS_ORA       GRP02_TMS   GRP02      30002      0         0 (  IDLE )
    TMS_ORA       GRP02_TMS   GRP02      30003      0         0 (  IDLE )
    ARTCNX        QCNX015     GRP01         15      0         0 (  IDLE )
    ARTSTRN       QKIX110     GRP02         20      0         0 (  IDLE )
    ARTTSQ        00012.00040 GRP02         40      0         0 (  IDLE )
    > psc
    Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
    ------------ ------------ ---------  --------  --    -------  ------ ------
    TMS          TMS          TMS_ORA    GRP02  30001       KIXR       0 AVAIL
    TMS          TMS          TMS_ORA    GRP02  30002       KIXR       0 AVAIL
    TMS          TMS          TMS_ORA    GRP02  30003       KIXR       0 AVAIL
    authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    connect      cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    SA02         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    TSM00004_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00003_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00002_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00001_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00000_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSQUEUE      tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    > quit
    #

 


TDキュー・イントラパーティションの管理

ソース・プラットフォーム・メカニズムの紹介

一時データ管理

CICS一時データ管理機能は、標準的なキューイング機能を提供します。データを後続の内部または外部処理のためにキューに格納できます。アプリケーション・プログラムで指定された選択データは、定義済のシンボリック一時データ・キューに、またはキューからルーティングできます。イントラパーティションまたはエキストラパーティションのどちらかです。

一時データ・キューは、CICSリージョンに割り当てられた機能と関連付けられた場合、イントラパーティションです。データがCICSリージョンの外部の宛先にダイレクトされる場合、エキストラパーティションです。一時データ・キューは、アプリケーション・プログラムによる最初のリファレンスより前に定義とインストールする必要があります。

以下のことができます。

注意: このドキュメントでは、特別にイントラパーティションTDキューに集中します。

イントラパーティション一時データ・キュー

イントラパーティションは、別のタスクとして実行中の1つ以上のプログラムで使用される直接アクセス・ストレージ・デバイスのデータを指します。これら内部キューに、またはキューからダイレクトされるデータはイントラパーティションと呼ばれます。可変長のレコードで構成されている必要があります。

ユーザー・タスクによってキューにデータが書き込まれた場合、このキューはCICSリージョン内の別のタスクの入力データとして使用できます。すべてのアクセスは順次で、読み込みと書込みポインタによって制御されます。一度読み込まれたレコードは別のタスクから読み込むことはできません。イントラパーティション・データは最終的にリクエストによりターミナルに転送されるか、出力データセットから順に取得されます。

イントラパーティション・データの典型的な使用には次が含まれます。

イントラパーティション一時データ・キューには次の3種類があります。

回復不能

回復不能なイントラパーティション一時データ・キューは、CICSのウォーム・スタートのみで回復されます。作業ユニット(UOW)が回復不能なイントラパーティション・キューを更新し、後で更新を取り消した場合、キューに対して行われた更新は取り消されません。

物理的にリカバリ可能

物理的にリカバリ可能なイントラパーティション一時データ・キューは、ウォームや緊急な再起動のときに回復されます。UOWが物理的にリカバリ可能なイントラパーティション・キューを更新して、後で更新を取り消した場合、キューに対して行われた更新は取り消されません。

論理的にリカバリ可能

論理的にリカバリ可能なイントラパーティション一時データ・キューは、ウォームや緊急な再起動のときに回復されます。UOWは論理的にリカバリ可能なイントラパーティション・キューを更新し、後で更新を取り消した場合、キューに対して行われた更新も取り消されます。ウォーム、または緊急な再起動のとき、論理的にリカバリ可能なイントラパーティション・キューのコミット状態が回復されます。進行中のUOWは無視されます。

自動的トランザクションの初期化(ATI)

イントラパーティション・キューの場合は、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

Tuxedo /QはTDキューなどと同じ機能を持つ強力で多目的なキューイング・システムを提供します。

キューはリカバリ可能または不可能として定義できます。また、いくつかの別のオプションからのトリガーも可能です。エラーの管理は一層洗練されていて、ターゲットに対するATIトランザクションが失敗した場合のエラー管理が簡略化されます。

アーキテクチャ設計

表4-5 ソース・ターゲット・マッピング
ソース要素
ターゲット通信
TDキュー・イントラパーティション
Tuxedo /Qキュー。
関連する取引(TRANID)
ATRサーバーが提供する関連する取引。
トリガーレベル
トリガーレベル
リカバリ性: No|Physical|Logical
ターゲットと同様のレベルが用意されていますが、構成プリンシパルは異なります。

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)が該当する非同期トランザクションの起動に使用されます。

TDキュー・イントラパーティションに対するRuntime CICS構成

CICS Runtime リソース宣言

CICS Runtimeの各CICSのようなリソースは、${KIXCONFIG}ディレクトリに保存される専用の構成ファイルによって宣言されます。

読み取りおよび書き込み処理に同じAPIを使用するとはいえ、TDキュー・エクストラパーティションおよびTDキュー・イントラパーティション・リソース宣言はわずかな引数しか共有せず、意味的にかなり異なるオブジェクトです。

この理由により、CICS Runtimeでは、TDキュー・エクストラ・パーティション・リソース構成とTDキュー・イントラパーティション・リソース構成をそれぞれ2つの異なるリソース・ファイルに分けて保存しています。

イントラパーティション・キューは、『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』に記述されたtdqintra.descファイルに宣言されます。

重要な属性は、次のとおりです。

TDQUEUE(name)

キュー名(ソース構成にあるキュー名とまったく同じ) - この名前は、Tuxedo /Q構成にあるキュー名と同一でなければなりません。

RECOVSTATUS(status)

NOまたはLOGICALのステータスのみ使用できます。2つのモードの違いはWRITEQ TDおよびREADQ TDの処理に影響します。より正確には、LOGICALでは現在のUOWの一部となり、NOでは現在のUOWから独立したアトミック操作になります。
NOとPHYSICALの違いは、リソース構成ファイルに定義されませんが、永続/Qまたは非永続へマッピングしてネイティブTuxedo /Q構成パラメータを使用して実装されます。

TRANSIDおよびTRIGGERLEVEL

現行のリリースではtdqintra.descのみに記載され、考慮された/Q構成での値です。

QSPACENAME

/Qのために必要な新規引数で、そのQSPACEに定義することで、現在の/Qが保存されます。この引数は必須で、実際の/Qキューが物理的に格納されるQSPACENAMEと一致する必要があります。

CICS Runtime内のTDキュー・イントラパーティションに対する/Q構成

qmadmin/Q 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からの質問は標準のフォントで表示され、ユーザーが記入したエントリが太字で表示されています。

リスト4-24 qopenダイアログ
qopen TD_QSPACE
qcreate
Queue name: TEST
Queue order (priority, time, expiration, fifo, lifo): fifo
Out-of-ordering enqueuing (top, msgid, [default=none]): none
Retries [default=0]: 5
Retry delay in seconds [default=0]: 0
High limit for queue capacity warning (b for bytes used, B for blocks used,
 % for percent used, m for messages [default=100%]): 5m
Reset (low) limit for queue capacity warning [default=0%]: 0m
Queue capacity command: "TDI_TRIGGER -t S049"

次に、スクリプトでのこの手動入力に相当するものを示します。

リスト4-25 qopenスクリプト
qopen TD_QSPACE
qcreate TEST fifo none 3 0 5m 0m "TDI_TRIGGER -t S049"

qopenパラメータ

TD_QSPACE

QspaceNameは、これらのキューのリソース宣言でのQSPACENAMEと一致する必要があります。

キュー名

キュー名は、リソース宣言での名前と完全に一致しなければなりません。

キュー順序

キューを読み込む場合のデフォルトのデキュー順序は、TDイントラ・ネイティブ動作をfifoに設定します。

順序無視のエンキュー

一部のアプリケーションはこれらのキューに書き込むことするにはネイティブ/Qインタフェースを使用しない場合、これは意味がありません。Runtime CICSのみではnoneに設定する使用方法があります。

再試行

キューを読み取って、UOWが中断された場合、メッセージがまたキューに移される回数を定義します。不正なメッセージのためATIトランザクションが失敗した場合、再実行の繰り返しを避けるために適切な数を設定します。
この回数に達した場合、または設定がゼロであれば最初の中断のとき、メッセージはキューから削除され、更なる分析のためにエラー・キューに移されます。

再試行遅延時間

再試行がNullでない場合、記録をキューに戻されるまでの遅延を定義します。ロールバックの場合、Runtime CICSの推奨値はデフォルト値の「0」です。

キュー・キャパシティ警告の上方限度

これは、TDキューのさらに柔軟性のあるトリガー・レベルに等価のものです。TDキューと互換性を持たせるために、トリガー・レベルに設定し、メッセージ数で表現します。たとえば、トリガーを一時停止するには0mで、キュー内の5個のメッセージのトリガー・レベルのためには5mです。

キュー・キャパシティ警告のリセット(下方)限度

これは、上限のトリガーをリセットする前に達する必要がある下方レベルです。TDキューの動作と互換性を持たせるために、これを0 (QZERO) - CICSでのTDキューのリセット値 - に設定する必要があります。

キュー・キャパシティ・コマンド

トリガー・レベルに達した場合、このコマンドを発行します。CICS Runtimeでは、TDI_TRIGGER -t TRIDに設定する必要があります。TRIDはリソース構成のTRANSIDと一致する必要があるトリガーのトランザクションのトランザクション識別子です。

ヒント: ATRサーバーはATIを処理するとき、トランザクションがQZEROに到達したかどうか、また成功したかロールバックしたかどうかを認識します。QZEROに到達しない場合、ソース・プラットフォームと同じ方法でトランザクションを再発行します。
しかし、今では再試行回数が、ATIFACILITYパラメータに取ってかわり、ロールバックされたTDキュー・レコードが再発行されるかどうかという事実を制御します。
今では管理者が再発行の数を決定し、エラー・キュー上の障害メッセージを取得できるということは、ソースと比べると進歩です。

Tuxedo ubbconfigファイルでのARTTDQのアクティブ化

TDQ監視を有効にするには、ARTTDQサーバーをアクティブ化する必要があります。

リスト4-26 ubbconfigファイルでのARTTDQのアクティブ化
*SERVERS
ARTTDQ SRVGRP=GRP02
SRVID=40
MIN=1 MAX=1
CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_tdq -e /home2/work9/demo/Logs/TUX/sysout/stderr_tdq -r -- -s KIXR -l SIMPAPP"

説明:

*SERVERS

サーバー・セクションの定義を示すTuxedo ubbconfigキーワードです。

SRVGRP

ARTTDQが属するTuxedoグループ名です。

SRVID

ARTTDQのTuxedoサーバーの識別子です。

MIN=1 and MAX=1

このサーバーのインスタンスは1つのみ実行可能であることを示します。

CLOPT

パラメータを含むサーバーに渡される引用符付きテキスト文字列です。

-o

次のファイルがサーバーの標準出力メッセージのために使用されることを示します。

-e

次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。

-r

統計レポートを提供するために使用されるTuxedoパラメータです。

-s KIXR

トランザクションが実行されるCICS Runtime名がKIXRであることを示します。

-l SIMAPP

起動時にSIMAPPグループのコンポーネントだけが選択されることを示します。

 


Distributed Program Link (DPL)の実装

いくつかの理由で、z/OS上では、Distributed Program Link機能を使用して、ローカルのCICSプログラム(クライアント・プログラム)が、リモートCICSリージョンにある別のCICSプログラム(サーバー・プログラム)を、EXEC CICS LINK文を介して呼び出せます。CICS Runtimeでは、移行リージョン間のMROのようなマルチCICSアーキテクチャで使用されるこの機能をサポートしています。

DPLが必要であることを検出する手順

UNIXで書かれたアプリケーションでDPLを使用したい場合を除き、z/OSアプリケーションのテクニカル特性をチェックします。

  1. CEDAシステム・トランザクションを使用して、z/OS上で、少なくとも1つのリモート・プログラムがz/OS CICS CSDファイルで定義されているかどうかをチェックします。そのようなプログラムでは、REMOTE ATRIBUTESセクションのフィールドの一部がファイルされています。
  2. リスト4-27 リモート・プログラムのチェック
      DEF PROGR                                                                     
      OVERTYPE TO MODIFY                                    CICS RELEASE = 0610 
       CEDA  DEFine PROGram(          )                                             
        PROGram      ==>                                                            
        Group        ==>                                                            
        DEscription  ==>                                                            
    ....
    REMOTE ATTRIBUTES                                                           
     DYnamic      ==> No                 No ! Yes                               
     REMOTESystem ==> XXXX                                                      
     REMOTEName   ==> YYYYYYYY                                                  
     Transid      ==> ZZZZ                                                      
     EXECUtionset ==> Dplsubset          Fullapi ! Dplsubset                    

ここでは、次のとおりです(CICSデフォルト値は下線で示されます):

DYNAMIC(YES|NO)

次のパラメータは、CICS LINK API内でオーバーライドされません。このフィールドがNOに設定され、次の3つのフィールドが空の場合、このフィールドはDPLの使用にのみ関連します。

REMOTESYSTEM(name)

リモートCICSリージョン名。空のフィールドは、DYNAMIC(YES)に関連しません

REMOTENAME(name)

リモート・サーバー・プログラム名。デフォルトがクライアント・プログラム名(PROGram ==>)であるため、空のフィールドはDYNAMIC(YES)に関連しません。

TRANSID(name)

リモート・ミラー・トランザクション。デフォルトがミラー・システム・トランザクションCSMIであるため、空のフィールドはDYNAMIC(YES)に関連しません。

EXECUTIONSET(FULLAPI|DPLSUBSET)

DPLは、完全なCICS APIでなく、サブセットのみを使用できます。DPLSUBSETパラメータは、CICS APIのDPLサブセットの明示的な使用を示しますが、このサブセットがエラーなしで非DPLのコンテキストでLINKを実行することができる場合もある点に注意してください。他方、このフィールドには、DPLコンテキストでFULLAPIが含まれる場合がありますが、非DPL APIが使用された場合、「無効なリクエスト・エラー」が発生しない保証はありません。

ここまで説明してきたとおり、場合によっては、Remote Attributes宣言が存在しないか、不完全な場合があります。その理由は、これらのフィールドがデフォルト値の一部しか確立しないことであり、例の中で太字で示した、以前のパラメータの一部は、EXEC CICS LINK APIにはありません。

  1. そこで、プログラム内、EXEC CICS LINK APIの内部で、次の項目をチェックします。
    • この順序で呼び出されたプログラムの名前が、リモート属性が部分的または完全に通知された、CSDで定義されているプログラムの名前と一致するかどうか。
    • これらの文が、次のCICS LINK APIで斜体で示されているオプションのリモート・パラメータの少なくとも1つを含んでいるかどうか(他のフィールドはDPLに関連しません)。
    • リスト4-28 DPL用CICS LINK API
      EXEC CICS  LINK PROGRAM(…)
         COMMAREA(…)
         LENGTH(…)
         DATALENGTH(…)
         RETCODE(…)
         SYSID(XXXX) : Remote CICS region name
         SYNCONRETURN : Used for remote CICS syncpoint or rollback
         TRANSID(XXXX) : Remote mirror transaction instead of the CSMI default
         INPUTMSG(…)  
         INPUTMSGLEN(…)
      END-EXEC

Tuxedo ubbconfigファイルの変更によるDPLの管理

プログラムの少なくとも1つがDPLを使用する場合は、他の設定を変更せずに、ARTDPLサーバーをインストールしてアクティブ化します。

このサーバーをアクティブにするには、ubbconfigファイルを変更して、Tuxedo ubbconfigファイルの*SERVERSセクションにこのサーバーを追加します。このサーバーは、トランザクション・サーバー(ARTSTRN、ARTSTR1、ARTATRN、ARTATR1)と同じサーバー・グループに属しています。

リスト4-29 ubbconfigファイルのARTDPLサーバーを記述している*SERVERSセクションの例。
*SERVERS
ARTDPL     SRVGRP=GRP02
            SRVID=500
            CONV=N
            MIN=1 MAX=1 RQADDR=QKIXDPL REPLYQ=Y
            CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_dpl -e /home2/work9/demo/Logs/TUX/sysout/stderr_dpl -r -- -s KIXD -l SIMPAPP"

説明:

*SERVERS

サーバー・セクションの定義を示すTuxedo ubbconfigキーワード。

SRVGRP

ARTDPLが属するTuxedoグループ名です。

SRVID

ARTDPLのTuxedoサーバーの識別子です。

CONV=N

このサーバーが非対話モードで動作していることを示します。

MIN=1 and MAX=1

このサーバーのインスタンスは1つのみ実行可能であることを示します。

REPLYQ=Y

このサーバーが応答することを示します。

RQADDR=QKIXDPL

レスポンスに使用されるTuxedoキューの名前。

CLOPT

パラメータを含むサーバーに渡される引用符付きテキスト文字列です。

-o

次のファイルがサーバーの標準出力メッセージのために使用されることを示します。

-e

次のファイルがサーバーのエラー出力メッセージのために使用されることを示します。

-r

統計レポートを提供するために使用されるTuxedoパラメータです。

-s KIXD

KIXDトランザクションが実行されるCICS Runtime名を示します。

-l SIMAPP

起動時にSIMPDPLグループのコンポーネントだけが選択されることを示します。

Tuxedo tmadmin psrおよびpscコマンドを使用して、このサーバーが実行され、新しいサービスが公開されていないことを確認します。

リスト4-30 ARTDPLサーバーをチェックするtmadminコマンド
# tmadmin
...
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- --------------
ARTDPL        QKIXDPL     GRP02        500      0         0 (  IDLE )
ARTATR1       00012.00300 GRP02        300      0         0 (  IDLE )
ARTSTR1       00012.00200 GRP02        200      0         0 (  IDLE )
BBL            200933      KIXR           0      5       250 (  IDLE )
TMS_QM         GQUEUE_TMS  GQUEUE     30001      0         0 (  IDLE )
TMS_ORA        GRP02_TMS   GRP02      30001      0         0 (  IDLE )
ARTTCPL 00001.00101 TCP00        101      0         0 (  IDLE )
TMS_QM         GQUEUE_TMS  GQUEUE     30002      0         0 (  IDLE )
TMS_ORA        GRP02_TMS   GRP02      30002      0         0 (  IDLE )
TMS_ORA        GRP02_TMS   GRP02      30003      0         0 (  IDLE )
TMQUEUE        01000.01010 GQUEUE      1010      0         0 (  IDLE )
ARTCNX        QCNX015     GRP01         15      0         0 (  IDLE )
TMQFORWARD     01000.01020 GQUEUE      1020      0         0 (  IDLE )
ARTSTRN       QKIX110     GRP02         20      0         0 (  IDLE )
ARTATRN       QKIXATR     GRP02         30      0         0 (  IDLE )
ARTTSQ        00012.00040 GRP02         40      0         0 (  IDLE )
> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
TMS          TMS          TMS_QM     GQUEUE 30001       KIXR       0 AVAIL
TMS          TMS          TMS_ORA    GRP02  30001       KIXR       0 AVAIL
TMS          TMS          TMS_QM     GQUEUE 30002       KIXR       0 AVAIL
TMS          TMS          TMS_ORA    GRP02  30002       KIXR       0 AVAIL
TMS          TMS          TMS_ORA    GRP02  30003       KIXR       0 AVAIL
ASYNC_QSPACE TMQUEUE      TMQUEUE    GQUEUE  1010       KIXR       0 AVAIL
authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA02         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
ASYNC_QUEUE  ASYNC_QUEUE  ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA03   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA02   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA01   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
ASYNC_SA00   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
TSQUEUE      tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
> quit
#

CICS Runtimeでのリモート・プログラムの宣言

EXEC CICS LINK文で呼び出される分散プログラムをアプリケーションが使用できるようにするには、これらのプログラムをCICS Runtimeに対して宣言する必要があります。

  1. CICS APIのDPLサブセットのみを使用できるREMOTEプログラムを宣言する手順:
    • programs.descファイルで、REMOTESYSTEM (csv形式のデータセットの7番目のフィールド)をリモートSYSID名(リスト4-29のサンプル内のKIXD)に設定します。
    • デフォルトはlocal (empty field)で、これはFULL CICS APIを使用できるため、ローカル・プログラムが宣言されることを意味します。

      このSimple Applicationの例では、RSSAT000RSSAT001がリモートで、RSSAT002RSSAT003がローカルだと想定すると、programs.desファイルは次のように設定されます。

      リスト4-31 Simple Application programs.descでのリモート・プログラムの構成
      #PROGRAM;GROUP;DESCRIPTION;LANGUAGE;EXECKEY;STATUS;REMOTESYSTEM;REMOTENAME
      RSSAT000;SIMPAPP;Home Menu Program of Simple Application;COBOL; ;ENABLE;KIXD
      RSSAT001;SIMPAPP;Customer Detailed Inf Program of Simple Application;COBOL; ;ENABLE;KIXD
      RSSAT002;SIMPAPP;Customer Maintenance Program of the Simple Application;COBOL; ;ENABLE
      RSSAT003;SIMPAPP;Customer List of the Simple Application;COBOL; ;ENABLE
  2. Tuxedoをシャットダウンして、再起動します。
  3. Tuxedo tmadmin psrおよびpscコマンドを使用して、DPLプログラムのための新しいサービスが、ARTDPL: KIXD_RSSAT0001およびKIXD_RSSAT0003によって公開および管理されていることを確認します。
  4. 注意: 同名の問題を避けるために、これらの分散サービスの名前は、ubbconfigで定義されているTuxedo DOMAINIDと、その管理対象プログラムの名前から構成されます。
    リスト4-32 tmadminコマンドによるDPLサービスのチェック
    {deimos:work9}-/home2/work9/demo/Logs/TUX/sysout# tmadmin
    ...
    > psr
    Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
    ---------      ----------  --------      -- ------ --------- ---------------
    ARTDPL        QKIXDPL     GRP02        500      0         0 (  IDLE )
    ARTATR1       00012.00300 GRP02        300      0         0 (  IDLE )
    ARTSTR1       00012.00200 GRP02        200      0         0 (  IDLE )
    BBL            200933      KIXR           0      5       250 (  IDLE )
    TMS_QM         GQUEUE_TMS  GQUEUE     30001      0         0 (  IDLE )
    TMS_ORA        GRP02_TMS   GRP02      30001      0         0 (  IDLE )
    ARTTCPL 00001.00101 TCP00        101      0         0 (  IDLE )
    TMS_QM         GQUEUE_TMS  GQUEUE     30002      0         0 (  IDLE )
    TMS_ORA        GRP02_TMS   GRP02      30002      0         0 (  IDLE )
    TMS_ORA        GRP02_TMS   GRP02      30003      0         0 (  IDLE )
    TMQUEUE        01000.01010 GQUEUE      1010      0         0 (  IDLE )
    ARTCNX        QCNX015     GRP01         15      0         0 (  IDLE )
    TMQFORWARD     01000.01020 GQUEUE      1020      0         0 (  IDLE )
    ARTSTRN       QKIX110     GRP02         20      0         0 (  IDLE )
    ARTATRN       QKIXATR     GRP02         30      0         0 (  IDLE )
    ARTTSQ        00012.00040 GRP02         40      0         0 (  IDLE )
    > psc
    Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
    ------------ ------------ ---------  --------  --    -------  ------ ------
    KIXD_RSSAT0+ dplsvc       ARTDPL    GRP02    500       KIXR       0 AVAIL
    KIXD_RSSAT0+ dplsvc       ARTDPL    GRP02    500       KIXR       0 AVAIL
    TMS          TMS          TMS_QM     GQUEUE 30001       KIXR       0 AVAIL
    TMS          TMS          TMS_ORA    GRP02  30001       KIXR       0 AVAIL
    TMS          TMS          TMS_QM     GQUEUE 30002       KIXR       0 AVAIL
    TMS          TMS          TMS_ORA    GRP02  30002       KIXR       0 AVAIL
    TMS          TMS          TMS_ORA    GRP02  30003       KIXR       0 AVAIL
    ASYNC_QSPACE TMQUEUE      TMQUEUE    GQUEUE  1010       KIXR       0 AVAIL
    authfail     cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    CESF         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    CESN         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    CSGM         cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    disconnect   cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    connect      cnxsvc       ARTCNX    GRP01     15       KIXR       0 AVAIL
    SA03         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    SA01         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    SA00         kixsvc       ARTSTRN   GRP02     20       KIXR       0 AVAIL
    ASYNC_QUEUE  ASYNC_QUEUE  ARTATRN   GRP02     30       KIXR       0 AVAIL
    ASYNC_SA03   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
    ASYNC_SA01   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
    ASYNC_SA00   atrsvc       ARTATRN   GRP02     30       KIXR       0 AVAIL
    TSM00004_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00003_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00002_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00001_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSM00000_TSQ tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    TSQUEUE      tsqsvc       ARTTSQ    GRP02     40       KIXR       0 AVAIL
    > quit
    # .

切り詰められた値が表示されている場合に、その完全な詳細を参照するには、Tuxedo verboseコマンドを使用します。

リストされているサービスのスコープを、ARTDPL (SRVID=500)によって管理されるそれらだけに減らすには、Tuxedo pscコマンドに -i srvidパラメータを続けて使用し、表示を特定のサーバーIDに制限します。

この例では、すぐ上に表示されているように、ARTDPLサーバーのsrvidは500です。

リスト4-33 tmadminコマンドによる詳細モードでの特定のDPLサービスのチェック
# tmadmin
...
> verbose
Verbose now on.
> psc -i 500
      Service Name: KIXD_RSSAT003
      Service Type: USER
      Routine Name: dplsvc
         Prog Name: /home2/work9/KIXEDO/bin/ARTDPL
        Queue Name: QKIXDPL
        Process ID: 1327244, Machine ID: KIXR
          Group ID: GRP02, Server ID: 500
      Current Load: 50
  Current Priority: 50
  Current Trantime: 30
 Current Blocktime: 0
 Current BUFTYPECONV: 0
     Requests Done: 0
    Current status: AVAILABLE
      Service Name: KIXD_RSSAT001
      Service Type: USER
      Routine Name: dplsvc
         Prog Name: /home2/work9/KIXEDO/bin/ARTDPL
        Queue Name: QKIXDPL
        Process ID: 1327244, Machine ID: KIXR
          Group ID: GRP02, Server ID: 500
      Current Load: 50
  Current Priority: 50
  Current Trantime: 30
 Current Blocktime: 0
 Current BUFTYPECONV: 0
     Requests Done: 0
    Current status: AVAILABLE
> quit
#

 


CICS Common Work Area (CWA)の実装

z/OSでは、CWAは、プログラムがデータを相互に保存および交換するために使用できるCICSリージョンのために、このCICSリージョンが実行されているかぎりメモリー内に定義される共有記憶域です。

この領域は、CICS文EXEC CICS ADDRESS CWAが提供するポインタによってアドレッシングされます。アプリケーションにこのCICS文がある場合、CICS Runtime内にこの機能を実装する必要があります。

リスト4-34 COBOLのCWA使用例
LINKAGE SECTION.
01  COMMON-WORK-AREA.
    03  APPL-1-ID           PIC X(4).
    03  APPL-1-PTR          USAGE IS POINTER.
    03  APPL-2-ID           PIC X(4).
    03  APPL-2-PTR          USAGE IS POINTER.
PROCEDURE DIVISION.
. . .
    END-EXEC.
* Set up addressability to the CWA
    EXEC CICS ADDRESS
              CWA(ADDRESS OF COMMON-WORK-AREA)
    END-EXEC.

CICS ADDRESS CWAの後では、COMMON-WORK-AREAという名前のCOBOLグループのアドレスは、CICSによって割り当てられるCWAのアドレスに設定されますが、これは、COMMON-WORK-AREAがこのメモリー領域をマップおよび調整することを意味します。この共有メモリーの総量は、CICS起動時に固定および定義されます。

CICS RuntimeでCICS ADDRESS CWA機能をレプリケートする手順

  1. 実装されているメモリーのサイズは、z/OS CICS管理者に問い合わせてください。(参考までに、この値は、DFHSITのパラメータWRKAREAで定義されます。デフォルト値は512バイトで、サイズは0 - 3584バイトです)。別の方法は、CWAをアドレッシングしているプログラムに含まれるデータ・レコードの最大サイズを計算することです。
  2. ~/.profile UNIXシステム・ファイルを変更して新しいCICS Runtime変数(KIX_CWA_SIZE)をエクスポートし、それをDFHSITWRKAREAにある値に設定します。この変数が宣言されない場合、デフォルト値は0で、認可される間隔は0 - 32760バイトになります。
  3. 例:

       KIX_CWA_SIZE=512
  4. ~/.profile UNIXシステム・ファイルを変更して新しいCICS Runtime変数(KIX_CWA_IPCKEY)をエクスポートし、それをCWAとして使用されるクロス・メモリー・セグメントを定義するUnix IPCキーに指定します。
  5. 例:

       KIX_CWA_ IPCKEY=200944
  6. これらの変更を有効にするには、Tuxedoを再起動します。

 


CICS Transaction Work Area (TWA)の実装

z/OSでは、TWAは、プログラムがデータを相互に保存および交換するために使用できるCICSリージョンのために、1つのCICSトランザクションの実行中にメモリー内に定義される共有記憶域です。つまり、このTWAには、トランザクションに参加しているプログラムのみがアクセスできます。この領域は、CICS文EXEC CICS ADDRESS TWAによって提供されるポインタによってアドレスが指定されます。ご使用のアプリケーション内にEXEC CICS ADDRESS TWA文があれば、この機能をCICS Runtimeに実装する必要があります。

リスト4-35 COBOLでのTWAの使用例
LINKAGE SECTION.
01  TRANSACTION-WORK-AREA.
    03  APPL-1-ID           PIC X(4).
    03  APPL-1-PTR          USAGE IS POINTER.
    03  APPL-2-ID           PIC X(4).
    03  APPL-2-PTR          USAGE IS POINTER.
PROCEDURE DIVISION.
. . .
    END-EXEC.
* Set up addressability to the TWA
    EXEC CICS ADDRESS
              TWA(ADDRESS OF TRANSACTION-WORK-AREA)
    END-EXEC.

CICS ADDRESS TWAの後では、TRANSACTION-WORK-AREAという名前のCOBOLグループのアドレスは、CICSによって割り当てられたTWAのアドレスに設定されますが、これは、TRANSACTION -WORK-AREAがこのメモリー領域をマップおよび調整することを意味します。この共有メモリーの総量は、z/OS CSD構成ファイルのフィールドTWasizeで、各トランザクションに対して定義されます。

次の画面には、SA00トランザクション・コードに対してTWasizeパラメータが122に設定される、z/OS CEDAシステム・トランザクションの結果が表示されます。

図4-3 z/OS cedaシステム・トランザクションの例

z/OS cedaシステム・トランザクションの例

CICS Runtimeでこの機能をレプリケートする手順:

  1. TWAメモリーの必要量(TWasize>0)をレポートするには、CICS Runtime transactions.descファイルを変更します。
  2. CICS ADDRESS TWA文を持つプログラムを使用する各トランザクションに対して、transactions.descファイルを変更して、そのTWasizeをこのcsv形式ファイルの16番目のフィールドで宣言します。
  3. 表4-6 Simple Applicationの各トランザクション・コードに関連付けられているTWAサイズ値
    トランザクション
    TWAサイズ
    SA00
    0
    SA01
    100
    SA02
    200
    SA03
    300

    リスト4-36 transactions.descファイルのTWAの構成
    #Transaction;Group;Description;Program; ; ; ; ; ; ;Status; ; ; ;Tranclass ;TWA Size
    SA00;SIMPAPP;pg for simpapp;RSSAT000; ; ; ; ; ; ;ENABLED
    SA01;SIMPAPP;pg for simpapp;RSSAT001; ; ; ; ; ; ;ENABLED; ; ; ; ;100
    SA02;SIMPAPP;pg for simpapp;RSSAT002; ; ; ; ; ; ;ENABLED; ; ; ; ;200
    SA03;SIMPAPP;pg for simpapp;RSSAT003; ; ; ; ; ; ;ENABLED; ; ; ; ;300 
    注意: TWAサイズがゼロに等しいSA00トランザクションに対しては、何も示されません。
  4. CICS Runtime Tuxedoサーバーを再起動すると、トランザクション管理に関係するサーバー(ARTSTRN、ARTSTR1、ARTATRNとARTATR1)の異なるstderrファイルで変更を参照できます。
  5. リスト4-37 stderr_strn TWAの例
    |---------------------------------|
    | TRANSACTIONS loaded : <   4>    |
    |----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
    |    |          |                              |    |C|C|   |R|R|          |     |T|        |     |   |
    |TRAN|  GROUP   |            PROGRAM           |ALIA|M|O|PRI|E|E|  STATUS  |TASK |R|  TRAN  | TWA |MAX|
    |    |          |                              |    |D|N|   |S|S|          |DATA |A|  CLASS | SIZ |ACT|
    |    |          |                              |    |S|F|   |S|T|          |KEY  |C|        |     |IVE|
    |----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
    |SA00|SIMPAPP   |RSSAT000                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00000|999|
    |SA01|SIMPAPP   |RSSAT001                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00100|999|
    |SA02|SIMPAPP   |RSSAT002                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00200|999|
    |SA03|SIMPAPP   |RSSAT003                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00300|999|

ARTDPLでのTWAのサポート

ARTDPLにより実行されたトランザクション内のプログラムは、次の手順でTWAにもアクセスできるようになりました。

  1. ARTDPLトランザクションに必要なTWASizeを構成するために、CICS Runtimeのtransactions.descファイルを変更します。
  2. リスト4-38 transactions.descファイルでのARTDPLのTWAの構成
    #Transaction;Group;Description;Program; ; ; ; ; ; ;Status; ; ; ;Tranclass ;TWA Size
    CPMI;SIMPAPP;pg for simpapp;DFHMIRS; ; ; ; ; ; ;ENABLED; ; ; ; ;100

DFHMIRSは、インバウンド関数の送信を処理するCICS内の内部ミラー・プログラムです。CICS RTでは、このミラー・プログラムは、TWAが使用される場合に、トランザクション・リソース・ファイル内のリンク・プログラムの実行に使用するトランザクションの下で定義されている必要があります。リストでは、ARTDPLにより、CPMIという名前のトランザクションで、リモートのリンク・プログラムが実行され、そのTWAサイズは100に相当します。

注意: ユーザーは、アプリケーション・プログラムにDFHMIRSのような名前を付けることはできません。
  1. CICS Runtime Tuxedoサーバーを再起動すると、ARTDPL stdoutファイルで変更が表示されます。
  2. リスト4-39 stdout_dpl TWAの例
    |---------------------------------| 
    | TRANSACTIONS loaded : <   1>    |
    |----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
    |    |          |                              |    |C|C|   |R|R|          |     |T|        |     |   |
    |TRAN|  GROUP   |            PROGRAM           |ALIA|M|O|PRI|E|E|  STATUS  |TASK |R|  TRAN  | TWA |MAX|
    |    |          |                              |    |D|N|   |S|S|          |DATA |A|  CLASS | SIZ |ACT|
    |    |          |                              |    |S|F|   |S|T|          |KEY  |C|        |     |IVE|
    |----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
    |CPMI|SIMPAPP   |DFHMIRS                       |    |N|N|001|N|N|ENABLED   |USER |Y|        |00100|999|
    |-----------------------------------------------------------------------------------------------------|

 


CICSトランザクション・トリガー・モニター(ARTCKTI)の実装

ART CICS Transaction Trigger Monitor (ARTCKTI)は、CICS CKTIトランザクションと同じ動作をします。1つまたは複数のWebSphere MQ開始キュー上でリスニングし、トリガー・イベントが発生するとトリガー・メッセージを取得し、トリガー・メッセージをターゲット・トランザクションに転送します。

ワーク・フロー

ARTCKTIは、スタンドアロンのOracle Tuxedoサーバーです。ARTCKTIサーバーは、次のように動作します。

  1. 1つまたは複数のWebSphere MQ開始キューを監視します。
  2. 1つのサーバー・インスタンスでは、同じWebSphere MQキュー・マネージャの範囲内のWebSphere MQ開始キューのみ監視できます。異なるWebSphere MQキュー・マネージャのキューは、別々のARTCKTIサーバー・インスタンスで監視してください。

  3. トリガー・メッセージが着信すると、ARTCKTIサーバーはメッセージを取得します。
  4. トリガー・メッセージからトランザクションIDを取得します。
  5. 構造MQTMCからMQTMC2にトリガー・メッセージを転送します。
  6. MQTMCには多くのフィールドがあるため、構造をEXEC CICS START呼出しのパラメータとして送信すると、いつでも複雑になりすぎます。MQTMC2はCKTIで使用され、構造をデータとしてトリガー・モニターのSTARTリクエストに渡します。

  7. ターゲット・トランザクションを起動し、MQTMC2データを送信します。
  8. CICS CKTIトランザクションは、非同期呼出し(EXEC CICS START)を使用してターゲット・トランザクションを開始するため、ARTCKTIサーバーも、非同期呼び出し(Tuxedo tpacall)を使用してターゲット・トランザクションを開始します。

  9. ユーザー・トランザクションはCICS RETRIEVEによってトリガー・メッセージを取得し、WebSphere MQアプリケーション・キュー上で操作を実行します。
  10. ユーザー・トランザクションがメッセージを取得しないか、起動されたトランザクションが使用できない場合、WebSphere MQは、この条件ではトリガー・メッセージをもう送信しません。WebSphere MQ開始キューが再び開かれるか、新しいトリガー条件が満たされるまで、新しいトリガー・メッセージが発行されます。

    図4-4に、動作を示します。

    図4-4 WebSphere MQトリガー条件


    WebSphere MQトリガー条件

コマンドの構成

ARTCKTIは、ubbconfigファイル用に次のパラメータを受け入れます。

 


CICSリージョンの転送の実装

z/OSでは、ISSUE PASSコマンドを使用して、ターミナルに再接続しなくてもCICSリージョンを転送できます。ユーザーは、LOGONMSGを使用してデータ転送も実装できます。ISSUE PASSが呼び出されると、宛先リージョンのGMTRANが強制的に呼び出されます。

ART CICSも前述のシナリオをサポートします。次の構成が必要です。

ARTSRMサーバーの構成

ARTSRMを構成する必要があります。詳細は、ARTSRMの構成に関する項を参照してください。

環境変数の構成

環境変数ISC_ENABLEをYESに設定する必要があります。詳細は、ISC_ENABLEに関する項を参照してください。

CICS Runtime構成ファイルの宣言

system.desc

system.descでは、CICSリージョンの初期化パラメータを定義します。

リスト4-40 system.desc構成の例
[kixr]
APPLID=DBDCkixR
INITPARM=(ASINTP='Hello world')
[kixl]
APPLID=DBDCkixL
INITPARM=(ASINTP='Hello world')
GMTRAN=ISSS
LGNMSG=YES

この例では、2つのCICSリージョンが定義されています。SYSIDは、kixrおよびkixlとしてそれぞれ指定されています。kixlではGMTRAN=ISSSを指定しており、ユーザーがDBDCkixLにログインすると、トランザクションが自動的に起動されます。一方、kixrではGMTRANを指定していないため、デフォルトのCSGMが使用されます。kixlで指定されたLGNMSGにより、EXTRACT LOGONMSGISSUE PASSを使用したデータ転送機能が有効になります。system.descの詳細は、システム構成ファイルに関する項を参照してください。

transactions.descとprograms.desc

GMTRANが定義されている場合(CSGMCESNCESFなど、他のシステム・トランザクションではない)、トランザクション/プログラムをtransactions.desc/programs.descで構成し、ARTSTRN/ARTSTR1でロードする必要があります。transactions.desc/programs.descの詳細は、トランザクション構成ファイルに関する項およびプログラム構成ファイルに関する項を参照してください。

リスト4-41 transactions.desc構成およびprograms.desc構成の例
transactions.desc:
ISSS;SIMPAPPB;pg for simpapp;ISSPASSS
programs.desc:
ISSPASSS;SIMPAPPB;pg for simpapp;COBOL; ;ENABLED

terminals.desc (オプション)

この構成ファイルでは、ART CICSで使用可能なterminalを定義します。静的なLUNAMEを使用してART CICSにログオンする場合に、これは必須です。terminals.descの詳細は、 ターミナル構成ファイルに関する項を参照してください。

リスト4-42 terminals.desc構成の例
[terminal]
name=0001
netname=CICS0001
group=SIMPAPP
[terminal]
name=0002
netname=CICS0002
group=SIMPAPP

UBBの宣言

CICSリージョンの転送を実装するには、次の要件を満たす必要があります。

注意: 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は、各リージョンに含まれています。

リスト4-44 環境変数宣言の例
/home2/work9/demo> tmadmin> tmadmin
...
> psr
Prog Name      Queue Name  Grp Name      ID RqDone Load Done Current Service
---------      ----------  --------      -- ------ --------- ---------------
BBL            34790       KIXR           0     55      2750 (  IDLE )
TMS_QM         GQUEKIXL_T+ GQUEKIXL   30001      0         0 (  IDLE )
TMS_QM         GQUEKIXR_T+ GQUEKIXR   30001      0         0 (  IDLE )
ARTTCPL        00001.00101 TCP00        101      0         0 (  IDLE )
TMS_QM         GQUEKIXL_T+ GQUEKIXL   30002      0         0 (  IDLE )
TMS_QM         GQUEKIXR_T+ GQUEKIXR   30002      0         0 (  IDLE )
TMQUEUE        01020.01210 GQUEKIXL    1210      1        50 (  IDLE )
TMQUEUE        01010.01110 GQUEKIXR    1110      2       100 (  IDLE )
ARTADM         00011.00010 GRP01         10      0         0 (  IDLE )
ARTCNX         QCNX015     GRP01         15      0         0 (  IDLE )
ARTCNX         QCNX016     GRP02         16      0         0 (  IDLE )
ARTLOGN        QLGN018     GRP00         18      0         0 (  IDLE )
ARTSTRN        QKIX110     GRP12         20      0         0 (  IDLE )
...
> psc
Service Name Routine Name Prog Name  Grp Name  ID    Machine  # Done Status
------------ ------------ ---------  --------  --    -------  ------ ------
DBDCkixL     TMQUEUE      TMQUEUE    GQUEK+  1210       KIXR       1 AVAIL
DBDCkixR     TMQUEUE      TMQUEUE    GQUEK+  1110       KIXR       2 AVAIL
disconnect   cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
update       cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
inquire      cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
authfail     cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX     GRP01     15       KIXR       0 AVAIL
disconnect   cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
connect      cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
update       cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
inquire      cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
authfail     cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
CESF         cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
CESN         cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
CSGM         cnxsvc       ARTCNX     GRP02     16       KIXR       0 AVAIL
delsess      lognsvc      ARTLOGN    GRP00     18       KIXR       0 AVAIL
gensess      lognsvc      ARTLOGN    GRP00     18       KIXR       0 AVAIL
ART_LOGON    lognsvc      ARTLOGN    GRP00     18       KIXR       0 AVAIL
ISSS         strsvc       ARTSTRN    GRP12     25       KIXR       0 AVAIL
...

ART CICSへのログオン

正常に起動されると、ユーザーはART CICSに接続でき、ログオン画面が表示されて、ログオンするCICSリージョン(APPLID)の指定が要求されます。

図4-5 ログオン画面

ログオン画面

 


システム間通信の実装

ART CICS Runtimeでは、2つのz/OS相互通信機能の実装をサポートしています。

分散トランザクション処理(DTP)の実装

ART CICSでは、APPCマップおよびLUTYPE6.1プロトコルを介して、複数のART CICSリージョン内でのDTP接続をサポートしています。このため、DTP (APPC/LUTYPE6.1)の動詞を使用するCOBOLアプリケーションは、Oracle Tuxedo Application Rehosting Workbenchによる変換を受けた後、ART CICSに直接デプロイできます。

ART CICSはOracle TMAとの統合もサポートしており、APPCを介したART CICSリージョンとメインフレームCICSリージョン間のDTP接続も有効です。典型的なエンドツーエンドの使用例を、次に示します。

図4-6 典型的なエンドツーエンドの使用例

典型的なエンドツーエンドの使用例

このシナリオには、3つのART CICSリージョン(KIXAKIXBKIXC)があります。KIXAとKIXBはAPPCプロトコルを介して相互に通信し、KIXAとKIXCはLU61プロトコルを介して相互に通信します。

加えて、CICAという別のCICSリージョンがメインフレームにあり、KIXAまたはKIXBとAPPCプロトコルを介して通信します。

図4-6に示すように、これらのリージョンで発生する対話は、次のとおりです。

注意: CRM1はCICAからTMA LUへの接続です。

構成

このシナリオでDTP接続が動作するために必要な構成を、次に示します。

system.descでのCICSリージョンの定義

system.desc構成ファイルでは、次のCICSリージョンが定義されます。

system.descの詳細は、システム構成ファイルに関する項を参照してください。

connections.descでの接続の定義

connection.desc構成ファイルでは、次の接続が定義されます。

注意: CICAは外部リージョンのため、CICAの接続定義はローカルでは存在しません。

connections.descの詳細は、接続構成ファイルに関する項を参照してください。

programs.descでのプログラムの定義

programs.desc構成ファイルでは、次のプログラムが定義されます。

programs.descの詳細は、プログラム構成ファイルに関する項を参照してください。

transactions.descでのトランザクションの定義

transactions.desc構成ファイルでは、次のトランザクションが定義されます。

transactions.descの詳細は、トランザクション構成ファイルに関する項を参照してください。

UBBCONFIG構成

UBBCONFIGファイルでは、次のものが構成されます。

ARTSTRNおよびARTCTRNの詳細は、CICS Runtimeサーバーに関する項を参照してください。

注意: UBBCONFIGでのARTCTRN構成では、CONV=Yを指定する必要があります。
DMCONFIG構成

DMCONFIGファイルでは、次のものが構成されます。

非同期処理の実装

z/OSでは、非同期処理は、リモート・システム上のトランザクションを起動するSTARTコマンドを参照します。ART CICS Runtimeでは、STARTコマンドとSYSIDオプションを使用してこの機能の実装をサポートしています。

次の各項では、実行する必要がある構成タスクについて説明します。

system.descでのリージョンの定義

system.desc構成ファイルでCICSリージョンを定義します。KIXRおよびKIXXという2つのリージョンを定義する例を、次に示します。DBDCkixRおよびDBDCKIXXは、それぞれのアプリケーション定義です。

リスト4-45 system.descでのリージョン定義の例
[KIXR]
      APPLID=DBDCkixR
      INITPARM=(ASINTP='Hello world')
[KIXX]
      APPLID=DBDCKIXX
      INITPARM=(ASINTP='Hello worldL')

ARTSRMサーバーの構成

ARTSRMサーバーを構成する必要があります。詳細は、ARTSRMの構成に関する項を参照してください。

UBBCONFIGファイルの変更

各CICSリージョンのUBBCONFIGファイルでARTATRNサーバーを構成する必要があります。

リスト4-45に示されているように、KIXRおよびKIXXという2つのリージョンが定義されているものとします。構成の例を、次に示します。

リスト4-46 UBBCONFIGの変更例
*SERVERS
ARTATRN
	SRVGRP=GRP02
	SRVID=30
	CONV=N
	MIN=1 MAX=1 RQADDR=QKIXATR REPLYQ=Y
	CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_atrn -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS    /sysout/stderr_atrn -r -- -s KIXR -l SIMPAPP"
ARTSRM SRVGRP= GRPX SRVID=36 MIN=1 MAX=1 RQADDR= QKIXATR REPLYQ=Y CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_srm -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stderr_srm -r -- -s KIXR -l SIMPAPP "
ARTATRN
	SRVGRP=GRPX
	SRVID=35
	CONV=N
	MIN=1 MAX=1 RQADDR=QKIXATRX REPLYQ=Y
	CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_atrn -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS    /sysout/stderr_atrn -r -- -s KIXX -l SIMPAPP"
ARTSRM SRVGRP= GRPX SRVID=36 MIN=1 MAX=1 RQADDR= QKIXATRX REPLYQ=Y CLOPT="-o /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stdout_srm -e /u01/common/patches/yfli/KIX12110/test/CIT_ORA/strt/LOGS/sysout/stderr_srm -r -- -s KIXX -l SIMPAPP "
*SERVICES

同期処理の実装

ART CICS Runtimeでは、リモートCICSシステム上にある同期トランザクションの起動をサポートします。この機能を実装するには、次の構成が必要です。

環境変数の構成

ISC_ENABLE環境変数をYESに設定して、同期処理機能を有効にします。

system.descでのリージョンの定義

system.desc構成ファイルでCICSリージョンを定義します。KIXRおよびKIXXという2つのリージョンを定義する例を、次に示します。DBDCKIXRおよびDBDCKIXXは、それぞれのアプリケーション定義です。

リスト4-47 system.descでのリージョン定義の例
[KIXR]
      APPLID=DBDCKIXR
[KIXX]
      APPLID=DBDCKIXX

UBBCONFIGファイルの変更

UBBCONFIGファイルで次の構成を行います。

リスト4-47に示されているように、KIXRおよびKIXXという2つのリージョンが定義されているものとします。構成の例を、次に示します。

リスト4-48 UBBCONFIGの変更例
*GROUPS
GRPKIXR
	GRPNO=11      
	TMSNAME="TMS_ORA"
	TMSCOUNT=2
	OPENINFO="Oracle_XA:Oracle_XA+Acc=P/yfli/yfli+SqlNet=artkix+SesTm=600+LogDir=/LOGS/xa+DbgFl=0x20" 
GRPKIXX
	GRPNO=12         
	TMSNAME="TMS_ORA"
	TMSCOUNT=2
	OPENINFO="Oracle_XA:Oracle_XA+Acc=P/yfli/yfli+SqlNet=artkix+SesTm=600+LogDir=/LOGS/xa+DbgFl=0x20"
*SERVERS
ARTSTRN
        SRVGRP=GRPKIXR
        SRVID=1101
        CONV=Y         
        MIN=1 MAX=1 RQADDR=QKIXSTRR REPLYQ=Y
        CLOPT="-- -s KIXR -l SIMPAPP"
ARTSTRN
        SRVGRP=GRPKIXX
        SRVID=1201
        CONV=Y         
        MIN=1 MAX=1 RQADDR=QKIXSTRX REPLYQ=Y
        CLOPT="-- -s KIXX -l SIMPAPP"
*SERVICES
DEFAULT:  SVCTIMEOUT=0 TRANTIME=80
SB00      ROUTING=APPLID
SB01      ROUTING=APPLID
SB02      ROUTING=APPLID
SB03      ROUTING=APPLID
*ROUTING
APPLID FIELD=CX_APPLID RANGES="'DBDCKIXX':GRPKIXX,*:GRPKIXR" BUFTYPE="FML32"

この例では、KIXXリージョンからのリクエストはGRPKIXX内のARTSTRNにルーティングされ、他のすべてのリクエストはGRPKIXR内のARTSTRNにルーティングされます。

 


JCLのオンラインでの送信の実装

z/OSでは、CICSプログラムはWRITEQ TDコマンドでJCLを送信し、TDQによってJCL文をJES内部リーダーに渡すことができます。ART CICS Runtimeでは、特別なTDQ定義と、TuxJESシステムによって通知される内部サービスを使用して、この機能をサポートします。

この機能を使用する前に、ART Batch Runtime and TuxJES環境が設定されている必要があります。詳細は、 Tuxedo Job Enqueueing Service (TuxJES)の使用に関する項を参照してください。

UBBCONFIGファイルの設定

送信されたJCL文は、ARTTDQサーバーによってTuxJESに転送されます。このサーバーをアクティブ化するには、UBBCONFIGファイルの*SERVERSセクションでARTTDQを構成します。次に例を示します。

リスト4-49 UBBCONFIGでのARTTDQの構成の例
*SERVERS
ARTTDQ
        SRVGRP=GRP02
        SRVID=50
        MIN=1 MAX=1
        CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -s KIXR -L LIST1"

tdqextra.descの構成

JCL関数の送信を実装するには、tdqextra.desc構成ファイル内で次のフィールドを指定する必要があります。

例:

IRDR;SIMPAPP;ON LINE SUBMIT JOB;EXTRAQJ; ; ; ;V; ;32767;OUTPUT;DSN; ; ;Y;U;

説明:

Y

これが内部リーダーTDQであることを指定します。

U

ブロック書式がUNBLOCKEDであることを指定します。

詳細は、 『Oracle Tuxedo Application Runtime for CICSリファレンス・ガイド』TDキュー・エクストラパーティション構成ファイルに関する項を参照してください。

 


CICS Runtimeアプリケーション・データの出力の実装

ART CICS Runtimeでは、2つの方法でアプリケーション・データをCICS 3270プリンタに出力できます。

全般的な構成

どちらの方法を使用して出力を実装する場合も、まず、次の構成タスクを実行する必要があります。

  1. typeterms.descでプリンタ・ターミナル定義を構成します。次に例を示します。
  2. リスト4-50 typeterms.descでのプリンタ・ターミナル定義の構成の例
    [typeterm]
    name=IBM-3287-1
    color=YES
    defscreencolumn=80
    defscreenrow=24
    description="IBM 327x family printer"
    hilight=YES
    logonmsg=NO
    outline=NO
    swastatus=ENABLED
    uctran=NO
    userarealen=100 
注意: ART CICSでは、プリンタの代替サイズをサポートしません。そのため、IBM-3287-1の場合、typeterms.descで、scrnsize=alternatealtscreenrowおよびaltscreencolumnという属性を定義しないでください。
  1. プリンタのトランザクションを、同時に実行されることがないクラスに構成します。
  2. 例:

    TRCLASS1;UNIGRP; A tranclass bidon for UNIGRP; 1
  3. transactions.descで、プリンタ・プログラム定義をARTSTR1プログラム・グループに構成します。
  4. 例:

    PRNT;UNIGRP;pg for ARTSTR1; PRNTPROG; ; ; ; ; ; ;ENABLED; ; ; ;TRCLASS1
  5. programs.descで、プリンタ・プログラムをARTSTR1プログラム・グループに構成します。
  6. 例:

    PRNTPROG;UNIGRP;pg for UNIGRP;COBOL; ;ENABLED
  7. terminals.descでプリンタ・ターミナルを定義して、プリンタLUNAMEおよびTERMIDを指定します。
  8. 例:

    [terminal]
    name=PRT1
    netname=CICSPRT1
    group=UNIGRP
  9. UBBCONFIGCLOPT -lオプションを使用して、プリンタ・プログラム・グループをARTSTR1プログラム・グループに構成します。
  10. 例:

    CLOPT="-o stdout_str1 -e stderr_str1 -r -- -s KIXR -l UNIGRP"
  11. 次のいずれかを実行して、プリンタ・デバイスを指定します。
    • プリンタ・ターミナルとしてwc3270クライアントを使用している場合、ターミナル・タイプをIBM-3287-1に構成します。
    • 例:

      -tn IBM-3287-1
    • プリンタ・ターミナルとしてPCOMクライアントを使用している場合、次の図に示すように、Telnet3270インタフェースでLUNAMEを構成し、「セッション・パラメータ」インタフェースで「セッション・タイプ」「プリンタ」に設定します。
    • 図4-7 LUNAMEの構成


      LUNAMEの構成

      図4-8 PCOMセッション・タイプの設定


      PCOMセッション・タイプの設定

STARTコマンドによる出力の実装

図4-9 STARTコマンドによる出力

STARTコマンドによる出力

図4-9は、典型的な使用例を示しています。このようなシナリオでのSTARTコマンドによる出力の実装手順は、次のとおりです。

  1. Pcommターミナルが外部のプリンタ・デバイスに接続するように構成します。
  2. 以前に指定したLUNAMEを使用して、プリンタ・ターミナルからART TCPへの接続を確立します。
  3. ディスプレイ・ターミナルからART CICSへの接続を確立し、ディスプレイ・ターミナルからトランザクションAを開始します。
  4. トランザクションAはSTARTコマンドにより非同期トランザクションBを起動し、TERMIDを以前に定義したLUNAMEの1つとして指定します。
  5. トランザクションBはBMSまたはターミナル制御コマンドを起動し、コマンド・アプリケーション・データをプリンタ・ターミナルに送信します。最後に、プリンタ・ターミナルが、接続されている外部プリンタ・デバイスに出力用の印刷ジョブを送信します。

一時データによる出力の実装

一時データによる出力を実装するには、次の操作を行います。

  1. tdqintra.descATIFACILITYおよびFACILITYIDを次のように構成します。
  2. リスト4-51 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
  3. terminals.descでPRT2を定義します。
  4. 例:

    [terminal]
    name=PRT2
    netname=CICSPRT2
    group=UNIGRP
  5. ART CICSの開始後、PCOMM (LUNAME= CICSPRT2で指定されたプリンタ)とART CICSの間で接続を確立します。
  6. ATIユーザーの場合、次のように/Qを構成します。
  7. qcreate MTI1 fifo none 2 30 1m 0m "TDI_TRIGGER -q queue_name -d space_name"

    ATIトリガー・レベルに達すると、TDI_TRIGGERクライアントが起動され、-qオプションと-dオプションがART CICSに通知して、queue_nameおよびspace_nameに関連するトランザクションがターミナルPRT2で開始します。

 


CICSアプリケーションからのWebサービスの呼出しの実装

ART CICSでは、INVOKE WEBSERVICEコマンドを使用した、CICSアプリケーションからのWebサービスの呼出しをサポートしています。この機能を実装するには、次の項で説明する構成タスクを実行する必要があります。

WSDLファイルのMIFへの変換

Oracle SALTコマンド・ユーティリティwsdlcvtを使用して、WSDLファイルをTuxedoメタデータ・リポジトリ入力ファイル(MIF)に変換します。詳細は、Oracle SALTアプリケーションの構成に関する項を参照してください。

MIFからのVIEW32定義の生成

ART CICSには、MIFに従ってVIEW32定義を生成し、指定のFML32定義ファイルを更新する、Mif2View32というユーティリティがあります。生成されるVIEW32定義は、MIFと同じ構造を保持します。

次のコマンドを実行します。

Mif2View32 -i miffile -o viewfile -f fml32file  -w webservice.desc [-v]

説明:

-i miffile

メタデータ入力ファイル名を指定します。

-o viewfile

出力のVIEW32定義ファイル名を指定します。

-f fml32file

更新されるFML32定義ファイルを指定します。

-w webservice.desc

webservice.desc構成ファイルを指定します。

-v

詳細を出力するかどうかを指定します。

詳細は、 Mif2View32(1)に関する項を参照してください。

VIEW32定義からのコピーブックの生成(オプション)

ART CICSで作成されたアプリケーションの場合、viewc32 – C – S viewfileを実行すると、生成されたVIEW32定義からCOBOLコピーブックが生成されます。詳細は、『Oracle Tuxedoコマンド・リファレンス』viewc、viewc32(1)に関する項を参照してください。

VIEW32定義の手動での変更(オプション)

メインフレームから移行された特定の種類のアプリケーションについては、VIEW32定義フィールドを変更し、オフセットを手動で調整して、コピーブックとVIEW32定義間の1対1マッピングを有効にする必要があります。

次の説明は、関連する特性を持つCOBOLコピーブックに適用されます。

次の項目を確認し、必要に応じて変更を行います。

次に例を示します。たとえば、リスト4-52のようなコピーブックがあり、リスト4-53のようなVIEW32定義を生成してVIEW32定義をコピーブックにマップした場合、VIEW32をリスト4-54のように変更する必要があります。

リスト4-52 コピーブックの例
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). 
リスト4-53 VIEW32 (前)の例
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
リスト4-54 VIEW32 (後)の例
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の構成

webservice.desc構成ファイルでNEWCPYおよびTRANSACTIONを指定します。次に例を示します。

リスト4-55 webservice.descでのNEWCPYおよびTRANSACTIONの指定例
[DFH0XCMNOperation]
      REQUEST=DFH0XCMNOperation_v
      RESPONSE=DFH0XCMNOperationResponse_v
      NEWCPY=Y
      TRANSACTION=N

UBBCONFIGの変更

UBBCONFIGファイルでTMMETADATAサーバーおよびGWWSサーバーを構成します。次に例を示します。

リスト4-56 UBBCONFIGでTMMETADATAおよびGWWSを追加する例
*SERVERS
      ...
      TMMETADATA SRVGRP=GROUP2 SRVID=2 CLOPT="-A -- -f pmu.repos"
      GWWS SRVGRP=GROUP2 SRVID=3 CLOPT="-A -r -- -iGWWS1"

 


CICS Runtimeログ

Tuxedoシステム・ログ

他のTuxedoアプリケーションと同様に、CICS Runtimeは、専用のシステム・ログに特定のイベントと問題を記録するTuxedoによって管理されます。

このログは、名前がTuxedo ubbconfigファイルのシステム変数ULOGPFXに含まれる標準Tuxedoユーザー・ログ(ULOG)です。

例:

ULOGPFX="/home2/work9/demo/Logs/TUX/log/ULOG"

 


CICS Runtimeサーバー・ログ

Tuxedo ubbconfigファイルでサービスを宣言する場合、各サーバーでは、CLOPTオプションが次の2つのファイルを含むように定義されています。

各CICS Runtimeサーバー用の異なるstdoutとstderrメッセージ・ファイルは、次のとおりです。

表4-7 サーバー別メッセージ・ファイル
サーバー名
-o標準出力ファイル
-e標準エラー・ファイル
ARTTCPL
stdout_tcp
stderr_tcp
ARTCNX
stdout_cnx
stderr_cnx
ARTSTRN
stdout_strn
stderr_strn
ARTSTR1
stdout_str1
stderr_str1
ARTATRN
stdout_atrn
stderr_atrn
ARTATR1
stdout_atr1
stderr_atr1
ARTTSQ
stdout_tsq
stderr_tsq
ARTDPL
stdout_dpl
stderr_dpl

注意: サーバーのstderrファイルには、マウントされているすべての構成ファイルが記述されます。stderrファイルには、サーバーがブートされるときに発生した問題に関するエラー・メッセージだけでなく、ロードされている様々なリソースに関する情報も含まれています。具体的には、次の情報があります。

この例では次の点に注意してください。

 


プログラムの無効化と有効化

場合により、システムに大幅に影響を与えるプログラムで問題が発生し、エンド・ユーザーによる実行を禁止することによって、プログラムを緊急に除去する必要があります。当面のところ、これは一時的にシステムを安定させる助けになり、機能障害を解析および解決するための時間を提供します。

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エラーを処理する方法に応じて、エラー・メッセージが表示されます。

リスト4-58 programs.descでDISABLEDに設定されたサンプルSimple Application SA02 COBOLプログラム
#PROGRAM;GROUP;DESCRIPTION;LANGUAGE; ; ;STATUS 
RSSAT000;SIMPAPP; Home Menu Program of the Simple Application ;COBOL
RSSAT001;SIMPAPP; Customer Detailed Information Program of the Simple Application ;COBOL; ; ;ENABLED;
RSSAT002;SIMPAPP; Customer Maintenance Program of the Simple Application;COBOL; ; ;DISABLED;
RSSAT003;SIMPAPP; Customer List of the Simple Application ;COBOL

プログラムの有効化

プログラムを有効化するために必要なのは、反対の操作をすることだけであり、STATUSフィールドをDISABLEDからENABLED、または「 」(少なくとも1つのスペース)に変更します。

CICS Runtime Tuxedoサーバーを停止して再起動すると、1つ以上のプログラムの変更が有効になります。

プログラム・ステータスの変更チェック

異なるトランザクション・サーバーまたはCICS Runtimeのログを確認すると、stderr_*ログで、変更されたステータスの変更に気づきます。

このサーバーの起動直後のログは、このプログラムが無効にされていることを(斜体で)示しています。

リスト4-59 プログラム・ステータスを示すログ・レポート
Groups loaded: <0001>
|----------|
|  GROUP   |
|----------|
|SIMPAPP   |
|----------|
ARTSTRN: Read config done
|---------------------------------------------------|
| TRANCLASS loaded : <   2>                         |
|---------------------------------------------------|
|           TRANCLASS          |  GROUP   |MAXACTIVE|
|------------------------------|----------|---------|
|TRCLASS1                      |SIMPAPP   |      001|
|TRCLASS2                      |SIMPAPP   |      002|
|---------------------------------------------------|
|--------------------------------------------------|
| PROGRAMS loaded : <   4>                         |
|------------------------------------------------------------------|
|            PROGRAM           |  GROUP   |LANGUAGE|EXEC|  STATUS  |
|                              |          |        |KEY |          |
|------------------------------|----------|--------|----|----------|
|RSSAT000                      |SIMPAPP   |COBOL   |USER|ENABLED   |
|RSSAT001                      |SIMPAPP   |COBOL   |USER|ENABLED   |
|RSSAT002                      |SIMPAPP   |COBOL   |USER|DISABLED  |
|RSSAT003                      |SIMPAPP   |COBOL   |USER|ENABLED   |
|------------------------------------------------------------------|
|---------------------------------|
| TRANSACTIONS loaded : <   4>    |
|----------------------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|    |          |                              |    |C|C|   |R|R|          |     |T|        |     |   |
|TRAN|  GROUP   |            PROGRAM           |ALIA|M|O|PRI|E|E|  STATUS  |TASK |R|  TRAN  | TWA |MAX|
|    |          |                              |    |D|N|   |S|S|          |DATA |A|  CLASS | SIZ |ACT|
|    |          |                              |    |S|F|   |S|T|          |KEY  |C|        |     |IVE|
|----|----------|------------------------------|----|-|-|---|-|-|----------|-----|-|--------|-----|---|
|SA00|SIMPAPP   |RSSAT000                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00000|999|
|SA01|SIMPAPP   |RSSAT001                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00000|999|
|SA02|SIMPAPP   |RSSAT002                      |    |N|N|001|N|N| ENABLED   |USER |Y|        |00000|999|
|SA03|SIMPAPP   |RSSAT003                      |    |N|N|001|N|N|ENABLED   |USER |Y|        |00000|999|
|-----------------------------------------------------------------------------------------------------|
Warning: zero TSQMODEL loaded!!

CICS Runtime用のアプリケーションの削除と追加

場合により、アプリケーションのすべてのコンポーネントを、特定のマシンから完全に削除するか、別のマシンに移動したいことがあります。アプリケーションで使用するすべてのリソースが、そのアプリケーション専用の1つ以上のリソース・グループで定義されている場合、CICS Runtimeでこれらのグループを抑制し、最終的に別の場所にインストールするだけで十分です。

各CICS Runtime Tuxedoサーバーは、CLOPTオプションの-lパラメータの後に含まれる、起動時に選択およびインストールされるグループのリストを読み取ります。アプリケーションに対してグループを削除または追加するには、各CICS Runtime Tuxedoサーバーに対して、このリストからグループを削除または追加すれば十分です。

1つ以上のプログラムでの変更は、CICS Runtime Tuxedoサーバーを停止して再起動すると有効になります。

リスト4-60 ARTSTRNサーバーにおけるアプリケーションの例
ARTSTRN    SRVGRP=GRP02
            SRVID=20
            CONV=Y
            MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
            CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn 
            -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
            s KIXR -l SIMPAPP"

1つ以上のグループを追加する場合、以前に定義されたグループに対し、新しいグループを「:」文字で区切って連結する必要があります。

リスト4-61 ARTSTRNサーバーでgroup1とgroup2を追加する例
ARTSTRN    SRVGRP=GRP02
            SRVID=20
            CONV=Y
            MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
            CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn 
            -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
            s KIXR -l SIMPAPP:GROUP1:GROUP2"

グループを削除する場合、-lリストから存在するグループを削除し、残りのグループの間に「:」文字を1つだけ残します。

リスト4-62 ARTSTRNサーバーでgroup1を削除する例
ARTSTRN    SRVGRP=GRP02
            SRVID=20
            CONV=Y
            MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
            CLOPT="-o /home2/work9/demo/Logs/TUX/sysout/stdout_strn 
            -e /home2/work9/demo/Logs/TUX/sysout/stderr_strn -r -- -
            s KIXR -l SIMPAPP:GROUP2"
注意:

 


CICS RuntimeのCプログラム・サポート

ART CICSでは、CICSアプリケーションをC言語で実装して実行できます。

CICS RuntimeでのCプログラムの実行

各CプログラムはCOBOLプログラムとしてロードされ、COBOLランタイムで実行されるため、CICS Cプログラム・サポートは、COBOL製品に依存します。

Cプログラミングの制限と要件

ART CICSにおけるCICS/Cサポートの制約と要件を、次にリストします。

CからEIBへのアクセス

EXECインタフェース・ブロック(EIB)のアドレスは、引数としてC main関数に渡されません。しかし、ユーザーは次の2つの方法を使用して、EIBのアドレスを取得できます。

CからCOMMAREAへのアクセス

COMMAREAのアドレスは、引数としてC main関数に渡されません。しかし、ユーザーは次の2つの方法を使用して、COMMAREAのアドレスを取得できます。

CICSコマンド・トランスレータ

ART CICSには、CICS/COBOL API変換用のprepro-cics-C.plがあります。prepro-cics-C.plの詳細は、 prepro-cics-C.plに関する項を参照してください。

Cプログラムのコンパイル

CプログラムをCOBOLランタイムで確実にロードするためには、gcc/g++ではなくCOBOLコンパイラを使用してCプログラムをビルドしてください。

cobを使用して、Cソース・コードを呼出し可能な共有オブジェクトとしてコンパイルします。動的ライブラリには、Cソース・ファイル名と同じ名前で大文字の名前が必要です。

例:

CPYINC=../includes
cob -z,CC  zample_treated.c  -o ZAMPLE.so -CC -I${CPYINC}

  先頭に戻る       前  次