COBOLのいま、未来そしてクラウドCOBOL - Getting Started(3)(2/3 ページ)

» 2009年07月29日 00時00分 公開
[小林純一マイクロフォーカス株式会社]

コンポジットアプリケーション開発でのCOBOL

 COBOLは汎用のプログラミング言語としてさまざまな用途で使用されてきましたが、その強みは事務処理におけるビジネスロジックの記述力にありました。

 モノリシックなプログラミングが主流であった汎用機の時代には、プログラミング言語としてCOBOLだけがあれば十分でしたが、コンポジットアプリケーションの時代になるとCOBOLはその守備範囲をサーバサイドのビジネスロジック層に集中させてきています。

 そしてオープンなアーキテクチャの中で、Javaアプリケーション、あるいはERPの提供するモジュール、あるいはリッチクライアントアプリケーションなどと会話しながら企業情報システムの重要な一部を担っています。

Visual Studio COBOLアドオンの実装 サーバサイドロジックにおけるCOBOLの活用

 COBOLで記述されたビジネスロジックを分散環境下でコンポーネント化するテクノロジは数多くありますが、ここではそのなかからWebサービスとJava EEの2点について解説します。

1. COBOL Webサービス

 現在市場にあるアプリケーションサーバ製品のほとんどがSOAPリスナを装備し、Webサービスをサポートしています。また、汎用のアプリケーションサーバ製品のほとんどはサーバサイドの記述言語としてCOBOLをサポートしています。従って、COBOLで書かれたロジックをWebサービスとしてエクスポーズする手段は豊富にあります。

 例えばマイクロフォーカスは、COBOL実行環境製品の上位エディションであるMicro Focus Server for SOAのなかに、SOAPリスナを含むCOBOL言語専用のアプリケーションサーバを同梱しており、これを使用すると既存のCOBOLサブルーチンを一行もソース修正することなしにWebサービスとして利用可能にすることができます。

 汎用のアプリケーションサーバ製品の多くは独自のAPIを用意しており、これを使用してコンポーネント化することができますが、COBOL言語専用サーバはコンテナが動的にCOBOLサブルーチンを呼び出しますので特殊なAPIを使用する必要がありません。

 既存のCOBOLプログラムが受け取る入口点パラメタを、どのようにWebサービスのパラメータとしてエクスポーズするかはCOBOL専用のデプロイツールを使って指定することができます。

EclipseベースのCOBOLデプロイツール EclipseベースのCOBOLデプロイツール(画像をクリックすると拡大します)

 デプロイ時には標準的なWSDL(Web Services Description Language)が自動生成され、HTTPで利用可能となります。これを使用して、Java、.NETそのほか幅広いWebサービスクライアントから容易にCOBOLロジックを利用できるようになります。

2. Java EE開発でのCOBOLの活用

 Javaの世界から外部のリソースにアクセスするには、Java EEで規定されている各種APIがあります。データベースアクセスのためのJDBC、メッセージングのためのJMSなどがありますが、より汎用的な標準としては、JCA(Java Connector Architecture)があります。JCAは、幅広いリソースに対しての標準的なアクセス方法を提供するもので、メインフレームやERPなどの多くのベンダがJCAアクセス手段を提供しています。

 JCA仕様は、クライアントからのアクセスAPIと共に外部リソースとJava EEアプリケーションサーバとの間のインターフェイスも規定しています。この規定に従っていれば、Java EEアプリケーションサーバにベンダがアダプタを組み込むことが可能になっています。

 例えばマイクロフォーカスは、JCA仕様に準拠したリソースアダプタを提供しています。JCAによる接続は外部リソースに対してトランザクションを伝播でき、Javaプログラマにとって、もっとも理解しやすい方法となっています。また、標準に準拠しているので数多くのJava EE製品と容易に接続できます。

 このJCA実装も、COBOL側の受け口はWebサービスの項で説明したCOBOL言語専用アプリケーションサーバを使用しています。Java EEからCOBOLロジックを呼び出す場合には、COBOLプログラムはJava EEの外側にあるサーバ上で動作させます。

 COBOL側が提供するJCAリソースアダプタはJava EE側にいてJavaアプリケーションが発行するJCAサービス要求を、Socketを経由してCOBOL側のリスナに送信します。

 COBOLサーバマネジャはサービス要求を受信すると、その配下で管理しているプロセスプールから待ち状態になっているプロセスに処理を振り分け、COBOLプログラムを実行させます。このプールされたプロセスをCOBOLコンテナと呼んでいます。

 COBOLサーバはスレッドプール方式ではなくプロセスプール方式なので、staticなCOBOLプログラムでも問題なく並行稼働できます。このやり方はCICS(Customer Information Control System)などのCOBOL言語をサポートするTPモニタがどれも採用している方法です。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。