図6-80-READ構文(ランダム読み取り)
ファイルから任意のレコードを取得する。
ファイル名-1は、INPUTまたはI-Oに対して常にOPEN(6.31)である必要がある。
ファイル名-1のACCESS MODEがSEQUENTIAL,の場合、この書き方のREAD文は使用できない。
ACCESS MODEがRANDOMの場合、この書き方のREAD文が唯一使用可能となる。
READ ファイル名-1
・・・正しい書き方として認められる。そのため、ファイルにACCESS MODE DYNAMICが指定されている場合、上記のようなREAD文は自動的にランダム読み取りとして扱われる。
KEY句は、ファイル内でレコードをどのように配置するかをコンパイラに指示する。
KEY句がない場合:
ファイルがORGANIZATION RELATIVEファイルの場合、ファイルのRELATIVE KEYとして宣言された項目の内容がレコードの識別に使われる。
ファイルがORGANIZATION INDEXEDファイルの場合、ファイルのRECORD KEYとして宣言された項目の内容がレコードの識別に使われる。
KEY句が指定されている場合:
ファイルがORGANIZATION RELATIVEファイルの場合、一意名-2の内容が、アクセスされるレコードの相対レコード番号として使われる。一意名-2は、ファイルのRELATIVE KEY項目である必要はない(必要に応じて指定することが可能)。
ファイルがORGANIZATION INDEXEDファイルの場合、一意名-2はRECORD KEYまたはファイルのALTERNATE RECORD KEY項目の一つ(存在する場合)である必要があり、その項目の最新の内容によって、アクセスするレコードが識別される。代替レコードキーが使用され、重複値が許可されている場合、アクセスされるレコードは、そのキー値を持つ最初のレコードになる。
5項で識別されるレコードはファイル名-1から取得され、その内容はファイルのFD(5.1)に従属する01レベルのレコード構造に格納される。
INTO句を使うと、読み取りが成功した場合、読み取ったレコード内容がMOVEの規則に従って一意名-1にMOVEされる。
レコードのLOCK句については6.1.8.2で説明している。
INVALID KEY句が存在する場合、ファイルステータスが23「キーが存在しない」であることが原因でREADの試行が失敗した時に命令文1を実行する。INVALID KEY句は、ゼロ以外のファイルステータス値を検出しないため、 DECLARATIVESルーチン(6.3)またはREAD後に明示的に宣言されたファイルステータス項目を使って、「キーが存在しない」以外のエラー状態を検出する。