32
1 COBOL COBOL による による による による による による による によるWeb Web システム システム システム システム システム システム システム システム 開発手法 開発手法 開発手法 開発手法 開発手法 開発手法 開発手法 開発手法 日本オラクル株式会社 日本オラクル株式会社 日本オラクル株式会社 日本オラクル株式会社 マーケティング統括本部 マーケティング統括本部 マーケティング統括本部 マーケティング統括本部 テクノロジーセンター テクノロジーセンター テクノロジーセンター テクノロジーセンター OASソリューショングループ ソリューショングループ ソリューショングループ ソリューショングループ

COBOL によるWebシステム 開発手法otndnld.oracle.co.jp/products/app_server/oas/pdf/cobol...2 Agenda COBOLカートリッジ登場の背景 COBOLカートリッジ概要 業務アプリケーションのWeb化

  • Upload
    dothuy

  • View
    230

  • Download
    5

Embed Size (px)

Citation preview

1

COBOL COBOL によるによるによるによるによるによるによるによるWebWebシステムシステムシステムシステムシステムシステムシステムシステム開発手法開発手法開発手法開発手法開発手法開発手法開発手法開発手法

日本オラクル株式会社日本オラクル株式会社日本オラクル株式会社日本オラクル株式会社マーケティング統括本部マーケティング統括本部マーケティング統括本部マーケティング統括本部テクノロジーセンターテクノロジーセンターテクノロジーセンターテクノロジーセンター

OASソリューショングループソリューショングループソリューショングループソリューショングループ

2

Agenda

COBOLカートリッジ登場の背景カートリッジ登場の背景カートリッジ登場の背景カートリッジ登場の背景

COBOLカートリッジ概要カートリッジ概要カートリッジ概要カートリッジ概要

業務アプリケーションの業務アプリケーションの業務アプリケーションの業務アプリケーションのWeb化化化化

Oracle Application Server導入のメリット導入のメリット導入のメリット導入のメリット

アーキテクチャ– COBOL Director

– COBOL WRBAPI

サンプル

まとめ

3

今今今今 情報システムに求められているもの情報システムに求められているもの情報システムに求められているもの情報システムに求められているもの

迅速なシステム開発(スピードが命)

多数のユーザを桁違いの低コストでサポート

管理コストの大幅な削減

安定性・堅牢性

低リスク

インターネット技術への対応は?

インターネット技術の発展により、従来あった、時間的、空間的な制約から解放され、非常に柔軟なシステムを構築することが可能になっています。しかしその反面、『メガコンペティション』と呼ばれる世界的な競争により、情報システムに求められる要件も大きく変わってきています。

•まず第1にスピード。システムを作り上げ、早急にそのサービスを提供できるかどうかが企業の競争力を大きく左右するようになりました。どのようにして早急にシステムを作り上げるかを考える必要があります。

•第2に、従来のような個人や部門レベル、つまり数人から数十人をサポートできるシステムではなく、広く全社的、企業間、コンシューマをサポートする必要に迫られています。そこでは2桁も、3桁も大きいユーザをサポートする必要があります。しかもそれを従来では考えられないような圧倒的に低いコストで実現しなければ、この『メガコンペティション』を勝ち抜けません。

•管理コストを削減することは全体的なコスト(TCO)を削減するにあたっては大きな要素です。それには従来のような多数の部門へ小さなサーバをばらまくといったやり方を根本的に変える必要があります。

•しかもそれらを満足させた上で、システムは安定したものでなければならないという要求は今までと同様求められています。

•また開発にあたっては低リスクな手段をとって確実にシステムを完成させなければなりません。

•更には、インターネットに代表されるような日々進化している技術にどう対応するかも根本的なニーズです。

4

開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ

膨大な既存資産を生かせないか?膨大な既存資産を生かせないか?膨大な既存資産を生かせないか?膨大な既存資産を生かせないか?

– システム、ライブラリ、人的資産システム、ライブラリ、人的資産システム、ライブラリ、人的資産システム、ライブラリ、人的資産

– ノウハウノウハウノウハウノウハウ

– ビジネスロジックビジネスロジックビジネスロジックビジネスロジック

どうやってどうやってどうやってどうやってInternet Computingへ対応するのかへ対応するのかへ対応するのかへ対応するのか

– すべて一から勉強しなおし?すべて一から勉強しなおし?すべて一から勉強しなおし?すべて一から勉強しなおし?

– まだノウハウがないよ!まだノウハウがないよ!まだノウハウがないよ!まだノウハウがないよ!

– 資産は捨てなければならないの?資産は捨てなければならないの?資産は捨てなければならないの?資産は捨てなければならないの?

– 今すぐ対応だって?今すぐ対応だって?今すぐ対応だって?今すぐ対応だって?

前ページのような情報システムに求められる要件を満たすためにシステム開発者はさまざまな悩みを抱えています。

