アプリケーション・プログラムの準備プロセス

実行するアプリケーション・プログラムを準備する方法は、アプリケーションのタイプによって異なります。 アプリケーションのプログラム準備ステップは、使用するプログラミング言語のタイプに基づいてさまざまあります。

Db2 アプリケーションの種類によって、プログラムの準備方法が異なります。

組み込みの静的 SQL ステートメントまたは動的 SQL ステートメントを含むアプリケーション
Db2 アプリケーションは、従来の言語プログラムにSQLステートメントを埋め込む。 これらのプログラムを使用するには、一般的な準備手順(コンパイル、リンク編集、実行)に加え、SQLステートメントの処理とバインドの手順に従う必要があります。
REXXなどのインタプリタ言語によるアプリケーションは、 APL2®
REXXプロシージャは動的SQLを使用します。 Db2 REXX プロシージャを実行する前に、プログラムの準備を行います。
ODBC 呼び出しを含むアプリケーション
これらのアプリケーションでは動的 SQL ステートメントを引数として受け渡します。 ODBC アプリケーションを処理またはバインドすることはありません。 ODBC アプリケーションは標準セットの関数を使用して、実行時に SQL ステートメントとその関連のサービスを実行します。
Java™アプリケーションは、 JDBC 呼び出しまたは埋め込みSQLステートメントを含むことができます
JDBC メソッドだけを含む Java プログラムの準備は、他のどの Java プログラムの準備とも同じです。 javac コマンドを使用して、プログラムを準備できます。 JDBC アプリケーションは、SQL処理やバインドステップを必要としません。
IBM® pureQuery® を使用して、Javaアプリケーションを作成し、準備することができます。 IBM pureQuery メモリ上のデータベースまたはJavaオブジェクトへのSQLアクセスを可能にし、SQLのベストプラクティスの促進を支援します。
SQLJ プログラムの準備には、プリコンパイル・ステップとバインド・ステップが必要です。

