レコードアクセス とは、ファイル編成に関係なく、レコードがどのようにファイルから読み取られ、またどのようにファイルへ書き込まれるのかを示す言葉です。レコードアクセスは、ファイルを開くたびに指定され、毎回異なるレコードアクセスが指定される場合もあります。使用可能なレコードアクセスの種類は、ファイル編成とレコード型に依存します。
例えば、レコードアクセスを使用すると次の事柄が可能です:
ORGANIZATION= ' SEQUENTIAL ' および POSITION= ' APPEND ' (または ACCESS= ' APPEND ' ) を使用して、シーケンシャル・ファイルにレコードを追加できます。
複数の WRITE 文を使用してレコードを順番に追加し、一度ファイルを閉じて、ORGANIZATION= ' SEQUENTIAL ' および ACCESS= ' SEQUENTIAL ' (シーケンシャル・ファイルに固定長のレコードが含まれている場合は、ACCESS= ' DIRECT ' ) を使用して、再びファイルを開くことができます。
シーケンシャル・アクセスは、ファイルおよびターミナルなどの 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 |
注
直接アクセスを行うには、ファイルがディスクデバイスに格納されている必要があります。また、相対ファイルも、アクセスモードの種類に関係なく、ディスクデバイスに格納されている必要があります。