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

VisualAge C++ バージョン 4.0

この VisualAge C++ コンパイラーは、AIX、OS/2、 および Windows 32 ビット・オペレーティング・システム用です。 この節の内容は、これらすべてのプラットフォームに適用されます。

VisualAge C++ コンパイラーは、 本書で紹介される他のコンパイラーとは異なります。 VisualAge C++ バージョン 4.0 を使用してプログラムをコンパイルするには、 まず構成ファイルを作成する必要があります。 このことについてさらに知りたい場合は、 コンパイラーに付属する資料を参照してください。

DB2 は、 VisualAge C++ コンパイラーで作成できるさまざまなタイプの DB2 プログラム用の構成ファイルを提供します。 DB2 構成ファイルを使用するためには、まず、 コンパイルするプログラム名に合わせて環境変数を設定します。 次に、VisualAge C++ が提供しているコマンドを使用して、 プログラムをコンパイルします。 DB2 が提供する構成ファイル、 およびプログラムをコンパイルする際の使用方法について説明している節は、 以下のとおりです。

cli.icc
DB2 CLI 構成ファイル。 詳細については、"DB2 CLI アプリケーション"を参照してください。

cliapi.icc
DB2 API を使用する DB2 CLI の構成ファイル。 詳細については、"DB2 API を使用する DB2 CLI アプリケーション"を参照してください。

clis.icc
DB2 CLI ストアード・プロシージャー構成ファイル。 詳細については、"DB2 CLI ストアード・プロシージャー"を参照してください。

api.icc
DB2 API 構成ファイル。 詳細については、"DB2 API アプリケーション"を参照してください。

emb.icc
組み込み SQL 構成ファイル。 詳細については、"組み込み SQL アプリケーション"を参照してください。

stp.icc
組み込み SQL ストアード・プロシージャー構成ファイル。 詳細については、"組み込み SQL ストアード・プロシージャー"を参照してください。

udf.icc
ユーザー定義関数構成ファイル。 詳細については、 "ユーザー定義関数 (UDF)"を参照してください。

DB2 CLI アプリケーション

DB2 CLI プログラムは、sqllib/samples/cli (AIX の場合)、 および %DB2PATH%\samples\cli (OS/2 および Windows 32 ビット・オペレーティング・システムの場合) にある構成ファイル cli.icc を使用して構築することができます。

// cli.icc configuration file for DB2 CLI applications
// for VisualAge C++ Version 4.0
// To use on AIX, enter: 'export CLI=prog_name'
// To use on OS/2 and Windows, enter: 'set CLI=prog_name'
// Then compile the program by entering: 'vacbld cli.icc'
if defined( $CLI )
{
  prog_name = $CLI
}
else
{
  error "Environment Variable CLI is not defined."
}
infile   = prog_name".c"
utilcli = "utilcli.c"
 
if defined( $__TOS_AIX__ )
{
  // Set db2path to where DB2 will be accessed.
  // The default is the standard instance path.
  db2path     = $HOME"/sqllib"
  outfile     = prog_name
  group lib   = "libdb2.a"
  option opts = link( libsearchpath, db2path"/lib" ),
                incl( searchPath, db2path"/include" )
}
else // if defined( $__TOS_OS2__ ) | defined( $__TOS_WIN__ )
{
  db2path     = $DB2PATH
  outfile     = prog_name".exe"
  group lib   = "db2cli.lib"
  option opts = link( libsearchpath, db2path"\\lib" ),
                incl( searchPath, db2path"\\include" )
}
option opts
 
{
  target type(exe) outfile
  {
    source infile
    source utilcli
    source lib
  }
}

VisualAge C++ バージョン 4.0 は、 インストール先のオペレーティング・システムに応じて、 __TOS_AIX____TOS_OS2____TOS_WIN__ のいずれかの環境変数を定義します。

構成ファイルを使用して、 ソース・ファイル tbinfo.c から DB2 CLI サンプル・プログラム tbinfo を構築するには、 以下のようにします。

  1. 次のように入力して、CLI 環境変数をプログラム名に設定します。
       export CLI=tbinfo
    
  2. cli.icc ファイルを使用して異なるプログラムを作成することによって生成された cli.ics ファイルが作業ディレクトリーにある場合は、 次のコマンドで cli.ics ファイルを削除してください。
       rm cli.ics
    

    既存の cli.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld cli.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

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

   tbinfo

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