以下のプログラム準備ステップは、ホスト・プログラミング言語によって必要とされます:

  1. プログラム内の SQLステートメントを処理する。 この手順は、コンパイラーのエラーを防ぐために必要です。ほとんどのコンパイラーはSQLステートメントを認識しないためです。 C、C++、 COBOL、 PL/I 用のホスト言語 Db2 coprocessor を使用して、プログラムをコンパイルする際に SQL 文を処理することができます。 Db2 coprocessor は、プログラムをスキャンし、コンパイル時に修正されたソースコードを返します。 詳細については、 Db2 コプロセッサを使用したSQL文の処理を参照のこと。

    C、 COBOL、 Fortran、 PL/I、およびアセンブラ言語プログラムをコンパイルまたはアセンブルする前に、 Db2 precompiler を使用するという方法もある。 Db2 precompiler はプログラムをスキャンし、修正されたソースコードを返します。それをコンパイルし、リンク編集することができます。 詳細については、 Db2 プリコンパイラを使用したSQL文の処理を参照してください。

    ヒント: Db2 coprocessor は、アプリケーションプログラムでSQLステートメントを処理する際に推奨される方法です。 Db2 precompiler と比較すると、 Db2 coprocessor ではSQLプログラムに対する制限が少なく、最新のSQLおよびプログラミング言語の拡張をより完全にサポートしています。 Db2 コプロセッサを使用したSQL文の処理を参照してください。

    Db2 coprocessor または Db2 precompiler からの主な出力は、データベース要求モジュール(DBRM) です。 DBRM とは一種のデータ・セットであり、この中にはプログラム準備時にソース・プログラムから抽出された SQL ステートメントとホスト変数が入っています。 DBRM の目的は、バインド・プロセス中に SQL 要求を Db2 に伝えることです。 詳細は、「 Db2 コプロセッサからの出力 」を参照してください。

  2. アプリケーション・プログラムを バインド します。 Db2 アプリケーションを実行する前に、DBRMをパッケージにバインドする必要があります。 特定の SQL ステートメントを同じプログラムにまとめて、それらを同じ DBRM にプリコンパイルしてから、単一のパッケージにバインドすることができます。 プログラムが実行されると、 Db2 はタイムスタンプを使用して、プログラムが正しいプランまたはパッケージと一致していることを確認します。

    コレクション とは、関連するパッケージのグループです。 パッケージをパッケージ・コレクションにバインドすることにより、プラン全体を再度バインドすることなく、既存のアプリケーション・プランにパッケージを追加できます。 プランのバインド時にコレクション名をパッケージ・リストに入れると、そのコレクション内のどのパッケージも、そのプランに対して使用可能となります。 このコレクションは、最初にそのプランをバインド時に空であっても構いません。 後で、コレクションにパッケージを追加し、既存パッケージのドロップまたは置き換えを行えます。この場合にそのプランを再度バインドする必要はありません。

    CURRENT PACKAGE PATH 特殊レジスタは、 Db2 が、お客様がSQLステートメントを実行する際に使用するパッケージへの参照を解決する際に使用するコレクションのリストを識別する値を指定します。

    バインドプロセスに関する詳細は、「アプリケーションパッケージとプランのバインド」 を参照してください。

  3. コンパイル および リンク・エディット プログラム。 Db2 サブシステムとアプリケーションをインターフェースできるようにするには、リンク編集手順を使用して、お客様の環境の要件を満たす実行可能なロードモジュール( CICS®、 IMS、TSO、またはバッチなど)を作成する必要があります。 ロード・モジュール は、実行用に主ストレージにロードされるプログラム単位です。
  4. 実行 プログラム: 上記のステップを完了した後、 Db2 アプリケーションを実行できます。 実行するアプリケーションを準備するには、以下の方法を使用できます
    • Db2 インタラクティブ( DB2I )パネルを使用してください。このパネルは、プログラムの準備から実行まで、ステップバイステップで導いてくれます。
    • TSO フォアグラウンド、または TSO バックグラウンド内のバッチで、アプリケーションをサブミットします。
    • TSO フォアグラウンドまたはバッチで、プログラム準備コマンド・リスト (CLIST) を開始します。
    • DSN コマンド・プロセッサーを使用します。
    • Db2 のインストール時に、データセットに含めるJCLプロシージャ( SYS1.PROCLIB など)を使用します。

Db2 が提供する手順を使用して、アプリケーションプログラムを事前コンパイルし、準備することもできます。 Db2 サポートされている各言語ごとに独自の処理手順があります。

図1: 組み込み SQL を含むアプリケーションに対するプログラム準備処理の概要。 Db2 コプロセッサは、特定の言語についてプリコンパイルとコンパイルのステップを組み合わせることができます。
図の説明の開始 この図には、SQL ステートメントをプリコンパイルしてから、DB2 アプリケーションの実行前に DBRM をプランまたはパッケージにバインドすることを記載してあります。 または、DB2 コプロセッサーは、プリコンパイルとコンパイルのステップを組み合わせ、アプリケーション・プログラムに対して変更されたソースを作成しません。 図の説明の終わり。

Db2 バインドマネージャーツール

Db2 のバインドマネージャーツールは、アプリケーションプログラマーを支援します

  • DBRM のバインドにより、アクセス・パスが変更されるかどうかの予測
  • 一群の DBRM に対してアクセス・パス・チェックの実行
  • アプリケーション・プログラムとデータベースの間での不要なバインド・ステップの除去
  • サブシステムとロード・モジュールに対して DBRM を比較

Db2 パスチェッカーツール

Db2 パスチェッカーは、 Db2 環境の安定性を高め、コストのかかる混乱を回避するのに役立ちます。 Db2 パスチェッカーは、望ましくない予期せぬアクセスパスの変更を通知される前に発見し、修正するのに役立ちます。