企業には既に多くのシステムがあり、資産(システム、ライブラリだけでなく人的なものも含む)を多く抱えています。また開発のノウハウもこれまでのプロジェクトで蓄積され、ビジネスロジックを記述した既存のシステムは、それ自体が企業の資産です。

インターネット技術を基にしたコンピューティングスタイルへ対応するために、さまざまな新技術を新たに一から勉強し直す必要に迫られています。

これらの新技術を身に付けるためにはそれなりの時間がかかるだけでなく、これまで蓄積されたシステム開発で得たレベルのノウハウへ達するには更に時間がかかります。そもそも企業には前述したような膨大な資産があるのになぜこれらを有効に使うことができないのでしょうか?資産やノウハウを必要なところに必要な形で有効に使って今すぐ対応する手段はないのでしょうか?

5

COBOLの再評価の再評価の再評価の再評価

既存資産・ノウハウの有効活用既存資産・ノウハウの有効活用既存資産・ノウハウの有効活用既存資産・ノウハウの有効活用

言語仕様の国際標準化言語仕様の国際標準化言語仕様の国際標準化言語仕様の国際標準化

プラットフォーム互換性プラットフォーム互換性プラットフォーム互換性プラットフォーム互換性

ビジネスプロセス記述のしやすさビジネスプロセス記述のしやすさビジネスプロセス記述のしやすさビジネスプロセス記述のしやすさ

保守性保守性保守性保守性

優れた機能優れた機能優れた機能優れた機能

– 金額計算、帳票印刷金額計算、帳票印刷金額計算、帳票印刷金額計算、帳票印刷 etc.

Java ? C ?, C++ ?,COBOL ?VB ?etc

ここで話題を少し変え、言語に注目してみます。JavaやCといったさまざまな言語の中で、COBOLのもつ以下のような特長が最近見直され、COBOLに対する評価が再び高まってきています。

COBOLを使用することにより、これまで蓄積された膨大な資産、人的リソース、ノウハウを有効に活用でき、人的リソースの再教育の必要がありません。

COBOLはANSIやX/Openに代表されるような機関により国際標準が定められており、さまざまな開発・実行環境間で互換性があるだけでなく、さまざまなプラットフォームでも高い互換性が保たれています。

COBOLはC、C++、Javaといった言語と違い、通常の英文に近い文法を持っており、ビジネスプロセスを記述しやすいという特性を持っています。

そのため他人が書いたソースも読みやすく、他の言語に比べ、プログラム全体のロジックを理解しやすいという特長を持っています。

さらに、他言語にはあまり見られないCOBOL自体の持つ機能、たとえば優れた金額計算機能や、帳票印刷機能なども評価されています。

6

COBOLマーケットの現状マーケットの現状マーケットの現状マーケットの現状

富士通

Mic

rofo

cus

日立製作所

NEC

96(実績)97(実績)

0

2000

4000

6000

8000

10000

12000

14000

98(販売目標)

COBOLコンパイラの販売実績(本)

0

FY97 FY98 FY99

Pro*Cobolの販売実績

出展: 日経ウォッチャー 98/8/21号

実際COBOLマーケットはここ数年急激な勢いで拡大しています。

左の図はここ数年のオープンシステム環境におけるCOBOLコンパイラの販売実績です(98年度は各社の販売目標)。これからわかるように各社のCOBOLコンパイラの販売は、年率20%以上の高い伸びを示しています。

次にOracleデータベース環境におけるCOBOL活用の状況を見てみましょう。

右の図はPro*COBOL(これはCOBOLを使ってOracleデータベースににアクセスするプログラム用のプリコンパイラです)の販売実績の推移を示しています。都合上細かい数字までは申し上げることは出来ませんが、この図からわかるようにOracleデータベース環境においても、年率2ケタ以上の高い伸びを続けています。

7

COBOLマーケットの現状マーケットの現状マーケットの現状マーケットの現状(つづきつづきつづきつづき)

NT時代の開発ツール時代の開発ツール時代の開発ツール時代の開発ツールCOBOLの可能性を探るの可能性を探るの可能性を探るの可能性を探る(アスキーNTアスキーNTアスキーNTアスキーNT 1998/9月号月号月号月号)

COBOLが好調なのは「が好調なのは「が好調なのは「が好調なのは「2000年特需」ではない年特需」ではない年特需」ではない年特需」ではない(DDJ 1998/8月号月号月号月号)

表舞台に帰ってきた表舞台に帰ってきた表舞台に帰ってきた表舞台に帰ってきたCOBOL(日経オープンシステム日経オープンシステム日経オープンシステム日経オープンシステム1999/5月号月号月号月号)

COBOLの再評価の再評価の再評価の再評価

適材適所な使用適材適所な使用適材適所な使用適材適所な使用(COBOL、、、、Java、、、、C、、、、C++、、、、VB etc.)

また、雑誌などでもCOBOLが取り上げられ、そこでCOBOLに対する再評価がなされています。

最近では日経オープンシステム5月号においてオープンシステムCOBOLの売り上げの高い伸びの理由が分析されています。