cli.icc 構成ファイルを使用して、ファイル embprep (AIX)、embprep.cmd (OS/2)、 または embprep.bat (Windows 32 ビット・オペレーティング・システム) でプリコンパイルされた組み込み SQL プログラムをコンパイルすることができます。 このファイルは、ソース・ファイルをプリコンパイルし、 プログラムをデータベースにバインドします。

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

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

結果として、プリコンパイルされた C ファイル dbusemx.c が作成されます。

プリコンパイルした後、この C ファイルは、 次のようにして cli.icc ファイルでコンパイルすることができます。

  1. 次のように入力して、CLI 環境変数をプログラム名に設定します。
       export CLI=dbusemx
    
  2. cli.icc ファイルを使用して異なるプログラムを作成することによって生成された cli.ics ファイルが作業ディレクトリーにある場合は、 次のコマンドで cli.ics ファイルを削除してください。
       rm cli.ics
    

    既存の cli.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld cli.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

この組み込み 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 サンプル・プログラムの説明の中に示されています。 DB2 API を使用する DB2 CLI プログラムは、sqllib/samples/cli (AIX の場合)、 および %DB2PATH%\samples\cli (OS/2 および Windows 32 ビット・オペレーティング・システムの場合) にある構成ファイル cliapi.icc を使用して構築することができます。

このファイルは、 データベースを作成およびドロップするための DB2 API が入った utilapi ユーティリティー・ファイルでコンパイルおよびリンクします。 この点が、 このファイルと cli.icc 構成ファイルの唯一の違いです。

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

  1. 次のように入力して、CLIAPI 環境変数をプログラム名に設定します。
       export CLIAPI=dbmconn
    
  2. cliapi.icc ファイルを使用して異なるプログラムを構築することによって生成された cliapi.ics ファイルが作業ディレクトリー内にある場合は、 次のコマンドを使用して cliapi.ics ファイルを削除します。
       rm cliapi.ics
    

    既存の cliapi.ics ファイルが、 再構築するその同じプログラム用に生成されているのであれば、削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld cliapi.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

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

   dbmconn

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

DB2 CLI ストアード・プロシージャーは、sqllib/samples/cli (AIX の場合)、 および %DB2PATH%\samples\cli (OS/2 および Windows 32 ビット・オペレーティング・システムの場合) にある構成ファイル clis.icc を使用して構築することができます。

// clis.icc configuration file for DB2 CLI stored procedures
// for VisualAge C++ Version 4.0
// To use on AIX, enter: 'export CLIS=prog_name'
// To use on OS/2 and Windows, enter: 'set CLIS=prog_name'
// Then compile the program by entering: 'vacbld clis.icc'
if defined( $CLIS )
{
  prog_name = $CLIS
}
else
{
  error "Environment Variable CLIS is not defined."
}
infile   = prog_name".c"
utilcli = "utilcli.c"
expfile = prog_name".exp"
 
if defined( $__TOS_AIX__ )
{
  // Set db2path to where DB2 will be accessed.
  // The default is the standard instance path.
  db2path     = $HOME"/sqllib"
  outfile     = prog_name
  group lib   = "libdb2.a"
  option opts = link( exportList, expfile ),
                link( libsearchpath, db2path"/lib" ),
                incl( searchPath, db2path"/include" )
  cpcmd       = "cp"
  funcdir     = db2path"/function"
}
else /* if defined( $__TOS_OS2__ ) | defined( $__TOS_WIN__ ) */
{
  db2path     = $DB2PATH
  outfile     = prog_name".dll"
  if defined( $__TOS_WIN__ )
  {
    expfile = prog_name"v4.exp"
  }
  group lib   = "db2cli.lib"
  option opts = link( exportList, expfile ),
                link( libsearchpath, db2path"\\lib" ),
                incl( searchPath, db2path"\\include" )
  cpcmd       = "copy"
  funcdir     = db2path"\\function"
}
option opts
 
{
  target type(dll) outfile
  {
    source infile
    source utilcli
    source lib
  }
}
 
if defined( $__TOS_AIX__ )
{
  rmcmd       = "rm -f"
  run after rmcmd " " funcdir "/" outfile
}
run after cpcmd " " outfile " " funcdir

VisualAge C++ バージョン 4.0 は、 インストール先のオペレーティング・システムに応じて、 __TOS_AIX____TOS_OS2____TOS_WIN__ のいずれかの環境変数を定義します。

