COBOL2002 言語 拡張仕様編
- 形式
- 書き方1
- 書き方2
- 構文規則
- READ文のLOCK指定は,LOCK MODE指定がEXCLUSIVEのとき指定できない。
- 一般規則
- ファイルがINPUTモードで開かれているとき,READまたはREAD WITH LOCK文でレコードを施錠することはできない。
- 暗黙的または明示的に施錠を要求するREAD文は,呼び出そうとするレコードがほかの実行単位によって施錠されていないときだけ成功する。レコードがほかの実行単位によって施錠されているとき,READ文は不成功となり,入出力状態には'99'が設定され,ファイル位置指示子の変更はしない。
- READ文を実行するときに次のレコードが存在しないとき,ファイルの共用にかかわらず,AT END状態を返す。この状態は,例えば,ほかの実行単位でEXTENDモードで開かれているファイルに対して発生する。LOCK MODE指定がAUTOMATICまたはMANUALのとき,ほかの実行単位でEXTENDモードで追加されるレコードを読むことができる。LOCK MODEの指定がないときは保証しない。
- LOCK MODE指定がAUTOMATICのとき,それぞれのレコードは読み込みによって施錠され,START文の規則の記述を除き,その実行単位の入出力文の呼び出しで解放される。WITH NO LOCK指定のあるREAD文はレコード施錠を要求しない。
- LOCK MODE指定がMANUALのとき,その実行単位のREAD文にWITH LOCK指定があるときだけレコード施錠を要求する。指定がなければ,レコード施錠は要求しない。
(備考)
LOCK MODE指定がAUTOMATICまたはMANUALで共用によって開かれているファイルについては,オープンモードに関係なくREAD文でレコード施錠の検知をする。LOCK MODEの指定がなくINPUTモードで共用によって開かれているファイルについては,READ文でレコード施錠の検知は行わない。
施錠されているレコードを再読したとき,次の結果になる可能性がある。
・レコードがまだ施錠されている。または再び施錠された。
・レコードが削除された場合,KEY指定のあるREAD文は無効キー状態を返す。
・レコードが削除された場合,READ NEXT文はファイルの終わり状態を返すか,または先のREAD文と異なるレコードを読み込もうとする。
・ファイル位置指示子を選択した個所に,新しいレコードが挿入されたとき,そのレコードが施錠されていなければ,READ NEXT文で新しいレコードが読み込まれる。
ただし,このシステムでは,このような位置に新しくレコードが挿入されてもファイル位置指示子が示すレコードは,施錠されたレコードのままで,新しく挿入されたレコードをポイントし直すということはない。そのため,この場合のREAD NEXT文では,常に同じレコードを読み込もうとする。すなわち,新しく挿入されたレコードが読み込まれることはない。
- 【標準仕様との関連】
- COBOL2002 言語 標準仕様編 10.8.33 READ文
All Rights Reserved. Copyright (C) 2003, 2013, Hitachi, Ltd.