このようにCOBOLはここ数年再び注目され、オープン環境でも高い評価を受けています。

もちろん、COBOLが万能であるというつもりはありません。Java、C、C++等の言語も含めそれらの優れた点を理解し、それらを場面に合わせて適切に使い分けてシステムを構築することが肝要です。

8

Solutionは?は?は?は?

既存資産・ノウハウを有効に利用しつつ、既存資産・ノウハウを有効に利用しつつ、Internet ComputingInternet Computingに容易に対応するに容易に対応する

Oracle Application Server4.0Oracle Application Server4.0

Oracle COBOLOracle COBOLカートリッジカートリッジカートリッジカートリッジカートリッジカートリッジカートリッジカートリッジ

ITITに今に今に今に今に今に今に今に今 求められる求められる求められる求められる求められる求められる求められる求められるニーズニーズニーズニーズニーズニーズニーズニーズ 開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ開発者の悩み・ニーズ COBOLCOBOLの見直しの見直しの見直しの見直しの見直しの見直しの見直しの見直し

以上のように、

「情報システムに今求められているニーズ」、それを解決するために「開発者が直面している悩み」、一方でCOBOL自身の見直し、このような背景をベースに、今求められているコンピューティングスタイルInternet Computingに容易に対応するためのソリューションとは何でしょうか?

それは日本オラクルが提供する

「「「「Oracle Application Server 4.0対応対応対応対応 Oracle COBOLカートカートカートカートリッジ」リッジ」リッジ」リッジ」

です!

ではこれからOracle COBOLカートリッジの概要、開発方法などについてみていくことにしましょう。

9

Oracle COBOL カートリッジとはカートリッジとはカートリッジとはカートリッジとは

Oracle Application Server COBOL実行環境

OracleApplicationServer

既存システム

既存COBOLアプリケーション

COBOLカートリッジカートリッジカートリッジカートリッジ

COBOLアプリケーションアプリケーションアプリケーションアプリケーション

作成/移植

COBOL開発環境

連携

既存既存既存既存既存既存既存既存COBOLCOBOL資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット資産・ノウハウを有効に活用して、インターネット////////

イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能イントラネットを活用したシステムの容易な構築が可能

インターネット

イントラネット

 OracleApplicationServer COBOL カートリッジは、COBOLによるWebアプリケーションを構築するためのプラットフォームを提供します。 

 COBOL カートリッジは、OAS上で動作し、OASの提供するLoadBalancing、FailureRecovery機能によって大規模で信頼性の高いシステムの構築を可能にします。

 既存のCOBOLアプリケーションやデータベースを利用した、COBOLによるWebアプリケーションが構築可能となります。

10

業務アプリケーションの業務アプリケーションの業務アプリケーションの業務アプリケーションのWeb化化化化

CO

BO

L

CO

BO

L

カートリッジ

カートリッジ

HTMLページ

HTTP

作成作成作成作成作成作成作成作成//移植移植移植移植移植移植移植移植

OracleApplicationServer

新規業務新規業務新規業務新規業務新規業務新規業務新規業務新規業務

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

連携新規Database

既存システム

既存COBOLアプリケーション

連携

既存Database

既存業務既存業務既存業務既存業務既存業務既存業務既存業務既存業務

アプリケーションへのアプリケーションへのアプリケーションへのアプリケーションへのアプリケーションへのアプリケーションへのアプリケーションへのアプリケーションへのラッパーラッパーラッパーラッパーラッパーラッパーラッパーラッパー

既存業務既存業務既存業務既存業務既存業務既存業務既存業務既存業務アプリケーションのアプリケーションのアプリケーションのアプリケーションのアプリケーションのアプリケーションのアプリケーションのアプリケーションの移植移植移植移植移植移植移植移植 移植

既存システム

既存COBOLアプリケーション

既存Database

入出力部分の変更

COBOL カートリッジのイントラネット業務として三つの適用形態が考えられます。

1、COBOLに詳しい技術者がいる、COBOLによる開発経験者がいる、および、有用なCOBOL ライブラリが作成されているなど、ホストやオフコンで培われた既存COBOLノウハウがある場合には、これを有効に活用してCOBOLによる新規Web業務アプリケーションの構築ができます。

2、既存基幹業務アプリケーションと連携する情報系業務アプリケーションの作成など、従来システムやC/Sシステム上の既存COBOL業務アプリケーションは残し、付加的に別業務をWeb業務アプリケーションとしてCOBOLで開発することが可能となります。

3、既存C/S方式業務アプリケーションをWeb化するなど、従来システムやC/Sシステム上の既存COBOL資産を有効に活用して、既存システムをWeb業務アプリケーションとして移植することが可能になります。これによりClientにはブラウザさえあれば動作するシステムが構築できます。 ただし、C/S形式の入出力部分については、ブラウザとの入出力の形式に変更が必要になります。

11

Oracle Application Server導入のメリット導入のメリット導入のメリット導入のメリット

