3 TIPの作成
この以降のセクションでは、トランザクション・インタフェース・パッケージ(TIP)を定義、生成、コンパイルする方法について詳しく説明します。 これは、リモート・ホスト・トランザクション・プログラム(RTP)がすでに存在することを前提としています。 このトランザクション・プログラムは、TIPがどのように定義されているか、およびTIPがクライアント・アプリケーションによってどのように使用されているかを指示する操作上の特徴を有します。
次のステップでは、リモート・ホスト・トランザクション(RHT)で使用するためのTIPを作成します:
-
RHTを評価
-
PGAUステートメントを作成
-
TIPの定義と生成
-
TIPのコンパイル
TIPクリエータのための特権の付与
RHTの評価
以下のステップに従って、リモート・ホストのトランザクション・データ交換を識別し、慣れてください。
リモート・ホスト・トランザクションの識別
まず、RHTのデータ交換ステップを特定する必要があります。 これらは、RHTプログラムに組み込まれた送受信呼び出しです。
ゲートウェイがSNA通信プロトコルを使用している場合は、次のようにします:
RHTのデータ交換ステップは、次の言語で識別されます:
-
COBOLは次の目的で使用できます:
-
CICS
-
IMS
-
-
IBM 370アセンブラを使用することができます:
-
CICS
-
IMS
-
-
IBM REXXを以下の目的で使用することができます:
-
CICS
-
IMS
-
z/OS
-
ゲートウェイがTCP/IP通信プロトコルを使用している場合は、次のようにします:
PGAU DEFINE CALLコマンド
すべてのデータ交換のコール・リストを作成します。 このリストは一連のPGAUのDEFINE CALL
文を指示します。 このPGAUコマンドの詳細については、「手続き型ゲートウェイ管理ユーティリティ」の"DEFINE CALL"を参照してください。
各コールで使用する3つの重要なパラメータは次のとおりです:
-
cname
: 作成されるコール定義の名前。 -
dname
: 交換されるデータ構造の名前。そして -
それがsend (
OUT
)であるかreceive (IN
)であるかにかかわらず、
RHT sendはTIP OUT
に対応し、RHT receiveはTIP IN
に対応します。
通信プロトコルがSNAの場合: PGAUのDEFINE CALL
コマンドの詳細については、フレキシブルなコール・シーケンスを参照してください。
通信プロトコルがTCP/IPの場合: PGAUのDEFINE CALL
コマンドの詳細については、フレキシブルなコール・シーケンスを参照してください。
PGAUコール・エントリは一度だけ定義されるため、重複を排除します。
このコール・リストは、使用される順番ではなく、TIP関数呼び出しを定義します。 各呼び出しが行われる順序はトランザクションの振る舞いであり、上位レベルのアプリケーションによってTIPに行われた呼び出しの順序が決定され、TIPはデータベース・ゲートウェイ・サーバーを介してRHTを呼び出します。 この呼び出しシーケンスは、アプリケーションとRHT間の同期を維持するために重要ですが、TIPはアプリケーションのアクセス・メソッドに過ぎず、呼び出しの上位レベルの順序についての知識はありません。
PGAU DEFINE DATAコマンド
RHT呼び出しリストの各呼び出しについて、呼び出しバッファ内で送受信されるRHTデータ構造を識別します。
そのようなすべての構造のデータ・リストを作成します。 このリストは一連のPGAUのDEFINE DATA
文を指示します。
DEFINE DATA
に使用する2つの重要なパラメータは次のとおりです:
-
dname:
作成するデータ定義の名前。そして -
dname.ext:
は、データ定義が格納されているファイルです。
PGAUのデータ入力は一度しか定義されていないので、重複を排除します。
注意:
COBOLのレコード・レイアウト(コピーブック)をゲートウェイ・システムに移動します。
PGAUは、データ・アイテムを定義するときに、コピーブックを入力として使用できます。 交換するデータ・アイテムを特定したら、ファイル転送プログラムを使用してコピーブックをゲートウェイ・システムにダウンロードします。 コピーブックは後でデータ・アイテムを定義するために使用される。 この例で使用されているサンプルのコピーブックは、「管理ユーティリティのサンプル」に文書化されています。
SNAを使用するゲートウェイでのPGAU DEFINE TRANSACTIONコマンド
RHTプログラムのネットワーク・アドレス情報を決定します。 ネットワークまたはOLTPシステム・プログラマがこの情報を提供できます。
PGAU DEFINE TRANSACTION
に使用する5つの重要なパラメータは次のとおりです:
-
サイド・プロファイル名
-
TP name
-
LU name
-
LOGMODE
-
SYNCLEVEL
また、OLTPがデータを期待する言語のグローバリゼーション・サポート・キャラクタ・セット(charset
)も識別する必要があります。
この時点で、ゲートウェイがSNAを使用している場合は、「PGAU文の作成」に進みます。
TCP/IPを使用するゲートウェイでのPGAU DEFINE TRANSACTIONコマンド
このコマンドを使用する前に、 PGA_TCP_IMSC
表内の列として定義されているIMS Connectホスト名(またはTCP/IPアドレス)、ポート番号、およびその他のIMS Connectパラメータを知る必要があります。 pg4tcpmap
ツールを使用してパラメータをTCP/IPにマッピングするための準備については、「PG4TCPMAPコマンド(TCP/IPのみ)」を参照してください。
pg4tcpmap
ツールを実行するときは、一意の名前(サイド・プロファイル名)を指定する必要があります。 その名前は、あなたのTIPを作成するためにここで使用しているのと同じ名前でなければなりません。
ゲートウェイをSNAからTCP/IP通信プロトコルに変換してIMSトランザクションを呼び出す場合は、TIPを再生成する必要があります。
詳細については、「手続き型ゲートウェイ管理ユーティリティ」を参照してください。
PGAU文の作成
RHTを評価した後、PG DDに配置するためのTIPからPGAUを定義します。
-
データ・リストの各エントリに対して
DEFINE DATA
文を記述します。 たとえば、RHTに3つの異なるデータ構造がある場合、データ定義は次のようになります:DEFINE DATA dname1 LANGUAGE(IBMVSCOBOLII) INFILE(dnamel.ext); DEFINE DATA dname2 LANGUAGE(IBMVSCOBOLII) INFILE(dname2.ext); DEFINE DATA dname3 LANGUAGE(IBMVSCOBOLII) INFILE(dname3.ext);
次に、これらのデータ定義を含むソース・ファイルをPGAUが入力として読み取ることができるディレクトリにコピーまたは転送する必要があります。
-
コール・リストの各エントリの
DEFINE CALL
文を記述します。 例えば、あなたのRHTが受信センド受信セン・ドシーケンスを持っていたなら、あなたのコール定義は次のようになります:DEFINE CALL cname1 PARMS((dnamel IN)); DEFINE CALL cname2 PARMS((dname2 OUT)); DEFINE CALL cname3 PARMS((dname3 IN)); DEFINE CALL cname4 PARMS((dname2 OUT));
注意:
必要に応じて、データ送信シーケンスを変更しない限り、コール定義を書き換えて、データ送信をより少ないチェンジに統合することができます。 次に例を示します。
DEFINE CALL cname1 PARMS((dname1 IN),
(dname2 OUT));
DEFINE CALL cname3 PARMS((dname3 IN),
(dname2 OUT));
これにより、アプリケーションとTIP間の呼び出しが、4回の呼び出しから各呼び出しで
IN
およびOUT
パラメータを渡す2回の呼び出しに削減されます。 TIPは、OUT
パラメータの前に常にIN
パラメータを処理するため、データ送信シーケンスは変更されません。 しかし、この統合は必ずしも可能ではありません。通信プロトコルがSNAの場合: PGAUの
DEFINE CALL
コマンドの詳細については、フレキシブルなコール・シーケンスを参照してください。通信プロトコルがTCP/IPの場合: PGAUの
DEFINE CALL
コマンドの詳細については、フレキシブルなコール・シーケンスを参照してください。 -
ネットワーク・アドレスとグローバリゼーション・サポート情報を指定して、すべての呼び出しを含む
DEFINE TRANSACTION
文を作成します:DEFINE TRANSACTION tname CALLS(cname1 cname2, .... cnameN) ENVIRONMENT(IBM370) SIDEPROF(profname) | TPNAME(tpid) LUNAME(luname) LOGMODE(mode) SYNCLEVEL(n) NLS_LANGUAGE(charset);
-
a
GENERATE
文を追加すると、TIP仕様を作成できます:GENERATE tname
PGAUスクリプト・ファイルの作成
前のセクションでは、PGAUコマンドライン・プロセッサを介してPGAU文を実行するために必要なステップについて説明します。 時間を節約する手段として、すべての文(DEFINE DATA
、DEFINE CALL
、およびDEFINE TRANSACTION
)を、tname.ctl
という名前の単一の PGAUスクリプト・ファイルに、次の順序で記述することができます:
-
データを定義
-
コールを定義
-
トランザクションを定義
-
generate
これは、tname.ctl
PGAUスクリプト・ファイルの例です:
UNDEFINE TRANSACTION tname Version(all); UNDEFINE CALL cname1 Version(all); UNDEFINE CALL cname2 Version(all); UNDEFINE DATA dname1 Version(all); UNDEFINE DATA dname2 Version(all); UNDEFINE DATA dname3 Version(all); DEFINE DATA dname1 LANGUAGE(IBMVSCOBOLII) INFILE(dnamel.ext); DEFINE DATA dname2 LANGUAGE(IBMVSCOBOLII) INFILE(dname2.ext); DEFINE DATA dname3 LANGUAGE(IBMVSCOBOLII) INFILE(dname3.ext); DEFINE CALL cname1 PARMS(dname1 IN), (dname2 OUT)); DEFINE CALL cname2 PARMS(dname3 IN), (dname2 OUT)); DEFINE TRANSACTION tname CALLS(cname1, cname2, .... cnameN) ENVIRONMENT(IBM370) SIDEPROF(profname) | TPNAME(tpid) LUNAME(luname) LOGMODE(mode) SYNCLEVEL(n) NLS_LANGUAGE(charset); Generate tname
TIPの定義と生成
制御ファイルを作成したら、PGAUを使用してPG DDエントリとTIP仕様ファイルを作成します。
注意:
PGAUを実行するユーザーIDには、次のものが必要です:
-
指定ファイル(
pgau.pkh, pgau.pkb
、およびpgau.doc
)を出力するための書き込みアクセス。ここで、pgau
はデフォルト名です。そして -
データ定義ソース・ファイル(
dname.ext
)への読み取りアクセス。ここで、dname.ext
はPGAUDEFINE DATA
文で指定されます。
Oracle Database Gateway for APPC管理者ユーザーIDに格納されているPG DDに対してPGAUを呼び出します:
Microsoft Windowsの場合:
C:\> pgau
PGAU> connect pgaadmin\pw@database_specification_string
UNIXベース・システムの場合:
$ pgau
PGAU> connect pgaadmin/pw@database_specification_string
次のコマンドを発行します。
PGAU> set echo on PGAU> spool tname.def PGAU> @tname.ctl PGAU> spool off
TIPは今すぐコンパイルする準備ができています。 デフォルトでは、 GENERATE
文は、現在のディレクトリの次の出力ファイルにTIP仕様を書き込みます:
pgau.pkh (TIP Header) pgau.pkb (TIP Body) pgau.doc (TIP content documentation)
注意:
必要に応じて、 spoolおよびechoをスクリプト(tname.ctl
)に追加するか、PG DDロールを使用するなどの他の拡張機能を作成し、共有PG DDのPGAU GROUP
文を作成することもできます。
-
ゲートウェイがSNAを使用している場合: 詳細については、クライアント・アプリケーション開発(SNAのみ)を参照してください。
-
ゲートウェイがIMS ConnectのTCP/IPサポートを使用している場合: 詳細については、クライアント・アプリケーション開発(TCP/IPのみ)を参照してください。
TIPのコンパイル
PGAUを終了します。 現在のディレクトリに残り、 SQL*Plusを呼び出します。
Microsoft Windowsの場合:
C:\> sqlplus userid/pw@database_specification_string
SQL> set echo on
SQL> @pgau.pkh
SQL> @pgau.pkb
UNIXベース・システムの場合:
$ sqlplus userid/pw@database_specification_string
SQL> set echo on
SQL> @pgau.pkh
SQL> @pgau.pkb
最後の2つのコマンドはそれぞれTIP仕様と本文をコンパイルします。
これで、クライアント・アプリケーションから呼び出せるTIPがコンパイルされました。 クライアント・アプリケーションがすでに書かれている場合は、テストを開始することができます。
クライアント・アプリケーションの設計とTIPのコンパイルの詳細については、「Oracle Database Gateway for APPCの紹介」と「TIP内部」を参照してください。
ゲートウェイがSNAを使用している場合: PGAU文の構文と使用法については、クライアント・アプリケーション開発(SNAのみ)を参照してください。
ゲートウェイがIMS ConnectのTCP/IPサポートを使用している場合: PGAU文の構文と使用法については、クライアント・アプリケーション開発(TCP/IPのみ)を参照してください。
TIPコンテンツ・ドキュメント(tipname.doc)
このセクションでは、ユーザーがPGAUのGENERATE
コマンドを発行したときに生成されるTIPドキュメンテーション・ファイルについて説明します。 このTIPコンテンツ・ファイルは、TIPで利用可能な関数呼び出しとPL/SQL
変数とデータ型を記述します。
PGAU GENERATE
は、常にtipname
.doc
という名前のTIPコンテンツ・ファイルを生成します。 ファイル名はPGAUのGENERATE
コマンドで指定されたトランザクションの名前であり、ファイル・タイプは常に.doc
です。 このTIPコンテンツ・ファイルには、次のセクションが含まれています:
-
このセクションには、TIPが生成されるステータスが含まれています。
-
このセクションでは、定義されたトランザクション属性を識別します。 これらは
PGAU DEFINE TRANSACTION
の定義の結果です。 -
このセクションでは、トランザクションを初期化および終了するためにユーザー・アプリケーションによって行われた呼び出しの構文を示します。 PGAUは、TIPまたはトランザクションの定義方法に関係なく、すべてのTIPにこれらのコールを生成します。
-
このセクションでは、アプリケーションがトランザクションと対話するためにユーザーが定義するコールの構文を示します。
-
このセクションでは、各呼び出しパラメータで指定されたユーザー・データ定義によって暗示される、TIPパッケージのパブリック・データ型宣言を識別します。
-
このセクションには、アプリケーションによって参照されるか、またはアプリケーションによって参照されるTIP変数が含まれています。