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

MIPSpro C

この節では、以下に示す DB2 インターフェースで MIPSpro C を使用する方法について説明します。

DB2 CLI アプリケーション

sqllib/samples/cli のスクリプト・ファイル bldcli には、 DB2 CLI プログラムを作成するためのコマンドが入っています。 パラメーター $1 には、ソース・ファイルの名前を指定します。

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

プログラムに組み込み SQL が含まれている場合 (拡張子が .sqc の場合) は、 embprep スクリプトが呼び出されてそのプログラムをプリコンパイルし、 .c という拡張子のプログラム・ファイルを生成します。

#! /bin/ksh
# bldcli script file -- Silicon Graphics IRIX
# Builds a CLI program with MIPSpro C.
# Usage: bldcli <prog_name> [ <db_name> [ <userid> <password> ]]
# Set DB2PATH to where DB2 will be accessed.
   # The default is the instance path.
DB2PATH=$HOME/sqllib
# If an embedded SQL program, precompile and bind it.
if [[ -f $1".sqc" ]]
then
  embprep $1 $2 $3 $4
fi
# 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
# Compile the error-checking utility.
cc $IRIX_OBJECT_MODE -I$DB2PATH/include -c utilcli.c
# Compile the program.
cc $IRIX_OBJECT_MODE -I$DB2PATH/include -c $1.c
# Link the program.
cc $IRIX_OBJECT_MODE -o $1 $1.o utilcli.o -L$DB2_LIBPATH -rpath $DB2_LIBPATH -lm -ldb2


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

コンパイル・オプション

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
プログラムのオブジェクト・ファイルを組み込みます。

utilcli.o
エラー検査用のユーティリティー・オブジェクト・ファイルを組み込みます。

-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 ライブラリーとリンクします。

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

ソース・ファイル tbinfo.c からサンプル・プログラム tbinfo を構築するには、 次のようにします。

   bldcli tbinfo

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

   tbinfo database userid password

組み込み SQL アプリケーションの構築および実行

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

   bldcli dbusemx database userid password

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

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

   dbusemx database userid password

DB2 API を使用する DB2 CLI アプリケーション

DB2 には、CLI サンプル・プログラムが含まれています。 このサンプル・プログラムは、DB2 API を使用してデータベースを作成およびドロップし、 CLI 機能を複数のデータベースで使用する方法を示します。 DB2 API を使用するサンプルは、 表 7 にある CLI サンプル・プログラムの説明の中に示されています。

sqllib/samples/cli のスクリプト・ファイル bldapi には、 DB2 API を使用して DB2 CLI プログラムを作成するためのコマンドが入っています。 このファイルは、 データベースを作成およびドロップするための DB2 API が入った utilapi ユーティリティー・ファイルでコンパイルおよびリンクします。 この点が、 このスクリプト・ファイルと bldcli スクリプトの唯一の違いです。 bldapibldcli の両方に共通するコンパイルとリンクのオプションについては、 "DB2 CLI アプリケーション" を参照してください。

ソース・ファイル dbmconn.c からサンプル・プログラム dbmconn を作成するには、 次のようにします。

   bldapi dbmconn

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

   dbmconn database userid password

ストアード・プロシージャー用の DB2 CLI クライアント・アプリケーション

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

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

ストアード・プロシージャー spserver を構築すると、 スクリプト・ファイル bldcli を使用して、 ストアード・プロシージャー spclient を呼び出すクライアント・アプリケーションをソース・ファイル spclient.c から構築することができます。 詳細については、"DB2 CLI アプリケーション"を参照してください。

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

   spclient database userid password

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

UDF 用の DB2 CLI クライアント・アプリケーション

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

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

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

   udfcli database userid password

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

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

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

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

組み込み SQL プログラムの場合、bldapp は、 プリコンパイルおよびバインドのファイル embprep にパラメーターを渡します。 データベース名が指定されない場合は、 デフォルトの sample データベースが使用されます。 なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。

#! /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 ライブラリーとリンクします。

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

ソース・ファイル client.c から DB2 API 非組み込み SQL サンプル・プログラム client を構築するには、 次のようにします。

   bldapp client

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

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

   client database userid password

組み込み SQL アプリケーションの構築および実行

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

   bldapp updat database userid password

結果として、実行可能ファイル updat が作成されます。 この実行可能ファイルを sample データベースに対して実行するには、 実行可能ファイル名、データベース名、 およびデータベースが置かれているインスタンスのユーザー 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) 用のクライアント・アプリケーション

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

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

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

   udfcli database userid password

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

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

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

sqllib/samples/c のスクリプト・ファイル bldmt には、 組み込み SQL マルチスレッド・プログラムを作成するためのコマンドが含まれています。 第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、接続先のデータベースの名前を指定します。 第 3 パラメーター $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 が作成されます。

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

   thdsrver database userid password


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