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

IBM C

この節では、 次に示す DB2 インターフェースとともに IBM 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 -- AIX
# Builds a CLI program with IBM C.
# Usage: bldcli <prog_name> [ <db_name> [ <userid> <password> ]]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard 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 64 bit programs, uncomment the following line.
# BUILD_64BIT=true
if [ "$BUILD_64BIT" != "" ]
then
  CFLAGS_64=-q64
else
  CFLAGS_64=
fi
# Compile the error-checking utility.
xlc $CFLAGS_64 -I$DB2PATH/include -c utilcli.c
# Compile the program.
xlc $CFLAGS_64 -I$DB2PATH/include -c $1.c
# Link the program.
xlc $CFLAGS_64 -o $1 $1.o utilcli.o -L$DB2PATH/lib -ldb2


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

コンパイル・オプション

xlc
IBM C コンパイラー。

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

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

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

リンク・オプション

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

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

-o $1
実行可能プログラムを指定します。

$1.o
オブジェクト・ファイルを指定します。

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

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

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

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

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

   bldcli tbinfo

結果として、実行可能ファイル tbinfo が作成されます。 この実行可能ファイルを実行するには、次の実行可能ファイル名を入力します。

   tbinfo

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

ソース・ファイル dbusemx.sqc から組み込み SQL アプリケーション dbusemx を作成する方法には、 次の 3 つがあります。

  1. 同じインスタンスにあるサンプル・データベースに接続している場合は、 次のように入力します。
       bldcli dbusemx
    
  2. 同じインスタンスにある他のデータベースに接続している場合は、 さらにデータベース名も入力します。
       bldcli dbusemx database
    
  3. 他のインスタンスにあるデータベースに接続している場合は、 さらにそのデータベース・インスタンスのユーザー ID とパスワードも入力します。
       bldcli dbusemx database userid password
    

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

この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。

  1. 同じインスタンスにある sample データベースにアクセスする場合は、 ただ実行可能ファイルの名前を入力します。
       dbusemx
    
  2. 同じインスタンスにある他のデータベースにアクセスする場合は、 実行可能ファイル名とデータベース名を入力します。
       dbusemx database
    
  3. 他のインスタンスにあるデータベースにアクセスする場合は、 実行可能ファイル名、データベース名、 およびそのデータベース・インスタンスのユーザー 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 が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。

   dbmconn

DB2 CLI ストアード・プロシージャー

sqllib/samples/cli のスクリプト・ファイル bldclisp には、 DB2 CLI ストアード・プロシージャーを構築するコマンドが入っています。 パラメーター $1 には、ソース・ファイルの名前を指定します。 $2 には、 共用ライブラリーへの入り口点になっているストアード・プロシージャー関数を指定します。

#! /bin/ksh
# bldclisp script file -- AIX
# Builds a CLI stored procedure in IBM C.
# Usage: bldclisp <prog_name> [ <entry_point> ]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# To compile 64 bit programs, uncomment the following line.
# BUILD_64BIT=true
if [ "$BUILD_64BIT" != "" ]
then
  CFLAGS_64=-q64
else
  CFLAGS_64=
fi
# Compile the error-checking utility.
xlc $CFLAGS_64 -I$DB2PATH/include -c utilcli.c
# Compile the program.
xlc $CFLAGS_64 -I$DB2PATH/include -c $1.c
# Link the program.
xlc $CFLAGS_64 -o $1 $1.o utilcli.o -L$DB2PATH/lib \
  -ldb2 -lm -H512 -T512 -bE:$1.exp -e $2
# Copy the shared library to the sqllib/function subdirectory.
# Note: the user must have write permission to this directory.
rm -f $DB2PATH/function/$1
cp $1 $DB2PATH/function


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

コンパイル・オプション

xlc
IBM C コンパイラー。

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

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

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

リンク・オプション

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

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

-o $1
実行可能プログラムを指定します。

$1.o
オブジェクト・ファイルを指定します。

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

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

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

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

-H512
出力ファイル位置合わせを指定します。

-T512
出力ファイル・テキスト・セグメントの開始アドレスを指定します。

-bE:$.exp
エクスポート・ファイルを指定します。 エクスポート・ファイルには、ストアード・プロシージャーのリストが含まれています。

-e $2
共用ライブラリーに対するデフォルト入り口点を指定します。

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

ソース・ファイル spserver.c からサンプル・プログラム spserver を構築するには、 そのビルド・ファイル名、プログラム名、および共用ライブラリーへの入り口点になっているストアード・プロシージャー関数を入力します。

    bldclisp spserver outlanguage

