Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


8.2.4 プリプロセサ宣言文の有効化

〈この項の構成〉

(1) 概要

プリプロセサでは,オプションでCコンパイラのプリプロセサ宣言文を使用できるようにしています。

/Eオプション(UNIX版の場合は-Eオプション)を指定した場合,プリプロセサでは次の機能を実行できます。

注※

SQL文,及びSQL TYPE IS 型の変数宣言は,インクルードファイルの中には記述できません(プリプロセサは,ヘッダのポストソースは生成しないため,コンパイル時にエラーとなります)。詳細は,「SQLの記述規則」の23.を参照してください。

(2) 使用例

(a) 定数の使用

UAPソースファイル中で,次の埋込み変数宣言が記述されているとします。

#include  “user.h”
EXEC SQL BEGIN DECLARE SECTION;
  char  xchar1[MAX_CHAR_LEN];
EXEC SQL END DECLARE SECTION;

UAPがインクルードしているヘッダファイル(user.h)の中で,次のような定数が定義されているとします。

#define  MAX_CHAR_LEN  256

プリプロセサは,インクルードファイルを読み込み,MAX_CHAR_LENの定義値を使用して,埋込み変数宣言を「char xchar1[256];」に変換してから解析します。ただし,マクロ定数は,SQL先頭子とSQL終了子の間(SQL文中) には使用できません。

インクルードファイルを検索するためのディレクトリパスは,オプションの引数として指定します。Cコンパイラのデフォルトのディレクトリは指定する必要はありません。

(b) 条件付きコンパイル

#ifdefなどを使用して,プリプロセスするSQL文を選択できます。例を次に示します。

#ifdef  DEF_SWITCH
    EXEC SQL DECLARE CUR1 CURSOR FOR SELECT * FROM TABLE1;
#else
    EXEC SQL DECLARE CUR1 CURSOR FOR SELECT * FROM TABLE2;
#endif

ただし,Cコンパイラのプリプロセサ宣言文は,SQL先頭子とSQL終了子の間(SQL文中)には記述できません。