2.5.11 SDBデータベースの操作と位置指示子の関係
SDBデータベースの操作と位置指示子の関係を,それぞれの操作ごとに説明します。
以降の例で使用するSDBデータベースを次の図に示します。
- 〈この項の構成〉
(1) 個別開始
個別開始時(SDBデータベース単位の操作開始時)に,レコード型,親子集合型ごとに位置指示子が生成され,空値が設定されます。
この例では,レコード型A,レコード型B,および親子集合型ABに対して,位置指示子が生成されます。
(2) ルートレコードの検索
ルートレコードを検索する時点で,位置指示子にレコードが位置づけられている必要はありません。
ルートレコードA1を検索すると,次の位置指示子にルートレコードA1が位置づけられます(ルートレコードA1の位置が位置指示子に保持されます)。
-
レコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
ルートレコードA1を検索した場合の例を次に示します。
(3) 子レコードの検索
子レコードB2を検索する場合,次の位置指示子にルートレコードA1が位置づけられている必要があります。
-
親レコードであるレコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
つまり,子レコードB2を検索する前に,親レコードであるルートレコードA1を検索して,レコードを位置づけておく必要があります。
子レコードB2を検索すると,次の位置指示子に子レコードB2が位置づけられます。
-
レコード型Bのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
子レコードB2を検索した場合の例を次に示します。
(4) 位置指示子の位置づけ【SD FMB】
位置指示子にレコードが位置づけられている必要はありません。
ルートレコードA1を走査し,レコードが特定されると,次の位置指示子にルートレコードA1が位置づけられます(ルートレコードA1の位置が位置指示子に保持されます)。
-
レコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
ルートレコードA1を検索した場合の例を次に示します。
(5) ルートレコードの格納(ルートレコードの追加)
ルートレコードを格納する時点で,位置指示子にレコードが位置づけられている必要はありません。
ルートレコードA4を格納すると,次の位置指示子にルートレコードA4が位置づけられます。
-
レコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
ルートレコードA4を格納した場合の例を次に示します。
(6) 子レコードの格納(子レコードの追加)
子レコードB4を格納する場合,次の位置指示子にルートレコードA1が位置づけられている必要があります。
-
親レコードであるレコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
つまり,子レコードB4を格納する前に,親レコードであるルートレコードA1を検索して,レコードを位置づけておく必要があります。
子レコードB4を格納すると,次の位置指示子に子レコードB4が位置づけられます。
-
レコード型Bのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
子レコードB4を格納した場合の例を次に示します。
(7) 子レコードの更新
子レコードB2の値を更新する場合,次の位置指示子にルートレコードA1が位置づけられている必要があります。
-
親レコードであるレコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
また,次の位置指示子に子レコードB2が位置づけられている必要があります。
-
レコード型Bのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
つまり,子レコードB2の値を更新する前に,子レコードB2を検索して,レコードを位置づけておく必要があります。
子レコードB2のレコード実現値を更新した場合の例を次に示します。
(8) ルートレコードの削除
ルートレコードA1を削除する場合,次の位置指示子にルートレコードA1が位置づけられている必要があります。
-
レコード型Aのレコード位置指示子
ルートレコードA1の値を削除する前に,ルートレコードA1を位置づけておく必要があります。
また,4V FMBのSDBデータベースの場合,検索条件にルートレコードA1の=条件(構成要素名にDBKEYを指定した=条件)を指定した検索で位置づけておく必要があります。
ルートレコードA1を削除すると,レコード位置指示子Aは空値となります。また,ルートレコード型Aの下位のレコード型のレコード位置指示子,親子集合位置指示子も空値となります。
ルートレコードA1を削除した場合の例を次に示します。
(9) 子レコードの削除
子レコードB2を削除する場合,次の位置指示子にルートレコードA1が位置づけられている必要があります。
-
親レコードであるレコード型Aのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
また,次の位置指示子に子レコードB2が位置づけられている必要があります。
-
レコード型Bのレコード位置指示子
-
親子集合型ABの親子集合位置指示子
つまり,子レコードB2の値を削除する前に,子レコードB2を検索して,レコードを位置づけておく必要があります。
子レコードB2を削除すると,親子集合位置指示子には,削除した子レコードB2の前後のレコードが位置づけられ,親子集合位置指示子は複合状態になります。また,レコード型Bのレコード位置指示子は空値となります。
子レコードB2を削除した場合の例を次に示します。