Machine1OracleApplicationServer4.0OracleApplicationServer4.0

その他プロセス、デーモン

…………

……

……

……

業務アプリケーション

CO

BO

L

カートリッジ

PL/SQLカートリッジ

プロセス管理プロセス管理プロセス管理プロセス管理プロセス管理プロセス管理プロセス管理プロセス管理

業務アプリケーション

CO

BO

L

カートリッジ

業務アプリケーション

CO

BO

L

カートリッジ

耐久性耐久性耐久性耐久性耐久性耐久性耐久性耐久性

業務アプリケーション

CO

BO

L

カートリッジ

自動回復自動回復自動回復自動回復自動回復自動回復自動回復自動回復

管理機能管理機能管理機能管理機能管理機能管理機能管理機能管理機能

Machine2

OAS分散Node負荷分散負荷分散負荷分散負荷分散負荷分散負荷分散負荷分散負荷分散

Machine3

OAS分散Node

 OASは開発者に何を提供するのか?

・OAS上でアプリケーションが稼動することにより、アプリケーションの問題によるマシンのダウンからマシンを保護します。また、FailureRecovery機能によってアプリケーションのダウンの自動回復を行います。

・OASの提供する管理機能によって、アプリケーションの起動、停止やプロセス数の制御に関するプログラミングの必要がありません。OASは、ブラウザからのアクセスがあると自動的にアプリケーションプロセスを起動、もしくは既に起動してあれば再利用して実行します。一度起動したプロセスは、何度も再利用されます。これによりプロセスの起動、停止のオーバーヘッドが軽減されCGIより良いパフォーマンスが得られます。

・OASの提供する分散機能によって、簡単に複数マシンへ負荷の分散が可能です。

12

COBOLカートリッジ競合比較カートリッジ競合比較カートリッジ競合比較カートリッジ競合比較

国内アプリケーションサーバベンダー COBOL/IIOP COBOL/WebNEC WebComputing Application Server ○ ×Fujitsu Interstage ○ ×Hitachi Hitachi Application Server ○ ×

アプリケーションサーバベンダー COBOL/IIOP COBOL/Web

ORACLE Oracle Application ServerORACLE Oracle Application Server △(計画中) ○IBM WebSphire × ×BEA WebLogic × ×Netscape Netscape Application Server × ×Inprise Application Server × ×SilverStream × ×

他社のアプリケーションサーバのCOBOL対応状況についてみてみましょう。

最近、このアプリケーションサーバと呼ばれる市場に対して各社とも力を入れており非常にホットな状況になっています。

COBOLへの対応については、国内ベンダーにおいては主にIIOPによるCORBAベースのソリューションとなっております。

一方、アプリケーションサーバ市場を牽引している海外メーカーの製品の場合、COBOLに直接対応しているものは今のところ、Oracle Application Serverのみです。

オラクルは先ほど述べたような、情報システムに今求められているニーズを真剣に捉えており、、既存の資産を有効に生かしてシステムを構築できるソリューションを適切な時期に適切な形で提供していきたいと考えております。

Oracle COBOLカートリッジの場合は、システム構築が容易なHTMLベースのソリューションを提供しているのが特長です。もちろんIIOPによるCORBA環境に対応することも現在計画中です。

アプリケーションサーバと呼ばれる製品群の中でCOBOLにきちんと対応しているのはOracle Application Serverのみということになります。

13

COBOLカートリッジ対応環境カートリッジ対応環境カートリッジ対応環境カートリッジ対応環境(予定予定予定予定)

対応予定プラットフォーム NT/Solaris

対応予定OAS 4.0.8.1

対応予定コンパイラ– NT富士通Power COBOL 97 / 日立COBOL85マイクロフォーカスCOBOL / NEC COBOL85

– SolarisSun 日本語COBOL / 日立COBOL85

14

アーキテクチャアーキテクチャアーキテクチャアーキテクチャ

WR

BX

WR

B A

PIs

COBOLDirector

COBOLWRB API

COBOLアプリケーション(.DLL,.so)

COBOL カートリッジ

作成作成作成作成作成作成作成作成

EntryPoint

CallBacks

Pro*COBOL等で連携

既存COBOLアプリケーション

連携

帳票帳票出力

実行

Call

HTML

COBOLカートリッジは開発者に何を提供するのか?

・COBOLによってWeb業務アプリケーションが作成できます。

 開発者は、実行したいプログラムをDLL(Solarisではshared library)として作成するだけです。

 OAS ManagerのCOBOL ParameterにDLL名、入り口名(EntryPoint)を指定するだけで実行することが可能となります。

・ブラウザからの入力を取得したり、ダイナミックなHTMLを生成するCOBOLWRBAPIルーチンが提供されるので、COBOLでブラウザへの表示やブラウザからの入力を簡単にプログラミングできます。

