この節では、以下のトピックについて記載します。
注: | VisualAge C++ コンパイラーは、 %DB2PATH%\samples\c ディレクトリーと %DB2PATH%\samples\cpp ディレクトリーにある、 C と C++ の両方のサンプル・プログラムに使用されます。 同じバッチ・ファイルがこれらの 2 つのディレクトリー内に置かれています。 これらのディレクトリーにあるバッチ・ファイルには、 ファイルの拡張子に応じて、 C または C++ のどちらかのソース・ファイルを受け入れるコマンドが含まれています。 |
%DB2PATH%\samples\cli にあるバッチ・ファイル bldvcli.bat には、 IBM VisualAge C++ で DB2 CLI プログラムを作成するためのコマンドが入っています。
このパラメーター %1 には、ソース・ファイルの名前を指定します。
これは、組み込み SQL を含んでいない CLI プログラム用の唯一の必須パラメーターです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 3 つのパラメーターがオプションとして用意されています。 2 番目のパラメーターは %2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは %3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが %4 で、 データベースのパスワードを指定します。
プログラムに組み込み SQL (.sqc または .sqx 拡張子が付いている) が含まれている場合、 embprep バッチ・ファイルは、.c または .cxx 拡張子を持つプログラム・ファイルを生成して、 プログラムをプリコンパイルするために呼び出されます。
@echo off rem bldvcli batch file - Windows 32-bit Operating Systems rem Builds a CLI program with IBM VisualAge C++. rem Usage: bldvcli prog_name 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. icc -c -Ti -W1 /I"%DB2PATH%\include" utilcli.c rem Compile the program. if exist "%1.sqx" goto cpp icc -c -Ti -W1 /I"%DB2PATH%\include" %1.c goto link_step :cpp icc -c -Ti -W1 /I"%DB2PATH%\include" %1.cxx rem Link the program. :link_step ilink /MAP /DEBUG /ST:32000 /PM:VIO %1.obj utilcli.obj db2cli.lib @echo on
bldvcli のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル tbinfo.c からサンプル・プログラム tbinfo を作成するには、 次のように入力します。
bldvcli tbinfo
結果として、実行可能ファイル tbinfo が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。
tbinfo
ソース・ファイル dbusemx.sqc から組み込み SQL アプリケーション dbusemx を作成する場合、 次の 3 つの方法があります。
bldvcli dbusemx
bldvcli dbusemx database
bldvcli 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 にあるスクリプト・ファイル bldvapi には、 DB2 API を持つ DB2 CLI プログラムを作成するためのコマンドが入っています。 このファイルは、 データベースを作成およびドロップするための DB2 API が入った utilapi ユーティリティー・ファイルでコンパイルおよびリンクします。 この点が、このファイルと bldvcli バッチ・ファイルの唯一の違いです。 bldvapi と bldvcli の両方に共通のコンパイルおよびリンク・オプションについては、 "DB2 CLI アプリケーション" を参照してください。
ソース・ファイル dbmconn.c からサンプル・プログラム dbmconn を作成するには、 次のように入力します。
bldvapi dbmconn
結果として、実行可能ファイル dbmconn が作成されます。 この実行可能ファイルを実行するには、次の実行可能名を入力します。
dbmconn
%DB2PATH%\samples\cli にあるバッチ・ファイル bldvclis.bat には、 CLI ストアード・プロシージャーを作成するためのコマンドが入っています。 バッチ・ファイルは、 ストアード・プロシージャーをサーバー上の DLL 内に作成します。
このパラメーター %1 には、ソース・ファイルの名前を指定します。 バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。
@echo off rem bldvclis.bat file - Windows 32-bit Operating Systems rem Builds a CLI stored procedure using the IBM VisualAge C++ compiler rem Usage: bldvclis prog_name if "%1" == "" goto error rem Compile the program. if exist "%1.cxx" goto cpp icc -c+ -Ti -Ge- -Gm+ -W1 %1.c utilcli.c goto link_step :cpp icc -c+ -Ti -Ge- -Gm+ -W1 %1.cxx utilcli.c :link_step rem Import the library and create an export file. rem The function name in the .def file must be decorated to be consistent rem with the function name in the .map file. Typically, this is done by rem prepending "_" and appending "@" and the number of bytes of arguments, rem as in: "@16". In spserverva.def, for example, the IBM VisualAge C++ rem compiler requires "EXPORTS _outlanguage@16" and not "EXPORTS outlanguage". ilib /GI %1va.def rem Link the program and produce a DLL. ilink /ST:64000 /PM:VIO /MAP /DLL %1.obj utilcli.obj %1va.exp db2cli.lib rem Copy the stored procedure DLL to the 'function' directory copy %1.dll "%DB2PATH%\function" goto exit :error echo Usage: bldvclis prog_name :exit @echo on
bldvclis のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ソース・ファイル spserver.c から spserver ストアード・プロシージャーを作成するには、 次のように入力します。
bldvclis spserver
このバッチ・ファイルは、CLI サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル spserverva.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 は、バッチ・ファイル bldvcli を使用して構築することができます。 詳細については、 "DB2 CLI アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。
spclient database userid password
ここで、それぞれは次のものを表します。
クライアント・アプリケーションはストアード・プロシージャー・ライブラリー spserver にアクセスし、 様々なストアード・プロシージャー関数をサーバー・データベース上で実行します。 出力は、クライアント・アプリケーションに戻されます。
%DB2PATH%\samples\c と %DB2PATH%\samples\cpp にあるバッチ・ファイル bldvapp.bat には、 DB2 アプリケーション・プログラムを作成するためのコマンドが入っています。
第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 これは組み込み SQL を含まないプログラムに必要な唯一のパラメーターです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 3 つのパラメーターがオプションとして用意されています。 2 番目のパラメーターは %2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは %3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが %4 で、 データベースのパスワードを指定します。
組み込み SQL プログラムの場合、 bldvapp は、プリコンパイルおよびバインド・ファイル embprep にパラメーターを渡します。 データベース名を指定しない場合は、 デフォルトの sample データベースを使用します。 なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。
@echo off rem bldvapp.bat -- Windows 32-bit operating systems rem Builds a VisualAge C++ application program rem Usage: bldvapp 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 icc -c -Ti -W1 %1.c utilemb.c goto link_embedded :cpp_emb icc -c -Ti -W1 %1.cxx utilemb.cxx rem Link the program. :link_embedded ilink /MAP /DEBUG /ST:32000 /PM:VIO %1.obj utilemb.obj db2api.lib goto exit :non_embedded rem Compile the program. if exist "%1.cxx" goto cpp_non icc -c -Ti -W1 %1.c utilapi.c goto link_non_embedded :cpp_non icc -c -Ti -W1 %1.cxx utilapi.cxx rem Link the program. :link_non_embedded ilink /MAP /DEBUG /ST:32000 /PM:VIO %1.obj utilapi.obj db2api.lib :exit @echo on
bldvapp のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
%DB2PATH%\samples\c のソース・ファイル client.c 、 または %DB2PATH%\samples\cpp のソース・ファイル client.cxx のどちらかから、 DB2 API の組み込み SQL を含まないサンプル・プログラム client を作成するには、 次のように入力します。
bldvapp client
結果として、実行可能ファイル client.exe が作成されます。 この実行可能ファイルを実行するには、 次の実行可能ファイル名を (拡張子なしで) コマンド行に入力します。
client
%DB2PATH%\samples\c の C ソース・ファイル updat.sqc 、 または %DB2PATH%\samples\cpp の C++ ソース・ファイル updat.sqx から組み込み SQL アプリケーション updat を構築する方法は 3 つあります。
bldvapp updat
bldvapp updat database
bldvapp updat database userid password
結果として、実行可能ファイル updat.exe が作成されます。
この組み込み SQL アプリケーションを実行する方法には次の 3 つがあります。
updat
updat database
updat database userid password
%DB2PATH%\samples\c と %DB2PATH%\samples\cpp にあるバッチ・ファイル bldvsrv.bat には、 組み込み SQL ストアード・プロシージャーを作成するためのコマンドが入っています。 バッチ・ファイルは、 ストアード・プロシージャーをコンパイルし、サーバー上の DLL に格納します。
第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター %2 には、接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターはありません。
第 1 パラメーター (ソース・ファイル名) だけが必須です。 データベース名は任意で指定します。 データベース名を指定しない場合、 プログラムはデフォルトの sample データベースを使用します。
バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。
@echo off rem bldvsrv.bat -- Windows 32-bit operating systems rem Builds a VisualAge C++ stored procedure rem Usage: bldvsrv prog_name [ db_name ] rem Precompile and bind the program. call embprep %1 %2 rem Compile the program. if exist "%1.cxx" goto cpp icc -c+ -Ti -Ge- -Gm+ -W1 %1.c goto link_step :cpp icc -c+ -Ti -Ge- -Gm+ -W1 %1.cxx :link_step rem Import the library and create a definition file. rem The function name in the .def file must be decorated to be consistent rem with the function name in the .map file. Typically, this is done by rem prepending "_" and appending "@" and the number of bytes of arguments, rem for example, "@16". In spserverva.def, the IBM VisualAge C++ compiler requires rem "EXPORTS _outlanguage@16" and not "EXPORTS outlanguage". ilib /GI %1va.def rem Link the program and produce a DLL. ilink /ST:64000 /PM:VIO /MAP /DLL %1.obj %1va.exp db2api.lib rem Copy the Stored Procedure DLL to the 'function' directory. copy %1.dll "%DB2PATH%\function" @echo on
bldvsrv のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
C ソース・ファイル spserver.sqc 、 または C++ ソース・ファイル spserver.sqx のどちらかから spserver ストアード・プロシージャーを作成するには、 次のように入力します。
bldvsrv spserver
他のデータベースに接続しているときは、 さらにデータベース名も入力します。
bldmsrv spserver database
このバッチ・ファイルは、サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル spserverva.def を使用してストアード・プロシージャーを作成します。 このバッチ・ファイルは、 ストアード・プロシージャー 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 は、スクリプト・ファイル bldvapp を使用して構築することができます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
ストアード・プロシージャーを呼び出すためには、 次のように入力してサンプル・クライアント・アプリケーションを実行します。
spclient database userid password
ここで、それぞれは次のものを表します。
クライアント・アプリケーションは、 ストアード・プロシージャー DLL spserver にアクセスし、 サーバー・データベース上のいくつかのストアード・プロシージャー関数を実行します。 出力は、クライアント・アプリケーションに戻されます。
%DB2PATH%\samples\c と %DB2PATH%\samples\cpp にあるバッチ・ファイル bldvudf には、 UDF を作成するためのコマンドが入っています。
UDF には、組み込み SQL ステートメントは含められません。 したがって、UDF プログラムを作成するには、データベースへの接続、またはプログラムのプリコンパイルおよびバインドは行いません。
このパラメーター %1 には、ソース・ファイルの名前を指定します。 バッチ・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。
@echo off rem bldvudf.bat -- Windows 32-bit operating systems rem Builds a VisualAge C++ user-defined function (UDF) rem Usage: bldvudf program_name if "%1" == "" goto error rem Compile the program. if exist "%1.cxx" goto cpp icc -Ti -c+ -Ge- -Gm+ -W1 %1.c goto link_step :cpp icc -Ti -c+ -Ge- -Gm+ -W1 %1.cxx :link_step rem Generate an import library and export file using a definition file. rem Function(s) in the .def file are prepended with an underscore, and rem appended with the @ sign and number of bytes of arguments (in decimal). rem Parameters of less than four bytes are rounded up to four bytes. rem Structure size is rounded up to a multiple of four bytes. rem For example, function fred prototyped as: "int fred(int, int, short);" rem would appear as: "_fred@12" in the .def file. rem These decorated function names can also be found in %1.map rem after running the following ilink command without %1va.exp. ilib /gi %1va.def rem Link the program to a dynamic link library ilink /ST:64000 /PM:VIO /MAP /DLL %1.obj %1va.exp db2api.lib db2apie.lib rem Copy the UDF DLL to the 'function' directory. copy %1.dll "%DB2PATH%\function" goto exit :error echo Usage: bldvudf prog_name :exit @echo on
bldvudf のコンパイルおよびリンク・オプション |
---|
コンパイル・オプション
|
リンク・オプション
他のコンパイラー・オプションについては、
コンパイラーの資料をご覧ください。
|
ユーザー定義関数 udfsrv をソース・ファイル udf.c から作成するには、 次のように入力します。
bldvudf udfsrv
このバッチ・ファイルは、 サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル udfsrv.def を使用してユーザー定義関数を作成します。 このバッチ・ファイルは、 ユーザー定義関数 DLL の udfsrv.dll をサーバー上の %DB2PATH%\function というパスにコピーします。
udfsrv を作成したなら、 それを呼び出すクライアント・アプリケーション udfcli を構築できます。 DB2 CLI が、 このプログラムの組み込み SQL C および C++ バージョンとともに提供されます。
DB2 CLI udfcli プログラムは、 %DB2PATH%\samples\cli のバッチ・ファイル bldvcli を使用して、 udfcli.c ソース・ファイルから作成できます。 詳細については、"DB2 CLI アプリケーション" を参照してください。
組み込み SQL C udfcli プログラムは、 %DB2PATH%\samples\c のバッチ・ファイル bldvapp を使用して、 udfcli.sqc ソース・ファイルから作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
組み込み SQL C++ udfcli プログラムは、 %DB2PATH%\samples\cpp のバッチ・ファイル bldvapp を使用して、 udfcli.sqx ソース・ファイルから作成できます。 詳細については、 "DB2 API と組み込み SQL アプリケーション"を参照してください。
UDF を実行するには、次のように入力します。
udfcli
この呼び出しアプリケーションは、 udfsrv DLL から ScalarUDF 関数を呼び出します。