ところで、本連載でこれまで説明してきたとおり、COBOLのデータ型にはJavaとは大きく異なる特性があります。
特にCOBOLでは宣言したデータレイアウトの物理的なバイト順が規定されており、プログラマはこれを意識したアクセスを行うことがある点が、オブジェクトベースのJavaとは大きく異なっています。
この問題はデプロイツールに相当する開発環境によって解決できます。
COBOL側のリスナは、サービス要求を受信すると空いているCOBOLコンテナに処理をディスパッチしますが、このときにJava EEアプリケーションから渡されてきた入力データをCOBOLのデータ型に変換します。
例えば、Javaの基本数字型とBigDecimalオブジェクトは、それが表現する数学的な数値を基にして、対応するCOBOLの数字型に変換されます。StringオブジェクトはUnicodeからCOBOLサーバの実行ロケールにあわせてコード変換されCOBOLの文字型に格納されます。byte[]を使用して無変換でバイナリデータを渡すこともできます。
この型変換の規則は開発者によって自由に設定できます。レガシーCOBOLプログラムの入出力データをJavaからどのように取り扱うかは、Java、COBOL双方のプログラマの都合で変わりますので、事情に合わせて自由に対応付けを設定できる必要があります。
COBOLサーバのためのデプロイツールを使用すると、既存のCOBOLプログラムに記述されている入出力データの定義に、Javaのデータ型をどのように対応付けるかをポイント&クリックで定義できます。
この定義情報は、COBOLサーバへのデプロイ時にコンパイル済みCOBOLプログラムとともにサーバに配備されますので、COBOLサーバのディスパッチャはこれを参照して正しい型変換を行います。
また、デプロイツールはEJBラッパーを自動生成する機能も装備していて、JavaプログラマからみるとあたかもEJBのビジネスロジックを呼び出すのと同じようにCOBOLのビジネスロジックを利用できるようになっています。
これまで述べてきたように現代のCOBOLアプリケーションは主にサーバサイドのビジネスロジックのエンジンとして稼働しているわけですが、そうであれば現在普及が進んでいるクラウドサービスはその有力な実行基盤となり得ます。
Amazon Web Serviceに代表されるクラウドサービスは、ホスティングされた仮想サーバをセキュアな接続で利用させるサービスであり、利用者にとっては初期投資を節約しオンデマンドで最大限のコンピューティングリソースを活用できるものです。
英Micro Focus本社では、仮想化されたCOBOLアプリケーションサーバ環境をクラウドサービスとして利用するサービスをMicro Focus Enterprise Cloud Serviceとして発表しており、すでにベータ利用も募っています。
利用者は任意の容量のCOBOLサーバインスタンスを必要なだけ起動し、自身で用意したCOBOLアプリケーションの動的ロードモジュールをインスタンスにデプロイし、自社内のクライアントアプリケーションから利用できます。
アプリケーションをデプロイ済みのサーバはマシンイメージとして保存でき、必要なときに必要なだけの多重度で、時間課金で活用できます。
この仮想サーバはCOBOLアプリケーションの実行に特化されたものであり、利用者はOSにログオンして直接操作することは許容されていません。サービスが用意するツールを使用してCOBOLアプリケーションをデプロイすることのみが許容されています。
なお、コンポジットアプリケーションを構成するCOBOL以外のパーツはすべてオンプレミスで用意する必要があります。
データセンタによるホスティングはメインフレームの世界でも一般的になっています。Micro Focus Enterprise Cloud Serviceのような取り組みは、COBOLベースのミッションクリティカルなアプリケーションにもクラウドの恩恵への道を開くものとして注目に値します。こういった方向にもCOBOLの未来はあるのかもしれません。
以上、3回の連載でCOBOLのあらましを解説しました。COBOL言語についての系統だった学習は、市販書籍や研修会が提供されていますので必要に応じて利用されるとよいでしょう。この連載をスタートにして、「最新テクノロジに精通したCOBOLプログラマ」が1人でも多くビジネスシーンで活躍するようになることを願っています。
Copyright © ITmedia, Inc. All Rights Reserved.