お問い合わせ

ホーム > COBOLのはなし > COBOL利用技術のご紹介 -第7回- データベースの利用

COBOL利用技術のご紹介
-第7回- データベースの利用

COBOLコンソーシアム利用技術分科会
安藤 理恵 (NECシステムテクノロジー Webビジネス事業部)

PDF[約17キロバイト]

 データベースは大量のデータを効率よく管理するシステムで、階層型、 ネットワーク型、 リレーショナル型があります。その中でもリレーショナルデータベースは広く使用されており、文字データや数値だけでなく、マルチメディアなどのデータも取り扱える様に機能が拡張されています。近年において、データベースの利用は、データマイニングやCRMシステムといった経営戦略にも活用されています。

1.データベースへのアクセスについて

 データベースをアクセスする言語としてSQLがあります。SQLは、元はIBM社が開発した構造化問い合わせ言語ですが、現在では、ANSI、ISO、JISで仕様が定義されており、リレーショナルデータベースの標準処理言語となっています。

 また、データベースをアクセスするための標準的な仕様としては、ODBCが一般によく知られています。ODBCは、Microsoft社によって提唱された、データベースにアクセスするためのソフトウェアの標準仕様です。各データベースの違いはODBCドライバによって吸収されるため、ユーザはODBCに定められた手順に従ってプログラムを書けば、接続先のデータベースがどのようなデータベース管理システムに管理されているか意識することなくアクセスできます。 同様なデータベースアクセス仕様として、JavaプログラムからリレーショナルデータベースにアクセスするためのAPIであるJDBCが存在します。

 現在、オープン系システムにおける標準的なデータベースとしては、Oracle、INFORMIX、Sybase、SQL Server等がありますが、COBOLからこれらのデータベースにアクセスする方法について、次に説明します。

2.埋め込みSQLによるアクセス

 プリコンパイル方式やコンパイラの実装によって、DBベンダや各COBOLベンダはCOBOLプログラム内に直接SQL文を記述する手段を提供しています。COBOLプログラムからANSI標準の埋め込みSQL文によって、データベースのデータ参照、更新等、データベースオブジェクトの操作を行なうことができます。

 仕様が標準化されているため、ソースの互換性が確保できる利点があります。


(1)ホスト変数の定義

 ホスト変数は、COBOLプログラムとデータベース間のデータの引き渡しに使用します。

データベースにデータを入力する場合、COBOLプログラムでホスト変数にデータを代入しSQL文を用いてデータベースにデータを格納します。またCOBOLプログラムからデータベースのデータを参照する場合には、SQL文を用いてホスト変数にデータを格納することによりデータを参照することができます。

 ホスト変数をSQL文中で使用する場合には、ホスト変数の前にコロン(:)を付けます。

(2)共通領域の定義

 データベースとの共通領域として使用するSQLCAには、エラーコードやメッセージ等のCOBOLプログラムに引き渡す、SQL文を実行した情報が格納されます。

(3)データベースへのアクセス

 SQL文の実行はCOBOLプログラムのPROCEDURE DIVISIONで記述します。SQL文はデータベース操作要求を記述するものです。この例では、製品番号をキーにデータを検索し、COBOLプログラムへ引き渡します。

[マルチメディアデータへのアクセス]

 ベンダによっては、マルチメディアデータ(大容量データ)の扱いをサポートしています。
マルチメディア・データ(文字データ型およびバイナリ・データ型)はラージ・オブジェクト(LOB:Large OBject)として扱います。


3.READ/WRITE文によるアクセス

 前述の埋め込みSQL文によるアクセス以外に、標準のファイルシステムを操作するのと同様な形式で、READ/WRITE文によるデータベースのアクセスをサポートしている製品もあります。このような製品ではCOMMIT/ROLLBACK文もサポートしていますので、トランザクション処理も可能となります。

 従来は標準ファイルにより管理していたデータを、データベースに移行するといった場合に、COBOLプログラムを変更する部分が少なくて便利です。

 ただし、プログラムによっては性能的な面において劣化する可能性もありますので、実際にテスト確認をしたほうがよいでしょう。

4.DBアクセスライブラリによるアクセス

 また、CALL文による呼び出しや、オブジェクト指向型のインタフェースを使ってデータベースのアクセスをサポートしている製品もあります。

 オブジェクト指向型のライブラリは、COBOLで作成したアプリケーションからデータベースをアクセスするためのクラスライブラリとなっています。データベースアクセスクラスライブラリは、プラットフォームおよびデータベースの種類に依存せず、複数種のデータベースに対して統一されたインタフェースでアクセスできます。

 コーディングの簡素化や、オブジェクト指向プログラミングとの親和性においては優位でしょう。

5.留意点

 アプリケーションが複数のデータベースにアクセスする場合、または異なる環境からデータベースを移行した場合に、それぞれのデータベースのコード体系に注意しなければなりません。コード体系が異なるとコードの並び順が異なるため、ソート処理/範囲処理結果が異なることがあります。

 また、埋め込みSQL文の使用において、SQL99の登場により最新技術にマッチした仕様が標準化されていますが、ベンダによっては標準の範囲を超えたSQL記述をサポートしており、これらの拡張されたSQL記述を使った場合には、後々ソースの互換性が問題となることがあるので、注意が必要です。

6.まとめ

 上記の方法により、COBOLアプリケーションからデータベースに容易にアクセスすることができます。なお、実装されている機能は各ベンダーにより異なります。実際に運用される場合には、ご利用になるベンダーの製品情報を確認してください。

− 第7回 終 −