1.2.4.2 IMS/DBプラグインのAPI定義

IMS/DBプラグインのAPIを定義するには次のステップを実行する必要があります。

  1. 初期化
    extern "C" int db_init(int argc, char * argv[])

    機能: 実装に必要な構成またはその他のものに対する初期化

    引数: サーバーのCLOPTから渡されるパラメータ・リスト

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: このAPIは、Tuxedo ART for IMSサーバーが起動する際に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  2. クリーン・アップ
    extern "C" int db_destroy()

    機能: 実装に必要な構成またはその他のものに対するクリーンアップ

    引数: なし。サーバーはプラグインに入力を提供できないためです

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: このAPIは、Tuxedo ART for IMSサーバーが停止する際に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  3. COBOLプログラムを起動する前のアクション
    extern "C" int db_pre() 

    機能: IMS/DB実装にアクセスできるCOBOLプログラムを起動する前に実装によって必要とされる事前アクション

    引数: なし。サーバーはプラグインに入力を提供できないためです

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: このAPIは、IMS/DB実装にアクセスできるCOBOLプログラムがTuxedo ART for IMSサーバーによって起動される前に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  4. COBOLプログラムを起動した後のアクション
    extern "C" int db_post()

    機能: IMS/DB実装にアクセスできるCOBOLプログラムを起動した後に実装によって必要とされる事後アクション

    引数: なし。サーバーはプラグインに入力を提供できないためです

    戻り値: 0 - 成功、-1 -- 失敗

    使用する場所: このAPIは、IMS/DB実装にアクセスできるCOBOLプログラムがTuxedo ART for IMSサーバーによって起動された後に呼び出されます。IMS/DBの特定の実装には、初期化作業は必要ありません。単に空の関数を指定して、それが0を返すようにします。

  5. データベース・アクセス・エントリ
    extern "C"
    int db_entry(const char * op,__DB_PCB * pcb, void * io, char * 
    ssa_list[], int ssa_cnt);

    機能: IMS/DB実装へのアクセスのエントリ・ポイント。COBOLプログラムから発行されたデータベース・アクセスのための各DL/I呼び出しは、最終的にそれによって処理されます。

    引数:
    • op: 関数呼出し名(GUなど)
    • pcb: ユーザー提供のDB PCBのスーパークラスである__DB PCBを指すポインタ。
    • io: 外部実装者によって定義されたバッファDB_IO_AREAを指すポインタ。
    • ssa_list: 文字列の配列であり、それぞれが1つのSSAを含み、形式は外部実装者によって異なります。
    • ssa_cnt: ssa_list内の要素の数。値の範囲は[0..15]です。

    戻り値: 0 - 成功、-1 - 失敗

    使用する場所: COBOLプログラムによって発行されるDL/I DB呼出し

  6. db pcb属性を取得します。
    extern "C"
    const __DB_PCB_ATTR * get_dbpcbattr (struct __DB_PCB * pcbm)
    機能: db pcbの追加属性を取得するために使用されます。これらの属性はPSBファイルで構成されます。
    引数:
    • pcbm: PCBマスク・ポインタ

    戻り値: PCB属性ポインタ。このAPIから返されるPCB属性構造に含まれる内容を、ユーザーが変更することはできません。入力がDB PCBまたはGSAM PCBでない場合は、nullが返されます。オプションの属性が構成されていない場合は、デフォルト値が返されます。ポインタを解放する必要はありません。

    使用する場所: db pcbによって呼び出されたサード・パーティのDBプラグイン。

  7. db pcbセグメント名を設定します。
    extern "C"
    int fill_dbpcb_segname (struct __DB_PCB * pcb)

    機能: db pcbのセグメント名を取得するために使用されます。このインタフェースはDBプラグインによって提供されます。

    引数:
    • pcb: PCBマスク・ポインタ(DB PCBまたはGSAM PCB)。pcbマスクのsegnameには正しい値が設定されます。

    戻り値: 0 : 成功、その他: 失敗。