編成により異なります。以下に編成ごとに順呼び出しでの処理について説明します。
(1) RDB順編成
IFASRDB表の設定や状態により、レコードの読み込み順は、レコード追加時の順番と異なる場合があります。
RDB順編成でのレコードの読み込み順は、物理レコード順であるため、レコード追加時の追加位置に依存します。レコード追加時の追加位置は、削除領域(備考①を参照)の有無により、以下のように異なります。
・削除領域がない場合
最後に出力したレコードの次の位置にレコードを追加します。そのため、読み込み時は必ず追加したレコードの順で読み込まれます。
・削除領域がある場合
既定の設定(備考②を参照)では、削除領域に優先的にレコードを追加します。この場合、読み込み時は追加したレコード順で読み込まれるとは限りません(後から追加したレコードが先に読み込まれることがあります)。
削除領域未使用の設定(備考②を参照)の場合、「削除領域がない場合」と同様の結果となり、読み込み時は追加したレコードの順で読み込まれます。
(2) RDB相対編成
レコードの読み込み順は、レコード追加時の順番になります。
RDB相対編成でのレコードの読み込みの順は相対キー(レコード番号)の昇順で行われます。また、レコード追加は、追加前の最大レコード番号の次のレコード番号の位置に追加します。そのため、読み込み時は必ず追加したレコードの順で読み込まれます。
なお、RDB相対編成は利用者が(削除されたレコードのレコード番号も含めて)常にレコード番号を意識して使用する編成のため、削除領域を使用するか否かは利用者に任せられています。
(3) RDB索引順編成
レコードの読み込み順は、読み込み時に指定するキーに依存しますので、追加時の順番と異なる場合があります。
(備考)
①削除領域とは、レコード削除が行われ、そのレコードの存在した領域が再利用されていない領域です。なお、以下の方法でIFASRDB表内の全レコードを削除する場合は、削除領域は作成されません。
・表定義ユーティリティの「ツール」→「データ全件削除」を使用する。
・IFRDBUTL.EXE(表定義ユーティリティコマンド)の「データの全件削除機能」を使用する。
・出力モードでオープンする。
②以下のいずれかの方法でレコード追加時に削除領域を使用しない設定とすることが可能です(既定値は「削除領域使用」)。
・ファイル管理ユーティリティで該当ファイル(IFASRDB表を構成する索引順編成ファイル)のプロパティで「レコード追加方式」を「削除領域未使用」に変更する。
・IFASFATR.EXE(レコード追加方式変更コマンド)で該当ファイルを「削除領域を使用しない」設定とする。
なお、削除領域を使用しない設定とした場合、レコード削除を繰り返した場合、使用されない領域が蓄積されファイルが肥大化します。そのため、定期的なファイルの再編成(IFRDBUTL.EXEによる""GARBAGE"")を行うことを推奨します。