COBOLによるによるWebサービスコンポーネント開発
サービスコンポーネント開発
による
2001年
年 12月
月 12日
日

マイクロフォーカス株式会社
小林 純一

記載された会社名、製品名はそれぞれ各社の商標または登録商標です。

COBOLロジックのコンポーネント化
COBOLロジックのコンポーネント化
コンポーネント化の実例 – COMラッピング.NETマネージドコードからCOBOLの利用
Webサービスへの展開

アプリケーション開発の背景● 迅速な開発への要請– 社会情勢の変化 (法改正、他業種参入、…)– 企業統合– 商品競合力・差別化– 「数年」から「数ヶ月」へ● システムの柔軟性への要請– ロジック変更への柔軟性– プレゼンテーション変更への柔軟性– システムのオンラインメンテナンス● 既存資産を活用したコンポーネント開発

アプリケーション開発の背景● コンポーネント化技術の浸透– COM+, .NET, SOAP, J2EE, CORBA● プログラミング言語に対するトランスペアレンシが実現された● プログラミング言語の選択基準の変化：
テクノロジーによる要請
開発対象アプリケーションの特性による要請

オープンシステムにおけるCOBOL● メインフレームオルタナティブとしてのWindows、UNIX– COBOLバッチプログラムの高い移植性● アプリケーションサーバーとしてのWindows、UNIX– ホスト集中型の従来型アプリケーションとの親和性● COBOLの一般的特性– 高い可読性、保守性、生産性、均質な品質● 40年間で証明された開発方法論としてのCOBOL● COBOLプログラマの高い資質

アプリケーションサーバー

クライアント
プレゼンテーーション

サービス要求サービス要求

ロジック
サービス
ロジック

サーバーサイドでのビジネスロジックにCOBOLの活用をの活用をロジックに

データアクセス
データアクセス

COBOLロジックのコンポーネント化
強固なビジネスロジックをどこからでも、誰からでも…
強固なビジネスロジックをどこからでも、誰からでもアプリケーションサーバー
クライアント

COM+

ラッピング
ラッピング

.NET Framework

ラッピング
ラッピング

Javaクラス
クラス

ラッピング
ラッピング

EnterpriseJava Bean

ラッピング
ラッピング

CORBA
オブジェクト

ラッピング
ラッピング

プレゼンテー
ーション

ササ ービ
ー ス
ビス 要
要 求求

• 多言語
•HTML
•ASP
•JSP
•VisualBasic
•C#….
• ヘテロ
プラットフォーム•Windows•UNIX•Linux•モバイル端末
モバイル端末….

ビジネスロジック

