アプリケーション構築の手引き

MIPSpro C++

この節では以下のトピックを取り上げています。

DB2 API と組み込み SQL アプリケーション

sqllib/samples/cpp にあるスクリプト・ファイル bldapp には、 DB2 アプリケーション・プログラムを構築するコマンドが含まれています。

第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 非組み込み SQL アプリケーションの必須パラメーターはこのパラメーターだけです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 オプションとして 3 つのパラメーターが用意されています。 2 番目のパラメーターは $2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは $3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが $4 で、 データベースのパスワードを指定します。

組み込み SQL プログラムの場合、bldapp は、 プリコンパイルおよびバインドのファイル embprep にパラメーターを渡します。

#! /bin/ksh
# bldapp script file -- Silicon Graphics IRIX
# Builds a C++ application program
# Usage:  bldapp <prog_name> [ <db_name> [ <userid> <password> ]]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# To compile with n32 object support, uncomment the following line.
# IRIX_OBJECT_MODE=-n32
if [ "$IRIX_OBJECT_MODE" = "-n32" ] ; then
  # Link with db2 n32 object type libraries.
  DB2_LIBPATH=$DB2PATH/lib32
else
  # Link with db2 o32 object type libraries.
  DB2_LIBPATH=$DB2PATH/lib
fi
# If an embedded SQL program, precompile and bind it.
if [[ -f $1".sqC" ]]
then
embprep $1 $2 $3 $4
  # Compile the utilemb.C error-checking utility.
  CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c utilemb.C
else
  # Compile the utilapi.c error-checking utility.
  CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c utilapi.C
fi
# Compile the program.
CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c $1.C
if [[ -f $1".sqc" ]]
then
  # Link the program with utilemb.o
  CC $IRIX_OBJECT_MODE -o $1 $1.o utilemb.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2
else
  # Link the program with utilapi.o
  CC $IRIX_OBJECT_MODE -o $1 $1.o utilapi.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2
fi


bldapp のコンパイルおよびリンク・オプション

コンパイル・オプション

CC
C++ コンパイラーを使用します。

$IRIX_OBJECT_MODE
'IRIX_OBJECT_MODE=-n32' がコメント解除されている場合に、 "-n32" を含みます。 それ以外の場合は、値を含みません。

-I$DB2PATH/include
DB2 インクルード・ファイルのロケーションを指定します。 たとえば、$HOME/sqllib/include

-c
コンパイルのみを実行し、リンクは実行しません。 このスクリプト・ファイルでは、コンパイルとリンクは別個のステップです。

リンク・オプション

CC
コンパイラーをリンカーのフロントエンドとして使用します。

$IRIX_OBJECT_MODE
'IRIX_OBJECT_MODE=-n32' がコメント解除されている場合に、 "-n32" を含みます。 それ以外の場合は、値を含みません。

-o $1
実行可能ファイルを指定します。

$1.o
プログラムのオブジェクト・ファイルを組み込みます。

utilemb.o
組み込み SQL プログラムの場合に、 エラー・チェックを行う組み込み SQL ユーティリティー・オブジェクト・ファイルを含みます。

utilapi.o
非組み込み SQL プログラムの場合に、 エラー・チェックを行う DB2 API ユーティリティー・オブジェクト・ファイルを含みます。

-L$DB2_LIBPATH
リンク時の DB2 静的ライブラリーおよび共用ライブラリーのロケーションを示します。 o32 オブジェクト・タイプの場合は $DB2PATH/lib を、 n32 オブジェクト・タイプの場合は $DB2PATH/lib32 を示します。 -L オプションが指定されない場合、 コンパイラーはパスとして /usr/lib:/lib を想定します。

-rpath $DB2_LIBPATH
実行時の DB2 共用ライブラリーのロケーションを示します。 o32 オブジェクト・タイプの場合は $DB2PATH/lib を、 n32 オブジェクト・タイプの場合は $DB2PATH/lib32 を示します。

-lm
数学ライブラリーとリンクします。

-ldb2
DB2 ライブラリーとリンクします。

他のコンパイラー・オプションについては、コンパイラーの資料をご覧ください。

ソース・ファイル updat.sqC からサンプル・プログラム updat を構築するには、 データベースのパラメーターと、 データベースが置かれているインスタンスのユーザー ID とパスワードを組み込みます。

   bldapp updat database userid password

結果として実行可能ファイル updat が作成されます。 この実行可能ファイルを実行するには、実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力します。

updat database userid password

ストアード・プロシージャー用の組み込み SQL クライアント・アプリケーション