スクリプト・ファイルは、 ストアード・プロシージャーを sqllib/function ディレクトリーにコピーします。

次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。

   db2 connect to sample

ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。

   db2 -td@ -vf spdrop.db2

その後、次のコマンドでストアード・プロシージャーをカタログ化します。

   db2 -td@ -vf spcreate.db2

カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。

共用ライブラリー spserver を作成したなら、 CLI クライアント・アプリケーション spclient を構築することができます。 これは、共用ライブラリー内のストアード・プロシージャーを呼び出すアプリケーションです。

spclient は、 スクリプト・ファイル bldcli を使用して構築することができます。 詳細については、"DB2 CLI アプリケーション"を参照してください。

共用ライブラリーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。

spclient database userid password

ここで、それぞれは次のものを表します。

database
接続先のデータベースの名前です。 名前は、sample かその別名、またはその他のデータベース名にすることができます。

userid
有効なユーザー ID です。

password
有効なパスワードです。

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

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 -- AIX
# 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 64 bit programs, uncomment the following line.
# BUILD_64BIT=true
if [ "$BUILD_64BIT" != "" ]
then
  CFLAGS_64=-q64
else
  CFLAGS_64=
fi
# If embedded SQL program, precompile and bind it.
if [[ -f $1".sqc" ]]
then
  embprep $1 $2 $3 $4
  # Compile the utilemb.c error-checking utility.
  xlc $CFLAGS_64 -I$DB2PATH/include -c utilemb.c
else
  # Compile the utilapi.c error-checking utility.
  xlc $CFLAGS_64 -I$DB2PATH/include -c utilapi.c
fi
# Compile the program.
xlc $CFLAGS_64 -I$DB2PATH/include -c $1.c
if [[ -f $1".sqc" ]]
then
  # Link the program with utilemb.o
  xlc $CFLAGS_64 -o $1 $1.o utilemb.o -ldb2 -L$DB2PATH/lib
else
  # Link the program with utilapi.o
  xlc $CFLAGS_64 -o $1 $1.o utilapi.o -ldb2 -L$DB2PATH/lib
fi


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

コンパイル・オプション

xlc
IBM C コンパイラー。

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

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

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

リンク・オプション

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

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

-o $
実行可能プログラムを指定します。

$1.o
プログラム・オブジェクト・ファイルを指定します。

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

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

-ldb2
データベース・マネージャー・ライブラリーとリンクします。

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

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

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

   bldapp client

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

この実行可能ファイルを実行するには、ファイル名を入力します。

   client

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

ソース・ファイル updat.sqc から組み込み SQL アプリケーション updat を構築する方法には、 次の 3 つがあります。

  1. 同じインスタンスにあるサンプル・データベースに接続している場合は、 次のように入力します。
       bldapp updat
    
  2. 同じインスタンスにある他のデータベースに接続している場合は、 さらにデータベース名も入力します。
       bldapp updat database
    
  3. 他のインスタンスにあるデータベースに接続している場合は、 さらにそのデータベース・インスタンスのユーザー ID とパスワードも入力します。
       bldapp updat database userid password
    

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

この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。

  1. 同じインスタンスにある sample データベースにアクセスする場合は、 ただ実行可能ファイルの名前を入力します。
       updat
    
  2. 同じインスタンスにある他のデータベースにアクセスする場合は、 実行可能ファイル名とデータベース名を入力します。
       updat database
    
  3. 他のインスタンスにあるデータベースにアクセスする場合は、 実行可能ファイル名、データベース名、 およびそのデータベース・インスタンスのユーザー ID とパスワードを入力します。
       updat database userid password
    

組み込み SQL ストアード・プロシージャー

sqllib/samples/c にあるスクリプト・ファイル bldsrv には、 ストアード・プロシージャーを構築するためのコマンドが含まれています。 スクリプト・ファイルは、 ストアード・プロシージャーを共用ライブラリーの中にコンパイルしますが、 それはクライアント・アプリケーションから呼び出すことができます。

第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 共用ライブラリーへの入り口点になっているストアード・プロシージャー関数を指定します。 第 3 パラメーター $3 には、 接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターはありません。

最初の 2 つのパラメーター (ソース・ファイル名と入り口点) だけが必須です。 データベース名は任意で指定します。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。

