14.4.7 START(個別開始)
(1) 機能
HiRDB/SDに対して個別開始要求を行い,SDBデータベースに対する操作の開始処理を行います。
(2) 指定形式
START SDBデータベース名 〔ACSMODE {READ|UPDATE}〕 〔ENQOPT {SHARE|EXCLUSIVE|OCCUPY|NONE}〕 〔AUTODEQ {YES|NO}〕 〔ACSRDAREA (RDエリア名〔,RDエリア名〕…)〕 〔RDAREAVAL {YES|NO}〕 〔FETCHDB_ALL ONLY〕;
- 注意事項
-
-
最後にセミコロン( ; )の指定が必要です。
-
オペランドの指定順序は変更できません。
-
(3) オペランドの説明
- ●SDBデータベース名
-
〜<識別子>((1〜30バイト))
操作対象のSDBデータベース名を指定します。
SDBデータベース名に英小文字を使用している場合は,SDBデータベース名を引用符( " )で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。
- ●ACSMODE {READ|UPDATE}
-
READ:参照モード
UPDATE:更新モード
レコード実現値の格納,更新,または削除を実行する場合はUPDATEを指定してください。
- ●ENQOPT {SHARE|EXCLUSIVE|OCCUPY|NONE}
-
SHARE:共用モード
EXCLUSIVE:排他モード
OCCUPY:占有モード
NONE:無排他モード
NONEを指定して個別開始を実行した場合の注意事項については,「2.9.7 排他モード指定による無排他検索機能【4V FMB,4V AFM】」を参照してください。
アクセスモードと排他オプションの指定可能な組み合わせを次の表に示します。
表14‒13 アクセスモードと排他オプションの指定可能な組み合わせ 排他オプション
アクセスモード
参照モード
更新モード
共用モード
○
×
排他モード
○
○
占有モード
○
○
無排他モード
○
×
- (凡例)
-
○:指定できます。
×:指定できません。
なお,個別開始時には排他は掛かりません。
- ●AUTODEQ {YES|NO}
-
YES:排他自動解除機能を使用します。
NO:排他自動解除機能を使用しません。
排他自動解除機能については,「2.9.4 排他自動解除機能」を参照してください。
- ●ACSRDAREA (RDエリア名〔,RDエリア名〕…)
-
〜<識別子>((1〜30バイト))
検索対象とするRDエリアを指定します。このオペランドを省略した場合,すべてのRDエリアを指定したと仮定されます。
このオペランドの機能詳細については,次のRDAREAVALオペランドの説明を参照してください。
次の指定をした場合は,エラーになります。
-
RDエリア名を重複して指定した場合
-
検索対象のSDBデータベースが格納されているRDエリア以外のRDエリアを指定した場合
4V MAM,4V TAM,または4V SAMのSDBデータベースの場合,このオペランドの指定は無効となります。
-
- ●RDAREAVAL {YES|NO}
-
レコードの検索時に基点条件指定がある場合でも,ACSRDAREAオペランドで指定したRDエリア指定を有効とするかどうかを指定します。この指定をRDエリア指定有効オプションといいます。
- YES:
-
基点条件指定がある場合でも,ACSRDAREAオペランドで指定したRDエリア指定を有効とします。
- NO:
-
基点条件指定がある場合は,ACSRDAREAオペランドで指定したRDエリア指定を有効としません。
このオペランドの指定値と,レコードの検索範囲の関係を次の表に示します。
表14‒14 RDAREAVALオペランドの指定値と,レコードの検索範囲の関係 検索時の指定
個別開始時の指定
検索範囲※2
アクセス種別
基点条件※1
RDAREAVALオペランドの指定値
ACSRDAREAオペランドのRDエリアの指定※5
基点となるRDエリア
指定なし
−
指定あり
−
ACSRDAREAオペランドに指定されたRDエリアを,格納値※3の昇順に検索します。
検索範囲の例については,「■検索範囲の例(その1)」を参照してください。
RDエリア指定検索※4
指定なし
−
全RDエリアを格納値の昇順に検索します。
指定あり
YES
指定あり
含む
基点条件に指定された検索開始位置から,そのRDエリアとACSRDAREAオペランドに指定されたRDエリアを格納値の昇順に検索します。
含まない
基点条件に指定された格納値を含むレコード実現値と,ACSRDAREAオペランドに指定されたRDエリアを格納値の昇順に検索します。
検索範囲の例については,「■検索範囲の例(その2)」を参照してください。
指定なし
−
基点条件に指定された検索開始位置から,全RDエリアを格納値の昇順に検索します。
NO
−
−
基点条件で指定された検索開始位置から,そのRDエリアだけを格納値の昇順に検索します。
基点検索
- (凡例)
-
−:該当しません。
- 注※1
-
検索範囲の開始位置を指定するキーの条件のことを基点条件といいます。条件式の比較記号が,>,>=,および=の場合に,基点条件の指定ありとなります。例えば,「DBKEY>B」または「DBKEY=B」と指定した場合は,検索範囲の開始位置Bが指定されているため,基点条件の指定ありとなります。一方,「DBKEY<H」と指定した場合は,検索範囲の開始位置が指定されていないため,基点条件の指定なしとなります。
- 注※2
-
検索範囲の決定は,「表K-2 4V FMBまたはSD FMBのSDBデータベース検索時の検索範囲決定」,「表K-3 4V AFMのSDBデータベース検索時の検索範囲決定」に記載の契機で行われます。以降のNEXTおよびPRIOR指定の検索は,そのときに決定した検索範囲を対象に行われます。
- 注※3
-
境界値分割をしている場合は,「格納値」を「境界値に指定された値の範囲」と読み替えてください。
- 注※4
-
シーケンシャルインデクスの先頭の構成要素以外をRDエリア分割キーに指定したレコードに対して,ACSRDAREAオペランドを指定してRDエリア指定検索をする場合,次の条件をすべて満たしている必要があります。
・RDエリア分割キーに指定した構成要素よりも前の全構成要素に対してKEYDEF句を指定している。
・上記で指定したKEYDEFごとのDATAで定義したキー値が1つだけである。
上記の条件をすべて満たしていない場合は,エラーになります。
- 注※5
-
4V AFMのSDBデータベースで,ACSRDAREAオペランドの指定なしの場合は,この表で説明している検索範囲が,さらに次の範囲に限定されます。
・基点条件指定なしの場合
表中の検索範囲で,最初に指定と一致した仮想ルートレコードのレコード実現値の子レコードを検索範囲とします。
・基点条件指定ありの場合
表中の検索範囲で,基点条件で指定されたキー値に対応する仮想ルートレコードのレコード実現値の子レコードを検索範囲とします。
- ■検索範囲の例(その1)
-
次の条件下で,レコードの検索をした場合,点線枠内が検索範囲となります。分割条件値が昇順となるA→C→G→Hの順に検索します。
-
基点条件の指定なし
-
ACSRDAREAオペランドにRDAREA1およびRDAREA3を指定
-
- ■検索範囲の例(その2)
-
次の条件下で,レコードの検索をした場合,点線枠内が検索範囲となります。分割条件値が,1〜10 → 11〜20 → 31〜40となるように検索します。
-
基点条件に「DBKEY≧5hi」を指定
-
ACSRDAREAオペランドにRDAREA2を指定
-
- ●FETCHDB_ALL ONLY
-
FETCHDB_ALLコマンドを実行する個別開始の場合に指定します。
このオペランドを指定して個別開始をした場合,FETCHDB_ALLコマンドおよびFINISHコマンド以外のDMLコマンドは実行できません。また,このオペランドを省略した場合,FETCHDB_ALLコマンドを実行できません。
(4) 使用例
- ■4V FMBのSDBデータベース(FMB1)の参照だけをする場合
START "FMB1";
次の実行結果が表示されます。
DIRECTORY CHECK DATE INFORMATION PDSDBDEF EXEC DATE : 2015-12-14 16:20:46.67 SDB DIRECTORY UPDATE DATE : 2015-12-14 16:20:49.16 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 HiRDB SERVER VERSION INFORMATION SERVER VERSION : 09-60 KFPB64050-I DINF(GET DATE) command processing completed ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 START INFORMATION SDB DATABASE NAME "FMB1" HANDLE NUMBER : 1 ACSMODE : READ ENQOPT : SHARE AUTODEQ : NO RDAREAVAL : NO KFPB64050-I DINF(GET SDB SUMMARY) command processing completed KFPB64050-I DINF(GET SDB DETAIL) command processing completed KFPB64050-I START command processing completed
- ■4V MAMのSDBデータベース(MAB1)のレコードを更新する場合
START "MAB1" NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8 ACSMODE UPDATE NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8 ENQOPT EXCLUSIVE;
次の実行結果が表示されます。
DIRECTORY CHECK DATE INFORMATION PDSDBDEF EXEC DATE : 2015-12-14 16:20:46.67 SDB DIRECTORY UPDATE DATE : 2015-12-14 16:20:49.16 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 HiRDB SERVER VERSION INFORMATION SERVER VERSION : 09-60 KFPB64050-I DINF(GET DATE) command processing completed ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 START INFORMATION SDB DATABASE NAME "MAB1" HANDLE NUMBER : 1 ACSMODE : UPDATE ENQOPT : EXCLUSIVE AUTODEQ : NO RDAREAVAL : NO KFPB64050-I DINF(GET SDB SUMMARY) command processing completed KFPB64050-I DINF(GET SDB DETAIL) command processing completed KFPB64050-I START command processing completed
(5) STARTコマンドの実行時に表示される情報
STARTコマンドを実行した場合に表示される情報について説明します。
(a) SDBディレクトリ情報ファイルの日時情報
STARTコマンドを実行した際(トランザクション内の初回のSTARTコマンド実行時),次に示すSDBディレクトリ情報ファイルの日時情報が表示されます。
DIRECTORY CHECK DATE INFORMATION PDSDBDEF EXEC DATE : 2015-12-14 16:20:46.67 ...1 SDB DIRECTORY UPDATE DATE : 2015-12-14 16:20:49.16 ...2
- [説明]
-
-
常用常駐領域中のSDBディレクトリ情報のSDB定義の最終更新日時(pdsdbdefコマンドの実行日時)が表示されます。
-
常用常駐領域中のSDBディレクトリ情報の最終更新日時が表示されます。
-
(b) HiRDBのバージョン情報
STARTコマンドを実行した際(トランザクション内の初回のSTARTコマンド実行時),次に示すHiRDBのバージョン情報が表示されます。
HiRDB SERVER VERSION INFORMATION SERVER VERSION : vv-rr-xn KFPB64050-I DINF(GET DATE) command processing completed
- [説明]
-
下線部分に接続先のHiRDBのバージョンが表示されます。
(c) 個別開始に関する情報
STARTコマンドを実行した際,次に示す個別開始に関する情報が表示されます。
START INFORMATION SDB DATABASE NAME "FMB1" ...1 HANDLE NUMBER : 1 ...2 ACSMODE : READ ...3 ENQOPT : SHARE ...4 AUTODEQ : NO ...5 ACSRDAREA : "RDAREA1" ...6 "RDAREA2" ...6 RDAREAVAL : NO ...7 FETCHDB_ALL ONLY ...8
- [説明]
-
-
STARTコマンドに指定したSDBデータベース名が表示されます。
-
ハンドル番号が表示されます。
-
ACSMODEオペランドの指定値,または省略時解釈値が表示されます。
-
ENQOPTオペランドの指定値,または省略時解釈値が表示されます。
-
AUTODEQオペランドの指定値,または省略時解釈値が表示されます。
-
ACSRDAREAオペランドの指定値が表示されます。ACSRDAREAオペランドが省略されている場合は,この項目は表示されません。
-
RDAREAVALオペランドの指定値,または省略時解釈値が表示されます。
-
FETCHDB_ALL ONLYオペランドが指定されている場合に表示されます。FETCHDB_ALL ONLYオペランドが省略されている場合は,この項目は表示されません。
-
(6) 留意事項
個別開始の実行後,個別終了を実行していない状態で,個別開始を実行することはできません。