構成ファイルを使用して、 ソース・ファイル spserver.c から DB2 CLI ストアード・プロシージャー spserver を作成するには、 以下のようにします。

  1. 次のように入力して、CLIS 環境変数をプログラム名に設定します。
       export CLIS=spserver
    
  2. clis.icc ファイルを使用して異なるプログラムを作成することによって生成された clis.ics ファイルが作業ディレクトリーにある場合は、次のコマンドで clis.ics ファイルを削除してください。
       rm clis.ics
    

    既存の clis.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld clis.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

ストアード・プロシージャーは、 サーバー上の sqllib/function (AIX) および %DB2PATH%\function (OS/2 および Windows 32 ビット・オペレーティング・システム) というパスにコピーされます。

次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースがあるインスタンスのユーザー ID とパスワードを使用して、 データベースに接続します。

   db2 connect to sample userid password

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

   db2 -td@ -vf spdrop.db2

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

   db2 -td@ -vf spcreate.db2

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

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

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

spclient database userid password

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

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

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

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

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

DB2 API アプリケーション

DB2 API プログラムは、sqllib/samples/c および sqllib/samples/cpp (AIX)、 そして %DB2PATH%\samples\c および %DB2PATH%\samples\c (OS/2 および Windows 32 ビット・オペレーティング・システム) にある構成ファイル api.icc を使用して、 C または C++ で構築することができます。

// api.icc configuration file for DB2 API programs
// for VisualAge C++ Version 4.0
// To use on AIX, enter: 'export API=prog_name'
// To use on OS/2 and Windows, enter: 'set API=prog_name'
// Then compile the program by entering: 'vacbld api.icc'
if defined( $API )
{
  prog_name = $API
}
else
{
  error "Environment Variable API is not defined."
}
infile   = prog_name".c"
util   = "utilapi.c"
 
if defined( $__TOS_AIX__ )
{
  // Set db2path to where DB2 will be accessed.
  // The default is the standard instance path.
  db2path     = $HOME"/sqllib"
  outfile     = prog_name
  group lib   = "libdb2.a"
  option opts = link( libsearchpath, db2path"/lib" ),
                incl( searchPath, db2path"/include" )
}
else // if defined( $__TOS_OS2__ ) | defined( $__TOS_WIN__ )
{
  db2path     = $DB2PATH
  outfile     = prog_name".exe"
  group lib   = "db2api.lib"
  option opts = link( libsearchpath, db2path"\\lib" ),
                incl( searchPath, db2path"\\include" )
}
option opts
 
{
  target type(exe) outfile
  {
    source infile
    source util
    source lib
  }
}

VisualAge C++ バージョン 4.0 は、 インストール先のオペレーティング・システムに応じて、 __TOS_AIX____TOS_OS2____TOS_WIN__ のいずれかの環境変数を定義します。

構成ファイルを使用して、 ソース・ファイル client.c から DB2 API サンプル・プログラム client を作成するには、 以下のようにします。

  1. 次のように入力して、API 環境変数をプログラム名に設定します。
       export API=client
    
  2. api.icc ファイルを使用して異なるプログラムを作成することによって生成された api.ics ファイルが作業ディレクトリーにある場合は、 次のコマンドで api.ics ファイルを削除してください。
       rm api.ics
    

    既存の api.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld api.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

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

client

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

DB2 組み込み SQL アプリケーションは、 sqllib/samples/c および sqllib/samples/cpp (AIX)、 そして %DB2PATH%\samples\c および %DB2PATH%\samples\cpp (OS/2 および Windows 32 ビット・オペレーティング・システム) にある構成ファイル emb.icc を使用して、 C および C++ で構築することができます。

// emb.icc configuration file for embedded SQL applications
// for VisualAge C++ Version 4.0
// To use on AIX, enter: 'export EMB=prog_name'
// To use on OS/2 and Windows, enter: 'set EMB=prog_name'
// Then compile the program by entering: 'vacbld emb.icc'
if defined( $EMB )
{
  prog_name = $EMB
}
else
{
  error "Environment Variable EMB is not defined."
}
// To connect to another database, replace "sample"
// For user ID and password, update 'user' and 'passwd'
// and take out the comment in the line: 'run before "embprep "'
dbname = "sample"
user   = ""
passwd = ""
// Precompiling the source program file
run before "embprep " prog_name " " dbname // " " user " " passwd
infile   = prog_name".c"
util = "utilemb.sqc"
 
