相対編成ファイル その1
- 1 相対編成ファイルとはどんなファイルか
-
相対編成ファイルは、各レコードに番号が付いていて、その番号を指定してレコード内のデータを読み書きする仕組みのファイルです。レコードに付いている番号を相対レコード番号といい、ファイル先頭から1、2、3・・・と順番に付けられています。
一応順編成ファイルと同じように、ファイルの先頭から順番に読み書きすることもできます。
下の図を例にすると、相対レコード番号2を指定して読み込みを行うと、レコード2のデータを読み出せます。 順編成ファイルと相対編成ファイルの違いは、カセットテープとCDの違いと同じです。カセットテープが先頭の曲から順番に聴くことしかできない(2曲目以降を聞くためにはそれ以前の曲を早送りしなければならない)のと同じように、順編成ファイルも順番にしか読み込めません。CDで2曲目、3曲目と指定してダイレクトに聴けるように、相対編成ファイルは相対レコード番号を使って直接指定したレコードの内容を読み込むことができます。
順編成ファイル同様、EODも削除コード(DDM)もあり、その仕組みも同じです。
- 2 処理モード
-
3種類の処理モードが使えます。
<入力処理モード>
レコードを読み込むモード。ファイルに対する書き込みは一切できない。
<出力処理モード>
入力処理モードとは逆に、ファイル先頭からレコードを順番に書き込むモード。前に書いたレコード(データ)は上書きされて残らない。ファイルからの読み込みは一切できない。
<更新処理モード>
書き込みや読み込み、レコードの内容を置換したり、削除をすることができる。
- 3 アクセスモード
-
順編成ファイルは順アクセス(順番に読み書き)しかできませんでしたが、相対編成ファイルは順アクセスモード、乱アクセスモード、動的アクセスモードという3種類のアクセスモードを持ちます。
アクセスモード 概 要 順アクセス レコードは記録されている順番、すなわち物理順にアクセスする。順編成ファイルと同じ 乱アクセス 利用者の指定するレコードを直接読み込むことができる 動的アクセス 特定のレコードを乱アクセスで読み込み、その後連続するレコードを順次的に読み込む - 4 削除レコード
-
順編成ファイルと同様、レコードを削除すると先頭1バイトに削除コード”FF”が書き込まれます。
うっかり消してしまった時の処置も同様で、先頭1バイトを削除コード以外に書き換えます。
ここで注意しなければならないのは、相対編成ファイルでは軽々しくファイルの再編成をしないで下さいということです。原則として相対編成ファイルではファイルの再編成はしないということにしてください。
ファイルの再編成を行うと、相対レコード番号が変わってしまいます。こうなるとプログラム上で認識しているファイルの状態と実際のファイルの状態が異なってしまい、プログラムが正しく動きません。最悪データを壊してしまいます。
相対編成ファイルでファイルの再編成できる人は、プログラムが認識しているファイルの状態と実際のファイルの状態を再度一致させることができるほど、システムのことを知っている人のみです。(あるいはそのようなことができるプログラムが用意されている場合)
一般的に相対編成ファイルでオーバーフローとなった場合は、エクステントの追加か拡張を行うようにすることが一番無難です。
- 5 レコードの位置づけ
-
乱アクセスと動的アクセスでは位置付づけ命令で特定のレコードに位置付けて、そこから順番にレコードを読み取ることができます。
- 相対レコード番号で指定したレコードに位置付ける。このとき位置付けられたレコードが削除レコードであれば、レコード未発見のエラーになる
- 相対レコード番号で指定したレコードより後のレコードで、かつ最初のアクティブレコードに位置付ける
- 相対レコード番号で指定したレコードまたはそれより後のレコードで、かつ最初のアクティブレコードに位置付ける
位置付け命令に続いて順次的な読み取り命令を出すことによって、位置づけたレコードを読み取ることができます。
- 6 レコード/ブロック形式
-
レコードの桁数は、1〜4096(フロッピーディスクの場合1〜512)
ブロック化係数は、1〜256
ブロックの桁数は、1〜4096(フロッピーディスクの場合1〜512)
相対レコード番号は、2進または10進で表現される自然数(1,2,3・・・)。相対レコード番号の受け渡しを行う項目(RELATIVE KEY項目)は、レコード外に定義します。
順編成ファイルと同様に、レコードの先頭が16進数FFのレコードは、削除レコードとみなされます。