COBOL コンパイラで SQL プログラムをコンパイルすることは、プリコンパイルによって SQL 行をホスト言語文に変更し、次に結果ソースをコンパイルする、という 2 つのステップに論理的に相当します。この 2 つのステップは、実際には単一のプロセスで行われており、COBOL コンパイラが DB2 ECM と連携して実行します。
SQL プログラムをコンパイルする前に、次の条件が満たされていることを確認してください。
上記のステップをすべて完了しても COBDB006 エラー ("Required DB software db2agapi could not be found.") が表示される場合は、Enterprise Developer のコマンド プロンプトから、Enterprise Developer によって生成される PATH 文を確認してください。PATH は、Enterprise Developer によって変更されるため、DB 2 がインストールされているディレクトリが、PATH 文では 255 バイトの上限を超えて表示される場合があります。..\SQLLIB\BIN ディレクトリが PATH 文の先頭に近くなるように PATH 文を変更して、プログラムのコンパイルに必要なデータベース DLL をロードできるようにしてください。
SQL プログラムをコンパイルするには、事前に認証が付与されている必要があります。通常、認証は DB2 データベース管理者が付与します。次のいずれか 1 つが必要です。
また、ユーザーには、アプリケーションで静的 SQL 文をコンパイルするために必要なすべてのテーブル特権も必要です。グループに付与された特権は、静的 SQL 文の認証チェックには使用されないため、注意してください。SQL オブジェクトに対する権限がないためにプログラムがコンパイルに失敗した場合は、社内の DB2 データベース管理者にお問い合わせください。
ユーザーが SQL を使用しているということや、どのデータベースを使用しているか、といった情報を DB2 ECM に与えるには、DB2 コンパイラ指令を使用します。
DB2 LUW バージョン 7.1 で導入されている API 呼び出しを使用している場合は、DB2 ECM は API 呼び出しを検証するために IBM モジュールを呼び出します。DB2 ECM が指令の構文でエラーを検出した場合は、-104 SQLCODE のエラー メッセージが表示されます。
DB2 コンパイラ指令が必要となる場合を除いて、通常、埋め込み SQL が含まれたプログラムは、SQL 以外のプログラムと同じ方法でコンパイルされます。特別な動作が必要となるのは、追加モジュールをリンクする必要が生じた場合に、実行可能 (バイナリ) ファイルを作成するときだけです。SQL コードが含まれたプログラムは、その他のプログラムと同じようにアニメートできます。SQL 文内のホスト変数は、通常の COBOL データ項目と同じように調べることができます。