相対編成ファイルについてもう少し詳しく
- 1.どんなファイルか
-
相対編成ファイルは、各レコードに番号が付いていて、その番号を指定してレコード内のデータを読み書きする仕組みのファイルです。レコードに付いている番号を相対レコード番号といい、ファイル先頭から1、2、3・・・と順番に付けられています。
一応順編成ファイルと同じように、ファイルの先頭から順番に読み書きすることもできます。
下の図を例にすると、相対レコード番号2を指定して読み込みを行うと、レコード2のデータを読み出せます。 順編成ファイルと相対編成ファイルの違いは、カセットテープとCDの違いと同じです。カセットテープが先頭の曲から順番に聴くことしかできない(2曲目以降を聞くためにはそれ以前の曲を早送りしなければならない)のと同じように、順編成ファイルも順番にしか読み込めません。CDで2曲目、3曲目と指定してダイレクトに聴けるように、相対編成ファイルは相対レコード番号を使って直接指定したレコードの内容を読み込むことができます。
順編成ファイル同様、EODも削除コードもあり、その仕組みも同じです。
- 2.処理モード
-
3種類の処理モードが使えます。
<入力処理モード>
レコードを読み込むモード。ファイルに対する書き込みは一切できない。
<出力処理モード>
入力処理モードとは逆に、ファイル先頭からレコードを順番に書き込むモード。前に書いたレコード(データ)は上書きされて残らない。ファイルからの読み込みは一切できない。
<更新処理モード>
書き込みや読み込み、レコードの内容を置換したり、削除をすることができる。
- 3.アクセスモード
-
順編成ファイルは順アクセス(順番に読み書き)しかできませんでしたが、相対編成ファイルは順アクセスモード、乱アクセスモード、動的アクセスモードという3種類のアクセスモードを持ちます。
- 4.削除レコード
-
順編成ファイルと同様、レコードを削除すると先頭1バイトに削除コード”FF”が書き込まれます。
うっかり消してしまった時の処置も同様で、先頭1バイトを削除コード以外に書き換えます。
ここで注意しなければならないのは、相対編成ファイルでは軽々しくファイルの再編成をしないで下さいということです。原則として相対編成ファイルではファイルの再編成はしないということにしてください。
ファイルの再編成を行うと、相対レコード番号が変わってしまいます。こうなるとプログラム上で認識しているファイルの状態と実際のファイルの状態が異なってしまい、プログラムが正しく動きません。最悪データを壊してしまいます。
相対編成ファイルでファイルの再編成できる人は、プログラムが認識しているファイルの状態と実際のファイルの状態を再度一致させることができるほど、システムのことを知っている人のみです。(あるいはそのようなことができるプログラムが用意されている場合)
一般的に相対編成ファイルでオーバーフローとなった場合は、エクステントの追加か拡張を行うようにすることが一番無難です。