スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

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

<この項の構成>
(1) 概要
(2) 使用例

(1) 概要

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

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

注※
SQL文,及びSQL TYPE IS 型の変数宣言は,インクルードファイルの中には記述できません(プリプロセサは,ヘッダのポストソースは生成しないため,コンパイル時にエラーとなります)。

(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文中)には記述できません。