3 ヒントの作成
このの後の項では、トランザクション・インタフェース・パッケージ(TIP)の定義、生成およびコンパイル方法を詳細に説明します。 リモート・ホスト・トランザクション・プログラム(RTP)がすでに存在することを前提としています。 このトランザクション・プログラムには、TIPの定義方法およびクライアント・アプリケーションによるTIPの使用方法を指定する操作特性があります。
次のステップでは、リモート・ホスト・トランザクション(RHT)で使用するヒントを作成します:
-
RHTの評価
-
PGAU文の準備
-
ヒントの定義と生成
-
ヒントのコンパイル
3.1 ヒント作成者に対する権限の付与
3.2 RHTの評価
次のステップに従って、リモート・ホスト・トランザクション・データ交換を特定し、理解します。
3.2.1 リモート・ホスト・トランザクションの特定
まず、RHTデータ交換ステップを確認する必要があります。 これらは、RHTプログラム内に埋め込まれた送信および受信コールです。
ゲートウェイがSNA通信プロトコルを使用している場合:
RHTデータ交換ステップは、次の言語で識別されます:
-
COBOLは、次の用途に使用できます:
-
CICS
-
IMS
-
-
IBM 370アセンブラは次の用途に使用できます:
-
CICS
-
IMS
-
-
IBM REXXは、次の用途に使用できます:
-
CICS
-
IMS
-
z/OS
-
ゲートウェイがTCP/IP通信プロトコルを使用している場合:
3.2.2 PGAU DEFINE CALLコマンド
すべてのデータ交換のコール・リストを作成します。 このリストでは、一連のPGAU DEFINE CALL
文を指定します。 このPGAUコマンドの詳細は、「プロシージャ・ゲートウェイ管理ユーティリティ」の" DEFINE CALL "を参照してください。
各コールに使用する3つの重要なパラメータは次のとおりです:
-
cname
: 作成するコール定義の名前 -
dname
: 交換するデータ構造の名前 -
送信(
OUT
)か受信(IN
)か
RHT送信はTIP OUT
に対応し、RHT受信はTIP IN
に対応します。
通信プロトコルがSNAの場合: PGAUのDEFINE CALL
コマンドの詳細は、柔軟なコール順序を参照してください。
通信プロトコルがTCP/IPの場合: PGAUのDEFINE CALL
コマンドの詳細は、柔軟なコール順序を参照してください。
PGAUコール・エントリは1回のみ定義されるため、重複を排除します。
このコール・リストは、TIP関数コールが使用される順序ではなく、TIP関数コールを定義します。 各コールが行われる順序はトランザクションの動作であり、高レベルのアプリケーションによるTIPへのコールの順序が決定され、その後、データベース・ゲートウェイ・サーバーを介してRHTがコールされます。 この呼び出しシーケンスは、アプリケーションとRHT間の同期を維持するために重要ですが、TIPはアプリケーションのアクセス・メソッドにすぎず、より高いレベルの呼び出しシーケンスを認識できません。
3.2.3 PGAU DEFINE DATAコマンド
RHTコール・リスト内のコールごとに、コール・バッファで送受信されるRHTデータ構造体を識別します。
このようなすべての構造のデータ・リストを作成します。 このリストでは、一連のPGAU DEFINE DATA
文を指定します。
DEFINE DATA
に使用する2つの重要なパラメータは次のとおりです:
-
dname:
作成するデータ定義の名前 -
データ定義が格納されるファイルを
dname.ext:
します。
PGAUデータ・エントリは1回のみ定義されるため、重複は排除されます。
ノート:
COBOLレコード・レイアウト(コピーブック)をゲートウェイ・システムに移動します。
PGAUでは、データ・アイテムの定義時にコピーブックを入力として使用できます。 交換するデータ・アイテムを特定したら、ファイル転送プログラムを使用してコピーブックをゲートウェイ・システムにダウンロードします。 コピーブックは、後でデータ・アイテムの定義に使用されます。 例で使用されているサンプル・コピーブックは、「管理ユーティリティの例」に記載されています。
3.2.4 SNAを使用するゲートウェイでのPGAU DEFINE TRANSACTIONコマンド
RHTプログラムのネットワーク・アドレス情報を確認します。 ネットワークまたはOLTPシステム・プログラマがこの情報を提供できます。
PGAU DEFINE TRANSACTION
に使用する5つの重要なパラメータは、次のとおりです:
-
Side Profile name
-
TP name
-
LU name
-
LOGMODE
-
SYNCLEVEL
また、OLTPがデータを想定する言語のグローバリゼーション・サポート文字セット(charset
)も識別する必要があります。
この時点で、ゲートウェイがSNAを使用している場合は、「PGAU文の記述」に進みます。
3.2.5 TCP/IPを使用したゲートウェイでのPGAU DEFINE TRANSACTIONコマンド
このコマンドを使用する前に、IMS Connectホスト名(またはTCP/IPアドレス)、ポート番号、および PGA_TCP_IMSC
表内の列として定義されているその他のIMS Connectパラメータを知っておく必要があります。 pg4tcpmap
ツールを使用したTCP/IPへのパラメータのマッピングの準備の詳細は、「PG4TCPMAPコマンド(TCP/IPのみ)」を参照してください。
pg4tcpmap
ツールを実行する場合は、一意の名前(サイド・プロファイル名)を指定する必要があります。 この名前は、ヒントを作成するためにここで使用している名前と同じである必要があります。
ゲートウェイをSNAからTCP/IP通信プロトコルに変換してIMSトランザクションを起動する場合は、TIPを再生成する必要があります。
詳細は、「プロシージャ・ゲートウェイ管理ユーティリティ」を参照してください。
3.2.6 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));
これにより、4つのコールから、各コールで
IN
およびOUT
パラメータを渡す2つのコールへの、アプリケーションとTIP間のコールが減少します。 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);
-
GENERATE tname
3.2.7 PGAUスクリプト・ファイルの書込み
前の項では、PGAUコマンドライン・プロセッサを介してPGAU文を実行するために従う必要があるステップについて説明します。 時間節約対策として、すべての文(DEFINE DATA
、DEFINE CALL
およびDEFINE TRANSACTION
)をtname.ctl
という名前の単一の PGAUスクリプト・ファイルに次の順序で記述することを選択できます:
-
define data
-
define call
-
define transaction
-
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
3.3 ヒントの定義と生成
制御ファイルを作成した後、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)
ノート:
オプションで、スクリプト(tname.ctl
)に 「スプール」および「エコー」を追加したり、共有PG DDにPG DDロールやPGAU GROUP
文を使用するなど、OT を拡張できます。
-
ゲートウェイがSNAを使用している場合: 詳細は、クライアント・アプリケーション開発(SNAのみ)を参照してください。
-
ゲートウェイでIMS ConnectのTCP/IPサポートを使用している場合: 詳細は、クライアント・アプリケーション開発(TCP/IPのみ)を参照してください。
3.4 ヒントのコンパイル
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の概要」および「ヒント内部」を参照してください。
ゲートウェイがSNAを使用している場合: PGAU文の構文および使用方法の詳細は、クライアント・アプリケーション開発(SNAのみ)を参照してください。
ゲートウェイでIMS ConnectのTCP/IPサポートを使用している場合: PGAU文の構文および使用方法の詳細は、クライアント・アプリケーション開発(TCP/IPのみ)を参照してください。
3.5 TIPコンテンツ・ドキュメント(tipname.doc)
この項では、ユーザーがPGAU GENERATE
コマンドを発行したときに生成されるTIPドキュメント・ファイルについて説明します。 このヒント・コンテンツ・ファイルは、TIPで使用可能な関数コール、 PL/SQL
変数およびデータ型を記述します。
PGAU GENERATE
では、常に tipname
.doc
という名前のTIPコンテンツ・ファイルが生成されます。 ファイル名は、PGAU GENERATE
コマンドで指定されたトランザクションの名前で、ファイル・タイプは常に.doc
です。 このヒント・コンテンツ・ファイルには、次のセクションが含まれています:
-
このセクションには、TIPが生成されるステータスが含まれます。
-
この項では、定義済トランザクション属性を識別します。 これらは、
PGAU DEFINE TRANSACTION
定義の結果です。 -
この項では、トランザクションを初期化および終了するためにユーザーのアプリケーションによって実行されるコールの構文を示します。 PGAUは、TIPまたはトランザクションの定義方法に関係なく、これらのコールをすべてのTIPに生成します。
-
この項では、ユーザーがトランザクションとやり取りするために定義するコールの構文を示します。
-
この項では、各コール・パラメータで指定されたユーザーのデータ定義によって暗黙的に示される、TIPパッケージのパブリック・データ型宣言を示します。
-
この項では、アプリケーションによって参照したり、アプリケーションによって参照できるヒント変数について説明します。