2024.09.24
前回の連載では、クラウド上での利用を想定して、COBOLロジックのサービス化について説明しました。また、クラウドの仮想環境上にマイクロフォーカスの COBOL 製品をインストールし、製品に付属する COBOL 専用のアプリケーションサーバー上で COBOL ロジックを実行する方法を紹介しました。今回はこの機能にフォーカスしてお話しします。
開発環境製品であるEnterprise Developer / Visual COBOL、実行環境製品である Enterprise Server / COBOL Serverは、Javaや.NETのような他言語の最新アークテクチャに対応するだけでなく、自身がアプリケーションサーバーの機能を持っています。
この機能によりバッチ処理のみならずオンライン処理も他のミドルウェアを併用することなく、COBOLのビジネスロジックを呼び出すことができます。
上記の図は、それをわかりやすく説明したものです。COBOLのプログラムソースをコンパイルした成果物となるネイティブコードが、製品に付属する COBOL専用のアプリケーションサーバー上で EJB 連携や RESTful Web サービスとして動作します。
RESTful Webサービスの一番の利点は、クライアントに依存しない点です。RESTful Webサービスで一般的に使用されているJSONデータ形式で通信できるのであれば、PC、スマートフォン、IoTデバイスなど様々な端末で動作する .NET や Java などのアプリケーションからサービスを利用できます。
RESTful Webサービスを提供するCOBOL専用のアプリケーションサーバー
クライアントとは JSON 形式のデータで通信を行いますが、COBOL のデータ型と JSON のデータ型は異なります。一般的な開発では、RESTful Web サービスの開発やサーバーの開発に加えて、この COBOL / JSON 間のデータ型変換ロジックも開発する必要があります。では、Enterprise Developer / Visual COBOL を用いた開発はどうでしょうか。
上の図は、Enterprise Developer / Visual COBOL 上のRestful Web サービスの開発画面で、左側は COBOL プログラムの Linkage Section 項目、右側はクライアントとの通信で使用する JSON データ構造に対応しています。左側から Linkage Section 項目を右側にドラッグアンドドロップするだけで、JSON データ構造の作成や各データ型を定義することができます。これにより、サービス実行時には自動的にデータ型が変換されます。弊社製品を利用した RESTful Web サービス開発では、このような COBOL/JSON の項目マッピングだけではなく、サービスの新規作成、アプリケーションサーバーへサービスを登録するディプロイ、テストクライアントプログラムの生成や実行を IDE 画面で行うことができます。
では、実際のシステムでの利用例として、メインフレーム上で稼動していた損害保険のシステムを考えてみます。一般的に損害保険の料率計算は非常に高い精度が要求され、複雑で様々な計算パターンを持っており、これを新たにJavaや.NETで実装するには、テストの工数や旧システムとの結果互換性に不安が残ります。しかし、既存のロジックを利用した損害保険の料率計算機能を RESTful Web サービス化することで、このような不安を解消し、クライアントに依存しないシステム構築が可能になります。
この機能は、フロントエンドにJava EEアプリケーションサーバーで構築されたシステムが既に存在し、COBOLで実装されたオンライントランザクションを実行したい場合に利用します。COBOL 専用のアプリケーションサーバーが提供するリソースアダプターを Java EE アプリケーションサーバーに登録することで、このリソースアダプターを介して JCA 仕様に基づいた連携が行えるようになります。
Java EEサーバーと連携するCOBOL専用のアプリケーションサーバー
COBOL 専用のアプリケーションサーバーは、Java EE アプリケーションサーバーの JTA (Java Transaction API) による分散トランザクションの対応に加えて、XA/Open に準拠したインターフェイスを利用したデータベースの接続も行えます。これにより、Java EE アプリケーションサーバーとCOBOL専用のアプリケーションサーバーのトランザクションを同時にコミットすることも可能です。もし両者いずれかのトランザクションが失敗した場合には、両方のトランザクションがロールバックされます。
EJB 連携機能の開発も、さきほどの RESTful Web サービス機能と同様、Enterprise Developer / Visual COBOL の IDE で行えます。
左側には COBOL プログラムの Linkage Section 項目が表示され、右側にドラッグアンドドロップするだけで、Java EE アプリケーションサーバーとの通信データ構造を作成できます。データ型についても同様、COBOL / Java とのデータ型を本手順の中で定義していくため、変換ロジックを別途開発する必要はありません。
EJB 連携機能はどのようなシステムで利用すべきでしょうか。一例として、銀行業務の貸出利息の計算を行う既存のCOBOLロジックと、Java EEアプリケーションサーバーで構築された融資システム連携の実現があげられます。複数サーバーがそれぞれのトランザクションを保持しつつも結果に一貫性の担保が求められる場合や、COBOLシステムをJavaアプリケーションサーバーに連携する場合、EJB 連携機能は非常に有効な選択肢です。
今回は、COBOL専用のアプリケーションサーバーを利用したCOBOL処理の実行方法を2つ紹介しました。RESTful Web サービスや EJB 連携機能の利用は、既存の COBOL プログラムを活用したサービスやシステム開発が行えるだけではなく、これまでの高い品質を維持しつつ、短期間にサービスの立ち上げやシステム構築を実現できます。
COBOL資産を取り巻く課題を明らかにするとともに、モダナイゼーションの適切な手法、効率的なステップをご紹介します。
本セミナーでは、Visual COBOL最新機能を紹介し、モダナイゼーションを支援する技術についてデモを交え解説します。
本セミナーでは、Enterprise Developer/Enterprise Serverの機能と活用方法について、製品を利用したリプラットフォームの手順やそれに伴う具体的な注意点も解説します。
COBOL Serverは、お持ちの COBOL 資産を Windows,Linuxをはじめとした様々なプラットフォーム上で活用することができる COBOL の実行環境製品です。COBOL Server は、開発環境製品 Visual COBOL を用いて生成したネイティブコード、Java バイトコード、CILコードの実行環境を提供します。
Enterprise Server は、SOA 機能を含む COBOL Server の全機能に加えて、IBM メインフレーム互換の JCL/CICS/IMS 実行機能を搭載した実行環境製品です。IBM メインフレーム上の COBOL、PL/I アプリケーションのリプラットフォームを低コスト・低リスクで実現するだけではなく、将来のモダナイゼーションにも備えることができます。