この節では以下のトピックを取り上げています。
注: | Visual C++ コンパイラーは、 %DB2PATH%\samples\c ディレクトリーと %DB2PATH%\samples\cpp ディレクトリーにある、 C と C++ の両方のサンプル・プログラムに使用されます。 同じバッチ・ファイルがこれらの 2 つのディレクトリー内に置かれています。 これらのディレクトリーにあるバッチ・ファイルには、 ファイルの拡張子に応じて、 C または C++ のどちらかのソース・ファイルを受け入れるコマンドが含まれています。 バッチ・ファイルを使用しない最初の 2 つのトピック「ActiveX Data Objects (ADO)」と「オブジェクトのリンクと埋め込み (OLE) オートメーション」を除き、 この節ではバッチ・ファイルを使用してプログラムを作成する方法を例を挙げて説明します。 |
以下に示す変更を行うと、Visual C++ を使用する DB2 ADO プログラムは、 正規の C++ プログラムと同じようにコンパイルできるようになります。
C++ ソース・プログラムを ADO プログラムとして実行するには、 以下の IMPORT ステートメントをソース・プログラム・ファイルの先頭に置くことができます。
#import "C:\program files\common files\system\ado\msado<VERSION NUMBER>.dll" \ no_namespace \ rename( "EOF", "adoEOF")
<VERSION NUMBER> は、ADO ライブラリーのバージョン番号です。
プログラムがコンパイルされたら、 ユーザーは msado<VERSION NUMBER>.dll が指定されたパスにあるかどうか検証する必要があります。 C:\program files\common files\system\ado を環境変数 LIBPATH に追加し、 短くした IMPORT ステートメントを以下のようにソース・ファイルで使用することもできます。
#import <msado<VERSION NUMBER>.dll> \ no_namespace \ rename( "EOF", "adoEOF")
DB2 サンプル・プログラム BLOBAccess.dsp では、 この方法が使用されています。
この IMPORT ステートメントにより、 DB2 プログラムには ADO ライブラリーへのアクセス権が与えられます。 これで、 Visual C++ プログラムも他のプログラムと同様にコンパイルできるようになります。 また、DB2 API または DB2 CLI など、 別のプログラミング・インターフェースを使用する場合、 プログラム作成の詳細については、この章の該当する節を参照してください。
DB2 の %DB2PATH%\samples\ADO\VC に、 Visual C++ ADO のサンプル・プログラムがあります。
この節では、 Microsoft Visual C++ でのオブジェクトのリンクと埋め込み (OLE) オートメーション UDF、 およびストアード・プロシージャーの OLE オートメーション制御プログラム・サンプルについて説明します。
OLE オートメーション UDF およびストアード・プロシージャーは、 OLE が言語独立であるので、 OLE オートメーション・サーバーのメソッドを公開し、 そのメソッドを DB2 を使用する UDF として登録することによって、 任意の言語で実現できます。 OLE オートメーション・サーバーの開発をサポートするアプリケーション開発環境には、 以下の特定のバージョンが含まれます。 Microsoft Visual Basic、Microsoft Visual C++、Microsoft Visual J++、 Microsoft FoxPro、Borland Delphi、Powersoft PowerBuilder、 および Micro Focus COBOL。 さらに、たとえば Microsoft Visual J++ に付属するような、 OLE 用に同梱されている Java の簡単なオブジェクトも、 OLE オートメーションを介してアクセスできます。
OLE オートメーション・サーバーの開発の詳細については、 該当するアプリケーション開発環境の資料を参照する必要があります。 OLE オートメーションを使用した DB2 プログラミングの詳細については、 アプリケーション開発の手引き を参照してください。
Microsoft Visual C++ は、 OLE オートメーション・サーバーの作成をサポートします。 サーバーは、 Microsoft Foundation Classes および Microsoft Foundation Class アプリケーション・ウィザードを使用して、 または Win32 アプリケーションとして実現することができます。 サーバーは、DLL または EXE にすることができます。 詳細については、 Microsoft Visual C++ の資料および Microsoft Visual C++ によって提供される OLE サンプルを参照してください。 DB2 用の Visual C++ UDF を作成するための情報については、 "ユーザー定義関数 (UDF)"を参照してください。 DB2 CLI を使って Visual C++ ストアード・プロシージャーを作成するための情報については、 "DB2 CLI ストアード・プロシージャー"を参照してください。 DB2 用の Visual C++ 組み込み SQL ストアード・プロシージャーを作成するための情報については、 "組み込み SQL ストアード・プロシージャー"を参照してください。
DB2 は、 Microsoft Visual C++ に含まれている OLE オートメーション UDF およびストアード・プロシージャーのサンプルを提供しており、 それはディレクトリー %DB2PATH%\samples\ole\msvc にあります。 OLE オートメーション UDF およびストアード・プロシージャーのサンプルを作成して実行する方法については、 %DB2PATH%\samples\ole の README ファイルを参照してください。
%DB2PATH%\samples\cli にあるバッチ・ファイル bldmcli.bat には、 DB2 CLI プログラムを作成するためのコマンドが入っています。
このパラメーター %1 には、ソース・ファイルの名前を指定します。
これは、唯一の必須パラメーターであり、 組み込み SQL を含まない CLI プログラムに必要なパラメーターはこのパラメーターだけです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 3 つのパラメーターがオプションとして用意されています。 2 番目のパラメーターは %2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは %3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが %4 で、 データベースのパスワードを指定します。
プログラムに組み込み SQL (.sqc または .sqx 拡張子が付いている) が含まれている場合、 embprep バッチ・ファイルは、.c または .cxx 拡張子を持つプログラム・ファイルを生成して、 プログラムをプリコンパイルするために呼び出されます。
@echo off rem bldmcli batch file - Windows 32-bit Operating Systems rem Builds a CLI program with Microsoft Visual C++. rem Usage: bldmcli prog_name [ db_name [ userid password ]] if exist "%1.sqc" call embprep %1 %2 %3 %4 if exist "%1.sqx" call embprep %1 %2 %3 %4 rem Compile the error-checking utility. cl -Z7 -Od -c -W1 -D_X86=1 -DWIN32 utilcli.c rem Compile the program. if exist "%1.sqx" goto cpp cl -Z7 -Od -c -W1 -D_X86=1 -DWIN32 %1.c goto link_step :cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx rem Link the program. :link_step link -debug:full -debugtype:cv -OUT:%1.exe %1.obj utilcli.obj db2cli.lib @echo on
bldmcli のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル tbinfo.c からサンプル・プログラム tbinfo を作成するには、 次のように入力します。
bldmcli tbinfo
結果として、実行可能ファイル tbinfo が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。
tbinfo
ソース・ファイル dbusemx.sqc から組み込み SQL アプリケーション dbusemx を作成する場合、 次の 3 つの方法があります。
bldmcli dbusemx
bldmcli dbusemx database
bldmcli dbusemx database userid password
結果として、実行可能ファイル dbusemx が作成されます。
この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。
dbusemx
dbusemx database
dbusemx database userid password
DB2 には、CLI サンプル・プログラムが含まれています。 このサンプル・プログラムは、DB2 API を使用してデータベースを作成およびドロップし、 CLI 機能を複数のデータベースで使用する方法を示します。 DB2 API を使用するサンプルは、 表 7 にある CLI サンプル・プログラムの説明の中に示されています。
sqllib/samples/cli にあるスクリプト・ファイル bldmapi には、 DB2 API を持つ DB2 CLI プログラムを作成するためのコマンドが入っています。 このファイルは、 データベースを作成およびドロップするための DB2 API が入った utilapi ユーティリティー・ファイルでコンパイルおよびリンクします。 この点が、このファイルと bldmcli バッチ・ファイルの唯一の違いです。 bldmapi と bldmcli の両方に共通のコンパイルおよびリンク・オプションについては、 "DB2 CLI アプリケーション" を参照してください。
ソース・ファイル dbmconn.c からサンプル・プログラム dbmconn を作成するには、 次のように入力します。
bldmapi dbmconn
結果として、実行可能ファイル dbmconn が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。
dbmconn
%DB2PATH%\samples\cli にあるバッチ・ファイル bldmclis.bat には、 CLI ストアード・プロシージャーを作成するためのコマンドが入っています。 バッチ・ファイルは、 ストアード・プロシージャーをサーバー上の DLL 内に作成します。
このパラメーター %1 には、ソース・ファイルの名前を指定します。 バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。
@echo off rem bldmclis.bat file - Windows 32-bit Operating Systems rem Builds a CLI stored procedure using the Microsoft Visual C++ compiler. rem Usage: bldmclis prog_name if "%1" == "" goto error rem Compile the program. if exist "%1.cxx" goto cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c utilcli.c goto link_step :cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx utilcli.c rem Link the program. :link_step link -debug:full -debugtype:cv -dll -out:%1.dll %1.obj utilcli.obj db2cli.lib -def:%1.def rem Copy the stored procedure DLL to the 'function' directory copy %1.dll "%DB2PATH%\function" goto exit :error echo Usage: bldmclis prog_name :exit @echo on
bldmclis のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル spserver.c から spserver ストアード・プロシージャーを作成するには、 次のように入力します。
bldmclis spserver
このバッチ・ファイルは、CLI サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル spserver.def を使用してストアード・プロシージャーを作成します。 このバッチ・ファイルは、 ストアード・プロシージャー DLL の spserver.dll をサーバー上の %DB2PATH%\function というパスにコピーします。
次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。
db2 connect to sample
ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。
db2 -td@ -vf spdrop.db2
その後、次のコマンドでストアード・プロシージャーをカタログ化します。
db2 -td@ -vf spcreate.db2
カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。
ストアード・プロシージャー spserver を作成したなら、 そのストアード・プロシージャーを呼び出す CLI クライアント・アプリケーション spclient を構築できます。
spclient は、スクリプト・ファイル bldmcli を使用して構築することができます。 詳細については、 "DB2 CLI アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。
spclient database userid password
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは、 ストアード・プロシージャー・ライブラリー spserver にアクセスし、 サーバー・データベース上のいくつかのストアード・プロシージャー関数を実行します。 出力は、クライアント・アプリケーションに戻されます。
%DB2PATH%\samples\c と %DB2PATH%\samples\cpp にあるバッチ・ファイル bldmapp.bat には、 組み込み SQL プログラムを作成するためのコマンドが入っています。
第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 これは組み込み SQL を含まないプログラムに必要な唯一のパラメーターです。 組み込み SQL プログラムを構築するにはデータベースへの接続が必要なので、 3 つのオプション・パラメーターが提供されます。 第 2 パラメーター %2 は接続したいデータベースの名前を指定し、 第 3 パラメーター %3 はデータベースのユーザー ID を指定し、 %4 はパスワードを指定します。
組み込み SQL プログラムの場合、 bldmapp は、プリコンパイルおよびバインド・ファイル embprep にパラメーターを渡します。 データベース名を指定しない場合は、 デフォルトの sample データベースを使用します。なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。
@echo off rem bldmapp.bat -- Windows 32-bit operating systems rem Builds a Microsoft Visual C++ application program rem Usage: bldmapp prog_name [ db_name [ userid password ]] if exist "%1.sqx" goto embedded if exist "%1.sqc" goto embedded goto non_embedded :embedded rem Precompile and bind the program. call embprep %1 %2 %3 %4 rem Compile the program. if exist "%1.cxx" goto cpp_emb cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c utilemb.c goto link_embedded :cpp_emb cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx utilemb.cxx rem Link the program. :link_embedded link -debug:full -debugtype:cv -out:%1.exe %1.obj utilemb.obj db2api.lib goto exit :non_embedded rem Compile the program. if exist "%1.cxx" goto cpp_non cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c utilapi.c goto link_non_embedded :cpp_non cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx utilapi.cxx rem Link the program. :link_non_embedded link -debug:full -debugtype:cv -out:%1.exe %1.obj utilapi.obj db2api.lib :exit @echo on
bldmapp のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
%DB2PATH%\samples\c のソース・ファイル client.c 、 または %DB2PATH%\samples\cpp のソース・ファイル client.cxx のどちらかから、 DB2 API の組み込み SQL を含まないサンプル・プログラム client を作成するには、 次のように入力します。
bldmapp client
結果として、実行可能ファイル client.exe が作成されます。 この実行可能ファイルを実行するには、 次の実行可能ファイル名を (拡張子なしで) コマンド行に入力します。
client
%DB2PATH%\samples\c の C ソース・ファイル updat.sqc 、 または %DB2PATH%\samples\cpp の C++ ソース・ファイル updat.sqx から組み込み SQL アプリケーション updat を構築する方法は 3 つあります。
bldmapp updat
bldmapp updat database
bldmapp updat database userid password
結果として、実行可能ファイル updat.exe が作成されます。
この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。
updat
updat database
updat database userid password
%DB2PATH%\samples\c と %DB2PATH%\samples\cpp にあるバッチ・ファイル bldmsrv.bat には、 組み込み SQL ストアード・プロシージャーを作成するためのコマンドが入っています。 バッチ・ファイルは、 ストアード・プロシージャーをサーバー上の DLL 内に作成します。
第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター %2 には、接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターはありません。
第 1 パラメーター (ソース・ファイル名) だけが必須です。 データベース名は任意で指定します。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。
バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。
@echo off rem bldmsrv.bat -- Windows 32-bit operating systems rem Builds a Microsoft Visual C++ stored procedure rem Usage: bldmsrv prog_name [ db_name ] rem Precompile and bind the program. call embprep %1 %2 rem Compile the program. if exist "%1.cxx" goto cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c goto link_step :cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx :link_step rem Link the program. link -debug:full -debugtype:cv -out:%1.dll -dll %1.obj db2api.lib -def:%1.def rem Copy the stored procedure DLL to the 'function' directory copy %1.dll "%DB2PATH%\function" @echo on
bldmsrv のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
C ソース・ファイル spserver.sqc 、 または C++ ソース・ファイル spserver.sqx のどちらかから spserver ストアード・プロシージャーを作成するには、 次のように入力します。
bldmsrv spserver
他のデータベースに接続しているときは、 さらにデータベース名も入力します。
bldmsrv spserver database
このバッチ・ファイルは、サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル spserver.def を使用して DLL を作成します。 このバッチ・ファイルは、 DLL の spserver.dll をサーバー上の %DB2PATH%\function というパスにコピーします。
次に、サーバー上で spcreate.db2 スクリプトを実行して、 ストアード・プロシージャーをカタログ化します。 まず、データベースに接続します。
db2 connect to sample
ストアード・プロシージャーがすでにカタログ化されている場合は、 次のコマンドを使用してそれらをドロップすることができます。
db2 -td@ -vf spdrop.db2
その後、次のコマンドでストアード・プロシージャーをカタログ化します。
db2 -td@ -vf spcreate.db2
カタログ化が終了したら、データベースを 1 度停止してから再始動し、 新しい共用ライブラリーが認識されるようにします。 必要であれば、共用ライブラリーにファイル・モードを設定して、 DB2 インスタンスからアクセスできるようにします。
ストアード・プロシージャー DLL spserver を作成したなら、 そのストアード・プロシージャーを呼び出すクライアント・アプリケーション spclient を構築できます。
spclient は、スクリプト・ファイル bldmapp を使用して構築することができます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。
spclient database userid password
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは、 ストアード・プロシージャー DLL spserver にアクセスし、 サーバー・データベース上のいくつかのストアード・プロシージャー関数を実行します。 出力は、クライアント・アプリケーションに戻されます。
%DB2PATH%\samples\c と %DB2PATH%\samples\cpp にあるバッチ・ファイル bldmudf には、 UDF を作成するためのコマンドが入っています。
UDF には、組み込み SQL ステートメントは含められません。 このため、UDF プログラムを作成するには、 プログラムをプリコンパイルおよびバインドするためにデータベースに接続する必要はありません。
バッチ・ファイルは、ソース・ファイルの名前を指定する、 %1 というパラメーターを取ります。 ソース・ファイル名 %1 を DLL 名に使用します。
@echo off rem bldmudf.bat -- Windows 32-bit operating systems rem Builds a Microsoft Visual C++ user-defined function (UDF). rem Usage: bldmudf udf_prog_name if "%1" == "" goto error rem Compile the program. if exist "%1.cxx" goto cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.c goto link_step :cpp cl -Z7 -Od -c -W2 -D_X86_=1 -DWIN32 %1.cxx :link_step rem Link the program. link -debug:full -debugtype:cv -dll -out:%1.dll %1.obj db2api.lib db2apie.lib -def:%1.def rem Copy the UDF DLL to the 'function' directory copy %1.dll "%DB2PATH%\function" goto exit :error echo Usage: bldmudf prog_name :exit @echo on
bldmudf のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ユーザー定義関数 udfsrv をソース・ファイル udfsrv.c から作成するには、 次のように入力します。
bldmudf udfsrv
このバッチ・ファイルは、 サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル udfsrv.def を使用してユーザー定義関数を作成します。 このバッチ・ファイルは、 ユーザー定義関数 DLL の udfsrv.dll をサーバー上の %DB2PATH%\function というパスにコピーします。
udfsrv を作成したなら、 それを呼び出すクライアント・アプリケーション udfcli を構築できます。 DB2 CLI が、 このプログラムの組み込み SQL C および C++ バージョンとともに提供されます。
DB2 CLI udfcli プログラムは、 %DB2PATH%\samples\cli のバッチ・ファイル bldmcli を使用して、 udfcli.c ソース・ファイルから作成できます。 詳細については、"DB2 CLI アプリケーション" を参照してください。
組み込み SQL C udfcli プログラムは、 %DB2PATH%\samples\c のバッチ・ファイル bldmapp を使用して、 udfcli.sqc ソース・ファイルから作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
組み込み SQL C++ udfcli プログラムは、 %DB2PATH%\samples\cpp のバッチ・ファイル bldmapp を使用して、 udfcli.sqx ソース・ファイルから作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
UDF を実行するには、次のように入力します。
udfcli
この呼び出しアプリケーションは、 udfsrv DLL から ScalarUDF 関数を呼び出します。