#! /bin/ksh
# bldsrv script file -- AIX
# Builds a C stored procedure
# Usage: bldsrv <prog_name> <entry_point> [ <db_name> ]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# Precompile and bind the program.
embprep $1 $3
# To compile 64 bit programs, uncomment the following line.
# BUILD_64BIT=true
if [ "$BUILD_64BIT" != "" ]
then
  CFLAGS_64=-q64
else
  CFLAGS_64=
fi
# Compile the program.
xlc $CFLAGS_64 -I$DB2PATH/include -c $1.c
# Link the program using the export file $1.exp,
# creating shared library $1 with entry point $2.
xlc $CFLAGS_64 -o $1 $1.o -ldb2 -L$DB2PATH/lib -H512 -T512 -bE:$1.exp -e $2
# Copy the shared library to the sqllib/function subdirectory.
# Note: the user must have write permission to this directory.
rm -f $DB2PATH/function/$1
cp $1 $DB2PATH/function


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

コンパイル・オプション

xlc
IBM C コンパイラー。

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

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

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

リンク・オプション

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

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

-o $1
出力を、共用ライブラリー・ファイルとして指定します。

$1.o
ストアード・プロシージャー・オブジェクト・ファイルを指定します。

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

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

-H512
出力ファイル位置合わせを指定します。

-T512
出力ファイル・テキスト・セグメントの開始アドレスを指定します。

-bE:$1.exp
エクスポート・ファイルを指定します。 エクスポート・ファイルには、ストアード・プロシージャーのリストが含まれています。

-e $1
共用ライブラリーに対するデフォルト入り口点を指定します。

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

ソース・ファイル spserver.sqc からサンプル・プログラム spserver を構築する場合、 sample データベースに接続しているときは、ビルド・ファイル名、プログラム名、 および共用ライブラリーの入り口点になっているストアード・プロシージャー関数の名前を入力します。

    bldsrv spserver outlanguage

他のデータベースに接続しているときは、 さらにデータベース名も入力します。

    bldsrv spserver outlanguage database

このスクリプト・ファイルは、 ストアード・プロシージャーをサーバー上の sqllib/function というパスにコピーします。

次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。

   db2 connect to sample

ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。

   db2 -td@ -vf spdrop.db2

その後、次のコマンドでストアード・プロシージャーをカタログ化します。

   db2 -td@ -vf spcreate.db2

カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。

共用ライブラリー spserver を作成したなら、 共用ライブラリーにアクセスするクライアント・アプリケーション spclient を構築することができます。

spclient は、 スクリプト・ファイル bldapp を使用して構築することができます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。

ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。

spclient database userid password

ここで、それぞれは次のものを表します。

database
接続先のデータベースの名前です。 名前は、sample かその別名、またはその他のデータベース名にすることができます。

userid
有効なユーザー ID です。

password
有効なパスワードです。

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

ユーザー定義関数 (UDF)

スクリプト・ファイル bldudf は、 sqllib/samples/c にあり、 UDF を作成するためのコマンドが含まれています。 UDF は、ストアード・プロシージャーと同じようにコンパイルされます。 UDF の中に SQL ステートメントを含めることはできません。 したがって、UDF プログラムを作成する場合、データベースへの接続、 プログラムのプリコンパイル、およびバインドは行いません。

第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 共用ライブラリーへの入り口点になっているストアード・プロシージャー関数を指定します。 スクリプト・ファイルは、 ソース・ファイル名 $1 を共用ライブラリー名として使います。

#! /bin/ksh
# bldudf script file -- AIX
# Builds a C UDF library
# Usage: bldudf <prog_name> <entry_point>
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# To compile 64 bit programs, uncomment the following line.
# BUILD_64BIT=true
if [ "$BUILD_64BIT" != "" ]
then
  CFLAGS_64=-q64
else
  CFLAGS_64=
fi
# Compile the program.
xlc $CFLAGS_64 -I$DB2PATH/include -c $1.c
# Link the program.
xlc $CFLAGS_64 -o $1 $1.o -ldb2 -ldb2apie -L$DB2PATH/lib -H512 -T512 -bE:$1.exp -e $2
# Copy the shared library to the sqllib/function subdirectory.
# Note: the user must have write permission to this directory.
rm -f $DB2PATH/function/$1
cp $1 $DB2PATH/function


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

コンパイル・オプション

xlc
IBM C コンパイラー。

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

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

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

リンク・オプション

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

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

-o $1
出力を、共用ライブラリー・ファイルとして指定します。

$1.o
共用ライブラリー・オブジェクト・ファイルを指定します。

-ldb2
データベース・マネージャー・ライブラリーとリンクします。

