付録K.1 横分割時の検索範囲
RDエリアの指定種別,およびレコード検索時の基点条件の組み合わせによる検索範囲について,次の表に示します。
なお,SD FMBのSDBデータベースの場合,個別開始時の指定は,RDエリア指定有効オプション'Y',RDエリア指定種別X'00'になります。
レコード検索時※1の指定 |
個別開始時の指定 |
検索対象※3 |
アクセス種別 |
検索範囲の説明の参照先 |
||
---|---|---|---|---|---|---|
基点条件※2 |
RDエリア指定有効オプション |
RDエリア指定種別※6 |
基点となるRDエリア |
|||
なし |
− |
'Y' |
− |
指定されたRDエリアを「格納値」※4の昇順に検索します。 |
RDエリア指定検索※5 |
|
X'00' |
− |
すべてのRDエリアを「格納値」※4の昇順に検索します。 |
||||
あり |
'Y' |
'Y' |
含む |
条件で指定された検索開始位置からそのRDエリアおよび指定されたRDエリアを「格納値」※4の昇順に検索します。 |
||
含まない |
条件で指定された「格納値」※4を含むレコード実現値と指定されたRDエリアを「格納値」※4の昇順に検索します。 |
|||||
X'00' |
− |
条件で指定された検索開始位置からすべてのRDエリアを「格納値」※4の昇順に検索します。 |
||||
X'00' |
− |
− |
条件で指定された検索開始位置からそのRDエリアだけをインデクスの昇順に検索します。 |
基点検索 |
(凡例)−:状態を問いません。
- 注※1
-
レコードの検索および複数レコードの検索を指します。
- 注※2
-
基点条件は,検索範囲の開始位置を指定するキー条件のことです。条件式の比較記号が「GT or >」,「GE or >=」,「EQ or =」の場合に基点条件が「あり」となります。
例えば,「DBKEY>B」や「DBKEY=B」は検索範囲の開始位置Bが指定されているため,基点条件が「あり」となります。「DBKEY<H」は開始位置が指定されていないので基点条件は「なし」となります。
また,格納条件値分割をしたレコードの場合,基点条件の条件値であるRDエリア分割キー値が,SDBデータベース格納定義のWITHIN句で定義されたRDエリア分割キー値でないときは,エラーとなります。
- 注※3
-
検索範囲の決定は,「表K-2 4V FMBまたはSD FMBのSDBデータベース検索時の検索範囲決定」,「表K-3 4V AFMのSDBデータベース検索時の検索範囲決定」に記載の契機で行われます。以降のNEXTおよびPRIOR指定の検索は,そのときに決定した検索範囲を対象に行われます。
- 注※4
-
境界値分割の場合,「格納値」を「境界値に指定された値の範囲」と読み替えてください。
- 注※5
-
シーケンシャルインデクスの先頭の構成要素以外を,RDエリア分割キーに指定したレコード型に対してRDエリアを指定して検索する場合,次の条件を満たしていないときは,エラーとなります。
-
RDエリア分割キーに指定した構成要素よりも前のすべての構成要素に対してKEYDEF句を指定している。
-
1.で指定したKEYDEF句ごとのDATA句で定義したキー値は1つだけである。
-
- 注※6
-
4V AFMのSDBデータベースでRDエリア指定種別がX'00'の場合は,この表で決定される検索範囲から,さらに範囲が限定されます。
検索対象となる範囲の例を次に示します。
(1) DBKEYの先頭列を指定したときの格納条件指定による横分割の定義例
DBKEYの先頭列を指定したときの格納条件指定による横分割の定義例を次に示します。
WITHIN ( (RDAREA1)TENBAN=(A,G) , (RDAREA2)TENBAN=(B,F) , (RDAREA3)TENBAN=(C,H))
(a) RDエリアの指定にRDAREA1およびRDAREA3を指定した場合
RDエリアの指定にRDAREA1およびRDAREA3を指定した場合,点線枠内が検索範囲となります。分割条件値が昇順となるA→C→G→Hの順に検索します。
(b) すべてのRDエリアを指定した場合
すべてのRDエリアを指定した場合,点線枠内が検索範囲となります。分割条件値が昇順となるA→B→C→F→G→Hの順に検索します。
(c) 基点となる条件に「DBKEY≧Ahi」を指定,RDエリアの指定にRDAREA1およびRDAREA2を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定にRDAREA1およびRDAREA2を指定したとき,点線枠内が検索範囲となります。分割条件値が昇順となるA→B→F→Gの順に検索します。
(d) 基点となる条件に「DBKEY≧Ahi」を指定,RDエリアの指定にRDAREA2を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定にRDAREA2を指定したとき,点線枠内が検索範囲となります。分割条件値が昇順のA→B→Fの順に検索します。
(e) 基点となる条件に「DBKEY≧Ahi」を指定,RDエリアの指定に0x00を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,RDエリアの指定に0x00を指定したとき,点線枠内が検索範囲となります。分割条件値が昇順となるA→B→C→F→G→Hに検索します。
(f) 基点となる条件に「DBKEY≧Ahi」を指定した場合
基点となる条件に「DBKEY≧Ahi」を指定した場合,点線枠内が検索範囲となります。インデクスキーの昇順に検索します。
(2) 境界値指定による横分割の定義例
境界値指定による横分割の定義例を次に示します。
DEPENDING ON C1 WITHIN ( (RDAREA1)10, (RDAREA2)20, (RDAREA3)30, (RDAREA2)40, (RDAREA1)50, (RDAREA3))
(a) RDエリアの指定にRDAREA1およびRDAREA3を指定した場合
RDエリアの指定にRDAREA1およびRDAREA3を指定した場合,点線枠内が検索範囲となります。分割条件値の範囲が,1〜10→21〜30→41〜50→51〜となるように検索します。
(b) すべてのRDエリアを指定した場合
すべてのRDエリアを指定した場合,点線枠内が検索範囲となります。分割条件値が,1〜10→11〜20→21〜30→31〜40→41〜50→51〜となるように検索します。
(c) 基点となる条件に「DBKEY≧5hi」を指定,RDエリアの指定にRDAREA1およびRDAREA2を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定にRDAREA1およびRDAREA2を指定したとき,点線枠内が検索範囲となります。分割条件値が,5〜10→11〜20→31〜40→41〜50となるように検索します。
(d) 基点となる条件に「DBKEY≧5hi」を指定,RDエリアの指定にRDAREA2を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定にRDAREA2を指定したとき,点線枠内が検索範囲となります。分割条件値が,5〜10→11〜20→31〜40となるように検索します。
(e) 基点となる条件に「DBKEY≧5hi」を指定,RDエリアの指定に0x00を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,RDエリアの指定に0x00を指定したとき,点線枠内が検索範囲となります。分割条件値が,5〜10→11〜20→21〜30→31〜40→41〜50→51〜となるように検索します。
(f) 基点となる条件に「DBKEY≧5hi」を指定した場合
基点となる条件に「DBKEY≧5hi」を指定した場合,点線枠内が検索範囲となります。インデクスキーの昇順に検索します。