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

IBM VisualAge COBOL for OS/2

この節では以下のトピックを取り上げています。

コンパイラーの使用

以下に記載する点は、DB2 で IBM VisualAge COBOL を使用する場合に役立ちます。

バインド・ファイル作成時の解決策

DB2 (OS/2 版) および IBM COBOL を使用するアプリケーションを構築すると、 DB2 プリコンパイラーがバインド・ファイルの作成に失敗することがよくあります。 原因は、OS/2 内のファイル処理限界にあります。

修正を実行すると、OS/2 は、 コンパイルを実行するマシン上でさらに多くのファイルを処理できるようになります。 DB2 (OS/2 版) がインストールされているマシンの CONFIG.SYS ファイルに、 次の行を挿入する必要があります。

   SET SHELLHANDLESINC=20

コンパイル時に NODATA オプション (IBM Cobol オプション) を使用することもできます。

組み込み SQL および DB2 API 呼び出し

組み込み SQL および DB2 API 呼び出しを含むアプリケーションを開発していて、 IBM VisualAge COBOL コンパイラーを使用している場合には、以下の点に留意してください。

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

%DB2PATH%\samples\cobol にあるコマンド・ファイル bldapp.cmd には、 DB2 アプリケーション・プログラムを作成するためのコマンドが入っています。

第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 これは組み込み SQL を含まないプログラムに必要な唯一のパラメーターです。 組み込み SQL プログラムを作成するためにはデータベースへの接続が必要なため、 3 つのパラメーターがオプションとして用意されています。 2 番目のパラメーターは %2 で、 接続するデータベースの名前を指定します。 3 番目のパラメーターは %3 で、 データベースのユーザー ID を指定します。 そしてもう 1 つが %4 で、 データベースのパスワードを指定します。

組み込み SQL プログラムの場合、bldapp は、 プリコンパイルおよびバインドのコマンド・ファイル embprep にパラメーターを渡します。 データベース名が指定されない場合は、 デフォルトの sample データベースが使用されます。 なお、ユーザー ID とパスワードのパラメーターは、 プログラムを構築するインスタンスとデータベースのあるインスタンスが異なる場合にのみ必要になります。

@echo off
rem bldapp command file -- OS/2
rem Builds a VisualAge COBOL application program
rem Usage: bldapp <prog_name> [ <db_name> [ <userid> <password> ]]
rem If an embedded SQL program, precompile and bind it.
if exist "%1.sqb" goto prepbind
goto compile_step
:prepbind
call embprep %1 %2 %3 %4
:compile_step
rem Compile the checkerr error checking utility.
cob2 -c -g -qpgmname(mixed) -qlib -I%DB2PATH%\include\cobol_a checkerr.cbl
rem Compile the program.
cob2 -c -g -qpgmname(mixed) -qlib -I%DB2PATH%\include\cobol_a %1.cbl
rem Link the program.
ilink %1.obj checkerr.obj db2api.lib /ST:64000 /PM:VIO /NOI /DEBUG
@echo on
 

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

コンパイル・オプション

cob2
IBM VisualAge COBOL コンパイラー。
-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。
-g
デバッグ情報を組み込みます。
-qpgmname(mixed)
コンパイラーに、 大文字小文字混合の名前を持つライブラリー入り口点の CALL を許可するように指示します。
-qlib
コンパイラーに COPY ステートメントを処理するように指示します。
-Ipath
DB2 インクルード・ファイルのロケーションを指定します。 たとえば、-I%DB2PATH%\include\cobol_a

リンク・オプション

ilink
リンク編集に ilink リンカーを使用します。
checkerr.obj
エラー検査ユーティリティー・オブジェクト・ファイルを組み込みます。
db2api.lib
DB2 ライブラリーとリンクします。
/ST:64000
スタック・サイズとして少なくとも 64000 を指定します。
/PM:VIO
プログラムが OS/2 ウィンドウで稼働することを可能にします。
/NOI
リンク時に大 / 小文字を無視しません。
/DEBUG
デバッグ情報を組み込みます。

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