-ldb2apie
DB2 API エンジン・ライブラリーとリンクして、LOB ロケーターを使用できるようにします。

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

-H512
出力ファイル位置合わせを指定します。

-T512
出力ファイル・テキスト・セグメントの開始アドレスを指定します。

-bE:$1.exp
エクスポート・ファイルを指定します。 エクスポート・ファイルには、UDF のリストが含まれています。

-e $2
共用ライブラリーに対するデフォルト入り口点を指定します。

他のコンパイラー・オプションについては、 コンパイラーの資料をご覧ください。 UDF の作成に関する詳細については、 "UDF および CREATE FUNCTION ステートメント"を参照してください。

ソース・ファイル udfsrv.c からユーザー定義関数プログラム udfsrv を構築するには、 そのビルド・ファイル名、プログラム名、および共用ライブラリーへの入り口点になっている UDF 関数を入力します。

   bldudf udfsrv ScalarUDF

スクリプト・ファイルは、 UDF を sqllib/function ディレクトリーにコピーします。

必要であれば、UDF にファイル・モードを設定してクライアント・アプリケーションから実行できるようにします。

udfsrv を作成したなら、 それを呼び出すクライアント・アプリケーション udfcli を構築できます。 このプログラムには DB2 CLI バージョンと組み込み SQL バージョンがあります。

DB2 CLI udfcli プログラム は、スクリプト・ファイル bldcli を使用して、 sqllib/samples/cli にあるソース・ファイル udfcli.c から作成できます。 詳細については、"DB2 CLI アプリケーション"を参照してください。

組み込み SQL udfcli プログラムは、 スクリプト・ファイル bldapp を使用して、 sqllib/samples/c にあるソース・ファイル udfcli.sqc から構築することができます。 詳細については、"DB2 API と組み込み SQL アプリケーション"を参照してください。

UDF を呼び出すには、次の実行可能ファイル名を入力して、 サンプルの呼び出しアプリケーションを実行します。

   udfcli

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

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

AIX バージョン 4 上で実行する C マルチスレッド・アプリケーションは、 xlc コンパイラーの代わりに xlc_r コンパイラーを、 C++ の場合は、 xlC コンパイラーの代わりに xlC_r コンパイラーを使用して、 コンパイルおよびリンクする必要があります。 32 ビットのアプリケーションに AIX 4.3 以降を使用する場合は、 xlc_r7 コンパイラーまたは xlC_r7 コンパイラーを使用してください。 _r バージョン (および他のマルチスレッド・アプリケーションのフロントエンド) では、 マルチスレッド用のコンパイルを定義している適当なプリプロセッサーが設定され、 適当なスレッド・ライブラリー名がリンカーに付けられます。

マルチスレッド・コンパイラーのフロントエンドを使用したコンパイラーおよびリンク・フラグの設定についてのさらに詳しい情報は、 /etc/xlC.cfg (3.1 コンパイラーを使用する場合)、 または /etc/ibmcxx.cfg (3.6 以降のコンパイラーを使用する場合) を参照してください。

スクリプト・ファイル bldmtsqllib/samples/c にあり、 組み込み SQL マルチスレッド・プログラムを作成するためのコマンドが含まれています。 第 1 パラメーター $1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター $2 には、 接続先のデータベースの名前を指定します。 パラメーター $3 はそのデータベースのユーザー ID を、 $4 はパスワードを指定します。 第 1 パラメーター (ソース・ファイル名) だけが必須です。 データベース名、ユーザー ID、および、パスワードは任意指定です。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。

#! /bin/ksh
# bldmt script file -- AIX
# 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
# Precompile and bind the program.
embprep $1 $2 $3 $4
# To compile 64 bit programs, uncomment the following line.
# BUILD_64BIT=true
if [ "$BUILD_64BIT" != "" ]
then
  CFLAGS_64=-q64
else
  CFLAGS_64=
fi
# Compile the program.
xlc_r $CFLAGS_64 -I$DB2PATH/include -c $1.c
# Link the program.
xlc_r $CFLAGS_64 -o $1 $1.o -L$DB2PATH/lib -ldb2

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

ソース・ファイル thdsrver.sqc からマルチスレッド・サンプル・プログラム thdsrver を作成するには、 次のように入力します。

   bldmt thdsrver

結果として、実行可能ファイル thdsrver が作成されます。 sample データベースに対してこの実行可能ファイルを実行するには、 次の実行可能ファイル名を入力します。

   thdsrver


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