ストアード・プロシージャーは、 データベースにアクセスしてクライアント・アプリケーションに情報を戻すプログラムです。 ストアード・プロシージャーのコンパイルと保管は、サーバー上で行われます。 なお、サーバーは別のプラットフォームで実行します。

DB2 がサポートするプラットフォームのサーバー上で組み込み SQL ストアード・プロシージャー spserver を作成する場合は、 本書のそのプラットフォーム用の『アプリケーションの構築』という章を参照してください。 DB2 クライアントからアクセスできる他のサーバーについては、 "サポートされるサーバー"を参照してください。

ストアード・プロシージャー spserver を作成したなら、 そのストアード・プロシージャーを呼び出すクライアント・アプリケーションを構築できます。 spclient は、スクリプト・ファイル bldapp を使用して、 ソース・ファイル spclient.sqC から作成することができます。 詳細については、"DB2 API と組み込み SQL アプリケーション"を参照してください。

ストアード・プロシージャーを呼び出すには、実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力して、 クライアント・アプリケーションを実行します。

   spclient database userid password

クライアント・アプリケーションは共用ライブラリー spserver にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 ストアード・プロシージャーは、出力をクライアント・アプリケーションに戻します。

UDF 用の組み込み SQL クライアント・アプリケーション

ユーザー定義関数 (UDF) とは、ユーザー独自のスカラー関数のことであり、 この関数はサーバー上でコンパイルされ、サーバー上に保管されます。 なお、サーバーは別のプラットフォームで実行します。 DB2 がサポートする各プラットフォームのサーバー上でユーザー定義関数 udfsrv を作成する場合は、 本書のそのプラットフォーム用の『アプリケーションの構築』という章を参照してください。 DB2 クライアントからアクセスできる他のサーバーについては、 "サポートされるサーバー"を参照してください。

udfsrv を構築したなら、スクリプト・ファイル bldapp を使用して、 それを呼び出すための組み込み SQL クライアント・アプリケーション udfclisqllib/samples/cpp のソース・ファイル udfcli.sqC から構築することができます。 詳細については、"DB2 API と組み込み SQL アプリケーション"を参照してください。

UDF プログラムを呼び出すには、実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力して、 呼び出しアプリケーションを実行します。

   udfcli database userid password

この呼び出しアプリケーションは、 udfsrv ライブラリーから ScalarUDF 関数を呼び出します。

マルチスレッド・アプリケーション

Silicon Graphics IRIX 上のマルチスレッド・アプリケーションは、 -ldb2_th および -lpthread リンク・オプションを使用して、 o32n32 のオブジェクト・タイプに対応した POSIX スレッド・バージョンの DB2 ライブラリーにリンクさせる必要があります。

sqllib/samples/cpp のスクリプト・ファイル bldmt には、 組み込み SQL マルチスレッド・プログラムを作成するためのコマンドが含まれています。

第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、接続先のデータベースの名前を指定します。 パラメーター $3 にはそのデータベースのユーザー ID を、 $4 にはパスワードを指定します。

#! /bin/ksh
# bldmt script file -- Silicon Graphics IRIX
# Builds a C++ multi-threaded embedded SQL program
# Usage:  bldmt <prog_name> [ <db_name> [ <userid> <password> ]]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# To compile with n32 object support, uncomment the following line.
# IRIX_OBJECT_MODE=-n32
if [ "$IRIX_OBJECT_MODE" = "-n32" ] ; then
  # Link with db2 n32 object type libraries.
  DB2_LIBPATH=$DB2PATH/lib32
else
  # Link with db2 o32 object type libraries.
  DB2_LIBPATH=$DB2PATH/lib
fi
# Precompile and bind the program.
embprep $1 $2 $3 $4
# Compile the program.
CC $IRIX_OBJECT_MODE -I$DB2PATH/include -c $1.C
# Link the program.
CC $IRIX_OBJECT_MODE -o $1 $1.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2_th -lpthread

上記の -ldb2_th および -lpthread リンク・オプションや、 リンクされているユーティリティー・ファイルがないという点だけでなく、 残りのコンパイルとリンクのオプションも、 組み込み SQL スクリプト・ファイル bldapp で使用されているものと同じです。 これらのオプションについては、"DB2 API と組み込み SQL アプリケーション"を参照してください。

ソース・ファイル thdsrver.sqC からサンプル・プログラム thdsrver を構築するには、 データベースのパラメーターと、 データベースが置かれているインスタンスのユーザー ID とパスワードを指定するパラメーターを組み込みます。

   bldmt thdsrver database userid password

結果として、実行可能ファイル thdsrver が作成されます。

この実行可能ファイルを sample データベースに対して実行するには、 実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー ID とパスワードを入力します。

   thdsrver database userid password


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]