COBOLカートリッジの構成

 COBOL カートリッジは、COBOL Directorと呼ばれる部分とCOBOL WRBAPIルーチンと呼ばれる部分から構成され、OAS上にインストールするだけで容易に使用することが可能となります。

COBOL Directorは、Oracle Application ServerのC カートリッジで作成されています。COBOL Directorは、開発者の作成したCOBOLアプリケーションを実行します。

COBOL WRB APIはC カートリッジで提供されているWRB APIsをラッピングし、COBOLプログラムから簡単に利用できるようにするライブラリです。

15

アーキテクチャアーキテクチャアーキテクチャアーキテクチャ- COBOL Director-

WR

BX

COBOLDirector

Entry Point

CallBacks

WRB APIsCOBOL WRBAPI

起動起動起動起動起動起動起動起動

認証認証認証認証認証認証認証認証

ExecExec

終了終了終了終了終了終了終了終了

initInstance User_InitPGM

初期化処理初期化処理初期化処理初期化処理初期化処理初期化処理初期化処理初期化処理・Database connect・作業用メモリ確保

COBOLアプリケーションアプリケーションアプリケーションアプリケーション

作成

shutdownInstance User_TermPGM 終了処理終了処理終了処理終了処理終了処理終了処理終了処理終了処理

・Database disconnect・作業用メモリ開放

認証処理認証処理認証処理認証処理認証処理認証処理認証処理認証処理

・認証ロジックauthorize User_AuthorizePGM

exec User_ExecPGM 業務処理業務処理業務処理業務処理業務処理業務処理業務処理業務処理

・ビジネスロジック

 COBOL Directorは、開発者の作成したCOBOLアプリケーションを実行します。アプリケーションプロセスの起動、終了、業務アプリケーション実行前の認証、業務アプリケーション本体の実行の4つのタイミングで、各COBOLプログラムを呼び出してくれます。開発者は、上記の4つのタイミングで実行したいプログラムをDLL(Solarisではshared library)として作成し、COBOLカートリッジに設定するだけです。

 初期化処理、終了処理では、COBOLカートリッジプロセスの起動時、終了時に1回行えば良いような処理を行うように作成します。

 認証処理はアクセス毎に呼ばれます。認証処理でtrueが返った場合のみ業務処理が実行されます。

 業務処理は、URLで仮想パス+DLL名/入口名で指定されたものが実行されます。該当するものがなかった場合には、User_ExecPGMに指定されているものが実行されます。これにより、動的に実行するプログラムを選択することができます。

 User_*PGMは、OAS ManagerのCOBOL ParametersにDLL名(solarisではshared library)と入口名で指定します。

※業務処理以外はすべてオプションで、省いてもかまいません。業務処理以外はCOBOL カートリッジ1つにつき1つ指定します。業務処理についてはURLの指定によってどのプログラムを実行するか変更できます。

16

アーキテクチャアーキテクチャアーキテクチャアーキテクチャ- COBOL WRBAPI-

COBOLCOBOLアプリケーションアプリケーションアプリケーションアプリケーションアプリケーションアプリケーションアプリケーションアプリケーションCALL “COBW3_PUT_HTML” USING COBW3.

WRB APIs(C言語)

COBOL WRB API(COBOL)

Call

対応するWRB APIをコール

WRB APIsについて

 C カートリッジが提供するWRB APIsは、OASが提供するサービスにアクセスするためのAPI群です。基本APIとサービスAPIに分類できます。

・基本API:リクエストに関する情報の取得(HTTP・ヘッダーデータ、CGI環境変数、問い合わせ文字列など)、クライアントの認証、セッションの管理、設定ファイルの読み込みおよびクライアントへのデータの返信を行うことが出来ます。

・サービスAPI:Loggerサービス、Inter-Cartridge Exchange(ICX)サービスにアクセスできます。EnterpriseEditionでは、トランザクションサービス、コンテンツサービスなど追加サービスが含まれます。

COBOL WRBAPIについて

 COBOL WRBAPIルーチンは、OASのC カートリッジが提供しているWRBAPIsをCOBOL言語から使いやすいようにラッピングしたCOBOLのライブラリです。

 COBOL WRBAPIルーチンを使って、クライアントから受信したデータの中から必要な文字列を抽出したり、クライアントに1行または1ファイル単位でHTMLデータを送信することが可能となります。

 ブラウザとのやり取りを行うCoreAPIの他、Session API, ICX API、LoggerAPI、Tx APIを提供します。

17

アーキテクチャアーキテクチャアーキテクチャアーキテクチャ- COBOL WRBAPI-

COBOL WRBAPICORE:ブラウザからの情報の入出力などの基本機能ブラウザからの情報の入出力などの基本機能ブラウザからの情報の入出力などの基本機能ブラウザからの情報の入出力などの基本機能

– ブラウザからの入力、ブラウザへの出力、テンプレートブラウザからの入力、ブラウザへの出力、テンプレートブラウザからの入力、ブラウザへの出力、テンプレートブラウザからの入力、ブラウザへの出力、テンプレートHTMLの変換などの変換などの変換などの変換など

