COBOLコンソーシアム利用技術分科会
宮井 勝久(NECシステムテクノロジー Webビジネス事業部)
COBOLでは、ファイル編成についても言語仕様で規定されています。標準的なファイル編成であるこれらの順・相対・索引編成ファイルに対しては、汎用機からパソコンまで、同一の入出力構文でアクセスすることが可能です。また、ファイル単位の排他制御だけでなく、レコード単位での排他制御を行うことも可能です。
最近のCOBOL関連製品では、ファイル機能についてもさまざまな機能拡張が行われており、各ベンダよりファイル機能に関連したツールも多く提供されています。
COBOL言語仕様で規定される順・相対・索引編成ファイルの他に、オープン系COBOLでは、一般的なテキスト形式である行順編成ファイルへの入出力機能をサポートしているものがあります。これにより一般的なテキストファイルをCOBOLで扱うことが可能となっています。更に、行順編成ファイルの1つとして、CSV(Comma Separated Value)形式のデータの入出力機能をサポートしているものもあります。表計算ソフトにより作成されたデータとの連携が可能となるため、COBOLの利用範囲が拡張されます。
CSVファイルの1レコードのデータ値 ABCDE,1234,XYZ CSVファイルのレコード定義 01 CSV-REC. 03 CSV-CELL1 PIC X(4). 03 CSV-CELL2 PIC 9(5). 03 CSV-CELL3 PIC X(3)CSVファイルの読み込み(READ)
CSV形式のデータ入出力をサポートしているCOBOLでは、その区切り文字や各フィールドの引用符の使用の有無などをカスタマイズするツールが提供されているものもあります。これにより、各種表計算ソフトが出力するデータの細かな差分についても柔軟に対応することができます。
異機種情報システム間におけるデータ交換の標準フォーマットとして広まりつつあるXMLデータについても、COBOLから入出力を行うことが可能です。ベンダによってその機能や仕様は異なりますが、XMLデータを順編成ファイルとして扱うものや、関連ツールなどを利用することによってCOBOLで規定されたファイル編成形式に変換するものなどがあります。XMLデータを使用した異機種情報システム間とのデータ交換においても、COBOLの利用が可能となります。
COBOLのファイル機能は、クライアント/サーバ環境でのデータアクセスもサポートしています。利用者はネットワークを意識することなくクライアント側およびサーバ側のファイルへの入出力を行うことができます。また、共用・排他制御も可能ですので、サーバ側で一元管理したファイルに対し、多数のクライアントから入出力を行うような形態とすることもできます。
更に、ネットワークにより分散されたデータが異なるファイルシステム上のものであっても入出力を可能とするツールを提供しているベンダもあります。これにより、従来からの古いシステムに存在するファイルはそのままで、入出力を行うアプリケーションは新しいシステム上で動作させるようなことも可能になります。
COBOLのファイル機能として、または、更にその機能を拡張するような関連製品との連携により、コミット/ロールバック/ロールフォワードなどによるファイルリカバリ制御機能がサポートされています。
具体的な例として次のような機能があります。
また、ジャーナル機能を持つものや、クライアント/サーバ環境において、サーバサイドのロック機構・デッドロック監視機構などをもつものもあります。
ベンダにより、ファイルの運用/保守を支援する各種のツールが提供されています。 ファイルの編集、テキスト形式のファイルとCOBOLで規定されている各編成ファイル(順/相対/索引)の間でのデータの相互変換、ファイル索引のメンテナンス機能、実行環境にあわせたファイル変換ツールなどがあります。
また、実行環境向けのツールも提供されています。同一プログラムを異なる環境で実行する際など、環境に合わせて使用するファイルの定義を変更する必要がありますが、ソースプログラムを書き直すのではなく、環境に合わせて論理ファイルと物理ファイルの関連付けの定義のみを行い、実行時に動的にそれらの反映を行うようなツールなどがあります。
その他に、テスト用のデータファイルを作成するものなどもあります。
また、古くから使われてきたCOBOL資産をオープン化するにあたり、そのデータを移行するためのさまざまなツールが提供されています。これらは単純なデータの移行だけでなく、環境に合わせてコード変換を行うものや、ファイル編成の変更まで可能なものがあります。
一般に、ファイルのコード体系はアプリケーションを実行する環境に依存します。異なる環境からファイルを移行する場合には、それぞれのファイルのコード体系に注意しなければなりません。
また、相対/索引編成ファイルの形式は実行環境によって異なる場合が多く、一旦順編成ファイルに変換してからポーティングする等の処理が必要です。
オープン系のファイルでは、事前にアロケートなどの処理を行う必要がないといった利便性がある反面、データ容量の設計を誤ると思わぬところで領域不足などが発生し、性能劣化を招くといったことがあります。システム設計時にはファイルのデータ容量についても十分な配慮が必要です。