プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

分割プリコンパイル

複数のCまたはC++プログラム・モジュールを別々にプリコンパイルし、それらをリンクして1つの実行可能プログラムにできます。これにより、プログラムの機能コンポーネントの作成とデバッグを複数のプログラマが分担して行う場合に必要とされる、モジュラー・プログラミングが可能になります。個々のプログラム・モジュールを同じ言語で作成する必要はありません。

ガイドライン

次のガイドラインに従うと、いくつかの問題を回避できます。

カーソルの参照

カーソル名はSQL識別子であり、その有効範囲はプリコンパイル・ユニットです。このため、カーソルの動作が複数のプリコンパイル・ユニット(ファイル)にまたがることはありません。つまり、あるファイル内で宣言したカーソルを、別のファイルからオープンまたはフェッチすることはできません。したがって、分割プリコンパイルを実行するときは、指定のカーソルに対する定義と参照がすべて1つのファイルに記述されているか確認してください。

MAXOPENCURSORSの指定

OracleにCONNECTするプログラム・モジュールをプリコンパイルする場合は、すべてのプログラム・モジュールに十分に対応できるように、MAXOPENCURSORSの値を指定してください。CONNECTしない別のプログラム・モジュールにMAXOPENCURSORSを使用しても、その値は無視されます。実行時には、CONNECTに有効な値のみが使用されます。

単一のSQLCAの使用

使用するSQLCAが1つのみの場合は、1つのプログラム・モジュール内でglobalとして宣言し、他のモジュール内ではexternalとして宣言する必要があります。extern記憶域クラスを使用して、コードに次を定義します。

#define SQLCA_STORAGE_CLASS extern 

この例は、プリコンパイラに対して、他のプログラム・モジュール内でSQLCAを検索するように指示しています。SQLCAをexternalとして宣言しないかぎり、各プログラム・モジュールでは専用のローカルSQLCAが使用されます。

注意:

アプリケーションのソース・ファイルはすべて、名前が一意である必要があります。一意でないとエラーが発生します。