この VisualAge C++ コンパイラーは、AIX、OS/2、 および Windows 32 ビット・オペレーティング・システム用です。 この節の内容は、これらすべてのプラットフォームに適用されます。
VisualAge C++ コンパイラーは、 本書で紹介される他のコンパイラーとは異なります。 VisualAge C++ バージョン 4.0 を使用してプログラムをコンパイルするには、 まず構成ファイルを作成する必要があります。 このことについてさらに知りたい場合は、 コンパイラーに付属する資料を参照してください。
DB2 は、 VisualAge C++ コンパイラーで作成できるさまざまなタイプの DB2 プログラム用の構成ファイルを提供します。 DB2 構成ファイルを使用するためには、まず、 コンパイルするプログラム名に合わせて環境変数を設定します。 次に、VisualAge C++ が提供しているコマンドを使用して、 プログラムをコンパイルします。 DB2 が提供する構成ファイル、 およびプログラムをコンパイルする際の使用方法について説明している節は、 以下のとおりです。
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 を構築するには、 以下のようにします。
export CLI=tbinfo
rm cli.ics
既存の cli.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
vacbld cli.icc
注: | vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。 |
結果として、実行可能ファイル tbinfo が作成されます。 この実行可能ファイルを実行するには、次の実行可能ファイル名を入力します。
tbinfo
cli.icc 構成ファイルを使用して、ファイル embprep (AIX)、embprep.cmd (OS/2)、 または embprep.bat (Windows 32 ビット・オペレーティング・システム) でプリコンパイルされた組み込み SQL プログラムをコンパイルすることができます。 このファイルは、ソース・ファイルをプリコンパイルし、 プログラムをデータベースにバインドします。
ソース・ファイル dbusemx.sqc から組み込み SQL アプリケーション dbusemx をプリコンパイルする方法には、 次の 3 つがあります。
embprep dbusemx
embprep dbusemx database
embprep dbusemx database userid password
結果として、プリコンパイルされた C ファイル dbusemx.c が作成されます。
プリコンパイルした後、この C ファイルは、 次のようにして cli.icc ファイルでコンパイルすることができます。
export CLI=dbusemx
rm cli.ics
既存の cli.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
vacbld cli.icc
注: | vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。 |
この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。
dbusemx
dbusemx database
dbusemx database userid password
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 を構築するには、 次のようにします。
export CLIAPI=dbmconn
rm cliapi.ics
既存の cliapi.ics ファイルが、 再構築するその同じプログラム用に生成されているのであれば、削除する必要はありません。
vacbld cliapi.icc
注: | vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。 |
結果として、実行可能ファイル dbmconn が生成されます。 この実行可能ファイルを実行するには、次の実行可能ファイル名を入力します。
dbmconn
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 を作成するには、 以下のようにします。
export CLIS=spserver
rm clis.ics
既存の clis.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
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
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは共用ライブラリー spserver にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 出力は、クライアント・アプリケーションに戻されます。
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 を作成するには、 以下のようにします。
export API=client
rm api.ics
既存の api.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
vacbld api.icc
注: | vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。 |
結果として、実行可能ファイル client が作成されます。 この実行可能ファイルを実行するには、次の実行可能ファイル名を入力します。
client
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 を構築するには、 次のようにします。
export EMB=updat
rm emb.ics
既存の emb.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
vacbld emb.icc
注: | vacbld コマンドは、 VisualAge C++ バージョン 4.0 で提供されます。 |
結果として、実行可能ファイル updat が作成されます。 この実行可能ファイルを実行するには、次の実行可能ファイル名を入力します。
updat
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 を作成するには、 以下のようにします。
export STP=spserver
rm stp.ics
既存の stp.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
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
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは共用ライブラリー spserver にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 出力は、クライアント・アプリケーションに戻されます。
ユーザー定義関数は、 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 を作成するには、 以下のようにします。
export UDF=udfsrv
rm udf.ics
既存の udf.ics ファイルが、再構築するその同じプログラム用に生成されているのであれば、 削除する必要はありません。
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 関数を呼び出します。