SESSION:Webブラウザと特定のブラウザと特定のブラウザと特定のブラウザと特定のCOBOLアプリのセッションを管理アプリのセッションを管理アプリのセッションを管理アプリのセッションを管理

– セッション制御、タイムアウト制御、セッションコンテキスト制御セッション制御、タイムアウト制御、セッションコンテキスト制御セッション制御、タイムアウト制御、セッションコンテキスト制御セッション制御、タイムアウト制御、セッションコンテキスト制御

ICX:同一マシン及び他マシン上の他カートリッジとの接続を実現同一マシン及び他マシン上の他カートリッジとの接続を実現同一マシン及び他マシン上の他カートリッジとの接続を実現同一マシン及び他マシン上の他カートリッジとの接続を実現

– ICX接続環境制御、リクエスト内容・環境設定、レスポンスデータ処理な接続環境制御、リクエスト内容・環境設定、レスポンスデータ処理な接続環境制御、リクエスト内容・環境設定、レスポンスデータ処理な接続環境制御、リクエスト内容・環境設定、レスポンスデータ処理などどどど

LOGGER:ログ取得関数ログ取得関数ログ取得関数ログ取得関数

TX:トランザクション機能をサポートトランザクション機能をサポートトランザクション機能をサポートトランザクション機能をサポート

– トランザクション制御トランザクション制御トランザクション制御トランザクション制御

•CORE:リクエストに関する情報の取得(HTTP・ヘッダーデータ、CGI環境変数、問い合わせ文字列など)、クライアントの認証、クライアントへのデータの返信を行うことが出来ます。 これにより、ブラウザから送信されたデータを取得し、その値を判断したり、加工して、ブラウザへ動的なページを生成できます。

•SESSION:セッションの管理を行うことが出来ます。 このセッション機能を利用することにより、COBOLアプリケーションプロセスとブラウザを一対一に対応づけることが可能です。ショッピングカートなど、対話的な入力を行いながら、データを引き続いて持ちつづける必要のあるアプリケーションが簡単に構築できます。

•ICX:OAS上にある他のカートリッジをコールできます。 既にOAS上に構築されているアプリケーションをCOBOLアプリケーション内から、利用することが可能になります。

•LOGGER:ログを取ることが出来ます。 ログは、wrb.logもしくはDatabase、または、指定したファイルへ書き出すことが可能です。

•TX:トランザクション機能が利用できます。

•複数データベースへの更新を一つのトランザクションとして発行できます。

•ブラウザの複数ページにまたがるトランザクション処理ができます。例えば、旅行のチケット(往復の旅券-宿泊施設)の予約を行うアプリケーション等が構築できます。

18

サンプルサンプルサンプルサンプル

新規顧客登録

入力処理

SampleApplication

結果

 ここでは、簡単なサンプルを紹介します。新規顧客情報を入力するようなアプリケーションをイメージしてください。

 このサンプルでは、新規顧客の名前などを入力し、入力されたデータを確認のため表示するといった流れです。

 実際の業務アプリケーションでは受け取ったデータを、そのまま表示したりしないで、データベースの検索や更新、または、データの計算等を行い、その結果を表示するなどといった処理を行うでしょう。

19

サンプルの技術的ポイントサンプルの技術的ポイントサンプルの技術的ポイントサンプルの技術的ポイント

COBOL アプリケーションへのアクセス

COBOL アプリケーションの作成(データ入力、取得)

– データ入力のページの作成

– 入力データの取得

COBOL アプリケーションの作成 (表示)

– HTMLの動的な生成

– 結果表示のページのテンプレートの作成

– テンプレートの文字列との置き換え

OASへ登録

20

WindowsNT

http://hostname:port/sample/cobol/PPTSAMPLE.DLL/PPTSAMPLE

Solaris

http://hostname:port/sample/cobol/pptsample.so/PPTSAMPLE

HP-UX

http://hostname:port/sample/cobol/pptsample.sl/PPTSAMPLE

COBOLアプリケーションへのアクセス

ホスト名 ポート番号 仮想パス 実行するCOBOLアプリケーション

入力

SampleApplication

 ブラウザから作成したCOBOLアプリケーションを利用するには、上記のようなURLを指定します。仮想パスは、OAS Managerで任意に指定できますが、必ず末尾は“/COBOL”、または“/cobol”である必要があります。COBOLDirectorが“/cobol”以降をparseして、実行するCOBOLアプリケーションを選択しています。実行するCOBOLアプリケーションは、“DLL名/入り口名”で指定します。※DLL名はSolarisでは*.soと指定します。入口名はEntryPointとも呼ばれます。

21

COBOLアプリケーションの作成(データ入力、取得)

例えば、顧客名のデータの入力と取得

入力

<input type="text" name="CUSTOMER-NAME">

CUSTOMER-NAME=“冬月 孝造”

送信

処理

SampleApplication

