プログラム準備のためのSQL文の処理

実行する SQL アプリケーションを準備するための最初のステップは、プログラム内の SQL ステートメントを処理することです。 ステートメントを処理するには、 Db2 coprocessor または Db2 precompiler をご利用ください。 このステップでは、SQL ステートメントが Db2 言語インターフェース・モジュールの呼び出しに置き換えられ、DBRM が作成されます。

始める前に

Db2 12 のプログラムディレクトリにある「プログラミング言語」に記載されている最低要件を満たすよう、アプリケーション開発プログラミング言語を確保してください。 Db2 12. プログラムディレクトリを参照してください。

このタスクについて

ほとんどのコンパイラはSQLステートメントを認識しないため、 Db2 coprocessor または Db2 precompiler を使用することでコンパイラエラーを防ぐことができます。

Db2 coprocessor をホスト言語として使用できます。 Db2 coprocessor を使用すると、コンパイラ( Db2 precompiler ではなく)がプログラムをスキャンし、修正されたソースコードを返します。 Db2 coprocessor はDBRMも作成しています。

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

Db2 precompiler はプログラムをスキャンし、修正されたソースコードを返します。それをコンパイルし、リンク編集することができます。 プリコンパイラーは、DBRM (データベース要求モジュール) も生成します。 この DBRM を BIND サブコマンドを使用してパッケージに バインドできます。 これらのステップを完了すると、 Db2 アプリケーションを実行できます。

Db2 DSNHDECPモジュール内のバージョン
プログラムでSQLステートメントを処理するときに、DSNHDECPの Db2バージョンがシステム提供のデフォルトのバージョンである場合、 Db2警告が発行され、処理が続行されます。 この場合、Db2を使うDSNHDECPの情報が環境を正確に反映していることを確認してください。

プロシージャー

アプリケーションプログラムでSQL文を処理するには、以下のいずれかの方法を使用します

  • プログラムをコンパイルする際には、使用しているホスト言語用の Db2 coprocessor を呼び出してください。 C、C++、 COBOL、および PL/I のホストコンパイラ Db2 coprocessor で利用できます。
    Db2 coprocessor を呼び出すには、SQL コンパイラオプションとそのサブオプションを指定します。サブオプションは、 Db2 precompiler 用に定義されているオプションです。 Db2 precompiler のオプションの一部が無視されます。 変更の開始また、 z/OS® 上の UNIX System Services から Db2 coprocessor を呼び出して、パーティション化されたデータセットまたは HFS ファイルで DBRM を生成することもできます。 変更の終わり

    詳細は、「 Db2 コプロセッサを使用したSQL文の処理 」を参照してください。

  • プログラムをコンパイルする前に、 Db2 precompiler をご利用ください。 詳細は、「 Db2 プリコンパイラを使用したSQL文の処理 」を参照してください。
    アセンブラまたは Fortran アプリケーションの場合は、 Db2 precompiler を使用してSQLステートメントを準備します。

結果

Db2 coprocessor または Db2 precompiler からの主な出力は、データベース要求モジュール(DBRM)です。 ただし、 Db2 coprocessor または Db2 precompiler は、修正されたソース文、ソース文のリスト、ホスト名と列を参照する文のリスト、および診断も生成します。 詳細は、「 Db2 プリコンパイラの出力 」を参照してください。

次の作業

アプリケーションに CICS® コマンドが含まれている場合、コンパイルする前にプログラムを翻訳する必要があります。 詳細は、「 CICS プログラムにおけるコマンドレベルのステートメントの翻訳 」を参照してください。