機械翻訳について

3 ヒントの作成

このの後の項では、トランザクション・インタフェース・パッケージ(TIP)の定義、生成およびコンパイル方法を詳細に説明します。 リモート・ホスト・トランザクション・プログラム(RTP)がすでに存在することを前提としています。 このトランザクション・プログラムには、TIPの定義方法およびクライアント・アプリケーションによるTIPの使用方法を指定する操作特性があります。

次のステップでは、リモート・ホスト・トランザクション(RHT)で使用するヒントを作成します:

  • RHTの評価

  • PGAU文の準備

  • ヒントの定義と生成

  • ヒントのコンパイル

3.1 ヒント作成者に対する権限の付与

すべてのTIP開発者は、Oracleデータベースに同梱されている次の PL/SQLパッケージにアクセスする必要があります:

Microsoft Windowsの場合:

  • DBMS_PIPE%ORACLE_HOME%\rdbms\admin

  • UTL_RAW%ORACLE_HOME%\rdbms\admin

  • UTL_PG%ORACLE_HOME%\rdbms\admin

UNIXベース・システムの場合:

  • DBMS_PIPE$ORACLE_HOME/rdbms/admin

  • UTL_RAW$ORACLE_HOME/rdbms/admin

  • UTL_PG$ORACLE_HOME/rdbms/admin

ユーザー PGAADMIN以外のユーザーがTIPを開発する場合、これらの操作を実行するには明示的な付与が必要です。 プライベートおよびパブリック権限の詳細は、インストール・ガイドの通信プロトコルに適した構成セクションの「オプションの構成ステップ」の項を参照してください。

3.2 RHTの評価

次のステップに従って、リモート・ホスト・トランザクション・データ交換を特定し、理解します。

  1. リモート・ホスト・トランザクションの特定
  2. PGAU DEFINE CALLコマンド
  3. PGAU DEFINE DATAコマンド
  4. SNAを使用するゲートウェイでのPGAU DEFINE TRANSACTIONコマンド
  5. TCP/IPを使用したゲートウェイでのPGAU DEFINE TRANSACTIONコマンド
  6. PGAU文の記述
  7. PGAUスクリプト・ファイルの書込み

3.2.1 リモート・ホスト・トランザクションの特定

まず、RHTデータ交換ステップを確認する必要があります。 これらは、RHTプログラム内に埋め込まれた送信および受信コールです。

ゲートウェイがSNA通信プロトコルを使用している場合:

RHTデータ交換ステップは、次の言語で識別されます:

  • COBOLは、次の用途に使用できます:

    • CICS

    • IMS

  • IBM 370アセンブラは次の用途に使用できます:

    • CICS

    • IMS

  • IBM REXXは、次の用途に使用できます:

    • CICS

    • IMS

    • z/OS

ゲートウェイがTCP/IP通信プロトコルを使用している場合:

IMSは、ゲートウェイがIMS ConnectのTCP/IPサポートを使用しているときにサポートされる唯一のOLTPです。 RHTプログラムでは、埋込み I/O PCB関数コールを使用する必要があります。 この関数は、COBOLおよびアセンブラ言語でのみ識別されます。

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を定義します。

  1. データ・リスト内のエントリごとに、 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が入力として読み取ることができるディレクトリにコピーまたは転送する必要があります。

  2. コール・リスト内のエントリごとに、 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コマンドの詳細は、柔軟なコール順序を参照してください。

  3. ネットワーク・アドレスおよびグローバリゼーション・サポート情報を指定して、すべてのコールを含む DEFINE TRANSACTION 文を記述します:

    DEFINE TRANSACTION tname CALLS(cname1
                                   cname2, ....
                                   cnameN)
                       ENVIRONMENT(IBM370)
                       SIDEPROF(profname) |
                         TPNAME(tpid) LUNAME(luname) LOGMODE(mode)
                       SYNCLEVEL(n)
                       NLS_LANGUAGE(charset);
    
  4. GENERATE文を追加して、TIP仕様を作成できます:

    GENERATE tname 

    ノート:

    REPORT文を追加して、tnameのPG DDエントリをリストすることもできます:

    REPORT TRANSACTION tname with CALLS with DATA;

    また、スクリプトにコメントを付けます:

    REM this is a Comment

3.2.7 PGAUスクリプト・ファイルの書込み

前の項では、PGAUコマンドライン・プロセッサを介してPGAU文を実行するために従う必要があるステップについて説明します。 時間節約対策として、すべての文(DEFINE DATADEFINE CALLおよびDEFINE TRANSACTION)をtname.ctlという名前の単一の PGAUスクリプト・ファイルに次の順序で記述することを選択できます:

  1. define data

  2. define call

  3. define transaction

  4. generate

    ノート:

    このスクリプトを複数回実行する場合があるため、最初に UNDEFINE文を含めて、PG DD内の以前のエントリを削除する必要があります。

これは、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はPGAU DEFINE 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 を拡張できます。

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です。 このヒント・コンテンツ・ファイルには、次のセクションが含まれています:

  • GENERATIONステータス

    このセクションには、TIPが生成されるステータスが含まれます。

  • ヒント・トランザクション

    この項では、定義済トランザクション属性を識別します。 これらは、PGAU DEFINE TRANSACTION定義の結果です。

  • ヒント・デフォルト・コール

    この項では、トランザクションを初期化および終了するためにユーザーのアプリケーションによって実行されるコールの構文を示します。 PGAUは、TIPまたはトランザクションの定義方法に関係なく、これらのコールをすべてのTIPに生成します。

  • TIPユーザー・コール

    この項では、ユーザーがトランザクションとやり取りするために定義するコールの構文を示します。

  • TIPユーザー宣言

    この項では、各コール・パラメータで指定されたユーザーのデータ定義によって暗黙的に示される、TIPパッケージのパブリック・データ型宣言を示します。

  • TIPユーザー変数

    この項では、アプリケーションによって参照したり、アプリケーションによって参照できるヒント変数について説明します。