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連携用プログラムとリソース管理プログラムを標準で提供していますので、それを利用してください。
Oracle10g用XA連携用プログラム(otsxaora10g.dll/otsxaora10g.lib)
Oracle10g用のリソース管理プログラム(fjotsrsc_ora10g.exe)
Oracle11g用XA連携用プログラム(otsxaora11g.dll/otsxaora11g.lib)
Oracle11g用のリソース管理プログラム(fjotsrsc_ora11g.exe)
リソース管理プログラムを作成するためのバッチファイルとして、データベース連携サービスのインストールフォルダ配下の\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> [クライアントアプリケーションを終了します。]