EVALUATE SHOR
WHEN ADD-VA
PERFORM AD
WHEN DELETEPERFORM DECOMPUTE INHE
= YEARS-GIVE/ ( 12 + IND

IF ( CUSTOMER> ‘20011212’ )ANDCOBOLロジックのコンポーネント化
コンポーネント化の実例
コンポーネント化の実例––COMラッピング
COMラッピング.NETマネージドコードからCOBOLの利用
Webサービスへの展開

COBOLとCOMの相互利用
COMクライアント
クライアント
COBOL
プログラム

VB、、VC++
プログラム

文
INVOKE文

メソッド呼び出し

ASP、、WSH
スクリプト

COMオブジェクト
オブジェクトCOBOLによるによる
COM
コンポーネント

市販コンポーネント、JavaScript
VBScript、

COBOLロジックのCOMラッピング● Object COBOLで記述したクラスをCOMコンポーネントとしてリンクし、登録する● Micro Focus Net Expressの装備するクラスウィザードで半自動生成可能● タイプライブラリも自動生成● 自己登録型DLLを作成● スレッドモデルの指定が可能● 既存COBOLロジックに対しては、スレッド競合を回避するアパートメントシン
グルを推奨● COBOLによるCOMデータ型へのマッピング● Variant、SafeArray● COBOLによるCOM例外処理● RaiseExceptionメソッド● レジストリ登録も自動生成

COBOLとCOMの実現例

Net Express
クラスウィザードによるCOMコンポーネント生成
コンポーネント生成

ASP + COBOL COM 構成
HTML
文書
Windows
クライアントHTMLテキスト
テキスト
COBOLロジック
ロジック
COMコンポーネント
コンポーネント

問い合わせ文字列
Webブラウザブラウザ
Microsoft IIS
HTMLテキスト
テキスト

ASP文書
文書

ASP + COBOL COM<HTML><HEAD><TITLE>ASPからCOBOLのCOMコンポーネントを呼び出す</TITLE></HEAD><BODY><FORM action=simple.asp method=get>
数字を入力してください： <INPUT type=text name="myname"size=12><P><INPUT type=submit value="送信"></FORM></BODY></HTML><% @Language="VBScript" %><HTML><HEAD><TITLE>最も簡単なASP</TITLE></HEAD><BODY><% Response.Write Request.QueryString("myname") %>に２をかけると、<% Set rs = CreateObject("cobcalc")rs.myProperty = Request.QueryString("myname")
i = rs.doubleIt()
Response.Write rs.myProperty%>です。</BODY></HTML>ASP + COBOL COM 構成例
クラス cobcalc の仕様
プロパティ•myProperty 数字型
メソッド•doubleIt()

myProperty の値を2倍する

Visual Basicオブジェクトブラウザ
オブジェクトブラウザ
による表示

ASP + COMコンポーネント
クラス cobcalc のCOBOLによる記述
CLASS‑ID. cobcalc INHERITS FROM OLEBASE.
OBJECT.
OBJECT‑STORAGE SECTION.
01 myProperty
PIC S9(9) COMP‑5.
METHOD‑ID. "DoubleIt".
LINKAGE SECTION.
01 RETVALPIC X(4) COMP‑5.
PROCEDURE DIVISION RETURNING RETVAL.
COMPUTE myProperty = myProperty *MOVE myProperty TO RETVAL.
EXIT METHOD.
END METHOD " DoubleIt".
END OBJECT.
END CLASS cobcalc.

2.

COBOLロジックのコンポーネント化
コンポーネント化の実例 – COMラッピング.NETマネージドコードからCOBOLの利用.NETマネージドコードからCOBOLの利用
Webサービスへの展開

.NETフレームワーク● アプリケーションを作成して実行するための新しい環境を提供● Webサービス開発を簡易化し、多種の言語で記述されたコンポーネントで共通に利用可能な実行時サービスを提供● 異言語間、異機種間の相互接続性も実現● 共通言語ランタイム (CLR)● 異言語間での相互呼び出し、共通の例外処理、ガベージコレクション、バージョン管理、アプリケーション配布サポートを提供● マネージドコード● CLR用に開発され、マイクロソフト中間言語 (MSIL)にコンパイルされたプログラム● 現在流通しているすべてのコードはマネージドコードではない● Micro Focus Net ExpressでコンパイルされたCOBOLプログラムもマネージドコードではない● マネージドコードとそうでないものとを相互に利用可能にするためのメカニズムを.NETフレームワークの中で提供● この相互運用性レイヤーにより、既存のCOMコンポーネントをマネージドコードから利用したり、マネージドコードを既存アプリケーションからCOMコンポーネントとして利用することができる

.NETフレームワーク● COM+ は、COBOLを使用した基幹情報システムの実行環境として実証された。
「安田火災がシステム基盤を一新」 2001/11/19 日経コンピュータ● .NET もCOBOLの活用によって、実績を積んで進化する。
● .NET におけるCOBOL活用 海外ユーザ事例
SYSPRO● 1981年 創立、ERP製品の開発・販売、一貫してCOBOLを活用● 1984年 ERP製品 Impact Award 発表(MSDOS & UNIX)● 1994年 Windows GUI版 Impact Encore● 2001年 Impact Encore で Microsoft XP
Certification取得● 2002年 Impact Encore .NET版の出荷予定
ASP.NETフロントエンド + COBOL COMコンポーネントを採用、現在開発中

A銀行
銀行 (欧州)● メインフレームのCOBOL資産を活用し、32CPU の Windows Data Center Server
上の .NET 環境へ移行中● 当初 COBOLを捨て C#への書き直しを検討したが、評価の結果 Micro Focus
Net Express を選択

マネージドコードからCOBOLへのアクセス
Net Express
Application
Server
既存
COBOL
ロジック

COBOL
COM
コンポーネント

実行時
ラッパー.NET
CommonクライアントLanguage
Runtime(VB.NET,(CLR)
C#, VC)
名前空間を提供Net Expressクラス
ウィザード

タイプ
ライブラリ

メタデータ
TLBIMP

COBOLからマネージドコードへのアクセス
Net Express
Application
Server既存COBOL
プログラム

COBOL
COM
クライアントCOM
呼び出し
ラッパー.NET
Common
オブジェクトLanguage
Runtime(VB.NET,(CLR)
C#, VC)

メタデータ
REGASM

レジストリ

COBOLからマネージドコードへのアクセス
Micro Focus Net Express タイプライブラリアシスタントによるコード生成
自動生成*> ==========================*> = Type library contents: =*> ==========================*> Name: System̲Windows̲Forms*> System.Windows.Forms.dll
01 ImeModepic s9(9) comp‑5 typedef.
88 ImeMode‑Inherit
VALUE ‑1.
88 ImeMode‑NoControl
VALUE 0.
88 ImeMode‑On
VALUE 1.
88 ImeMode‑Off
VALUE 2.
88 ImeMode‑Disable
VALUE 3.
88 ImeMode‑Hiragana
VALUE 4.
88 ImeMode‑Katakana
VALUE 5.
88 ImeMode‑KatakanaHalf
VALUE 6.
88 ImeMode‑AlphaFull
VALUE 7.
88 ImeMode‑Alpha
VALUE 8.
88 ImeMode‑HangulFull
VALUE 9.
88 ImeMode‑Hangul
VALUE 10.
01 ImeMode‑PTR
pointer typedef.
01 FormWindowState
pic s9(9) comp‑5 typedef.
88 FormWindowState‑Normal
VALUE 0.
88 FormWindowState‑Minimized VALUE 1.

COBOLロジックのコンポーネント化
コンポーネント化の実例 – COMラッピング.NetマネージドコードからCOBOLの利用
Webサービスへの展開
Webサービスへの展開

Webサービスの概要
Simple Object
AccessProtocolWebサービスサイト
サービスサイトクライアント
SOAP要求要求
SOAP要求要求Webアプリケーシ
ョン結合

エンドユーザ

株価照会

SOAP
ルーター

送金

WSDL
ルーター

WSDL

サービス
Webサービスを配布
Web Service
Description
Language

Universal
Description
Discovery
Interface検索

UDDIサイト
サイト
UDDI
ロケータ

UDDI
レジストリ

Webサービスの構成例
Javaアプリケーションサーバ
アプリケーションサーバ

クライアント

S

要求
要求
AP
O
PSA
O

SOAP
ルータ

株価照会

WSDL
ロケータ

WSDL

Java
Web
サービス

COBOL
ロジック

株式購入
S
SO OAP
AP 要求
要求

Microsoft.NET サーバ

SOAP
ルータ

WSDL
ロケータ

.NET
Web
サービス

送金

WSDL

Javaの世界との世界と COM/.NET の世界を融合する「統一場の理論」- Giga Information Group, July 2001

COBOL
ロジック

WebサービスのWindowsでの実装例
Microsoft SOAP Toolkit• WSDL – Web Services Description Language• Webサービスの形式を定義するXML文書• クライアントアプリケーションはWSDLの記述に合致したSOAP要求を発行しなければならない• WSML – Web Services Meta Language• Webサービスのインタフェースと COMクラスとのマッピング規則を記述する• WSDL/WSML Generator• Microsoft SOAP Toolkitが提供• 既存のCOMコンポーネントから WSDLを生成• SOAPクライアントクラス• COMクラスとして提供、既存の言語から容易にサービス要求を記述可能

WebサービスのWindowsでの実装例
Microsoft SOAP Toolkit
COBOLサーバーとしてサーバーとしてCOBOLクライアントとしてクライアントとしてCOBOLバッチ処理
INVOKE SOAPClient “mssoapinit“ USINGINVOKE SOAPClient “GetStock” USING

MSSoarClientクラス

Net Expressで作成したで作成したCOMコンポー
コンポーで作成したネントのWebサービス化
サービス化
ネントの

顧客先
Webサービス
サービス
サイト

顧客先
Webサービス
サービス
サイト

WebサービスのJ2EEでの実装
WebSphere Application Server 4.0
Webサービスウィザードによる構築サービスウィザードによる構築
WebSphere Application Server V4.0

WebSphere Studio V4.0

インポート
生成

WSDL

SOAPサービスサービス
COBOLクラス
クラス

アプリケーション
アセンブ
リツール

ディプロイ

WSDL
SOAP－－DD

既存Javaクラス
クラス
既存
既存COBOLクラス
クラス
既存

Micro Focusの方向性
開発・運用

リホスティング
ダウンサイジング

2. 開発の生産性向上

3. マイグレーション

Windows & UNIX
メインフレームの進化
1. 開発の生産性向上
4. アプリケーションのWeb展開
展開
アプリケーションのオフコン、ミニコン、各社メインフレーム

16bit PC、、メインフレーム
5. 業務への付加価値追加
6. 業務の移行
相互運用性:
サービス
相互運用性 WebSphere, XML, J2EE, .NET, Webサービス

市場の要求
市場の特性
••
•
•

メインフレームは残る
UNIX、Windowsのメインフレー
ムオルタナティブ
J2EEベース開発の増加
Windows既存資産要求•

既存アプリケーションの理解•

既存アプリケーションの有効活用•

アプリケーションのJ2EE準拠性•.NET 相互運用性

COBOL Serverの必要性
Micro Focus Application Server
for Net Express / Server Express! すべてのCOBOL言語機能を実現するス
ケーラブルなランタイムシステム! 64bit ネイティブコード
! スレッドセーフなCOBOL実行! トランザクションをサポートする COBOL
リモートファイルシステム! ODBCデータベース接続! COM相互接続クラス! Java相互接続クラス
SOAPサーバー! Webサービス: J2EE / .NET
+ SOAPルータ、サービスエンジン+ 運用管理+ COBOLサービスデバッガ! J2EE準拠性+ J2EEリソースアダプタ

トータルな相互運用性
JavaWebサービス
サービス
Stock Quote

Micro Focus COBOL
Webサービスサービス
Stock
Purchase

CICS
Webサービスサービス

SOAPSOAP
要求
要求.NETWebサービス
サービス
Credit Check

Stock
Summaryまとめ● 安田火災様での事例、COM+ をベースとしてシステム基盤の再構築に成功した。COBOL資産が活用できたことが大きい。
● Windows は、信頼性の面で UNIX陣営から攻撃されることが多かったが、これはそうではないことを証明した。
● このように COMで COBOLを活用することは証明された方法となった。.NETもこれから市場が証明してゆくことになる。国内ではまだ .NET の活用事例は出ていないが海外では出始めている。
● 市場調査によれば、現在のところ将来のシステム基盤としての注目度は J2EEが一番であり、WebSphere 4.0 のような包括的な機能を提供するサーバー製品が登場している。
● Webサービスは .NET と J2EEの両方を包括するものとしての役割が期待されている。既に既存のテクノロジーで COBOLロジックを SOAPサービスとしてコンポーネント化できる。
● Micro Focus は COBOLロジックを J2EE完全準拠の方法でSOAPサービス展開できる、アプリケーションサーバーを提供してゆく計画です。

記載された会社名、製品名はそれぞれ各社の商標または登録商標です。