if defined( $__TOS_AIX__ )
{
  // Set db2path to where DB2 will be accessed.
  // The default is the standard instance path.
  db2path     = $HOME"/sqllib"
  outfile     = prog_name
  group lib   = "libdb2.a"
  option opts = link( libsearchpath, db2path"/lib" ),
                incl( searchPath, db2path"/include" )
}
else // if defined( $__TOS_OS2__ ) | defined( $__TOS_WIN__ )
{
  db2path     = $DB2PATH
  outfile     = prog_name".exe"
  group lib   = "db2api.lib"
  option opts = link( libsearchpath, db2path"\\lib" ),
                incl( searchPath, db2path"\\include" )
}
option opts
 
{
  target type(exe) outfile
  {
    source infile
    source util
    source lib
  }
}

VisualAge C++ バージョン 4.0 は、 インストール先のオペレーティング・システムに応じて、 __TOS_AIX____TOS_OS2____TOS_WIN__ のいずれかの環境変数を定義します。

構成ファイルを使用してソース・ファイル updat.sqc から組み込み SQL アプリケーション updat を構築するには、 次のようにします。

  1. 次のように入力して、EMB 環境変数をプログラム名に設定します。
       export EMB=updat
    
  2. emb.icc ファイルを使用して異なるプログラムを作成することによって生成された emb.ics ファイルが作業ディレクトリーにある場合は、 次のコマンドで emb.ics ファイルを削除してください。
       rm emb.ics
    

    既存の emb.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld emb.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

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

updat

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

DB2 組み込み SQL ストアード・プロシージャーは、 sqllib/samples/c および sqllib/samples/cpp (AIX)、 そして %DB2PATH%\samples\c および %DB2PATH%\samples\cpp (OS/2 および Windows 32 ビット・オペレーティング・システム) にある構成ファイル stp.icc を使用して、 C および C++ で構築することができます。

// stp.icc configuration file for embedded SQL stored procedures
// for VisualAge C++ Version 4.0
// To use on AIX, enter: 'export STP=prog_name'
// To use on OS/2 and Windows, enter: 'set STP=prog_name'
// Then compile the program by entering: 'vacbld emb.icc'
if defined( $STP )
{
  prog_name = $STP
}
else
{
  error "Environment Variable STP is not defined."
}
// To connect to another database, replace "sample"
// For user ID and password, update 'user' and 'passwd'
// and take out the comment in the line: 'run before "embprep "'
dbname = "sample"
user   = ""
passwd = ""
// Precompiling the source program file
run before "embprep " prog_name " " dbname // " " user " " passwd
infile   = prog_name".c"
expfile = prog_name".exp"
 
if defined( $__TOS_AIX__ )
{
  // Set db2path to where DB2 will be accessed.
  // The default is the standard instance path.
  db2path     = $HOME"/sqllib"
  outfile     = prog_name
  group lib   = "libdb2.a"
  option opts = link( exportList, expfile ),
                link( libsearchpath, db2path"/lib" ),
                incl( searchPath, db2path"/include" )
  cpcmd       = "cp"
  funcdir     = db2path"/function"
}
else // if defined( $__TOS_OS2__ ) | defined( $__TOS_WIN__ )
{
  db2path     = $DB2PATH
  outfile     = prog_name".dll"
  if defined( $__TOS_WIN__ )
  {
    expfile = prog_name"v4.exp"
  }
  group lib   = "db2api.lib"
  option opts = link( exportList, expfile ),
                link( libsearchpath, db2path"\\lib" ),
                incl( searchPath, db2path"\\include" )
  cpcmd       = "copy"
  funcdir     = db2path"\\function"
}
option opts
 
{
  target type(dll) outfile
  {
    source infile
    source lib
  }
}
 
if defined( $__TOS_AIX__ )
{
  rmcmd       = "rm -f"
  run after rmcmd " " funcdir "/" outfile
}
run after cpcmd " " outfile " " funcdir

VisualAge C++ バージョン 4.0 は、 インストール先のオペレーティング・システムに応じて、 __TOS_AIX____TOS_OS2____TOS_WIN__ のいずれかの環境変数を定義します。

構成ファイルを使用して、 ソース・ファイル spserver.sqc から組み込み SQL ストアード・プロシージャー spserver を作成するには、 以下のようにします。

  1. 次のように入力して、STP 環境変数をプログラム名に設定します。
       export STP=spserver
    
  2. stp.icc を使用して異なるプログラムを作成することによって生成された stp.ics ファイルが作業ディレクトリーにある場合は、 次のコマンドで stp.ics ファイルを削除してください。
       rm stp.ics
    

    既存の stp.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld stp.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