ソース・ファイル client.cbl から非組み込み SQL サンプル・プログラム client を作成するには、 次のように入力します。

   bldapp client

結果として、実行可能ファイル client.exe が作成されます。 この実行可能ファイルを sample データベースに対して実行するには、 次の実行可能ファイル名 (ファイル拡張子なし) を入力します。

   client

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

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

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

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

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

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

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

%DB2PATH%\samples\cobol にあるコマンド・ファイル bldsrv には、 ストアード・プロシージャーを作成するためのコマンドが入っています。 コマンド・ファイルは、ストアード・プロシージャーをサーバー上の DLL にコンパイルします。

第 1 パラメーター %1 には、ソース・ファイルの名前を指定します。 第 2 パラメーター %2 には、接続先のデータベースの名前を指定します。 ストアード・プロシージャーは、 必ずデータベースが常駐するインスタンスに構築される必要があるため、 ユーザー ID やパスワードを指定するパラメーターはありません。

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

コマンド・ファイルでは、 ソース・ファイル名 %1 を DLL 名に使用します。

@echo off
rem bldsrv command file -- OS/2
rem Builds a VisualAge COBOL stored procedure
rem Usage: bldsrv <prog_name> [ <db_name> ]
rem Precompile and bind the program.
call embprep %1 %2
rem Compile the program.
cob2 -c -g -qpgmname(mixed) -qlib -I%DB2PATH%\include\cobol_a %1.cbl
rem Link the program.
ilink %1.obj checkerr.obj %1.def db2api.lib /ST:64000 /PM:VIO /NOI /DEBUG
rem Copy stored procedure to the %DB2PATH%\function directory.
copy %1.dll %DB2PATH%\function
@echo on
 

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

コンパイル・オプション

cob2
IBM VisualAge COBOL コンパイラー。
-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。
-g
デバッグ情報を組み込みます。
-qpgmname(mixed)
コンパイラーに、 大文字小文字混合の名前を持つライブラリー入り口点の CALL を許可するように指示します。
-qlib
コンパイラーに COPY ステートメントを処理するように指示します。
-Ipath
DB2 インクルード・ファイルのロケーションを指定します。 たとえば、-I%DB2PATH%\include\cobol_a

リンク・オプション

ilink
リンク編集に ilink リンカーを使用します。
checkerr.obj
エラー検査ユーティリティー・オブジェクト・ファイルを組み込みます。
%1.def
モジュール定義ファイル。
db2api.lib
DB2 ライブラリーとリンクします。
/ST:64000
スタック・サイズとして少なくとも 64000 を指定します。
/PM:VIO
プログラムが OS/2 ウィンドウで稼働することを可能にします。
/NOI
リンク時に大 / 小文字を無視しません。
/DEBUG
デバッグ情報を組み込みます。

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

サンプル・データベースに接続している場合に、 ソース・ファイル outsrv.sqb からサンプル・プログラム outsrv を構築するには、 次のように入力します。

   bldsrv outsrv

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

   bldsrv outsrv database

このコマンド・ファイルは、サンプル・プログラムと同じディレクトリーに入っている、 モジュール定義ファイル outsrv.def を使用して DLL を作成します。 このコマンド・ファイルは、 ストアード・プロシージャー DLL の outsrv.dll をサーバー上の %DB2PATH%\function というパスにコピーします。

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

DLL outsrv を構築してしまえば、 その DLL にアクセスするクライアント・アプリケーション outcli を構築できます。 outcli は、 コマンド・ファイル bldapp を使用して構築することができます。 詳細については、 "組み込み SQL アプリケーション"を参照してください。

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

   outcli database userid password

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

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

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

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

クライアント・アプリケーションは DLL outsrv にアクセスし、 ストアード・プロシージャー関数をサーバー・データベース上で実行します。 この出力は、クライアント・アプリケーションに戻されます。


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