レコードアクセス

レコードアクセス とは、ファイル編成に関係なく、レコードがどのようにファイルから読み取られ、またどのようにファイルへ書き込まれるのかを示す言葉です。レコードアクセスは、ファイルを開くたびに指定され、毎回異なるレコードアクセスが指定される場合もあります。使用可能なレコードアクセスの種類は、ファイル編成とレコード型に依存します。

例えば、レコードアクセスを使用すると次の事柄が可能です:

シーケンシャル・アクセス

シーケンシャル・アクセスは、ファイルおよびターミナルなどの I/O デバイスへ、レコードを順番に読み書きします。シーケンシャル I/O は、サポートされたファイル編成とレコード型ならどのような種類でも使用できます。

シーケンシャル編成または相対編成を持つファイルに対して、シーケンシャル・アクセス・モードを指定した場合、レコードは、ファイルの先頭から 1 つずつ読み書きされます。特定のレコードの読み取りは、その前にあるすべてのレコードが読み出された後に行われます。また、新規のレコードは、ファイルの終わりにしか書き込めません。

直接アクセス

直接アクセスは、レコード番号で指定したレコードを、ディスク上にある固定長のレコード型を含むシーケンシャル・ファイルまたは相対ファイルへ読み書きします。

直接アクセスモードを選択すると、レコードを読み書きする順番を決定できます。各 READ 文または WRITE 文には、読み取りまたは書き込みを行うレコードの相対レコード番号が含まれていなければなりません。

シーケンシャル・ディスク・ファイルへの直接的なアクセスは、固定長のレコードが含まれている場合のみ可能です。直接アクセスは、セル番号を使用してレコードを検索するため、以前要求したレコードよりも前または後ろにあるレコードを要求するために、READ 文または WRITE 文を連続的に使用できます。例えば、以下のサンプルコードでは、最初の READ 文でレコード 24 を読み取り、2 番目の READ 文でレコード 10 を読み取っています:

READ (12,REC=24) I

READ (12,REC=10) J

ファイル編成とレコード型によるレコードアクセスの制限

シーケンシャル・ファイルおよび相対ファイルに対して、両方のアクセスモードを使用することができます。ただし、シーケンシャル編成ファイルへの直接アクセスは、ファイルがディスク上に格納されていて、さらに固定長のレコードを含む場合のみ可能です。

ファイル編成とレコード型の組み合わせで使用可能なアクセスの種類を、以下の表で要約します。

レコード型

シーケンシャル・アクセス

直接アクセス

シーケンシャル・ファイル編成

固定長

Yes

Yes

可変長

Yes

No

セグメント

Yes

No

ストリーム

Yes

No

Stream_CR

Yes

No

Stream_LF

Yes

No

相対ファイル編成

固定長

Yes

Yes

直接アクセスを行うには、ファイルがディスクデバイスに格納されている必要があります。また、相対ファイルも、アクセスモードの種類に関係なく、ディスクデバイスに格納されている必要があります。