COBOL WRB APIで取得(COBW3-GET-DATA)

 例として、顧客名の入力とサンプルアプリケーション側での顧客名の取得をどのように行うのか説明します。

 入力ページはHTMLで書かれたものをブラウザで表示します。INPUTタグによって、テキストを入力できるようになります。ここでは、顧客名を冬月 孝造と入力し、送信ボタンを押したとします。

 CUSTOMER-NAME=“冬月 孝造”というデータがOASへ送信されます。

OAS側では、COBOL WRB APIでその値を取得します。

22

COBOLアプリケーションの作成(データ入力、取得)

Webページエディタで入力ページを作成。(HTML)……

<p>新規顧客を登録します。<br></p>

<form action="/sample/cobol/PPTSAMPLE.DLL/PPTSAMPLE"method="POST">

<table border="0"><tr><td><font size="4"><strong>新規顧客</strong></font></td></tr>

<tr><td>氏名:</td><td colspan="2">

<input type="text" size="35"

name="CUSTOMER-NAME" value="">

</td></tr>

……

……

 入力ページを、HTMLエディタで作成します。テキストエディタですべて書いてもかまいません。

 FORMタグのAction属性には、作成するサンプルアプリケーションを実行するようにURIを指定します。

 INPUTタグのNAME属性に指定した名前は、サンプルアプリケーションで入力データを受け取るときに指定します。

23

COBOLアプリケーションの作成(データ入力、取得)

データ取得

– サンプルのソースコードより抜粋– 顧客名の受け取り000540* ブラウザから送信されたNAME-VALUEの取得

000550

000560 MOVE "CUSTOMER-NAME" TO COBW3-SEARCH-DATA.

000570 CALL "COBW3_NAME" USING COBW3.

000580 MOVE COBW3-GET-DATA TO CUSTOMER-NAME.

 入力ページで、INPUTタグのNAME属性に指定した名前“CUSTOMER-NAME”をCOBW3-SEARCH-DATAにセットします。

 次にCOBW3-NAMEをCALLします。

 COBW3-GET-DATAに送られてきた値がセットされますので、これをSTRAGE SECTIONで宣言した変数に転記します。これで、受け取った値を自由に処理することができます。

24

HTMLの動的な生成– テンプレートを作成し、一部を置換する

– HTMLすべてを生成する

COBOLアプリケーションの作成 (表示)

SampleApplication

置換

SampleApplication

生成

COBOLカートリッジでは、ブラウザへの返信としてHTMLを生成する方法が2つあります。

•テンプレートを作成し、一部を置換する

 このサンプルでは、こちらの方法を利用しています。

•HTMLすべてを生成する

 このサンプルでは詳しく説明しませんが、HTTPヘッダーおよび、HTML  すべてをアプリケーション内で生成する方法があります。COBOL APIの  COBW3_PUT_TEXTを使用します。

25

COBOLアプリケーションの作成 (表示)

例えば、顧客名の表示

<td>

//COBOL//

CUSTOMER-NAME

//COBOL//

</td>

<td>

冬月冬月冬月冬月 孝造孝造孝造孝造

</td>

置換

COBOL WRB API・・・・COBW3_CNV_SET・・・・COBW3_PUT_HTML

サンプルアプリケーション(COBOLアプリケーション)

結果表示のテンプレート 実際に表示する結果ページ

HTML Source(一部)HTML Source(一部)

1、結果を表示するページのテンプレートを作成します。入力のページを作成したときと同様にHTMLエディタで作成しても、テキストエディタで作成してもかまいません。

そのテンプレートのなかで、COBOLアプリケーションによって動的に置き換える部分を

//COBOL//変換名//COBOL//

と書きます。

2、COBOLアプリケーションでCOBOL WRBAPIをCALLして、置換する値を指定します。

3、置換されたHTMLがブラウザへ返信されます。

顧客名の表示では、

//COBOL// CUSTOMER-NAME //COBOL//の部分を、入力された名前“冬月孝造“に変換しています。

こうしてCOBOLアプリケーションによって動的に置換したものがブラウザに返信されます。

26

COBOLアプリケーションの作成 (表示)

結果のページのテンプレート

– Webページエディタで結果のページのテンプレートを作成(HTML)

<tr><td>氏名:</td>

<td colspan="2">

//COBOL//CUSTOMER-NAME//COBOL//</td></tr>

……

……

ここではファイル名はPPTSAMPLETMPL.HTMLとした。

 結果を表示するページのテンプレートを作成例です。

 テンプレートのなかで、COBOLアプリケーションによって動的に置き換える部分を

//COBOL//変換名//COBOL//

と書きます。ここで変換名は、複数の個所を置換する場合に、どこを置き換えるのかを一意に指定するのに使用します。

 例えば、”//COBOL//CUSTOMER-NAME//COBOL//”の部分を置き換えたいときに指定する文字列は“CUSTOMER-NAME”となります。

 右下の画像は、テンプレートをそのまま表示させた場合です。結果の表示がどういったものになるかの概要をアプリケーションが作成される前から知ることができます。

