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

IBM COBOL Set for AIX

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

コンパイラーの使用法

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

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

sqllib/samples/cobol にあるビルド・ファイル bldapp には、 DB2 アプリケーション・プログラムを構築するコマンドが含まれています。

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

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

#! /bin/ksh
# bldapp script file -- AIX
# Builds an IBM COBOL application program
# Usage:  bldapp <prog_name> [ <db_name> [ <userid> <password> ]]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# If an embedded SQL program, precompile and bind it.
if [[ -f $1".sqb" ]]
then
  embprep $1 $2 $3 $4
fi
# Compile the checkerr.cbl error checking utility.
cob2 -qpgmname\(mixed\) -qlib -I$DB2PATH/include/cobol_a \
     -c checkerr.cbl
# Compile the program.
cob2 -qpgmname\(mixed\) -qlib -I$DB2PATH/include/cobol_a \
     -c $1.cbl
# Link the program.
cob2 -o $1 $1.o checkerr.o -ldb2 -L$DB2PATH/lib


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

コンパイル・オプション

cob2
IBM COBOL Set コンパイラー。

-qpgmname\(mixed\)
コンパイラーに、 大文字小文字混合の名前を持つライブラリー入り口点の CALL を許可するように指示します。

-qlib
コンパイラーに COPY ステートメントを処理するように指示します。

-I$DB2PATH/include/cobol_a
DB2 インクルード・ファイルのロケーションを指定します。 たとえば、 $HOME/sqllib/include/cobol_a

-c
コンパイルのみを実行し、リンクは実行しません。 コンパイルとリンクは別個のステップです。

リンク・オプション

cob2
コンパイラーをリンカーのフロントエンドとして使用します。

-o $1
実行可能プログラムを指定します。

$1.o
プログラム・オブジェクト・ファイルを指定します。

checkerr.o
エラー検査用のユーティリティー・オブジェクト・ファイルを組み込みます。

-ldb2
データベース・マネージャー・ライブラリーとリンクします。

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

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

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

   bldapp client

結果として、実行可能ファイル client が作成されます。 sample データベースに対してこの実行可能ファイルを実行するには、 次のように入力します。

client

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

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

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

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

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

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

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

sqllib/samples/cobol にあるスクリプト・ファイル bldsrv には、 ストアード・プロシージャーを構築するためのコマンドが含まれています。 スクリプト・ファイルは、 ストアード・プロシージャーを共用ライブラリーの中にコンパイルしますが、 それはクライアント・アプリケーションから呼び出すことができます。

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

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

スクリプト・ファイルは、 ソース・ファイル名 $1 を共用ライブラリー名として、 また共用ライブラリーへの入り口点として使います。 構築しようとしているストアード・プロシージャーの入り口点関数名の名前がソース・ファイルの名前とは異なる場合、 入り口点の別のパラメーターを受け入れるようにスクリプト・ファイルを変更することができます。 データベース・パラメーターの名前を、 $3 に変更するようお勧めします。 それから、入り口点のリンク・オプションを -e $2 に変更し、 スクリプト・ファイルの実行時にコマンド行で追加パラメーターを指定します。

#! /bin/ksh
# bldsrv script file -- AIX
# Builds an IBM COBOL stored procedure
# Usage: bldsrv <prog_name> [ <db_name> ]
# Set DB2PATH to where DB2 will be accessed.
# The default is the standard instance path.
DB2PATH=$HOME/sqllib
# Precompile and bind the program.
embprep $1 $2
# Compile the checkerr.cbl error checking utility.
cob2 -qpgmname\(mixed\) -qlib -I$DB2PATH/include/cobol_a \
     -c checkerr.cbl
# Compile the program.
cob2 -qpgmname\(mixed\) -qlib -c -I$DB2PATH/include/cobol_a $1.cbl
# Link the program using the export file $1.exp
# creating shared library $1 with entry point $1.
cob2 -o $1 $1.o checkerr.o -H512 -T512 -e $1 -bE:$1.exp \
     -L$DB2PATH/lib -ldb2
# Copy the shared library to the sqllib/function subdirectory of the DB2 instance.
# This assumes the user has write permission to this directory.
rm -f $DB2PATH/function/$1
cp $1 $DB2PATH/function


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

コンパイル・オプション

cob2
IBM COBOL Set コンパイラー。

-qpgmname\(mixed\)
コンパイラーに、 大文字小文字混合の名前を持つライブラリー入り口点の CALL を許可するように指示します。

-qlib
コンパイラーに COPY ステートメントを処理するように指示します。

-c
コンパイルのみを実行し、リンクは実行しません。 本書では、コンパイルとリンクが別個のステップであることを前提としています。

-I$DB2PATH/include/cobol_a
DB2 インクルード・ファイルのロケーションを指定します。 たとえば、$HOME/sqllib/include/cobol_a

リンク・オプション

cob2
リンク編集にコンパイラーを使用します。

-o $1
出力を、共用ライブラリー・ファイルとして指定します。

$1.o
ストアード・プロシージャー・オブジェクト・ファイルを指定します。

checkerr.o
エラー検査用のユーティリティー・オブジェクト・ファイルを組み込みます。

-H512
出力ファイル位置合わせを指定します。

-T512
出力ファイル・テキスト・セグメントの開始アドレスを指定します。

-e $1
共用ライブラリーに対するデフォルト入り口点を指定します。

-bE:$1.exp
エクスポート・ファイルを指定します。 エクスポート・ファイルには、ストアード・プロシージャーのリストが含まれています。

-L$DB2PATH/lib
DB2 実行時共用ライブラリーのロケーションを指定します。 たとえば、$HOME/sqllib/lib-L オプションを指定しないと、コンパイラーは次のパスを想定します。 /usr/lib:/lib

-ldb2
データベース・マネージャー・ライブラリーとリンクします。

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

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

   bldsrv outsrv

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

   bldsrv outsrv database

このスクリプト・ファイルは、 ストアード・プロシージャーをサーバー上の sqllib/function というパスにコピーします。

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

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

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

   outcli database userid password

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

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

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

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

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


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