お問い合わせ

ホーム > COBOLのはなし > ベンダーによるWebシステムの実装例 (2)

ベンダーによるWebシステムの実装例 (2)

COBOLコンソーシアム情報発信分科会
上野 浩一 (株式会社日立製作所 ITプラットフォーム事業本部)

2.日立製作所

日立製作所では、 COBOL2002規格に対応したCOBOL開発/実行環境「COBOL2002」、およびAPサーバー「Cosminexus」を提供しています。
COBOL2002は、Java-COBOL連携機能である「Cosminexus連携機能」を含んでいます。この機能は、仲介役のJavaBeans(COBOLアクセス用Bean)を利用して、JavaアプリケーションとCOBOLプログラムを連携します。連携方法は、COBOLアクセス用Beanが、ビジネス・ロジックが記述されているCOBOLプログラムをラッピングします。
COBOLプログラムは、Javaから呼ばれることを意識する必要がありません。COBOLプログラムは、何らかの引数(パラメータ)をもらって"DBを検索したり計算などのビジネス・ロジックを実行したりして、その結果を返す単なるサブルーチンになるだけであり、従来の手続き型で作成します。このサブルーチンをJavaサーブレットやJSPから見たときに、JavaBeansのBeanに見せかけるのが、COBOLアクセス用Beanです。COBOLアクセス用Beanは、生成ツールを使ってCOBOL開発者でも簡単に作成できます。
また、COBOLプログラムで発生したエラー情報などを取得する例外メソッドを用意しているので、このAPIを使って例外処理を備えた実行環境を構築できます。

JavaサーブレットからCOBOLを呼び出す

JavaサーブレットがCOBOLプログラムを実行する流れは、①JavaサーブレットがCOBOLアクセス用Beanを呼び出し、②さらに、このBeanがCOBOLアクセス用ライブラリ(「COBOL2002 Net Server Runtime」の実行時ライブラリ)を介して、COBOLプログラム(ビジネス・ロジック)を呼び出す(図1)――という2段階になります。
COBOLアクセス用Beanが生成するバイト配列はCOBOLプログラムの各引数項目に対応付けられていて、Beanはバイト配列の値を設定/参照するメソッドも実装しています。Javaサーブレットはその設定メソッドを呼び出すことで、COBOLプログラムに渡す引数をバイト配列に設定します。
また、Javaサーブレットが実際にCOBOLプログラムを実行するには、COBOLアクセス用Beanが実装する、COBOLプログラムをCALLするメソッド(リクエスト・メソッド)を呼び出します。このとき、バイト配列に格納されている引数は型変換されて、COBOLのデータ型としてCOBOLプログラムに渡されます。COBOLプログラムはこれを受け取って処理を行い、その結果は再び型変換されCOBOLアクセス用Beanのバイト配列に返されます。JavaサーブレットはCOBOLアクセス用Beanの参照メソッドを呼び出すことで、戻り値を読み取ります。



図1 COBOLアクセス用Beanを使って連携する
COBOLプログラムから、COBOLアクセス用Beanを生成し、APサーバ上に配布します。Javaアプリケーションは、COBOLアクセス用Beanを呼び出せば、COBOLプログラムを連携できます

CosminexusとCOBOL2002をTPモニターで連携する

TPモニター「uCosminexus OpenTP1」上で稼働中のCOBOLプログラムであれば、JavaアプリケーションとTPモニターのレベルで連携することができます。このとき、Cosminexusにオプション製品「TP1/COBOL adapter for Cosminexus Version 2(Java-TP1/COBOL連携製品)」を導入して利用します(図2)。
この形態であれば、既存のOLTPシステムを簡単にWeb化することができます。仕組みの大枠は、先に説明したCOBOL2002のCosminexus連携機能の場合と同じです。ただし、連携技術としてCOBOL2002のCosminexus連携機能ではJNIを使っているのに対し、Java-TP1/COBOL連携製品ではJCAを使っている点と、uCosminexus OpenTP1サーバー配下でCOBOLプログラムを稼働させるという点が異なります。COBOLプログラムは、Web環境からJavaBeans(TP1/COBOLアクセス用Bean)を介して呼び出します。仲介役のTP1/COBOLアクセス用Beanは、生成ツールを使って容易に作成できます。



図2 uCosminexus OpenTP1配下のCOBOLプログラムを連携する
uCosminexus OpenTP1(TPモニター)配下で稼動中のCOBOLプログラムであれば、TP1/COBOLアクセス用Beanを呼び出すだけで、APサーバー上のJavaアプリケーションから連携できます

COBOL2002でアクセス用Beanを作成する

ここで、Javaから連携されるCOBOLプログラムを開発する手法を説明します。COBOL2002のCosminexus連携機能を使用する場合のアプリケーション開発の流れは以下のようになります。

① COBOLプログラムの作成

アプリケーションの仕様に沿ったCOBOLプログラム(ビジネス・ロジック)を作成します。

② COBOLアクセス用Beanの生成

COBOLプログラムに渡す引数とその入力/出力の区別を明確にし、生成ツールを操作してCOBOLアクセス用Beanを生成します。COBOLアクセス用Beanの作成に必要な操作は、COBOLへの引数として渡すデータ項目、それらの入力/出力の区別などを生成ツールの画面上のチェックボックスで指定するだけです。引数として渡すデータ項目は、COBOLの連絡節を定義した登録集原文(コピー・ファイル)から取り込むことで定義できます(図3)。



図3 COBOLアクセス用Beanを自動生成する

③ 画面制御(Javaサーブレット)の作成

COBOLアクセス用Beanに引数を設定したり、実際にCOBOLプグラムを呼び出したり、処理の結果の戻り値を取り出したりするためのJavaサーブレットを作成します。

④ 表示画面(HTMLやJSP)の作成

入力用HTMLや出力用JSPなどWebブラウザに表示するコンテンツを作成します。

Java-TP1/COBOL連携製品の場合のアプリケーション開発手順も、基本的には同じ流れです。
uCosminexus OpenTP1環境で稼働させるCOBOLプログラム(通常、既存のCOBOLプログラムを修正なしで利用できます)の場合は、TP1/COBOLアクセス用Bean生成ツールを使って同様にBeanを生成します。最後に、Javaサーブレットと入出力用のHTMLやJSPを作成します。