アプリケーション開発の手引き
C および C++ でのホスト言語固有のインクルード・ファイル (ヘッダー・ファイル) には、ファイル拡張子の .h が付いています。アプリケーションで使用するためのインクルード・ファイルについて、以下で説明します。
- SQL (sql.h)
- このファイルには、バインダー、プリコンパイラー、およびエラー・メッセージ検索 API 用の言語固有プロトタイプが含まれています。また、システム定数も定義されています。
- SQLADEF (sqladef.h)
- プリコンパイル済みの C および C++ アプリケーションが使用する関数プロトタイプが含まれています。
- SQLAPREP (sqlaprep.h)
- このファイルには、独自のプリコンパイラーの作成に必要な定義が入っています。
- SQLCA (sqlca.h)
- このファイルは SQL 連絡域 (SQLCA) 構造を定義します。
SQLCA には、データベース・マネージャーが SQL ステートメントおよび API 呼び出しの実行に関するエラー情報をアプリケーションに提供するために使用する変数が含まれています。
- SQLCLI (sqlcli.h)
- コール・レベル・インターフェース (DB2 CLI) アプリケーションを作成するために必要な関数プロトタイプと定数が含まれています。このファイル内の関数は、X/Open コール・レベル・インターフェースおよび ODBC コア・レベルの両方に共通です。
- SQLCLI1 (sqlcli1.h)
- DB2 CLI でより拡張された機能を使用するコール・レベル・インターフェース (DB2 CLI) を作成するために必要な関数プロトタイプおよび定数が含まれています。このファイル内の関数の大部分は、
X/Open コール・レベル・インターフェースおよび ODBC レベル 1 に共通です。さらに、このファイルには X/Open 専用の関数および DB2 固有の関数も含まれています。
このファイルには、sqlcli.h と sqlext.h (ODBC レベル 2 API 定義) の両方が含まれます。
- SQLCODES (sqlcodes.h)
- このファイルは、SQLCA 構造の SQLCODE フィールドで使用する定数を定義します。
- SQLDA (sqlda.h)
- このファイルは SQL 記述子域 (SQLDA) 構造を定義します。
SQLDA はアプリケーションとデータベース・マネージャーとの間でデータをやりとりするために使用されます。
- SQLEAU (sqleau.h)
- このファイルには、DB2 機密保護監査 API に必要な定数および構造の定義が含まれています。これらの API を使用する場合は、プログラムにこのファイルを組み込む必要があります。このファイルにはまた、監査証跡レコード内のフィールドの定数およびキーワード値の定義も含まれています。これらの定義は、外部または取引先の監査証跡抽出プログラムで使用できます。
- SQLENV (sqlenv.h)
- このファイルは、データベース環境 API に対する言語固有の呼び出し、およびそれらのインターフェースの構造、定数、戻りコードを定義します。
- SQLEXT (sqlext.h)
- X/Open コール・レベル・インターフェースの仕様の一部ではないこれらの ODBC レベル 1 およびレベル 2 API の関数プロトタイプと定数が含まれており、
Microsoft 社の許可を得て使用します。
- SQLE819A (sqle819a.h)
- データベースのコード・ページが 819 (ISO ラテン 1) の場合、このシーケンスは、ホスト CCSID 500 (EBCDIC 各国対応) 2 進照合に従って、
FOR BIT DATA ではない文字ストリングを分類します。このファイルは CREATE DATABASE API が使用します。
- SQLE819B (sqle819b.h)
- データベースのコード・ページが 819 (ISO ラテン 1) の場合、このシーケンスは、ホスト CCSID 037 (EBCDIC 米国英語) 2 進照合に従って、
FOR BIT DATA ではない文字ストリングを分類します。このファイルは CREATE DATABASE API が使用します。
- SQLE850A (sqle850a.h)
- データベースのコード・ページが 850 (ASCII ラテン 1) の場合、このシーケンスは、ホスト CCSID 500 (EBCDIC 各国対応) 2 進照合に従って、
FOR BIT DATA ではない文字ストリングを分類します。このファイルは CREATE DATABASE API が使用します。
- SQLE850B (sqle850b.h)
- データベースのコード・ページが 850 (ASCII ラテン 1) の場合、このシーケンスは、ホスト CCSID 037 (EBCDIC 米国英語) 2 進照合に従って、
FOR BIT DATA ではない文字ストリングを分類します。このファイルは CREATE DATABASE API が使用します。
- SQLE932A (sqle932a.h)
- データベースのコード・ページが 932 (ASCII 日本語) の場合、このシーケンスは、ホスト CCSID 5035 (EBCDIC 日本語) 2 進照合に従って、
FOR BIT DATA ではない文字ストリングを分類します。このファイルは CREATE DATABASE API が使用します。
- SQLE932B (sqle932b.h)
- データベースのコード・ページが 932 (ASCII 日本語) の場合、このシーケンスは、ホスト CCSID 5026 (EBCDIC 日本語) 2 進照合に従って、
FOR BIT DATA ではない文字ストリングを分類します。このファイルは CREATE DATABASE API が使用します。
- SQLJACB (sqljacb.h)
- DB2 コネクト・インターフェースの定数、構造、および制御ブロックを定義します。
- SQLMON (sqlmon.h)
- このファイルは、データベース・システム・モニター API に対する言語固有の呼び出し、およびそれらのインターフェースの構造、定数、戻りコードを定義します。
- SQLSTATE (sqlstate.h)
- このファイルは、SQLCA 構造の SQLSTATE フィールドで使用する定数を定義します。
- SQLSYSTM (sqlsystm.h)
- このファイルには、データベース・マネージャー API およびデータ構造が用いるプラットフォーム固有の定義が含まれています。
- SQLUDF (sqludf.h)
- ユーザー定義関数 (UDF) を作成するための定数およびインターフェース構造を定義します。このファイルの詳細については、UDF インクルード・ファイル: sqludf.hを参照してください。
- SQLUTIL (sqlutil.h)
- このファイルは、ユーティリティー API に対する言語固有の呼び出し、およびそれらのインターフェースに必要な構造、定数、コードを定義します。
- SQLUV (sqluv.h)
- 非同期ログ読み取り API および表のロード / アンロードを行うベンダーが使用する API の構造、定数、プロトタイプなどを定義します。
- SQLUVEND (sqluvend.h)
- 記憶管理ベンダーが使用する API の構造、定数およびプロトタイプを定義します。
- SQLXA (sqlxa.h)
- X/Open XA インターフェースを使用するアプリケーションが使用する関数プロトタイプと定数が含まれます。
ファイルの組み込みには、EXEC SQL INCLUDE ステートメントを使用する方法と、#include マクロを使用する方法の 2 つがあります。プリコンパイラーは #include を無視し、
EXEC SQL INCLUDE ステートメントを使用して組み込まれたファイルのみを処理します。
EXEC SQL INCLUDE を使用して組み込んだファイルを検索する際に、
DB2 C プリコンパイラーはまず最初にカレント・ディレクトリーを検索し、次いで DB2INCLUDE 環境変数に指定されたディレクトリーを検索します。次の例を考えてみてください。
- EXEC SQL INCLUDE payroll;
INCLUDE ステートメントに指定されたファイルが、上のように、単引用符 (') で囲まれていない場合、
C プリコンパイラーは各ディレクトリーで最初に payroll.sqc を検索し、次に payroll.h を検索します。
UNIX オペレーティング・システムの場合、C プリコンパイラーは、
payroll.sqC、payroll.sqx、
payroll.hpp、payroll.h の順で各ディレクトリーを検索します。
OS/2 または Windows 32 ビット オペレーティング・システムの場合、
C++ プリコンパイラーは、
payroll.sqx、payroll.hpp、payroll.h の順で検索し、最後にそれがロックする各ディレクトリーを検索します。
- EXEC SQL INCLUDE 'pay/payroll.h';
ファイル名が単引用符 (') で囲まれている場合、すでに説明したとおり、名前に拡張子は追加されません。
単引用符 (') 内のファイル名に完全パスが含まれていない場合、
DB2INCLUDE の中身によってそのファイルの検索が行われ、何らかのパスが INCLUDE ファイル名に指定されます。たとえば、UNIX ベースのシステムでは、
DB2INCLUDE は '/disk2:myfiles/c' に設定され、
C/C++ プリコンパイラーは './pay/payroll.h'、
'/disk2/pay/payroll.h'、
'./myfiles/c/pay/payroll.h' の順に探索します。プリコンパイラー・メッセージには、実際にファイルが見つかったパスが表示されます。
OS/2 および Windows ベースのプラットフォームでは、上の例のスラッシュを円記号 (\) に置き換えます。
注: | DB2INCLUDE の設定は、DB2 コマンド行プロセッサーによってキャッシュされます。何らかの CLP コマンドを発行した後に DB2INCLUDE の設定を変更する場合は、
TERMINATE コマンドを入力してから、データベースに接続し直し、あとは通常どおりプリコンパイルしてください。
|
プリコンパイラーは、コンパイラー・エラーを元のソースに戻して関連付けるために、出力ファイルに ANSI #line マクロを生成します。これにより、コンパイラーはプリコンパイラー出力ではなく、ソースまたは組み込まれたソース・ファイルのファイル名と行番号を使用してエラーを報告することができます。
PREPROCESSOR オプションを指定する場合は、プリコンパイラーにより生成されるすべての #line マクロは、外部 C プリプロセッサーからプリプロセスされたファイルを参照します。
PREPROCESSOR オプションの詳細については、
C マクロ展開を参照してください。
ソース・コードをオブジェクト・コードに関連付けるデバッガーやその他のツールの中には、#line マクロを使用して常に正常に作動するわけではないものもあります。使用したいツールが期待どおりに動作しない場合は、プリコンパイル時に (DB2 PREP と共に使用される) NOLINEMACRO オプションを使用してください。これにより、#line マクロは生成されなくなります。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]