ファイル編成とアクセスモード、処理モード
- 1 ファイル編成とは
-
WindowsやLinuxはプログラミングするときは「ファイルの構造はいちから自分で考えてください」という感じです。ランダムアクセスする場合はそのプログラムとファイル構造を自分で考えなければならないし、ファイルをキーで検索するような構造にしようとしたら結構大変なことになります。
オフコンは事務処理向けのコンピュータです。事務処理に使われるようなファイルの構造というのはある程度決まってきます。そこでオフコンのOSであるA−VXでは、事務処理でよく使われるファイルの構造をあらかじめいくつか用意しています。プログラミングするときはその用意されたファイルの中から選ぶことによって、ファイルの構造の設計を効率化できます。またそのファイルの構造に対応した命令が言語(COBOL言語など)に用意されている為、プログラムも容易となります。
あらかじめ用意された構造というのは、順番にファイルを読み書きするタイプのもの、ファイルの任意の位置のレコードをいきなり読み書きできるタイプ、キーに対応するレコードを読み書きできるタイプなどがあります。
このあらかじめ用意されたファイルの種類のことをファイル編成といいます。
- 2 ファイル編成の種類
-
A−VXにはいくつかの種類のファイル編成があります。
- 順編成ファイル
- 相対編成ファイル
- 索引順編成ファイル
- 複数索引順編成ファイル
- 待機区分編成ファイル
- 待機結合編成ファイル
A−VXでファイルを使うときは、この中からファイル編成を選び、それをカスタマイズして使用することになります。
注意点としては、A−VXと世間で一般的に言われている○○編成ファイルでは、同じ名前でも構造が異なっているものがあります。メインフレーム系のOSにも○○編成というファイル編成があります。順編成のような単純のものはほぼ同じですが、たとえば索引(順)編成ファイルは、メインフレーム系のものと比べてかなり簡単な構造になっています。
- 2.1 順編成ファイル
-
Windowsのテキストファイルのような形式のファイルです。テキストファイルは1行に何文字(何バイト)も書けますが、A−VXの順編成ファイルは1行に書ける文字数(バイト数)が決まっています。(1行=1レコード)
ファイルを読み込んだり、書き込んだりする時は、先頭のレコードから順番に行います。つまり、順編成ファイルは順アクセスしかできず、乱アクセスや動的アクセスはできないということです。
順編成ファイルについては、別にもう少し詳しく説明します。
- 2.2 相対編成ファイル
-
順編成ファイルに、相対レコード番号というキーが追加されたような感じのファイルです。
1レコードが固定長であったり、ブロック化できるという部分は順編成ファイルと全く同じです。
順編成ファイルのようにファイルの順番に読み込んだり書き込んだりもできるし、相対レコード番号を利用して、ファイルの途中のレコードから読み書きすることもできます。つまり、相対編成ファイルは、順アクセス、乱アクセス、動的アクセス可能ということです。
相対編成ファイルについては、別にもう少し詳しく説明します。
- 2.3 索引順編成ファイル
-
索引部とデータ部で構成されているファイルです。データ部中に1つだけ索引キーがあり、そのキーを使ってファイルの途中のレコードから読み書きすることができます。もちろんファイルの先頭から読み書きすることも可能です。索引順編成ファイルは、順アクセス、乱アクセス、動的アクセス可能ということです。
索引順編成ファイルについて、別にもう少し詳しく説明します。
- 2.4 複数索引順編成ファイル
-
索引順編成ファイルのデータ部の索引キーと索引部が複数ある編成ファイルです。磁気ディスク上に作成できます。キーが複数あるため、データの追加・削除を行った場合、キーの再編成を行う必要があります。あとはだいたい索引順編成ファイルと同じ。
複雑な構造のファイルのため、いろいろと注意事項があります。「データ管理説明書」の「複数索引順編成ファイル」の「プログラミング上の注意事項」を読みましょう。
複数索引順編成ファイルについて、別にもう少し詳しく説明します。
- 2.5 待機区分編成ファイル
-
これは、一般的にはCOBOLプログラム上やユーザプログラムから読んだり書いたりできない、A−VXのシステム専用のファイルです。LMライブラリファイル(LML)などのようなライブラリファイルが待機区分編成ファイルです。
使用目的が限られており、データファイルとして使用できません。
待機区分編成ファイルについて、別にもう少し詳しく説明します。
- 2.6 待機結合編成ファイル
-
これも、一般的にはCOBOLプログラム上やユーザプログラムから読んだり書いたりできない、A−VXのシステム専用のファイルです。SUライブラリファイル(SUL)やCUライブラリファイル(CUL)、ジョブストリームファイル(JS)などのライブラリファイルが待機結合編成ファイルです。
使用目的が限られており、データファイルとして使用できません。
待機結合編成ファイルについて、別にもう少し詳しく説明します。
- 3 アクセスモード
-
まずNECの説明書を引用します。
アクセスモード(呼び出し方法)とはファイルに対してレコードをどのような方法で書き出し、それをどのような方法で読み取るかを示すものである。
データ管理では、次の三つのアクセスモードが用意されている。
・順アクセス(順呼び出し)
・乱アクセス(乱呼び出し)
・動的アクセス(動的呼び出し)
ファイルはオープンされてからクローズされるまで、いずれか一つのアクセスモード下で処理される。
[データ管理説明書(2009年11月版)−4.3 アクセスモード]よりこれに関しては私の方で追加する情報はあまりありません。
- 3.1 順アクセス
-
ファイルに格納されている順番にレコードを読み書きできるモードです。
全てのファイル編成で順アクセスができます。
- 3.2 乱アクセス
-
キーや相対レコード番号で指定してレコードを読み書きできるモードです。
順編成以外のファイルで使用できます。
- 3.3 動的アクセス
-
レコードを順番に読み書きすることもできるし、キーや相対レコード番号で指定して読み書きすることもできるモードです。
例えばある値でソート済みのファイルに対して、「最初はキーを使ってレコードを読んで、それ以降はレコードを順番に読んでいく」のような使い方をしたりします。
下の表はアクセスモードとファイル編成の関係を整理したものです。
アクセスモード 順編成 相対編成 索引順編成 複数索引順編成 順アクセス ○ ○ ○ ○ 乱アクセス × ○ ○ ○ 動的アクセス × ○ ○ ○ - 4 処理モード
-
これもまずNECの説明書を引用します。
処理モード(オープンモード)とは、ファイルに対する処理の仕方を定めるもので、次の4種がある。
・入力処理モード
・出力処理モード
・更新(入出力両用)処理モード
・追加(拡張)処理モード
処理モードは、ファイルのオープン時に指定され、ファイルがクローズされるまで変更されない。
[データ管理説明書(2009年11月版)−4.4 処理モード]よりCOBOLプログラムだと、OPEN命令に指定します。NECの説明書には追加処理モードが許されていないとか存在するとか書いてありますが、少なくともCOBOLプログラムでは使えます。
下の表は処理モードとファイル編成の関係を整理したものです。
入力処理 順編成 相対編成 索引順編成 複数索引順編成 出力処理 ○ ○ ○ ○ 更新処理 ○ ○ ○ ○ 追加処理 ○ × × × - 5 他にファイル編成ってあるの?
-
A−VXで使えるファイル編成は、今まで説明したもので全部です。
ちなみに富士通のオフコンには直接データ編成ファイルなるものがありますが、これと同等のファイル形式はA−VXにありません。同じことを実現しようとしたら、たぶんA−VX/RDBを使用することになるでしょう。
メインフレーム系には乱編成ファイルと呼ばれるものがあったりするようですが、それもA−VXにはありません。もちろんA−VXでも相対編成ファイルなどを組み合わせて乱編成ファイルを作ることは可能だと思われます。