【第3回】COBOLとJava、.NETとの連携

SCROLL DOWN

リストへ戻る

今回は、モダナイゼーション手法の一つであるCOBOLコードのJavaクラス化、.NETクラス化について説明します。

Java EEシステムを使用したオンライントランザクションシステムや.NETアーキテクチャを使用したオンライントランザクション処理は既に一般的です。
おそらくほとんどのWebシステムのフロントエンドはブラウザーやリッチクライアント、モバイルを使用したもので開発されていると思われます。

 

COBOLで既に安定稼動しているシステムを既存のJavaや.NETで作成されたシステムに連携するような場合、下記のような手法が一般的ではないでしょうか。

 

メインフレームやオフコン上で稼動するシステム上にTCP/IPのプロトコルが通るようにネットワークを設定し、特定のポートを開放。そしてクライアントからSOAPメッセージ等を送り、受け手のCOBOLシステム側でメッセージを解析し、処理を行い再びクライアントに返す等です。

 

ではどのような連携が多いでしょうか。 COBOLシステムが担う機能として多く見受けられるのは事務計算です。31桁の10進数の計算精度の正確さではCOBOL言語に一日の長がありますので計算処理を行うような連携には非常に有効です。
しかし事務計算をするためだけにハードウェアリソースやネットワーク構成を変更し、サブルーチン化を行うことはコストに見合わないでしょう。また、もしネットワークトラブルが発生した場合、システム連携も動作しなくなってしまいます。
このロジックをリライトする選択もありますが、連載の冒頭で話した通り、計算精度を同じにするための丸め処理の実装にはかなり苦労するだけではなく、ロジックの作り直しにより再テストも必要となります。そこで、「COBOLコードをそのまま使えたら」と皆さんが考えるのは当然です。

 

最近では、COBOLコードをJavaコードに変換するサービスが出てきていますが、COBOLのような手続き型言語をJavaに変換するので冗長でパフォーマンスが劣るメンテナンスしづらいJavaコードができてしまいます。これでは何のためにJavaに変換するのか目的がわからなくなってしまいます。

 

そのためマイクロフォーカスは、COBOLコードをダイレクトにJavaクラス化、.NETクラス化するソリューションを提供しています。これにより、Javaプログラマーや.NETプログラマーから見たら通常のクラスファイルのインスタンスを生成してパブリックメソッドをコールしているのとまったく変わりないコーディングを行うことができます。JDBCやADO.NETも使えるのでデータベースアクセスのデータソース名(DSN)は、使用しているアプリケーションサーバーと共有もできます。
下図では、Java アプリケーションサーバーにクラスファイルを登録してCOBOLのロジックをコールしています。これによりCOBOLとJavaの間にネットワーク通信を必要とせずに直接呼び出して利用できるというメリットが出てきます。

 

001

 

Javaの場合、Hadoop 技術を用いた大容量データ処理を並列、かつ、高速に実行することもできます。これはノーチラス・テクノロジー社のAsakusaフレームワークの技術を利用したもので、三菱総研DCS様でサービスを提供しています。詳細は下記のリンクをご覧ください。特筆すべきは、COBOLコードの再利用性です。現行COBOL資産の再利用について約8千ステップあった既存COBOLソースコードのうち約93%が再利用でき、さらに約63%はコードの修正なく再利用可能とのことでした。

 

サーバ1台で実現!並列処理によるCOBOLバッチ処理高速化のポイント(概要編)

 

そしてJavaテクノロジーを使わない場合、選択肢として出てくる技術が.NETフレームワークを使用したCOBOLの.NETクラス化です。これを説明したものが下記の図です。

 

002

 

COBOLコンパイラが COBOL プログラムから直接 CILコードを生成し、ランタイムとともに生成されたコードを利用することで、IIS 上や .NET Frameworkまたは.NET6上でCOBOL を利用することができます。

 

このような呼び出しを可能にしているのがVisual COBOLコンパイラの拡張機能であるSMARTLINKAGEです。SMARTLINKAGEがCOBOL と Java/.NET 言語間のデータ型差異の吸収してくれます。

 

SMARTLINKAGEの特長
・01 レベルの参照渡しの項目について Wrapper クラスを自動生成
・LINKAGE SECTION 中の変数を Java, .NET の基本型等にマッピングした変数をプライベートメンバーとして保持
・各メンバーに Public の setter 及び getter を生成
・集団項目は中身に関わらず String にマッピング
・COBOL 変数名中のハイフンはクラス内では削除
・先頭文字及びハイフンに続く文字を大文字に変換
・ILCUTPREFIX 機能を併用し Wrapper クラスメンバー名のカスタマイズも可能

 

 

ここでは、 JVM COBOL を例として使用していますが、.NET COBOL でも同様です。
左側は従来形式の COBOL プログラムで、LINKAGE SECTION にて lnk-sngl, lnk-grp 変数が定義されており、これらが USING 句で指定されています。この状態で、SMARTLINKAGE 機能を有効にする指令 ILSMARTLINKAGE を指定してコンパイルを行うことで、LINKAGE SECTION 中の変数に対応した Wrapper クラスである LnkSngl クラス、LnkGrp クラスが自動生成されます。右側の Java プログラム内では、これらの Wrapper クラスが、一般的な Java クラス同様、インスタンスの作成を行い、setter によるパラメータセットが行われていることがわかります。

 

このようにCOBOLはJavaや.NETといったシステム開発のメインとなる言語と簡単に統合して使うことができるようになっています。
これによりCOBOL資産を新規開発や統合先のシステムで使用するJavaや.NET言語へのリライトが不要となり、高い品質を持つ既存のコードを使い続けることが可能となります。次連載以降でさらなるモダナイゼーションの方法をご紹介していきます。

関連情報

Webセミナー:COBOL + Java 連携アプリ構築体験セミナー

既存の COBOL 資産を Java 技術と連携させ、アプリケーション価値の向上を検討されている SE・プログラマの方々が対象のセミナーです。Micro Focus製品を活用してCOBOL 資産を Web サービス化、JCA 連携アプリケーション化、JVM クラス化する技術をデモンストレーションを中心に紹介いたします。

Webセミナー:COBOL + .NET 連携アプリ構築体験セミナー

既存の COBOL 資産を .NET Framework から活用し、アプリケーション価値の向上を検討されている SE・プログラマの方々が対象のセミナーです。Micro Focus製品を活用して COBOL 資産を .NET クラス化、Web サービス化する技術をデモンストレーションを中心に紹介いたします。

Micro Focus Visual COBOL

Micro Focus Visual COBOLは、最新版のCOBOL統合開発環境製品です。価値ある既存COBOL資産の最新テクノロジー環境での活用を可能にします。単一のCOBOLソースを多数のプラットフォームに展開することができるため、開発期間の短縮やコスト削減にも貢献します。

SNSでシェアする

  • URLをコピーしました