27

COBOLアプリケーションの作成 (表示)

テンプレートの文字列との置き換え

– サンプルのソースコードより抜粋(顧客名の表示部分)001050* 出力HTML生成

001060 MOVE "CUSTOMER-NAME" TO COBW3-CNV-NAME.

001070 MOVE CUSTOMER-NAME TO COBW3-CNV-VALUE.

001080 CALL "COBW3_CNV_SET" USING COBW3.

………………

………………

001560 MOVE "PPTSAMPLETMPL.HTML"TO COBW3-HTML-FILENAME.

001570 CALL "COBW3_PUT_HTML" USING COBW3.

置換

  顧客名を表示するために”//COBOL//CUSTOMER-NAME//COBOL//”の部分を置き換えます。

 1060行目:変換名“CUSTOMER-NAME”をCOBW3-CNV-NAMEにセットします。これで”//COBOL//CUSTOMER-NAME//COBOL//”の部分を置き換えることを宣言したことになります。

 1070行目:変数CUSTOMER-NAMEをCOBW3-CNV-VALUEにセットします。これで、”//COBOL//CUSTOMER-NAME//COBOL//”の部分に変数CUSTOMER_NAMEの内容を置き換えることになります。

 1560行目:COBW3-HTML-FILENEMEに置き換え元のファイルを指定します。ここでは、前のページで作成したテンプレート “PPTSAMPLETMPL.HTML”を指定しています。

 1570行目:COBW3_PUT_HTMLをCALLして、置き換えを実施します。

28

OASへの登録への登録への登録への登録

OASへ登録します

 OAS Managerから、作成したサンプルアプリケーションを登録します。

 COBOLカートリッジをOASにインストールすると、アプリケーションの追加の画面で、リストボックスに“COBOL Web“が追加されて、選択できるようになります。

 一番左奥に表示されている画面で、リストボックスで“ COBOL Web”を選択しています。これで、COBOLカートリッジを選択したことになります。

29

OASへの登録への登録への登録への登録(つづきつづきつづきつづき)

OASへ登録します

30

OASへ登録へ登録へ登録へ登録(つづきつづきつづきつづき)

OASへ登録します

登録が終わったらOASを再起動する

COBOL Cartridge特有のパラメータ設定です。

最低限以下は設定しなければなりません。

・COBOL_PATH

 作成したCOBOLアプリケーションが置いてある場所を設定します。

・System_InitPGM

 使用するCOBOLランタイムを初期化するのに必要なプログラムを指定します。

・System_TermPGM

 使用するCOBOLランタイムを終了するのに必要なプログラムを指定します。

・Env_Variable

 使用するCOBOLランタイムの環境設定を行うファイルを指定します。

31

まとめまとめまとめまとめ

Oracle Application Server COBOLカートリッジを利用することによって...

COBOLによる開発ノウハウ、既存資産を有効活用

COBOLによる Webアプリケーションの開発が容易– 管理、分散、障害回復等に関してコーディングの必要なし

– COBOL WRB APIによってCOBOLでブラウザとの入出力に関するアプリケーションを容易に作成

OASの持つ高度な機能を利用した大規模で信頼性の高いシステムを開発可能– 負荷分散、障害回復、プロセス/スレッド管理

それでは最後にこのセッションのまとめをしたいと思います。

Oracle Application ServerとCOBOLカートリッジを利用することにより、既存のCOBOLの資産、ノウハウを活かしながらWebシステムを構築することができ、情報システムに求められている大きなニーズに的確に対応することが出来ます。

従来のWebシステムではCGIなどを利用した非効率な方法しかなく、また負荷分散や障害回復を行うためにはすべてコーディングする必要がありました。Oracle Application Serverを利用することにより、プログラマはこれらシステムレベルの詳細について気にする必要はなくなり、ビジネスロジックを実現することに集中することが出来ます。

各種のサービス(ブラウザとの入出力を行うもの、セッション管理、カートリッジ間通信のICX、ログ機能、トランザクション管理)などためのAPIが用意されているため、高度なWebシステムを簡単に開発することが可能です。

また、Oracle Application Serverが提供する機能

負荷を分散する機能

プロセスの障害からの自動回復

プロセス管理

などにより大規模で信頼性の高いWebシステムを開発、効率的に運用することができます。

32

Oracle Application Server 4.0Oracle Application Server 4.0COBOLCOBOLカートリッジカートリッジカートリッジカートリッジカートリッジカートリッジカートリッジカートリッジ

「The Internet Changes Everything」(インターネットはすべてを変えます)、そのインターネット技術にに基づき、拡張性、信頼性、TCOの削減などを実現するOracle Application Server、そして既存の資産を有効に活かしてすばやく次世代のコンピューティングスタイル(Internet Computing)に基づいたシステムを構築することを可能にするOracle COBOLカートリッジ。

Oracle Application ServerとOracle COBOLカートリッジにご期待ください。