ストアード・プロシージャーは、 サーバー上の sqllib/function (AIX) および %DB2PATH%\function (OS/2 および Windows 32 ビット・オペレーティング・システム) というパスにコピーされます。

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

   db2 connect to sample

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

   db2 -td@ -vf spdrop.db2

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

   db2 -td@ -vf spcreate.db2

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

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

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

spclient database userid password

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

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

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

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

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

ユーザー定義関数 (UDF)

ユーザー定義関数は、 sqllib/samples/c および sqllib/samples/cpp (AIX)、 そして %DB2PATH%\samples\c および %DB2PATH%\samples\cpp (OS/2 および Windows 32 ビット・オペレーティング・システム) にある構成ファイル udf.icc を使用して、 C および C++ で構築することができます。

// udf.icc configuration file for user-defined functions
// for VisualAge C++ Version 4.0
// To use on AIX, enter: 'export UDF=prog_name'
// To use on OS/2 and Windows, enter: 'set UDF=prog_name'
// Then compile the program by entering: 'vacbld udf.icc'
if defined( $UDF )
{
  prog_name = $UDF
}
else
{
  error "Environment Variable UDF is not defined."
}
infile   = prog_name".c"
expfile = prog_name".exp"
 
if defined( $__TOS_AIX__ )
{
  // Set db2path to where DB2 will be accessed.
  // The default is the standard instance path.
  db2path     = $HOME"/sqllib"
  outfile     = prog_name
  group lib   = "libdb2.a", "libdb2apie.a"
  option opts = link( exportList, expfile ),
                link( libsearchpath, db2path"/lib" ),
                incl( searchPath, db2path"/include" )
  cpcmd       = "cp"
  funcdir     = db2path"/function"
}
else // if defined( $__TOS_OS2__ ) | defined( $__TOS_WIN__ )
{
  db2path     = $DB2PATH
  outfile     = prog_name".dll"
  if defined( $__TOS_WIN__ )
  {
    expfile = prog_name"v4.exp"
  }
  group lib   = "db2api.lib", "db2apie.lib"
  option opts = link( exportList, expfile ),
                link( libsearchpath, db2path"\\lib" ),
                incl( searchPath, db2path"\\include" )
  cpcmd       = "copy"
  funcdir     = db2path"\\function"
}
option opts
 
{
  target type(dll) outfile
  {
    source infile
    source lib
  }
}
 
if defined( $__TOS_AIX__ )
{
  rmcmd       = "rm -f"
  run after rmcmd " " funcdir "/" outfile
}
run after cpcmd " " outfile " " funcdir

VisualAge C++ バージョン 4.0 は、 インストール先のオペレーティング・システムに応じて、 __TOS_AIX____TOS_OS2____TOS_WIN__ のいずれかの環境変数を定義します。

構成ファイルを使用して、 ソース・ファイル udf.c からユーザー定義関数プログラム udfsrv を作成するには、 以下のようにします。

  1. 次のように入力して、UDF 環境変数をプログラム名に設定します。
       export UDF=udfsrv
    
  2. udf.icc ファイルを使用して異なるプログラムを作成することによって生成された udf.ics ファイルが作業ディレクトリーにある場合は、 次のコマンドで udf.ics ファイルを削除してください。
       rm udf.ics
    

    既存の udf.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。

  3. サンプル・プログラムを以下のように入力してコンパイルします。
       vacbld udf.icc
    

    注:vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。

UDF ライブラリーは、 サーバー上の sqllib/function というパスにコピーされます。

必要であれば、 ユーザー定義関数にファイル・モードを設定して DB2 インスタンスがそれを実行できるようにしてください。

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

DB2 CLI udfcli プログラムは、構成ファイル cli.icc を使用して、sqllib/samples/cli (AIX)、 および %DB2PATH%\samples\cli (OS/2 および Windows 32 ビット・オペレーティング・システム) にあるソース・ファイル udfcli.c から構築することができます。 詳細については、"DB2 CLI アプリケーション"を参照してください。

組み込み SQL udfcli プログラムは、構成ファイル emb.icc を使用して、sqllib/samples/c (AIX)、 および %DB2PATH%\samples\cli (OS/2 および Windows 32 ビット・オペレーティング・システム) にあるソース・ファイル udfcli.sqc から構築することができます。 詳細については、"組み込み SQL アプリケーション"を参照してください。

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

   udfcli

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


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