アプリケーション・プログラムの準備プロセス
実行するアプリケーション・プログラムを準備する方法は、アプリケーションのタイプによって異なります。 アプリケーションのプログラム準備ステップは、使用するプログラミング言語のタイプに基づいてさまざまあります。
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処理やバインドステップを必要としません。
以下のプログラム準備ステップは、ホスト・プログラミング言語によって必要とされます:
- プログラム内の 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 コプロセッサからの出力 」を参照してください。
- アプリケーション・プログラムを バインド します。 Db2 アプリケーションを実行する前に、DBRMをパッケージにバインドする必要があります。 特定の SQL ステートメントを同じプログラムにまとめて、それらを同じ DBRM にプリコンパイルしてから、単一のパッケージにバインドすることができます。 プログラムが実行されると、 Db2 はタイムスタンプを使用して、プログラムが正しいプランまたはパッケージと一致していることを確認します。
コレクション とは、関連するパッケージのグループです。 パッケージをパッケージ・コレクションにバインドすることにより、プラン全体を再度バインドすることなく、既存のアプリケーション・プランにパッケージを追加できます。 プランのバインド時にコレクション名をパッケージ・リストに入れると、そのコレクション内のどのパッケージも、そのプランに対して使用可能となります。 このコレクションは、最初にそのプランをバインド時に空であっても構いません。 後で、コレクションにパッケージを追加し、既存パッケージのドロップまたは置き換えを行えます。この場合にそのプランを再度バインドする必要はありません。
CURRENT PACKAGE PATH 特殊レジスタは、 Db2 が、お客様がSQLステートメントを実行する際に使用するパッケージへの参照を解決する際に使用するコレクションのリストを識別する値を指定します。
バインドプロセスに関する詳細は、「アプリケーションパッケージとプランのバインド」 を参照してください。
- コンパイル および リンク・エディット プログラム。 Db2 サブシステムとアプリケーションをインターフェースできるようにするには、リンク編集手順を使用して、お客様の環境の要件を満たす実行可能なロードモジュール( CICS®、 IMS、TSO、またはバッチなど)を作成する必要があります。 ロード・モジュール は、実行用に主ストレージにロードされるプログラム単位です。
- 実行 プログラム: 上記のステップを完了した後、 Db2 アプリケーションを実行できます。 実行するアプリケーションを準備するには、以下の方法を使用できます
- Db2 インタラクティブ( DB2I )パネルを使用してください。このパネルは、プログラムの準備から実行まで、ステップバイステップで導いてくれます。
- TSO フォアグラウンド、または TSO バックグラウンド内のバッチで、アプリケーションをサブミットします。
- TSO フォアグラウンドまたはバッチで、プログラム準備コマンド・リスト (CLIST) を開始します。
- DSN コマンド・プロセッサーを使用します。
- Db2 のインストール時に、データセットに含めるJCLプロシージャ( SYS1.PROCLIB など)を使用します。
Db2 が提供する手順を使用して、アプリケーションプログラムを事前コンパイルし、準備することもできます。 Db2 サポートされている各言語ごとに独自の処理手順があります。
Db2 バインドマネージャーツール
Db2 のバインドマネージャーツールは、アプリケーションプログラマーを支援します
- DBRM のバインドにより、アクセス・パスが変更されるかどうかの予測
- 一群の DBRM に対してアクセス・パス・チェックの実行
- アプリケーション・プログラムとデータベースの間での不要なバインド・ステップの除去
- サブシステムとロード・モジュールに対して DBRM を比較
Db2 パスチェッカーツール
Db2 パスチェッカーは、 Db2 環境の安定性を高め、コストのかかる混乱を回避するのに役立ちます。 Db2 パスチェッカーは、望ましくない予期せぬアクセスパスの変更を通知される前に発見し、修正するのに役立ちます。