ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(データベース連携サービス編)

E.1 CORBAアプリケーション(Windows(R)の場合)

  COBOLを使用したサンプルプログラムの使用方法について説明します。

  ユーザディレクトリにサンプルプログラムを複写後、複写先の環境に応じて修正して使用してください。


■サンプルプログラムの格納パス

C:\Interstage\ots\src\samples\simple\cobol\client
C:\Interstage\ots\src\samples\simple\cobol\server

注)本製品のインストールパスがデフォルトの場合のパスです。


サンプルプログラムの概要

  本サンプルは、サーバアプリケーションからOracleにアクセスします。
  本サンプルのファイル構成を以下に示します。なお、本サンプルプログラムは、COBOL97のプロジェクトを使用してコンパイルすることを前提としています。本サンプルは、同一マシン内でクライアントアプリケーションとサーバアプリケーションを起動することを前提にしたサンプルプログラムになっています。クライアントプログラムを別マシンで起動する場合は、必要なライブラリなどを移行してください。


サーバ用

No

ファイルの概要

ファイル名

1

Makefile

Makefile

2

Makefile用バッチファイル

Make.bat

3

IDLファイル

bankA.idl

4

サーバアプリケーションソース

bankA_s.cbl

5

翻訳オプションファイル

main.cbi

6

翻訳オプションファイル

sub.cbi

7

プリコンパイラ用サーバアプリケーションソース

bankA_s_dep.pco

8

プリコンパイラ用サーバアプリケーションソース

bankA_s_wit.pco

クライアント用

No

ファイルの概要

ファイル名

1

Makefile

Makefile

2

Makefile用バッチファイル

Make.bat

3

IDLファイル

bankA.idl

4

クライアントアプリケーションソース

bankA_c.cbl

5

翻訳オプションファイル

main.cbi

6

翻訳オプションファイル

sub.cbi


作業手順

1) COBOL登録集の格納場所を設定します。

設定例)

> set CORBA=OD_HOME\include\COBOL <RETURN>
> set COSTRANSACTIONS=OTS_HOME\include\COBOL <RETURN>

OD_HOME:Interstageインストールフォルダ\ODWIN

OTS_HOME:Interstageインストールフォルダ\ots


2) アプリケーションを作成します。
  サーバ用のMakefile用バッチファイルでサーバアプリケーションを、クライアント用のMakefile用バッチファイルでクライアントアプリケーションをコンパイルします。

実行例)

> make <RETURN>

注意

  COBOLアプリケーションを、プリコンパイラを使用してコンパイルする場合、Pro*COBOL1.8.27以降を使用してください。

  makeする場合、CORBAサービスおよびインタフェースリポジトリが起動されている必要があります。
  makeすると、SERVER-MAIN.exe、BANKA-ACCOUNTA.dllが作成されます。


3) サーバアプリケーション(SERVER-MAIN.exe)をCORBAサービスのインプリメンテーションリポジトリに登録します。
  インプリメンテーションリポジトリへ登録するには、登録する内容を定義ファイル(テキストエディタ)を作成する必要があります。
  登録例を以下に示します。rep_idには、サーバアプリのインプリメンテーションリポジトリIDを指定します。dataには、“RESOURCE:”のあとにリソース定義名を指定します。
  OD_impl_instコマンドは、定義ファイル名を指定して実行します。

定義ファイルの設定例)

rep_id                  = IDL:bankA/accountA:1.0
type                    = persistent
proc_conc_max           = 32
thr_conc_init           = 1
uid                     = 0
gid                     = 3
mode                    = SYNC_END
IDL:bankA/accountA:1.0  = BANKA-ACCOUNTA.dll
data                    = "RESOURCE:resource1"

実行例)

> OD_impl_inst -ax  deffile <RETURN>

deffile:定義ファイル名


4) CORBAサービスのネーミングサービスにサーバアプリケーション(SERVER-MAIN.exe)を登録します。

実行例)

> OD_or_adm -c  IDL:bankA/accountA:1.0 -n bankA::accountA <RETURN>

5) XA連携用プログラムおよびリソース管理プログラムを作成します。
  otsmkxapgmコマンドで、XA連携用プログラムを作成します。otslinkrscコマンドで、リソース管理プログラムを作成します。
  Interstageインストールフォルダ\ots\program\rsc配下にOracle用のXA連携用プログラムとリソース管理プログラムを標準で提供していますので、それを利用してください。

  リソース管理プログラムを作成するためのバッチファイルとして、データベース連携サービスのインストールフォルダ配下の\src\samples\env\oralinkrsc.batを提供していますので、oralinkrsc.batを実行してください。リソース管理プログラムの名前は、バッチファイル内のNANE="name.exe"に設定してください(例:NAME="run_rsc.exe")。

実行例)

> oralinkrsc  <RETURN>

6) テキストエディタで、リソース定義ファイルを作成します。
  OPENINFOには、データベースのユーザ名/パスワードを指定します(例:orauser/dbuserなど)。NAMEには、インプリメンテーションリポジトリへの登録時にdata行で指定した“RESOURCE:”のあとの名前を記述します。

設定例)

ENVIRON ORACLE_SID=ORCL
NAME=resource1
RMNAME=Oracle_XA
OPENINFO=Oracle_XA+Acc=P/orauser/dbuser+SesTm=0
CLOSEINFO=

7) otssetrscコマンドで、CORBAサービスのインプリメンテーションリポジトリにリソース管理プログラムを登録します。

実行例)

> otssetrsc  -a -rf C:\user\ots\rsc\run_rscdef <RETURN>

-rfオプション:リソース定義ファイル名(フルパス)


8) sqlplusコマンドで、データベースにテーブルを作成します。
  ここでは、テーブル作成のバッチファイル(データベース連携サービスのインストール先フォルダ配下\src\samples\simple\c\a_account.sql)を使用し作成する例を示します。
  なお、本操作はデータベース管理者のユーザ権限で行う必要があります。

実行例)

> sqlplus orauser/dbuser @a_account.sql <RETURN>

  sqlplusコマンドで、作成されたテーブルの内容を以下のように確認します。

実行例)

> sqlplus orauser/dbuser <RETURN>
SQL> select * from a_account; <RETURN>
 ACCOUNTNO NAME          BALANCE
 ------------------- ---------------- ---------------------
             1 SEAN              11111
             2 LEHR              22222
             3 JUDITH            33333
             4 FRANCIS           44444
             5 ALASTAIR          55555
             6 AREX              66666
             7 MOIRA             77777

9) OTSシステム、リソース管理プログラム、およびサーバアプリケーションを起動します。

実行例)

> otsstart   <RETURN>
> otsstartrsc -pg C:\user\ots\rsc\run_rsc.exe -n resource1  <RETURN>
> bankA_s  <RETURN>

10) クライアントアプリケーションを起動します。

実行例)

> bankA_c <RETURN>

11) クライアントアプリケーションから入力を促してくるので、実行します。

Start program ? Yes(y) No(n)
> y <RETURN>
----- What's request number -----
1:begin      2:commit
3:rollback   4:rollback_only
5:get_status 6:get_transaction_name
7:settimeout 8:Call ServerApplication
0:exit

 1 <RETURN>      [1を入力すると、beginが実行されます。]

 8 <RETURN>      [8を入力すると、サーバのメソッドが実行されます。]
   ** ServerApplication **
   Please input account number
   5 <RETURN>     [番号を入力します。]
   How much do you deposit ?
   200000 <RETURN>[番号5の社員に給与を入力します。]
   2 <RETURN>     [2を入力すると、commitが実行されます。]
   0 <RETURN>     [クライアントアプリケーションを終了します。]