1.2.11 SDBハンドラ制御(ee_sdh_〜)(C言語)
- 〈この項の構成〉
(1) ee_sdh_init
- 名称
-
イニシャライズ
- 形式
-
ANSI C,C++の形式
#include <eesdh.h> int ee_sdh_init(EESDHIFT *ift_pt, EELONG flags); struct ee_sdh_interface_area_t { /*ヘッダ部 */ /*インタフェースエリア構成情報部 */ char sdhift_mgr_head_id[4]; /*ヘッダ識別子 */ EELONG sdhift_mgr_head_sz; /*ヘッダ部サイズ */ char sdhift_mgr_db_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhift_mgr_ift_sz; /*インタフェースエリア全体サイズ */ void * sdhift_mgr_ift_pt; /*自インタフェースエリアのテンプレートアドレス */ EELONG sdhift_mgr_entry_location; /*エントリ部先頭ロケーション */ EELONG sdhift_mgr_entry_sz; /*エントリ部サイズ */ EELONG sdhift_mgr_entry_num; /*エントリ部数 */ char yobi2[4]; /*予備 */ EELONG sdhift_mgr_key_advice_location; /*キー報告エリア部ロケーション */ EELONG sdhift_mgr_key_advice_sz; /*キー報告エリア部サイズ */ EELONG sdhift_mgr_component_location; /*構成要素情報表示部ロケーション */ EELONG sdhift_mgr_component_sz; /*構成要素情報表示部エントリサイズ */ char yobi3[40]; /*予備 */ short sdhift_mgr_db_name_sz; /*データベース名称サイズ */ char sdhift_mgr_db_name[30]; /*データベース名称 */ /*要求部*/ char sdhift_req_func_code[4]; /*機能コード */ char sdhift_req_req_code1; /*要求コード1 */ char sdhift_req_req_code2; /*要求コード2 */ char sdhift_req_req_code3; /*要求コード3 */ char sdhift_req_req_code4; /*要求コード4 */ char sdhift_req_access_mode1; /*アクセスモード1 */ char sdhift_req_access_mode2; /*アクセスモード2 */ char sdhift_req_access_mode3; /*アクセスモード3 */ char sdhift_req_access_mode4; /*アクセスモード4 */ char sdhift_req_exclusive_mode1; /*排他モード1 */ char sdhift_req_exclusive_mode2; /*排他モード2 */ char sdhift_req_exclusive_mode3; /*排他モード3 */ char sdhift_req_exclusive_mode4; /*排他モード4 */ char sdhift_req_data_area_format; /*データエリア形式 */ char sdhift_req_tb_cf_no; /*店番限定有無 */ char sdhift_req_base_condexp_opt; /*順アクセス内基点条件オプション */ char sdhift_req_fetchdb_all_opt; /*複数レコードの検索専用オプション */ char sdhift_req_option_code5; /*個別開始/終了一括要求オプション */ char sdhift_req_option_code6; /*個別開始実行要求オプション */ char sdhift_req_option_code7; /*オプションコード7 */ char sdhift_req_option_code8; /*オプションコード8 */ char yobi4[8]; /*予備 */ void * sdhift_req_entry_list_pt; /*データベースアクセス用エントリリストアドレス */ void * sdhift_req_refs_info_area_pt; /*システム構成表示エリアアドレス */ short sdhift_req_db_name_sz; /*データベース名称サイズ指定 */ char sdhift_req_db_name[30]; /*データベース名称指定 */ void * sdhift_req_dbkey_pt; /*データベースキー指定エリアアドレス */ void * sdhift_req_migure_key_advice; /* TP1/FSP領域 */ char yobi5[4]; /*予備 */ char yobi6[12]; /*予備 */ char * sdhift_req_rdarea_name_pt; /*RDエリア名称格納エリア */ EELONG sdhift_req_rdarea_name_sz; /*RDエリア名称格納エリアサイズ */ char yobi26[4]; /*予備 */ short sdhift_req_tb_sz; /*店番サイズ */ char sdhift_req_tb[14]; /*店番 */ char yobi7[240]; /*予備 */ /*結果部*/ char sdhift_rsp_return_code; /*リターンコード */ char sdhift_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhift_rsp_detail_code; /*詳細コード */ EELONG sdhift_rsp_err_code1; /*エラーコード1 */ EELONG sdhift_rsp_err_code2; /*エラーコード2 */ char sdhift_rsp_status_code[5]; /*SDHステータスコード */ char yobi9[1]; /*予備 */ char sdhift_rsp_rollback_flg; /*暗黙的ロールバック有無 */ char sdhift_rsp_strt_ex_flg; /*個別開始実行要求結果 */ EELONG64 sdhift_rsp_sql_code; /*SQLCODE */ char sdhift_rsp_ob[32]; /*障害情報 */ EESDHDBL * sdhift_rsp_data_base_list_pt; /*データベース名称リストアドレス */ void * sdhift_rsp_ift_pt; /*アクセス機能用インタフェースエリアアドレス */ EELONG sdhift_rsp_entry_location; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ void * sdhift_rsp_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ void * sdhift_rsp_sdhrdkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi11[152]; /*予備 */ /*定義情報部*/ EELONG sdhift_def_db_no; /*データベース番号 */ char sdhift_def_db_type; /*種別 */ char yobi12[3]; /*予備 */ char sdhift_def_fetch_pm; /*参照可否 */ char sdhift_def_modify_pm; /*変更可否 */ char sdhift_def_store_pm; /*格納可否 */ char sdhift_def_erase_pm; /*削除可否 */ char sdhift_def_all_erase_pm; /*一括削除可否 */ char sdhift_def_db_utl_pm; /*DB作成UTL追加可否 */ char sdhift_def_format_write_pm; /*フォーマットライト可否 */ char sdhift_def_tg_const; /*店群構成 */ char sdhift_def_req_mode1; /*リクエストモード1 */ char sdhift_def_req_mode2; /*リクエストモード2 */ char yobi13[2]; /*予備 */ char sdhift_def_hrnd_ac; /*階層ランダム/シーケンシャル */ char sdhift_def_usr_flno_o; /*ユーザファイル通番可否 */ char yobi14[2]; /*予備 */ EELONG sdhift_def_record_type_num; /*レコード種別数 */ char yobi15[4]; /*予備 */ EELONG sdhift_def_record_lv_key_num; /*レコード分割キー数 */ short sdhift_def_record_lv_key_location; /*レコード分割キーのロケーション */ short sdhift_def_record_lv_key_sz; /*レコード分割キーのサイズ */ EELONG sdhift_def_tb_type_num; /*RDエリア分割キー数 */ short sdhift_def_tb_lv_key_location; /*RDエリア分割キーのロケーション */ short sdhift_def_tb_lv_key_sz; /*RDエリア分割キーのサイズ */ EELONG sdhift_def_max_record_lv; /*最大階層レベル */ EELONG sdhift_def_migure_key_advice_max_sz; /* TP1/FSP領域 */ char yobi16[8]; /*予備 */ EELONG sdhift_def_logical_key_sz; /*全キー長(レベル2〜一連番号までの合計サイズ) */ EELONG sdhift_def_migure_cereal_no_sz; /* TP1/FSP領域 */ char yobi17[8]; /*予備 */ EELONG sdhift_def_dbkey_l2_ci; /*レベル2キー構成要素情報 */ EELONG sdhift_def_dbkey_l2_sz; /*レベル2論理キー長 */ EELONG sdhift_def_dbkey_l2_tc; /*レベル2論理キー種類数 */ char yobi18[4]; /*予備 */ EELONG sdhift_def_dbkey_l3_ci; /*レベル3キー構成要素情報 */ EELONG sdhift_def_dbkey_l3_sz; /*レベル3論理キー長 */ EELONG sdhift_def_dbkey_l3_tc; /*レベル3論理キー種類数 */ char yobi19[4]; /*予備 */ EELONG sdhift_def_dbkey_l4_ci; /*レベル4キー構成要素情報 */ EELONG sdhift_def_dbkey_l4_sz; /*レベル4論理キー長 */ EELONG sdhift_def_dbkey_l4_tc; /*レベル4論理キー種類数 */ char yobi20[4]; /*予備 */ EELONG sdhift_def_dbkey_l5_ci; /*レベル5キー構成要素情報 */ EELONG sdhift_def_dbkey_l5_sz; /*レベル5論理キー長 */ EELONG sdhift_def_dbkey_l5_tc; /*レベル5論理キー種類数 */ char yobi21[4]; /*予備 */ EELONG sdhift_def_dbkey_l6_ci; /*レベル6キー構成要素情報 */ EELONG sdhift_def_dbkey_l6_sz; /*レベル6論理キー長 */ EELONG sdhift_def_dbkey_l6_tc; /*レベル6論理キー種類数 */ char yobi22[4]; /*予備 */ EELONG sdhift_def_dbkey_l7_ci; /*レベル7キー構成要素情報 */ EELONG sdhift_def_dbkey_l7_sz; /*レベル7論理キー長 */ EELONG sdhift_def_dbkey_l7_tc; /*レベル7論理キー種類数 */ char yobi23[4]; /*予備 */ EELONG sdhift_def_sereal_no_ci; /*一連番号構成要素情報 */ EELONG sdhift_def_sereal_no_sz; /*一連番号サイズ */ char yobi24[8]; /*予備 */ EESDHRLKL * sdhift_def_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ EESDHRDKL * sdhift_def_sdhrlkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi25[48]; /*予備 */ char sdhift_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_t EESDHIFT; struct ee_sdh_db_list_t { /*データベース名称リスト */ short sdhdbl_entry_num; /*エントリ数 */ short sdhdbl_entry_sz; /*エントリサイズ */ char yobi[4]; /*予備 */ }; typedef struct ee_sdh_db_list_t EESDHDBL; struct ee_sdh_db_list_entry_t { /*データベース名称リストエントリ */ short sdhdblent_db_name_sz; /*データベース名称サイズ */ char sdhdblent_db_name[30]; /*データベース名称 */ EESDHIFT * sdhdblent_ift_pt; /*インタフェースエリアテンプレートアドレス */ char yobi[24]; /*予備 */ }; typedef struct ee_sdh_db_list_entry_t EESDHDBLENT; struct ee_sdh_record_key_list_head_t { /*レコード分割キー一覧 */ EELONG sdhrlkl_key_num; /*キー数 */ EELONG sdhrlkl_key_sz; /*キーサイズ */ EELONG sdhrlkl_key_loc; /*キーロケーション */ EELONG sdhrlkl_ent_sz; /*エントリサイズ */ }; typedef struct ee_sdh_record_key_list_head_t EESDHRLKL; struct ee_sdh_record_key_list_entry_t { /*レコード分割キー一覧エントリ */ char sdhrlkle_key[256]; /*レコード分割キー */ EELONG sdhrlkle_sdhifte_loc; /*インタフェースエリア内ロケーション */ char sdhrlkle_yobi[12]; /*予備 */ }; typedef struct ee_sdh_record_key_list_entry_t EESDHRLKLENT; struct ee_sdh_rdarea_key_list_head_t { /*RDエリア分割キー一覧 */ EELONG sdhrdkl_key_num; /*キー数 */ EELONG sdhrdkl_key_sz; /*キーサイズ */ EELONG sdhrdkl_key_loc; /*キーロケーション */ EELONG sdhrdkl_ent_sz; /*エントリサイズ */ char sdhrdkl_kind; /*分割種別 */ char sdhrdkl_yobi[7]; /*予備 */ }; typedef struct ee_sdh_rdarea_key_list_head_t EESDHRDKL; struct ee_sdh_rdarea_key_list_entry_t { /*RDエリア分割キー一覧エントリ */ char sdhrdkle_key[32]; /*RDエリア分割キー */ EELONG sdhrdkle_rdarea_name_sz; /*RDエリア名称長 */ char sdhrdkle_rdarea_name[30]; /*RDエリア名称 */ }; typedef struct ee_sdh_rdarea_key_list_entry_t EESDHRDKLENT;
- 機能
-
構造型データベースへアクセスするための情報を初期化または取得します。
-
スレッドイニシャライズ
-
インタフェースエリアイニシャライズ
-
データベースキー対応エントリ検索
-
RDエリア分割キー一覧取得
各項目はインタフェースエリア(ヘッダ部)の要求コード1の設定値によって選択できます。
UAPは,インタフェースエリアイニシャライズを選択する場合は,確保済みのインタフェースエリアをift_ptに設定してください。それ以外の場合は,インタフェースエリア(ヘッダ部だけ)を確保し,ift_ptに設定してください。
- スレッドイニシャライズ
-
ee_sdh_strtやee_sdh_accs発行時に必要となるデータベース名を保持するデータベース名称リストおよびインタフェースエリアテンプレートを返却します。そのため,スレッドイニシャライズは必ず発行してください。
データベース名称リストおよびインタフェースエリアテンプレートは,全スレッドで共用します。データベース名称リストおよびインタフェースエリアテンプレートの内容は変更しないでください。変更した場合はTP1/FSPはプロセスダウンします。
インタフェースエリア,データベース名称リストとインタフェースエリアテンプレートの関係を次の図に示します。
図1‒4 スレッドイニシャライズ(共用) - インタフェースエリアイニシャライズ
-
指定されたインタフェースエリアのエントリ部を初期化します。
- データベースキー対応エントリ検索
-
指定されたデータベースに定義されたレコード分割キーとレコード分割キーに対応するインタフェースエリアの各エントリへのロケーション一覧を返却します。
データベース名称と同時にDBKEYが指定された場合,レコード分割キー一覧に加え,DBKEYからレコード型を特定し,インタフェースエリア先頭からレコード型に対応するインタフェースエリアのエントリへのロケーションも返却します。
レコード分割キー一覧の内容は変更しないでください。変更した場合はTP1/FSPはプロセスダウンします。
本機能は,FMB以外のデータベースに対して要求できます。
表1‒10 データベースキー対応エントリ検索 項番
API
DB種別
FMB
DAM
MAM
TAM
SAM
1
データベースキー対応
エントリ検索
×
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
図1‒5 データベースキー対応エントリ検索 - RDエリア分割キー一覧取得
-
指定されたデータベースに定義されたRDエリア分割キーとRDエリア分割キーに対応するRDエリア名称一覧を返却します。
RDエリア分割キー一覧の内容は変更しないでください。変更した場合はTP1/FSPはプロセスダウンします。
-
UAPで値を設定する引数
- ift_pt
-
確保したインタフェースエリア(ヘッダ部だけ)または初期化するインタフェースエリアを設定します。要求時に次の項目を設定してください。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
- ヘッダ部−インタフェースエリア構成情報部
-
-
ヘッダ識別子
インタフェースエリアヘッダを表す識別子を設定します。
'*HDR':インタフェースエリアヘッダ識別子
-
- ヘッダ部−要求部
-
-
機能コード
イニシャライズ要求する機能コードを設定します。
'INIT':イニシャライズ
-
要求コード1
イニシャライズの要求コードを設定します。
'S':スレッドイニシャライズ
'I':インタフェースエリアイニシャライズ
'K':データベースキー対応エントリ検索
'R':RDエリア分割キー一覧取得
-
要求コード2,要求コード3,要求コード4
'△'を設定します。
-
サブコード1(アクセスモード1に設定する)
要求コード1の値によって設定する内容が異なります。
・要求コード1が'S'の場合
インタフェースエリアテンプレートの利用形態を設定します。
'P':インタフェースエリアテンプレートを全スレッドで共用
・要求コード1が'I'の場合
インタフェースエリアの初期化方法を設定します。
'△'を設定します。
・要求コード1が'K'/'R'の場合
'△'を設定します。
-
サブモード2,サブモード3,サブモード4(アクセスモード2,アクセスモード3,アクセスモード4に設定する)
'△'を設定します。
-
データベース名称サイズ指定
要求コード1の値によって設定する内容が異なります。
・要求コード1が'K'/'R'の場合
データベース名称サイズを設定します(単位:バイト)。1〜30の範囲の値を設定できます。
・その他の場合
X'00'を設定します。
-
データベース名称指定
要求コード1の値によって設定する内容が異なります。
・要求コード1が'K'/'R'の場合
データベース名称を設定した領域を設定します。
・その他の場合
すべてX'00'を設定します。
-
データベースキー指定エリアアドレス
要求コード1の値によって設定する内容が異なります。
・要求コード1が'K'の場合
データベースキー指定エリアを確保し,DBKEYを格納したあと,アドレスを設定します。指定されたデータベースにレコード分割キーが定義されていない場合など,指定されたDBKEYからエントリを特定できない場合はエラーとなります。
DBKEYを指定しない場合はNULLを設定します。
・その他の場合
NULLを設定します。
-
- flags
-
EENOFLAGSを設定します。
TP1/EEから値が返される引数
- ift_pt
-
インタフェースエリアの各項目に値が設定されています。
リターン値がEE_OKまたはEESDHER_DBACCESSの場合だけ参照可能です。
次に記載のない項目についてはTP1/FSPは値を設定しません。
- ヘッダ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。
表1‒11 リターンコードとサブコード 項番
リターンコード
サブコード
意味
SDH
ステータスコード
1
'0'
'0'
正常終了。
00000
2
'1'
'1'
インタフェースエリア指定値不正。
-
アクセスモードと排他モードの組み合わせが不正です。
-
DB種別に指定できない値を指定しました。
-
インタフェースエリアの要求数が0です。
-
複数エントリで要求コードが異なります。
-
エントリリスト指定で同一エントリアドレスを複数指定しています。
-
DB未サポート機能を指定しました。
-
個別開始時と異なる値を設定しました。
-
USERポインタが未定義のSDBに対して,USERポインタを設定しようとしました。
-
USERポインタの設定されていないレコードに対して,USERポインタを解消しようとしました。
-
RDエリア名称格納エリアが指定されていません。
-
RDエリア名称長が不正です。
-
DAM/MAM/TAM/SAMの場合,複数エントリ同時に要求しました。
11272
3
'2'
条件式指定値が不正。
-
識別子が不正です。
-
構成要素名称が存在しません。
-
MAM以外のSDBに対して%ENTRYを指定しました。
-
構成要素順序が不正です。
-
比較記号,論理式,接続記号が不正です。
-
終了記号の位置が不正です。
-
集団項目の構成要素を指定しました。
-
キー以外の条件にユーザデータ以外の構成要素を指定しました。
11276
4
'3'
要求発行順序不正。
-
検索しないで変更や削除を要求しました。
-
個別開始しないでDBアクセスを要求しました。
-
システム構成情報表示が個別開始直後以外で要求されました。
-
ロールバック指示が発行されている状態でee_sdh_〜を要求しました。
同一レコードに対してアクセス要求が重複しています。
-
同一トランザクション内で,データベース種別がFMBのデータベースの同じルートレコードのレコードにアクセスしようとしました。
-
同一トランザクション内で,データベース種別がFMB以外のデータベースの同じレコード型のレコードをアクセスしようとしました。
11278
11292
5
'4'
構成要素指定不正。
-
構成要素数が0です。
-
構成要素番号が昇順になっていません。
-
構成要素名称または番号が存在しません。
-
同一の構成要素を指定しています。
-
集団項目の構成要素を指定しました。
-
指定できない構成要素名称および構成要素番号を指定しました。
11290
6
'5'
次の条件が範囲指定ではありません。
-
キーの条件式
-
ユーザキーの条件式
11277
7
'6'
データ格納エリアに指定されたサイズが小さいため,データを格納できませんでした。
11172
8
'7'
インタフェースエリアのデータベース名称が不正です。
11275
9
'8'
アクセスモードが参照モードのまま,変更・格納・削除・一括削除を要求しました。
11201
10
'9'
条件式に指定した値が不正です。
-
PACKED属性の構成要素に対して不正な形式の値を指定しました。
11210
11
'B'
指定された論理キーが不正,RDエリア分割キーが不正,レコード分割キーが不正,または論理キーが不正です。
11175
11176
11177
12
'C'
ユーザキーを更新しようとしました。
11282
13
'D'
レコードは,すでに存在します。
01810
14
'E'
MAM/TAMで格納しようとしたデータのユーザキーより大きいユーザキーがすでに存在します。
11279
15
'F'
-
店群順アクセス/DAM順アクセス用のRDエリア名称の指定がありません。かつ,基点条件ありとなる条件式の指定もありません。
-
SDBデータベース定義で,RDエリア分割キーの構成要素よりも前に構成要素を定義し,その構成要素についてKEYDEFを定義していない,またはKEYDEFに2個以上のDATAを定義したSDBに対して,店群順アクセス/DAM順アクセスを要求しています。
11171
16
'H'
親レコードが検索されていません。
11287
17
'L'
内部矛盾が発生しました。
11173
18
'2'
'1'
入出力エラーが発生しました。
-
HiRDBとのインタフェースでエラーが発生しました。
11104
19
'A'
'1'
-
デッドロックが発生しました。
-
資源がほかのトランザクションで占有されており,排他待ち時間を超過しました。
-
HiRDBで排他制御の領域が不足しました。
01110
20
'B'
'1'
-
RMと未接続です。
-
RDエリアが閉塞状態または障害発生のため閉塞しました。
-
RDエリアがクローズ状態です。
01910
21
'3'
HiRDBサーバとの通信でエラーが発生しました。
11971
22
'C'
'1'
-
TP1/EEのシステムワークが不足しました。
-
HiRDBサーバでメモリ不足が発生しました。
11102
23
'2'
-
RDエリアの容量不足です。
-
一連番号最大値を超えて格納しようとしました。
11108
24
'D'
'1'
レコードが見つかりません。
00100
25
'2'
レコードの終端を検知しました。
10072
26
'3'
データエリアが満杯です。
10070
27
'E'
'1'
格納,変更,削除,一括削除などのSDBを更新するDMLを実施したあとで,個別終了時にエラーオプションを指定し個別終了を実行しました。
20000
-
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SDHステータスコード
SDHステータスコードを設定します。
「1.4 SDHステータスコード一覧」を参照してください。
-
データベース名称リストアドレス
要求コード1の値によって設定する内容が異なります。
エラー時は設定されている内容を変更しません。
・要求コード1が'S'の場合
データベース名称リストのアドレスを設定します。
データベース名称リスト内には,各データベースのDBの名称と名称長,対応するインタフェースエリアテンプレートアドレスが格納されています。DB名称は左詰めで設定し名称以外の部分には'△'を設定します。予備にはX'00'を設定します。
・その他の場合
設定されている内容を変更しません。
図1‒6 データベース名称リスト -
エントリ部ロケーション
要求コード1の値によって設定する内容が異なります。
エラー時は設定されている内容を変更しません。
・要求コード1が'K'の場合
指定したDBKEYに対応するエントリへのロケーションを設定します。
DBKEYが指定されていない場合は0を設定します。
・その他の場合
設定されている内容を変更しません。
-
レコード分割キー一覧アドレス
要求コード1の値によって設定する内容が異なります。
エラー時は設定されている内容を変更しません。
・要求コード1が'K'の場合
レコード分割キー一覧のアドレスを設定します。
レコード分割キー一覧には,レコード分割キー数,レコード分割キーサイズ,DBKEYの先頭からレコード分割キーまでのロケーション(0〜),エントリサイズとレコード分割キーごとのエントリ部へのロケーションが格納されています。レコード分割キーがない場合は,キー数に0を設定します。
・その他の場合
設定されている内容を変更しません。
図1‒7 レコード分割キー一覧 -
RDエリア分割キー一覧アドレス
要求コード1の値によって設定する内容が異なります。
エラー時は設定されている内容を変更しません。
・要求コード1が'R'の場合
RDエリア分割キー一覧のアドレスを設定します。
RDエリア分割キー一覧には,RDエリア分割キー数,RDエリア分割キーサイズ,DBKEYの先頭からRDエリア分割キーまでのロケーション(0〜),エントリサイズ,分割種別とRDエリア分割キーごとのRDエリア名称が格納されています。RDエリア分割キーがない場合は,キー数に0を設定します。
分割種別の値の意味を次に示します。キー数が0の場合やレコード分割キーかつRDエリア分割キー(TYPE K,M)の場合は'0'を設定します。
表1‒12 分割種別 項番
分割種別
意味
説明
1
'1'
格納条件分割
SDB格納データベース定義文のWITHINで,格納条件を指定した場合
2
'2'
境界値分割
SDB格納データベース定義文のWITHINで,境界値を指定した場合
3
'0'
種別なし
なし
・その他の場合
設定されている内容を変更しません。
図1‒8 RDエリア分割キー一覧
-
- リターン値
-
リターン値
意味
EE_OK
正常に終了しました。
EECOMER_ENVIRON
TP1/EEの環境下にありません。
EECOMER_CNDUOC
UOCから発行しているため,この機能は使用できません。
EESDHER_ARGUMENT
引数に設定した値が間違っています。
-
インタフェースエリア(ift_pt)が不正(NULL)です。
EESDHER_CONDITION
発行条件が不正です。
-
TP1/FSPの環境下にありません。
-
SDBハンドラ機能が有効(sdh_use=Y)ではありません。
-
リソースマネジャが定義されていないか,リソースマネジャにHiRDBが定義されていません。
EESDHER_DBACCESS
構造型DBのアクセスに失敗しました。
詳細は「1.4 SDHステータスコード一覧」を参照してください。
-
(2) ee_sdh_strt
- 名称
-
個別開始要求
- 形式
-
ANSI C,C++の形式
#include <eesdh.h> int ee_sdh_strt(EESDHIFT *ift_pt, EELONG flags); struct ee_sdh_interface_area_t { /*ヘッダ部 */ /*インタフェースエリア構成情報部 */ char sdhift_mgr_head_id[4]; /*ヘッダ識別子 */ EELONG sdhift_mgr_head_sz; /*ヘッダ部サイズ */ char sdhift_mgr_db_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhift_mgr_ift_sz; /*インタフェースエリア全体サイズ */ void * sdhift_mgr_ift_pt; /*自インタフェースエリアのテンプレートアドレス */ EELONG sdhift_mgr_entry_location; /*エントリ部先頭ロケーション */ EELONG sdhift_mgr_entry_sz; /*エントリ部サイズ */ EELONG sdhift_mgr_entry_num; /*エントリ部数 */ char yobi2[4]; /*予備 */ EELONG sdhift_mgr_key_advice_location; /*キー報告エリア部ロケーション */ EELONG sdhift_mgr_key_advice_sz; /*キー報告エリア部サイズ */ EELONG sdhift_mgr_component_location; /*構成要素情報表示部ロケーション */ EELONG sdhift_mgr_component_sz; /*構成要素情報表示部エントリサイズ */ char yobi3[40]; /*予備 */ short sdhift_mgr_db_name_sz; /*データベース名称サイズ */ char sdhift_mgr_db_name[30]; /*データベース名称 */ /*要求部*/ char sdhift_req_func_code[4]; /*機能コード */ char sdhift_req_req_code1; /*要求コード1 */ char sdhift_req_req_code2; /*要求コード2 */ char sdhift_req_req_code3; /*要求コード3 */ char sdhift_req_req_code4; /*要求コード4 */ char sdhift_req_access_mode1; /*アクセスモード1 */ char sdhift_req_access_mode2; /*アクセスモード2 */ char sdhift_req_access_mode3; /*アクセスモード3 */ char sdhift_req_access_mode4; /*アクセスモード4 */ char sdhift_req_exclusive_mode1; /*排他モード1 */ char sdhift_req_exclusive_mode2; /*排他モード2 */ char sdhift_req_exclusive_mode3; /*排他モード3 */ char sdhift_req_exclusive_mode4; /*排他モード4 */ char sdhift_req_data_area_format; /*データエリア形式 */ char sdhift_req_tb_cf_no; /*店番限定有無 */ char sdhift_req_base_condexp_opt; /*順アクセス内基点条件オプション */ char sdhift_req_fetchdb_all_opt; /*複数レコードの検索専用オプション */ char sdhift_req_option_code5; /*個別開始/終了一括要求オプション */ char sdhift_req_option_code6; /*個別開始実行要求オプション */ char sdhift_req_option_code7; /*オプションコード7 */ char sdhift_req_option_code8; /*オプションコード8 */ char yobi4[8]; /*予備 */ void * sdhift_req_entry_list_pt; /*データベースアクセス用エントリリストアドレス */ void * sdhift_req_refs_info_area_pt; /*システム構成表示エリアアドレス */ short sdhift_req_db_name_sz; /*データベース名称サイズ指定 */ char sdhift_req_db_name[30]; /*データベース名称指定 */ void * sdhift_req_dbkey_pt; /*データベースキー指定エリアアドレス */ void * sdhift_req_migure_key_advice; /* TP1/FSP領域 */ char yobi5[4]; /*予備 */ char yobi6[12]; /*予備 */ char * sdhift_req_rdarea_name_pt; /*RDエリア名称格納エリア */ EELONG sdhift_req_rdarea_name_sz; /*RDエリア名称格納エリアサイズ */ char yobi26[4]; /*予備 */ short sdhift_req_tb_sz; /*店番サイズ */ char sdhift_req_tb[14]; /*店番 */ char yobi7[240]; /*予備 */ /*結果部*/ char sdhift_rsp_return_code; /*リターンコード */ char sdhift_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhift_rsp_detail_code; /*詳細コード */ EELONG sdhift_rsp_err_code1; /*エラーコード1 */ EELONG sdhift_rsp_err_code2; /*エラーコード2 */ char sdhift_rsp_status_code[5]; /*SDHステータスコード */ char yobi9[1]; /*予備 */ char sdhift_rsp_rollback_flg; /*暗黙的ロールバック有無 */ char sdhift_rsp_strt_ex_flg; /*個別開始実行要求結果 */ EELONG64 sdhift_rsp_sql_code; /*SQLCODE */ char sdhift_rsp_ob[32]; /*障害情報 */ EESDHDBL * sdhift_rsp_data_base_list_pt; /*データベース名称リストアドレス */ void * sdhift_rsp_ift_pt; /*アクセス機能用インタフェースエリアアドレス */ EELONG sdhift_rsp_entry_location; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ void * sdhift_rsp_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ void * sdhift_rsp_sdhrdkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi11[152]; /*予備 */ /*定義情報部*/ EELONG sdhift_def_db_no; /* データベース番号 */ char sdhift_def_db_type; /*種別 */ char yobi12[3]; /*予備 */ char sdhift_def_fetch_pm; /*参照可否 */ char sdhift_def_modify_pm; /*変更可否 */ char sdhift_def_store_pm; /*格納可否 */ char sdhift_def_erase_pm; /*削除可否 */ char sdhift_def_all_erase_pm; /*一括削除可否 */ char sdhift_def_db_utl_pm; /*DB作成UTL追加可否 */ char sdhift_def_format_write_pm; /*フォーマットライト可否 */ char sdhift_def_tg_const; /*店群構成 */ char sdhift_def_req_mode1; /*リクエストモード1 */ char sdhift_def_req_mode2; /*リクエストモード2 */ char yobi13[2]; /*予備 */ char sdhift_def_hrnd_ac; /*階層ランダム/シーケンシャル */ char sdhift_def_usr_flno_o; /*ユーザファイル通番可否 */ char yobi14[2]; /*予備 */ EELONG sdhift_def_record_type_num; /*レコード種別数 */ char yobi15[4]; /*予備 */ EELONG sdhift_def_record_lv_key_num; /*レコード分割キー数 */ short sdhift_def_record_lv_key_location; /*レコード分割キーのロケーション */ short sdhift_def_record_lv_key_sz; /*レコード分割キーのサイズ */ EELONG sdhift_def_tb_type_num; /*RDエリア分割キー数 */ short sdhift_def_tb_lv_key_location; /*RDエリア分割キーのロケーション */ short sdhift_def_tb_lv_key_sz; /*RDエリア分割キーのサイズ */ EELONG sdhift_def_max_record_lv; /*最大階層レベル */ EELONG sdhift_def_migure_key_advice_max_sz; /* TP1/FSP領域 */ char yobi16[8]; /*予備 */ EELONG sdhift_def_logical_key_sz; /*全キー長(レベル2〜一連番号までの合計サイズ) */ EELONG sdhift_def_migure_cereal_no_sz; /* TP1/FSP領域 */ char yobi17[8]; /*予備 */ EELONG sdhift_def_dbkey_l2_ci; /*レベル2キー構成要素情報 */ EELONG sdhift_def_dbkey_l2_sz; /*レベル2論理キー長 */ EELONG sdhift_def_dbkey_l2_tc; /*レベル2論理キー種類数 */ char yobi18[4]; /*予備 */ EELONG sdhift_def_dbkey_l3_ci; /*レベル3キー構成要素情報 */ EELONG sdhift_def_dbkey_l3_sz; /*レベル3論理キー長 */ EELONG sdhift_def_dbkey_l3_tc; /*レベル3論理キー種類数 */ char yobi19[4]; /*予備 */ EELONG sdhift_def_dbkey_l4_ci; /*レベル4キー構成要素情報 */ EELONG sdhift_def_dbkey_l4_sz; /*レベル4論理キー長 */ EELONG sdhift_def_dbkey_l4_tc; /*レベル4論理キー種類数 */ char yobi20[4]; /*予備 */ EELONG sdhift_def_dbkey_l5_ci; /*レベル5キー構成要素情報 */ EELONG sdhift_def_dbkey_l5_sz; /*レベル5論理キー長 */ EELONG sdhift_def_dbkey_l5_tc; /*レベル5論理キー種類数 */ char yobi21[4]; /*予備 */ EELONG sdhift_def_dbkey_l6_ci; /*レベル6キー構成要素情報 */ EELONG sdhift_def_dbkey_l6_sz; /*レベル6論理キー長 */ EELONG sdhift_def_dbkey_l6_tc; /*レベル6論理キー種類数 */ char yobi22[4]; /*予備 */ EELONG sdhift_def_dbkey_l7_ci; /*レベル7キー構成要素情報 */ EELONG sdhift_def_dbkey_l7_sz; /*レベル7論理キー長 */ EELONG sdhift_def_dbkey_l7_tc; /*レベル7論理キー種類数 */ char yobi23[4]; /*予備 */ EELONG sdhift_def_sereal_no_ci; /*一連番号構成要素情報 */ EELONG sdhift_def_sereal_no_sz; /*一連番号サイズ */ char yobi24[8]; /*予備 */ EESDHRLKL * sdhift_def_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ EESDHRDKL * sdhift_def_sdhrlkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi25[48]; /*予備 */ char sdhift_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_t EESDHIFT; struct ee_sdh_interface_area_entry_t { /*エントリ部 */ /*インタフェースエリア構成情報部*/ char sdhifte_mgr_entry_id[4]; /*識別子 */ EELONG sdhifte_mgr_entry_sz; /*エントリ部サイズ */ char sdhifte_mgr_entry_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhifte_mgr_self_entry_location; /*インタフェースエリア内のエントリ部ロケーション */ EELONG sdhifte_mgr_compo_location; /*構成要素情報部ロケーション */ EELONG sdhifte_mgr_compo_num; /*構成要素情報エントリ数 */ char yobi2[72]; /*予備 */ short sdhifte_mgr_record_name_sz; /*レコード名称サイズ */ char sdhifte_mgr_record_name[30]; /*レコード名称 */ /*要求部*/ char sdhifte_req_req_code[4]; /*要求コード */ char sdhifte_req_as_code; /*指示コード */ char sdhifte_req_search_code; /*検索コード */ char sdhifte_req_cnd_code; /*条件コード */ char yobi3[1]; /*予備 */ char yobi4[8]; /*予備 */ char sdhifte_req_pointer_opt; /*ポインタオプション */ char sdhifte_req_lm_as_opt; /*一括オプション */ char sdhifte_req_status_adv_code; /*ステータス報告オプション */ char sdhifte_req_page_switch_opt; /*ページ切り替え */ char sdhifte_req_pctfree_opt; /*PCTFREE有効化 */ char sdhifte_req_2ndidx_susp; /*二次インデクス使用抑止オプション */ char sdhifte_req_option_code7; /*オプションコード7 */ char sdhifte_req_migure_info_flg; /* TP1/FSP領域 */ char yobi5[40]; /*予備 */ void *sdhifte_req_condexp_area_pt; /*条件式格納エリアアドレス */ void *sdhifte_req_compo_area_pt; /*構成要素指定エリアアドレス */ void *sdhifte_req_data_pt; /*データ格納エリアアドレス */ EELONG sdhifte_req_data_sz; /*データ格納エリアサイズ */ EELONG sdhifte_req_prepage_num; /*事前割り当て要求ページ数 */ char yobi6[56]; /*予備 */ char sdhifte_req_dbkey_l2[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_req_serial_no; /*一連番号 */ char sdhifte_req_direct[16]; /*ダイレクトアクセス情報 */ char yobi7[80]; /*予備 */ /*キー部*/ char sdhifte_key[256]; /*ユーザキー/論理キー格納エリアアドレス */ /*結果部*/ char sdhifte_rsp_return_code; /*リターンコード */ char sdhifte_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhifte_rsp_detail_code; /*詳細コード */ EELONG sdhifte_rsp_err_code1; /*エラーコード1 */ EELONG sdhifte_rsp_err_code2; /*エラーコード2 */ EELONG64 sdhifte_rsp_sql_code; /*SQLCODE */ char yobi9[8]; /*予備 */ char sdhifte_rsp_ob[32]; /*障害情報 */ EELONG sdhifte_rsp_record_sz; /*レコードサイズ */ EEULONG sdhifte_rsp_record_loc; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ EELONG sdhifte_rsp_prepage_num; /*事前割り当て済みページ数 */ char sdhifte_rsp_dbkey_l22[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_rsp_serial_no; /*一連番号 */ char sdhifte_rsp_direct[16]; /*ダイレクトアクセス情報 */ char yobi11[24]; /*予備 */ char sdhifte_rsp_bes_rearea[24]; /*BES,RDエリアに関する情報 */ char yobi12[40]; /*予備 */ char sdhifte_rsp_2ndidx; /*二次インデクス使用フラグ */ char sdhifte_rsp_status; /*ステータス */ short sdhifte_rsp_migure_record_sz; /* TP1/FSP領域 */ EELONG sdhifte_rsp_migure_direct_info; /* TP1/FSP領域 */ char yobi13[56]; /*予備 */ /*定義情報部*/ EELONG sdhifte_def_record_no; /*レコード番号 */ char sdhifte_def_db_type; /*種別 */ char yobi14[3]; /*予備 */ char sdhifte_def_fetch_pm; /*検索可否 */ char sdhifte_def_modify_pm; /*変更可否 */ char sdhifte_def_store_pm; /*格納可否 */ char sdhifte_def_erase_pm; /*削除可否 */ char sdhifte_def_all_erase_pm; /*一括削除可否 */ char sdhifte_def_compo_access_pm; /*構成要素指示可否 */ char yobi15[1]; /*予備 */ char sdhifte_def_tg_const; /*店群構成 */ char sdhifte_def_occurs_attr; /*オカレンス属性 */ char sdhifte_def_child_record_fl; /*子レコード有無 */ char sdhifte_def_user_pointer_fl; /*ユーザポインタ有無 */ char sdhifte_def_user_key_fl; /*ユーザキー有無 */ char yobi16[4]; /*予備 */ char sdhifte_def_req_mode1; /*リクエストモード1 */ char sdhifte_def_req_mode2; /*リクエストモード2 */ char yobi17[2]; /*予備 */ char sdhifte_def_hrnd_access; /*階層ランダム/シーケンシャル */ char sdhifte_def_usr_flno_pm; /*ユーザファイル通番取得可否 */ char yobi18[2]; /*予備 */ EELONG sdhifte_def_self_record_id_sz; /*自身のレコード識別コード長 */ char sdhifte_def_self_record_id[4]; /*自身のレコード識別コード */ EELONG sdhifte_def_self_record_no; /*レコード型番号 */ EELONG sdhifte_def_parent_record_no; /*親のレコード型番号 */ EELONG sdhifte_def_record_lv; /*レコードレベル番号 */ char yobi19[4]; /*予備 */ EELONG sdhifte_def_user_record_sz; /*ユーザレコードサイズ */ EELONG sdhifte_def_usr_flno_sz; /*ユーザレコード通番部サイズ */ EELONG sdhifte_def_public_component_num; /*公開構成要素数 */ EELONG sdhifte_def_sereal_no_min; /*一連番号最小値 */ EELONG sdhifte_def_sereal_no_max; /*一連番号最大値 */ char yobi20[52]; /*予備 */ char sdhifte_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_entry_t EESDHIFT_ENT; struct ee_sdh_key_advice_size_t { /*キー報告エリア部 */ short sdhiftkh_K1; /*K1 */ short sdhiftkh_K2; /*K2 */ short sdhiftkh_K3; /*K3 */ short sdhiftkh_K4; /*K4 */ short sdhiftkh_K5; /*K5 */ short sdhiftkh_K6; /*K6 */ short sdhiftkh_K7; /*K7 */ short sdhiftkh_K8; /*K8 */ short sdhiftkh_K9; /*K9 */ short sdhiftkh_K10; /*K10 */ short sdhiftkh_K11; /*K11 */ short sdhiftkh_K12; /*K12 */ short sdhiftkh_K13; /*K13 */ short sdhiftkh_K14; /*K14 */ short sdhiftkh_K15; /*K15 */ short yobi; /*予備 */ }; typedef struct ee_sdh_key_advice_size_t EESDHIFTKH; struct ee_sdh_interface_area_component_t { /*構成要素情報部 */ char sdhiftc_compo_id[4]; /*識別記号 */ EELONG sdhiftc_compo_no; /*構成要素番号 */ short sdhiftc_compo_name_sz; /*構成要素名称サイズ */ char sdhiftc_compo_name[30]; /*構成要素名称 */ char sdhiftc_data_attr; /*データ属性 */ char sdhiftc_compo_attr1; /*構成要素属性 */ char sdhiftc_compo_attr2; /*構成要素属性 */ char yobi1[1]; /*予備 */ EELONG sdhiftc_compo_loc; /*ロケーション */ EELONG sdhiftc_compo_sz; /*構成要素サイズ */ char sdhiftc_usr_info[2]; /*ユーザ情報 */ char yobi2[10]; /*予備 */ }; typedef struct ee_sdh_interface_area_component_t EESDHIFT_COMP;
- 機能
-
インタフェースエリアに指定された構造型データベースへのアクセスを開始します。データベースにアクセスするee_sdh_accs,ee_sdh_clarおよびee_sdh_refsは,個別開始した当該インタフェースエリアを設定する必要があります。当該インタフェースエリアは,ee_sdh_fnshを発行する,またはトランザクション終了まで使用できます。
UAPは,インタフェースエリアにアクセスするデータベース名およびアクセス方法などのオプションを設定し発行してください。
UAPは,ee_sdh_initのスレッドイニシャライズで取得したインタフェースエリアテンプレートをコピーして新規インタフェースエリアを作成し,アクセス方法/オプションなどを設定後,ee_sdh_strtを発行してください。インタフェースエリアテンプレートのサイズは,インタフェースエリアテンプレート内のインタフェースエリア全体サイズに格納されています。
インタフェースエリアの確保方法を図1-9に示します。
ee_sdh_strtは,アクセスするデータベースの数だけ発行する必要があります。なお,1トランザクション内で同じデータベース中の複数レコードに平行してアクセスする場合は,同一データベースに対して複数回ee_sdh_strtを発行することも可能です。発行例を図1-10に示します。ただし,ee_sdh_accs,かつ,個別開始/終了一括要求オプションに'Y'を指定する場合,またはee_sdh_accs/ee_sdh_clar/ee_sdh_refs,かつ,個別開始実行要求オプションに'Y'を指定する場合は,個別開始を行う必要がありませんので,ee_sdh_strtの発行は不要です。
ee_sdh_accsで格納,変更または削除を行う場合,またはee_sdh_clarを発行する場合は,インタフェースエリアヘッダ部のアクセスモード1を'U'に設定して,ee_sdh_strtを発行してください。
ee_sdh_accsで複数レコードの検索を行う場合は,複数レコードの検索専用オプションに'D'または'S'を設定して,ee_sdh_strtを発行してください。ただし,複数レコードの検索はFMBでだけ指定できます。AFMで指定した場合はエラーとなります。
複数レコードの検索専用オプションに'D'または'S'を設定して,ee_sdh_strtを発行した場合は,ee_sdh_accsで複数レコードの検索以外を指定することはできません。指定した場合はエラーとなります。
図1‒9 インタフェースエリアの確保方法 図1‒10 ee_sdh_strt発行例
UAPで値を設定する引数
- ift_pt
-
インタフェースエリアを設定します。
要求時に次の項目を設定してください。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
- ヘッダ部−要求部
-
-
機能コード
'STRT':個別開始要求
-
要求コード1
インタフェースエリアの確保方法を設定します。
'U':UAPがインタフェースエリアを確保します。
UAPは確保したインタフェースエリアにインタフェースエリアテンプレートをコピーしてください。
-
要求コード2,要求コード3,要求コード4
'△'を設定します。
-
アクセスモード1
アクセスモードを設定します。
アクセスモード1と排他モード1の組み合わせを次の表に示します。設定できない組み合わせはエラーとなります。また,複数レコードの検索専用オプションに'D'または'S'を指定(複数レコードの検索)している場合は,'R'だけ指定可能です。それ以外はエラーとなります。
'R':参照モード
'U':更新モード
-
アクセスモード2,アクセスモード3,アクセスモード4
'△'を設定します。
-
排他モード1
排他モードを設定します。
アクセスモード1と排他モード1の組み合わせを次の表に示します。設定できない組み合わせはエラーとなります。
'E':排他モード
'S':共用モード
'O':占有モード
'N':無排他モード
表1‒13 アクセスモード1と排他モード1の組み合わせ 排他モード1
アクセスモード1
R
U
E
○
○
S
○
×
O
○
○
N
○
×
- (凡例)
-
○:指定可
×:指定不可
TAMデータベースに対する個別開始では,本オプションに'S'を指定した場合,SDBデータベース定義のTAMMODE句の指定によってデータページ(ページまたはサブページ)に対して排他を掛けないレコード検索(FTCH)要求ができます。この場合は,排他モード2で指定した値は無効となります。詳細は,マニュアル「HiRDB Version 9 構造型データベース機能」の「TAMのデータベースの無排他検索機能」を参照してください。
排他モード1として無排他モードを選択した場合,そのあとの参照系SDBデータベースアクセスで,他トランザクションの更新系SDBデータベースアクセスが更新仕掛かっているレコードを参照することがあります。この場合,参照系SDBデータベースアクセスは,sdh_nlocksqlerr_modeオペランドで指定された動作を行います。
また,無排他モードでの参照系SDBデータベースアクセスでは,ページ/サブページへの排他を掛けないで検索します。そのため,他トランザクションで更新系SDBデータベースアクセスを実行されると,検索成功時に返却する次の情報が不正となる場合があります。
・ステータスのUSERポインタ有無が不正。USERポインタのないレコードに対して「USERポインタあり」を返却,または,USERポインタのあるレコードに対して「USERポインタなし」を返却。
・検索成功時に返却するダイレクトアクセス情報,一連番号,および,移行用ダイレクトアクセス情報が不正。これらの情報を使用してレコード再検索を行うと,異なるレコードを検索,または,レコードなしによる検索失敗となる場合があります。
・終端検知の結果が不正。本来は「終端検知しなかった」と返却する状態でも,「終端検知した」と返却する場合があります。
-
排他モード2
排他の解放タイミングを設定します。本項目はアクセスモード1および排他モード1の値に関係なく動作します。
'C':同期点で解放(同期点まで排他制御を保持)します。
'D':レコード位置指示子が指さなくなったレコード実現値の格納ページに対する排他をSDBデータベースアクセス完了時に解放します。ただし,更新が発生した格納ページに対する排他は同期点まで解放しません。
-
排他モード3
排他競合時の処置を設定します。
'W':確保できるまで待ちます。
-
排他モード4
'△'を設定します。
-
データエリア形式
'△'を設定します。
-
店番限定有無
店群順アクセスまたはDAM順アクセスでの検索範囲を設定します。
FMB/DAMデータベースで有効です。店群構成でない場合は,'N'設定と同じ動作となります。
環境変数EESDHRDAOPT設定値を有効にする場合は'△'を設定します。
'M':指定したRDエリアを検索範囲とします。RDエリアの指定は,RDエリア名称格納エリアに設定してください。
'A':すべてのRDエリアを検索範囲とします。
'N':RDエリアを指定しません。
'△':環境変数EESDHRDAOPT設定値に従います。
-
順アクセス内基点条件オプション
店群順アクセスまたはDAM順アクセスで,検索範囲内の特定位置からアクセスを開始する場合に,基点となる条件の設定を有効とする場合に設定します。
基点となる条件は,FMBルートレコードおよびDAMの,指示コード'F'または当該レコードが読み込み済みでない場合の指示コード'N'設定の検索時に設定します。
本オプションを設定後,検索時に基点となる条件を指定しない場合は,検索範囲の先頭からアクセスを開始します。
'Y':条件を指定する
'N':条件を指定しない
'△':指示なし(条件を指定しない)
-
複数レコードの検索専用オプション
複数レコードの検索を使用するかどうかを設定します。
'D':ダイレクト(指定された検索条件の範囲を検索します。条件を満たす間だけ'N'で検索を継続し,条件を満たさなくなったらNOT FOUNDとなります。)
'S':シーケンシャル(指定された検索条件を「開始条件」と見なし,最初の1件目を位置づけます。そのあとは検索条件と関係なく,'N'を発行している間検索を継続します(検索終了は終端まで行くか,ユーザが検索をやめるまでです)。)
'N':指示なし(複数レコードの検索以外)
'△':指示なし(複数レコードの検索以外)
-
個別開始/終了一括要求オプション
'△'を指定します。
'△':指示なし
-
個別開始実行要求オプション
'△'を指定します。
'△':指示なし
-
オプションコード7,オプションコード8
'△'を設定します。
-
データベースアクセス用エントリリストアドレス
・要求コード1が'U'の場合
NULLを設定します。
-
システム構成表示エリアアドレス
NULLを設定します。
-
データベース名称サイズ指定
0を設定します。
-
データベース名称指定
すべてX'00'を設定します。
-
データベースキー指定エリアアドレス
NULLを設定します。
-
旧キー報告エリアアドレス
NULLを設定します。
-
RDエリア名称格納エリア
店群順アクセスまたはDAM順アクセスを行う場合,検索範囲となるRDエリア名称を格納したアドレスを設定します。
RDエリア名称を複数設定する場合は,「,」で区切ってください。
(例)
RDarea1,RDarea2
指定されたRDエリア名称の中に,RDエリア名称長が1〜30バイトでないRDエリア名称が存在した場合は,エラーとなります。個別開始するSDBに定義されていないRDエリア名称が含まれていた場合,そのRDエリア名称は無視します。すべてのRDエリア名称を無視した場合は,RDエリア名称が指定されていないものとして扱います。
指定しない場合はNULLを設定してください。
MAM/TAM/SAMの場合は設定値を無視します。
-
RDエリア名称格納エリアサイズ
RDエリア名称格納エリアの長さを設定します(単位:バイト)。
指定しない場合は0を設定してください。
MAM/TAM/SAMの場合は設定値を無視します。
表1‒14 RDエリア名称格納エリアサイズ 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
1
RDエリア名称格納エリアサイズ
○
○
×
×
×
- (凡例)
-
○:指定可
×:指定値を無視する
-
店番サイズ
0を設定します。
-
店番
すべてX'00'を設定します。
-
- flags
-
EENOFLAGSを設定します。
TP1/EEから値が返される引数
- ift_pt
-
インタフェースエリアの各項目に値が設定されています。
リターン値がEE_OKまたはEESDHER_DBACCESSの場合だけ参照可能です。
次に記載のない項目についてはTP1/FSPは値を設定しません。
- ヘッダ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SDHステータスコード
SDHステータスコードを設定します。
「1.4 SDHステータスコード一覧」を参照してください。
-
SQLCODE
SQLCODEを設定します。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
アクセス機能用インタフェースエリアアドレス
要求コード1の値によって設定する内容が異なります。
・要求コード1が'U'の場合
UAPが指定したインタフェースエリアの先頭アドレスを設定します。
-
暗黙的ロールバック有無
HiRDBでの暗黙的ロールバック有無を設定します。HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合は,'N'が設定されます。
'Y':暗黙的ロールバックが発生している
'N':暗黙的ロールバックが発生していない
-
- リターン値
-
リターン値
意味
EE_OK
正常に終了しました。
EECOMER_ENVIRON
TP1/EEの環境下にありません。
EECOMER_CNDUOC
UOCから発行しているため,この機能は使用できません。
EESDHER_ARGUMENT
引数に設定した値が間違っています。
-
インタフェースエリア(ift_pt)が不正(NULL)です。
EESDHER_CONDITION
発行条件が不正です。
-
TP1/FSPの環境下にありません。
-
SDBハンドラ機能が有効(sdh_use=Y)ではありません。
-
リソースマネジャが定義されていないか,リソースマネジャにHiRDBが定義されていません。
EESDHER_DBACCESS
構造型DBのアクセスに失敗しました。
詳細は「1.4 SDHステータスコード一覧」を参照してください。
-
(3) ee_sdh_accs
- 名称
-
データベースアクセス要求(検索/変更/格納/削除/複数レコードの検索)
- 形式
-
ANSI C,C++の形式
#include <eesdh.h> int ee_sdh_accs(EESDHIFT *ift_pt, EELONG flags); struct ee_sdh_interface_area_t { /*ヘッダ部 */ /*インタフェースエリア構成情報部*/ char sdhift_mgr_head_id[4]; /*ヘッダ識別子 */ EELONG sdhift_mgr_head_sz; /*ヘッダ部サイズ */ char sdhift_mgr_db_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhift_mgr_ift_sz; /*インタフェースエリア全体サイズ */ void *sdhift_mgr_ift_pt; /*自インタフェースエリアのテンプレートアドレス */ EELONG sdhift_mgr_entry_location; /*エントリ部先頭ロケーション */ EELONG sdhift_mgr_entry_sz; /*エントリ部サイズ */ EELONG sdhift_mgr_entry_num; /*エントリ部数 */ char yobi2[4]; /*予備 */ EELONG sdhift_mgr_key_advice_location; /*キー報告エリア部ロケーション */ EELONG sdhift_mgr_key_advice_sz; /*キー報告エリア部サイズ */ EELONG sdhift_mgr_component_location; /*構成要素情報表示部ロケーション */ EELONG sdhift_mgr_component_sz; /*構成要素情報表示部エントリサイズ */ char yobi3[40]; /*予備 */ short sdhift_mgr_db_name_sz; /*データベース名称サイズ */ char sdhift_mgr_db_name[30]; /*データベース名称 */ /*要求部*/ char sdhift_req_func_code[4]; /*機能コード */ char sdhift_req_req_code1; /*要求コード1 */ char sdhift_req_req_code2; /*要求コード2 */ char sdhift_req_req_code3; /*要求コード3 */ char sdhift_req_req_code4; /*要求コード4 */ char sdhift_req_access_mode1; /*アクセスモード1 */ char sdhift_req_access_mode2; /*アクセスモード2 */ char sdhift_req_access_mode3; /*アクセスモード3 */ char sdhift_req_access_mode4; /*アクセスモード4 */ char sdhift_req_exclusive_mode1; /*排他モード1 */ char sdhift_req_exclusive_mode2; /*排他モード2 */ char sdhift_req_exclusive_mode3; /*排他モード3 */ char sdhift_req_exclusive_mode4; /*排他モード4 */ char sdhift_req_data_area_format; /*データエリア形式 */ char sdhift_req_tb_cf_no; /*店番限定有無 */ char sdhift_req_base_condexp_opt; /*順アクセス内基点条件オプション */ char sdhift_req_fetchdb_all_opt; /*複数レコードの検索専用オプション */ char sdhift_req_option_code5; /*個別開始/終了一括要求オプション */ char sdhift_req_option_code6; /*個別開始実行要求オプション */ char sdhift_req_option_code7; /*オプションコード7 */ char sdhift_req_option_code8; /*オプションコード8 */ char yobi4[8]; /*予備 */ void *sdhift_req_entry_list_pt; /*データベースアクセス用エントリリストアドレス */ void *sdhift_req_refs_info_area_pt; /*システム構成表示エリアアドレス */ short sdhift_req_db_name_sz; /*データベース名称サイズ指定 */ char sdhift_req_db_name[30]; /*データベース名称指定 */ void *sdhift_req_dbkey_pt; /*データベースキー指定エリアアドレス */ void *sdhift_req_migure_key_advice; /* TP1/FSP領域 */ char yobi5[4]; /*予備 */ char yobi6[12]; /*予備 */ char *sdhift_req_rdarea_name_pt; /*RDエリア名称格納エリア */ EELONG sdhift_req_rdarea_name_sz; /*RDエリア名称格納エリアサイズ */ char yobi26[4]; /*予備 */ short sdhift_req_tb_sz; /*店番サイズ */ char sdhift_req_tb[14]; /*店番 */ char yobi7[240]; /*予備 */ /*結果部*/ char sdhift_rsp_return_code; /*リターンコード */ char sdhift_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhift_rsp_detail_code; /*詳細コード */ EELONG sdhift_rsp_err_code1; /*エラーコード1 */ EELONG sdhift_rsp_err_code2; /*エラーコード2 */ char sdhift_rsp_status_code[5]; /*SDHステータスコード */ char yobi9[1]; /*予備 */ char sdhift_rsp_rollback_flg; /*暗黙的ロールバック有無 */ char sdhift_rsp_strt_ex_flg; /*個別開始実行要求結果 */ EELONG64 sdhift_rsp_sql_code; /*SQLCODE */ char sdhift_rsp_ob[32]; /*障害情報 */ EESDHDBL *sdhift_rsp_data_base_list_pt; /*データベース名称リストアドレス */ void *sdhift_rsp_ift_pt; /*アクセス機能用インタフェースエリアアドレス */ EELONG sdhift_rsp_entry_location; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ void *sdhift_rsp_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ void *sdhift_rsp_sdhrdkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi11[152]; /*予備 */ /*定義情報部*/ EELONG sdhift_def_db_no; /* データベース番号 */ char sdhift_def_db_type; /*種別 */ char yobi12[3]; /*予備 */ char sdhift_def_fetch_pm; /*参照可否 */ char sdhift_def_modify_pm; /*変更可否 */ char sdhift_def_store_pm; /*格納可否 */ char sdhift_def_erase_pm; /*削除可否 */ char sdhift_def_all_erase_pm; /*一括削除可否 */ char sdhift_def_db_utl_pm; /*DB作成UTL追加可否 */ char sdhift_def_format_write_pm; /*フォーマットライト可否 */ char sdhift_def_tg_const; /*店群構成 */ char sdhift_def_req_mode1; /*リクエストモード1 */ char sdhift_def_req_mode2; /*リクエストモード2 */ char yobi13[2]; /*予備 */ char sdhift_def_hrnd_ac; /*階層ランダム/シーケンシャル */ char sdhift_def_usr_flno_o; /*ユーザファイル通番可否 */ char yobi14[2]; /*予備 */ EELONG sdhift_def_record_type_num; /*レコード種別数 */ char yobi15[4]; /*予備 */ EELONG sdhift_def_record_lv_key_num; /*レコード分割キー数 */ short sdhift_def_record_lv_key_location; /*レコード分割キーのロケーション */ short sdhift_def_record_lv_key_sz; /*レコード分割キーのサイズ */ EELONG sdhift_def_tb_type_num; /*RDエリア分割キー数 */ short sdhift_def_tb_lv_key_location; /*RDエリア分割キーのロケーション */ short sdhift_def_tb_lv_key_sz; /*RDエリア分割キーのサイズ */ EELONG sdhift_def_max_record_lv; /*最大階層レベル */ EELONG sdhift_def_migure_key_advice_max_sz; /* TP1/FSP領域 */ char yobi16[8]; /*予備 */ EELONG sdhift_def_logical_key_sz; /*全キー長(レベル2〜一連番号までの合計サイズ) */ EELONG sdhift_def_migure_cereal_no_sz; /* TP1/FSP領域 */ char yobi17[8]; /*予備 */ EELONG sdhift_def_dbkey_l2_ci; /*レベル2キー構成要素情報 */ EELONG sdhift_def_dbkey_l2_sz; /*レベル2論理キー長 */ EELONG sdhift_def_dbkey_l2_tc; /*レベル2論理キー種類数 */ char yobi18[4]; /*予備 */ EELONG sdhift_def_dbkey_l3_ci; /*レベル3キー構成要素情報 */ EELONG sdhift_def_dbkey_l3_sz; /*レベル3論理キー長 */ EELONG sdhift_def_dbkey_l3_tc; /*レベル3論理キー種類数 */ char yobi19[4]; /*予備 */ EELONG sdhift_def_dbkey_l4_ci; /*レベル4キー構成要素情報 */ EELONG sdhift_def_dbkey_l4_sz; /*レベル4論理キー長 */ EELONG sdhift_def_dbkey_l4_tc; /*レベル4論理キー種類数 */ char yobi20[4]; /*予備 */ EELONG sdhift_def_dbkey_l5_ci; /*レベル5キー構成要素情報 */ EELONG sdhift_def_dbkey_l5_sz; /*レベル5論理キー長 */ EELONG sdhift_def_dbkey_l5_tc; /*レベル5論理キー種類数 */ char yobi21[4]; /*予備 */ EELONG sdhift_def_dbkey_l6_ci; /*レベル6キー構成要素情報 */ EELONG sdhift_def_dbkey_l6_sz; /*レベル6論理キー長 */ EELONG sdhift_def_dbkey_l6_tc; /*レベル6論理キー種類数 */ char yobi22[4]; /*予備 */ EELONG sdhift_def_dbkey_l7_ci; /*レベル7キー構成要素情報 */ EELONG sdhift_def_dbkey_l7_sz; /*レベル7論理キー長 */ EELONG sdhift_def_dbkey_l7_tc; /*レベル7論理キー種類数 */ char yobi23[4]; /*予備 */ EELONG sdhift_def_sereal_no_ci; /*一連番号構成要素情報 */ EELONG sdhift_def_sereal_no_sz; /*一連番号サイズ */ char yobi24[8]; /*予備 */ EESDHRLKL *sdhift_def_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ EESDHRDKL *sdhift_def_sdhrlkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi25[48]; /*予備 */ char sdhift_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_t EESDHIFT; struct ee_sdh_interface_area_entry_t { /*エントリ部 */ /*インタフェースエリア構成情報部*/ char sdhifte_mgr_entry_id[4]; /*識別子 */ EELONG sdhifte_mgr_entry_sz; /*エントリ部サイズ */ char sdhifte_mgr_entry_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhifte_mgr_self_entry_location; /*インタフェースエリア内のエントリ部ロケーション */ EELONG sdhifte_mgr_compo_location; /*構成要素情報部ロケーション */ EELONG sdhifte_mgr_compo_num; /*構成要素情報エントリ数 */ char yobi2[72]; /*予備 */ short sdhifte_mgr_record_name_sz; /*レコード名称サイズ */ char sdhifte_mgr_record_name[30]; /*レコード名称 */ /*要求部*/ char sdhifte_req_req_code[4]; /*要求コード */ char sdhifte_req_as_code; /*指示コード */ char sdhifte_req_search_code; /*検索コード */ char sdhifte_req_cnd_code; /*条件コード */ char yobi3[1]; /*予備 */ char yobi4[8]; /*予備 */ char sdhifte_req_pointer_opt; /*ポインタオプション */ char sdhifte_req_lm_as_opt; /*一括オプション */ char sdhifte_req_status_adv_code; /*ステータス報告オプション */ char sdhifte_req_page_switch_opt; /*ページ切り替え */ char sdhifte_req_pctfree_opt; /*PCTFREE有効化 */ char sdhifte_req_2ndidx_susp; /*二次インデクス使用抑止オプション */ char sdhifte_req_option_code7; /*オプションコード7 */ char sdhifte_req_migure_info_flg; /* TP1/FSP領域 */ char yobi5[40]; /*予備 */ void *sdhifte_req_condexp_area_pt; /*条件式格納エリアアドレス */ void *sdhifte_req_compo_area_pt; /*構成要素指定エリアアドレス */ void *sdhifte_req_data_pt; /*データ格納エリアアドレス */ EELONG sdhifte_req_data_sz; /*データ格納エリアサイズ */ EELONG sdhifte_req_prepage_num; /*事前割り当て要求ページ数 */ char yobi6[56]; /*予備 */ char sdhifte_req_dbkey_l2[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_req_serial_no; /*一連番号 */ char sdhifte_req_direct[16]; /*ダイレクトアクセス情報 */ char yobi7[80]; /*予備 */ /*キー部*/ char sdhifte_key[256]; /*ユーザキー/論理キー格納エリアアドレス */ /*結果部*/ char sdhifte_rsp_return_code; /*リターンコード */ char sdhifte_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhifte_rsp_detail_code; /*詳細コード */ EELONG sdhifte_rsp_err_code1; /*エラーコード1 */ EELONG sdhifte_rsp_err_code2; /*エラーコード2 */ EELONG64 sdhifte_rsp_sql_code; /*SQLCODE */ char yobi9[8]; /*予備 */ char sdhifte_rsp_ob[32]; /*障害情報 */ EELONG sdhifte_rsp_record_sz; /*レコードサイズ */ EEULONG sdhifte_rsp_record_loc; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ EELONG sdhifte_rsp_prepage_num; /*事前割り当て済みページ数 */ char sdhifte_rsp_dbkey_l22[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_rsp_serial_no; /*一連番号 */ char sdhifte_rsp_direct[16]; /*ダイレクトアクセス情報 */ char yobi11[24]; /*予備 */ char sdhifte_rsp_bes_rearea[24]; /*BES,RDエリアに関する情報 */ char yobi12[40]; /*予備 */ char sdhifte_rsp_2ndidx; /*二次インデクス使用フラグ */ char sdhifte_rsp_status; /*ステータス */ short sdhifte_rsp_migure_record_sz; /* TP1/FSP領域 */ EELONG sdhifte_rsp_migure_direct_info; /* TP1/FSP領域 */ char yobi13[56]; /*予備 */ /*定義情報部*/ EELONG sdhifte_def_record_no; /*レコード番号 */ char sdhifte_def_db_type; /*種別 */ char yobi14[3]; /*予備 */ char sdhifte_def_fetch_pm; /*検索可否 */ char sdhifte_def_modify_pm; /*変更可否 */ char sdhifte_def_store_pm; /*格納可否 */ char sdhifte_def_erase_pm; /*削除可否 */ char sdhifte_def_all_erase_pm; /*一括削除可否 */ char sdhifte_def_compo_access_pm; /*構成要素指示可否 */ char yobi15[1]; /*予備 */ char sdhifte_def_tg_const; /*店群構成 */ char sdhifte_def_occurs_attr; /*オカレンス属性 */ char sdhifte_def_child_record_fl; /*子レコード有無 */ char sdhifte_def_user_pointer_fl; /*ユーザポインタ有無 */ char sdhifte_def_user_key_fl; /*ユーザキー有無 */ char yobi16[4]; /*予備 */ char sdhifte_def_req_mode1; /*リクエストモード1 */ char sdhifte_def_req_mode2; /*リクエストモード2 */ char yobi17[2]; /*予備 */ char sdhifte_def_hrnd_access; /*階層ランダム/シーケンシャル */ char sdhifte_def_usr_flno_pm; /*ユーザファイル通番取得可否 */ char yobi18[2]; /*予備 */ EELONG sdhifte_def_self_record_id_sz; /*自身のレコード識別コード長 */ char sdhifte_def_self_record_id[4]; /*自身のレコード識別コード */ EELONG sdhifte_def_self_record_no; /*レコード型番号 */ EELONG sdhifte_def_parent_record_no; /*親のレコード型番号 */ EELONG sdhifte_def_record_lv; /*レコードレベル番号 */ char yobi19[4]; /*予備 */ EELONG sdhifte_def_user_record_sz; /*ユーザレコードサイズ */ EELONG sdhifte_def_usr_flno_sz; /*ユーザレコード通番部サイズ */ EELONG sdhifte_def_public_component_num; /*公開構成要素数 */ EELONG sdhifte_def_sereal_no_min; /*一連番号最小値 */ EELONG sdhifte_def_sereal_no_max; /*一連番号最大値 */ char yobi20[52]; /*予備 */ char sdhifte_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_entry_t EESDHIFT_ENT; struct ee_sdh_key_advice_size_t { /*キー報告エリア部 */ short sdhiftkh_K1; /*K1 */ short sdhiftkh_K2; /*K2 */ short sdhiftkh_K3; /*K3 */ short sdhiftkh_K4; /*K4 */ short sdhiftkh_K5; /*K5 */ short sdhiftkh_K6; /*K6 */ short sdhiftkh_K7; /*K7 */ short sdhiftkh_K8; /*K8 */ short sdhiftkh_K9; /*K9 */ short sdhiftkh_K10; /*K10 */ short sdhiftkh_K11; /*K11 */ short sdhiftkh_K12; /*K12 */ short sdhiftkh_K13; /*K13 */ short sdhiftkh_K14; /*K14 */ short sdhiftkh_K15; /*K15 */ short yobi; /*予備 */ }; typedef struct ee_sdh_key_advice_size_t EESDHIFTKH; struct ee_sdh_interface_area_component_t { /*構成要素情報部 */ char sdhiftc_compo_id[4]; /*識別記号 */ EELONG sdhiftc_compo_no; /*構成要素番号 */ short sdhiftc_compo_name_sz; /*構成要素名称サイズ */ char sdhiftc_compo_name[30]; /*構成要素名称 */ char sdhiftc_data_attr; /*データ属性 */ char sdhiftc_compo_attr1; /*構成要素属性 */ char sdhiftc_compo_attr2; /*構成要素属性 */ char yobi1[1]; /*予備 */ EELONG sdhiftc_compo_loc; /*ロケーション */ EELONG sdhiftc_compo_sz; /*構成要素サイズ */ char sdhiftc_usr_info[2]; /*ユーザ情報 */ char yobi2[10]; /*予備 */ }; typedef struct ee_sdh_interface_area_component_t EESDHIFT_COMP; struct ee_sdh_entry_list_t { /*データベースアクセス用エントリリスト */ short sdhentl_entry_num; /*エントリ数 */ char sdhentl_data_type; /*アドレス種別 */ char yobi[5]; /*予備 */ }; typedef struct ee_sdh_entry_list_t EESDHENTL;
- 機能
-
インタフェースエリアに指定されたデータベースの単一レコードまたは複数レコードに対してアクセス(検索/変更/格納/削除/複数レコードの検索)します。
レコードにアクセスする場合は,各レコードに対応したインタフェースエリア(エントリ部)のエントリに要求を設定することでアクセスできます。一度の呼び出しで複数レコードに対してアクセスすることも可能です。ただし,同一要求(変更+変更など)だけ可能です。異なる要求(変更+格納など)を行った場合はエラーとなります。レコードとインタフェースエリアのエントリの対応を次の図に示します。
UAPは,ee_sdh_strtに設定したインタフェースエリアをift_ptに設定してください。また,格納,変更,および削除を行う場合は,ee_sdh_strt発行時にインタフェースエリア(ヘッダ部)のアクセスモード1を'U'に設定したインタフェースエリアを用いてください。
検索を行う場合,かつ,個別開始/終了一括要求オプションに'Y'を指定する場合は,ee_sdh_strtの記述を参照し,インタフェースエリアをift_ptに指定してください。この場合,ee_sdh_strt発行済みのインタフェースエリアを指定した場合はエラーとなります。
個別開始実行要求オプションに'Y'を指定する場合は,ee_sdh_strtの記述を参照し,インタフェースエリアをift_ptに指定してください。ee_sdh_strt発行済みだった場合,個別開始実行要求オプションは無視します。
図1‒11 レコードとインタフェースエリアのエントリの対応 それぞれのアクセスに関する注意点を次に示します。
特定のデータベースでだけサポートしている機能を,未サポートのほかのデータベースに要求した場合はエラーになります。
-
検索
要求されたレコードを検索します。検索では,条件に合致した最初のレコードを返します。検索に条件を付与する場合,条件式格納エリアを確保し条件を設定することで有効となります。また,特定の構成要素にアクセスする場合は構成要素指定エリアを確保し,対象となる構成要素名称または番号を設定してください。FMBデータベースの子レコードを検索する場合は,親レコードが検索されている,または同時に検索要求している必要があります。
-
変更
検索済みのレコードを変更します。検索済みであれば,複数エントリを選択できます。変更データは,データ格納エリアに設定してください。USERポインタだけ変更する場合はデータ格納エリアにNULLを設定してください。
なお,ユーザキーは変更はできません。
-
格納
指定されたデータを格納します。格納データは,データ格納エリアに設定してください。FMBデータベースの場合,格納する個所の親レコードが検索済みまたは格納済みである必要があります。
ユーザキーが定義されているMAM/TAMデータベースに格納する場合,格納するユーザキーはLASTポインタが示すレコードのユーザキーより大きな値を設定してください。LASTポインタが示すレコードのユーザキーより小さい場合や同じ場合はエラーとなります。
-
削除
検索済みのレコードを削除します。検索済みであれば,複数エントリを選択できます。
FMBデータベースの場合,指定レコードおよび指定レコードの子レコードを削除する方法と,最下位レコードをすべて削除する方法があります。最下位レコードをすべて削除する場合は,最下位レコードのどれかのレコードを検索して行う必要があります。
USERポインタの示すレコードの削除時は,USERポインタは解除されます。
-
複数レコードの検索
要求されたレコードを検索します。複数レコードの検索では,条件に合致したルートレコード以下のすべてのレコードを返します。検索に条件を付与する場合,条件式格納エリアを確保し条件を設定することで有効となります。
なお,複数レコードの検索が行えるのは,FMBデータベースの場合だけです。また,個別開始を行う場合に専用オプションを指定する必要があり,DBアクセス時のインタフェースエリアエントリ部は,ルートエントリに設定します。
DAM/MAM/TAM/SAMデータベースに対して,レコードを特定しないでにアクセスすることをデータベース名称指定アクセスといいます。データベース名称指定アクセスを行う場合は,先頭エントリ(DB対応エントリ)に要求コードを設定してください。データベース名称指定アクセスは検索,変更および格納の場合に行うことができます。検索後に変更する場合は,検索および変更の両方の要求でDB対応エントリを使用してください。
FMBデータベースの場合は,データベース名称指定アクセスはできません。そのため,DB対応エントリに設定した場合はエラーになります。
-
UAPで値を設定する引数
- ift_pt
-
インタフェースエリアを設定します。
要求時に次の項目を設定してください。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
- ヘッダ部−要求部
-
-
機能コード
データベースアクセス要求を示す機能コードを設定します。
'ACCS':データベースアクセス要求
-
要求コード1
インタフェースエリアの確保方法を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの要求コード1の記載内容を参照し,値を設定してください。
-
要求コード2,要求コード3,要求コード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの要求コード2,要求コード3,要求コード4の記載内容を参照し,値を設定してください。
-
アクセスモード1
アクセスモードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのアクセスモード1の記載内容を参照し,値を設定してください。
-
アクセスモード2,アクセスモード3,アクセスモード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのアクセスモード2,アクセスモード3,アクセスモード4の記載内容を参照し,値を設定してください。
-
排他モード1
排他モードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード1の記載内容を参照し,値を設定してください。
-
排他モード2
排他の解放タイミングを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード2の記載内容を参照し,値を設定してください。
-
排他モード3
排他競合時の処置を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード3の記載内容を参照し,値を設定してください。
-
排他モード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード4の記載内容を参照し,値を設定してください。
-
データエリア形式
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのデータエリア形式の記載内容を参照し,値を設定してください。
-
店番限定有無
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの店番限定有無の記載内容を参照し,値を設定してください。
-
順アクセス内基点条件オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの順アクセス内基点条件オプションの記載内容を参照し,値を設定してください。
-
複数レコードの検索専用オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの複数レコードの検索専用オプションの記載内容を参照し,値を設定してください。
-
個別開始/終了一括要求オプション
レコードの検索要求の処理の中で個別開始と個別終了を一括で行うかどうかを設定します。
要求コードに'FTCH'を指定している場合
'Y':レコードの検索要求の処理の中で個別開始と個別終了を実行
'N':指示なし
'△':指示なし
要求コードが'FTCH'以外の場合
'△'を設定してください。
'△':指示なし
-
個別開始実行要求オプション
DBアクセスの処理の中で個別開始をするかどうかを指定します。個別開始済みの場合,本オプション指定値は無視します。本オプション,および個別開始/終了一括要求オプションの両方に'Y'を指定した場合はエラーとなります。
'Y':DBアクセスの処理の中で個別開始を実行する
'N':指示なし
'△':指示なし
-
オプションコード7,オプションコード8
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのオプションコード7,オプションコード8の記載内容を参照し,値を設定してください。
-
データベースアクセス用エントリリスト
アクセスするエントリのアドレス一覧を格納したデータベースアクセス用エントリリストアドレスを設定します。
エントリ数には,エントリアドレスを設定した領域の数を設定し,アドレス種別には'A'を設定してください。1つのエントリアドレスは一度だけ設定可能です。複数回設定した場合はエラーになります。エントリアドレスにはNULLを設定可能です。NULLの場合はスキップして次のエントリアドレスを処理します。ただし,エントリアドレスすべてがNULLの場合はエラーとなります。
指定しない場合,TP1/FSPはインタフェースエリア内の全エントリをサーチし,要求コードが設定されているエントリを処理します。予備にはすべてX'00'を設定してください。
エントリリストの詳細を次の図に示します。
図1‒12 データベースアクセス用エントリリスト -
システム構成表示エリアアドレス
NULLを設定します。
-
データベース名称サイズ指定
0を設定します。
-
データベース名称指定
すべてX'00'を設定します。
-
データベースキー指定エリアアドレス
NULLを設定します。
-
旧キー報告エリアアドレス
NULLを設定します。
-
RDエリア名称格納エリア
NULLを設定します。
ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのRDエリア名称格納エリアの記載内容を参照し,値を設定してください。
-
RDエリア名称格納エリアサイズ
0を設定します。
ただし,個別開始/終了一括要求オプションに'Y'を指定している場合,または個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのRDエリア名称格納エリアサイズの記載内容を参照し,値を設定してください。
-
店番サイズ
0を設定します。
-
店番
すべてX'00'を設定します。
-
- エントリ部−要求部
-
表1‒15 インタフェースエリアエントリ部 項番
項目内容
検索
変更
格納
削除
複数レコードの検索
1
要求コード
◎
◎
◎
◎
◎
2
指示コード
◎
□
×
□
◎
3
検索コード
◎
□
○
□
◎
4
条件コード
◎
◎
◎
◎
◎
5
ポインタオプション
×
◎
◎
×
×
6
一括オプション
○
○
○
○
○
7
ステータス報告オプション
◎
◎
◎
◎
◎
8
ページ切り替え
×
×
○
×
×
9
PCTFREE有効化
×
×
○
×
×
10
二次インデクス使用抑止オプション
○
×
×
×
×
11
オプションコード7
×
×
×
×
×
12
条件式格納エリアアドレス※1
○
×
×
×
○
13
構成要素指定エリアアドレス
○
×
×
×
×
14
データ格納エリアアドレス
○
○
◎
×
◎
15
データ格納エリアサイズ
○
○
◎
×
◎
16
一連番号※2※3
○
×
×
×
×
17
ダイレクトアクセス情報※4
○
×
×
×
×
18
キー格納エリア※5※6
○
×
○
×
○
19
事前割り当て要求ページ数
×
×
○
×
×
- (凡例)
-
◎:設定必須
○:指定可能(指定しない場合は,指示なしの値を指定すること)
×:'△'またはX'00'を指定
□:検索要求時に指定した値をそのまま変更すること
- 注※1
-
条件コードが'C'の場合に設定する。
- 注※2
-
条件コードが'D'の場合に設定する。
- 注※3
-
条件コードが'S'の場合に設定する。
- 注※4
-
条件コードが'R'の場合に設定する。
- 注※5
-
条件コードが'K'の場合に設定する。
- 注※6
-
条件コードが'U'の場合に設定する。
- 検索
-
対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
検索要求を示す要求コードを設定します。
'FTCH':検索します。
-
指示コード
検索の基点を設定します。
指示コードだけを設定された場合は,指示コードに従った基点のデータを返却します。指示コード以外の条件式などが設定された場合は,基点から検索を開始します。
'F':先頭(FIRSTポインタ)を基点として検索します。
'L':最後(LASTポインタ)を基点として検索します。
'N':次(NEXTポインタ)を基点として検索します。当該レコードが読み込み済みでない場合は'F'指定と同じになります。
'U':USERポインタを基点として検索します。
'P':1つ前(PRIORポインタ)を基点として検索します。当該レコードが読み込み済みでない場合は'L'指定と同じになります。
-
検索コード
検索の方向を設定します。
昇順/降順の順序性の基準は,ユーザキーを持つ場合はユーザキー,持たない場合は一連番号です。
指示コードと検索コードの設定可能な組み合わせを次の表に示します。
'N':キーの昇順に検索します。
'P':キーの降順に検索します。
表1‒16 指示コードと検索コードの組み合わせ 指示
コード
DB種別と検索コード
FMB
DAM
MAM
TAM
SAM
ルート
子
'N'
'P'
'N'
'P'
'N'
'P'
'N'
'P'
'N'
'P'
'N'
'P'
'F'
○
×
○
×
○
×
○
×
○
×
○
×
'L'
×
×
×
○
×
×
×
○
×
×
×
×
'N'
○
×
○
×
○
×
○
×
×
×
○
×
'U'
×
×
○
○
×
×
×
×
×
×
×
×
'P'
×
×
×
○
×
×
×
○
×
×
×
×
- (凡例)
-
○:指定可
×:指定不可
-
条件コード
検索条件の設定方法を設定します。
'K':条件キーとして,DBKEYを指定します。このコードを指定した場合,条件式は指定できません。
'C':条件式を指定します。このコードを指定した場合,必ず条件式を指定する必要があります。
'U':条件キーとして,ユーザキーを指定します。このコードを指定した場合,条件式は指定できません。
'S':条件キーとして,一連番号を指定します。このコードを指定した場合,条件式は指定できません。
'R':ダイレクトアクセス情報を指定します。FMBデータベースの子レコードに指示できます。FMBデータベースのルートレコード,DAM/MAM/SAM/TAMデータベースには指示できません。このコードを指定した場合,条件式は指定できません。また,指示コード,検索コードは無効となります。
'N':条件を指定しません。
表1‒17 条件コードの指定可否 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
条件コード
K
○
×
○
○
○
○
2
U※1
×
○
×
○
○
×
3
S※1
×
○
○
○
○
○
4
C※2
○
○
○
○
○
○
5
R※1
×
○
×
×
×
×
6
N
○
○
○
○
×
○
- (凡例)
-
○:指定可
×:指定不可
- 注※1
-
DB対応エントリには指定できません。
- 注※2
-
DB対応エントリに指定する場合は,キーの条件だけ指定できます。キー以外の条件を指定した場合はエラーになります。
-
ポインタオプション
'△'を設定します。
-
一括オプション
'△'または'S'を設定します。
'S':単一レコードの検索であることを指示します。
'△':指示しません(単一レコードの検索であることを指示します)。
-
ステータス報告オプション
ステータスおよびダイレクトアクセス情報,一連番号の取得有無を設定します。
'Y'を設定します。
-
ページ切り替え
'△'を設定します。
-
PCTFREE有効化
'△'を設定します。
-
二次インデクス使用抑止オプション
二次インデクスの使用を抑止するかどうかを設定します。
'Y':二次インデクスが使用可能な場合でもポインタ検索を行います(DB種別や指示コードによって使用可否が異なります。使用不可の場合はDBアクセスがエラーとなります。詳細はマニュアル「HiRDB Version 9 構造型データベース機能」の「二次インデクス」の「子レコード検索時の二次インデクスの使用有無」を参照してください)。
'N':指示なし(二次インデクスが使用可能であれば使用して検索を行います)。
'△':指示なし(二次インデクスが使用可能であれば使用して検索を行います)。
-
オプションコード7
'△'を設定します。
-
条件式格納エリアアドレス
条件式を設定する(条件コードが'C')場合は,条件式格納エリアを確保し条件を設定後,そのアドレスを設定します。条件式格納エリアの詳細を次の図に示します。条件コードが'C'以外の場合,設定値を無視します。
設定しない場合は,NULLを設定します。
図1‒13 条件式格納エリア 表1‒18 条件式格納エリア内容 項番
分類
説明
1
識別記号
*FDN:構成要素名称を指定します。
2
構成要素名称
キーの条件を指定する場合は,'DBKEY△△△'を指定します。※1 ※2
キーの条件は2個まで指定できます。※1 ※2
キーの条件を2個指定する場合は範囲指定(例:3<=X<=7)となるように指定してください。※1 ※2
3
キー以外の条件の場合は,SDBデータベース定義で定義した構成要素名称を指定します。指定する構成要素名称が8バイト未満である場合は,残りを'△'で埋めてください。※1 ※3
キー以外の条件に指定する構成要素名称には,基本項目の構成要素だけ指定できます。集団項目の構成要素は指定できません。また,存在しない構成要素名称を指定した場合はエラーになります。
キー以外の条件は8個まで指定できます。ただし,キーの条件を含めて8個までしか指定できません。
4
比較記号
'GT'or'>△':大きい
'GE'or'>=':大きいか等しい
'LT'or'<△':小さい
'LE'or'<=':小さいか等しい
'EQ'or'△=:等しい
'NE'or'^=':等しくない(キーの条件では指定できません)
5
論理式
条件式と条件式の間に指定します。条件式が1つの場合は指定できません。
'+'or'|':論理和(キーの条件では指定できません)
'*'or'&':論理積
6
接続記号
'-'or'_'
7
値
構成要素の値を格納します。※2
値のサイズは,SDBデータベース定義の構成要素定義で指定したサイズです。
8
終了記号
'.'
- 注※1
-
条件式は,キーの条件,キー以外の条件の順序で指定します。
キーの条件とキー以外の条件を組み合わせて指定する場合は,次の点に注意してください。
・キーの条件は,キー以外の条件より優先順位が高い
(例)
「キーの条件1&キーの条件2&キー以外の条件A|キー以外の条件B」を設定した場合,「(キーの条件1&キーの条件2)&(キー以外の条件A|キー以外の条件B)」と解釈します。
- 注※2
-
MAMデータベースで構成要素名称に'%ENTRY△△'を設定して検索する場合は,値に一連番号だけを設定してください。
- 注※3
-
ユーザキーは,キー以外の条件として扱います。キーの条件とユーザキーの条件は同時に指定できません。
-
構成要素指定エリアアドレス
レコード内の特定構成要素にアクセス(構成要素アクセス)する場合に設定します。構成要素指定エリアを確保し,アクセスする構成要素名称または構成要素番号を設定後,そのアドレスを設定します。
構成要素名称には,ユーザデータの基本項目の構成要素,ユーザキーおよびユーザファイル通番を設定可能です。DBKEYおよびユーザデータの集団項目の構成要素は設定できません。
構成要素番号はインタフェースエリアの構成要素情報部の構成要素番号を設定してください。その際,構成要素番号は昇順で設定します。DBKEYおよびユーザキーを表す番号は設定できません。
存在しない構成要素名称および構成要素番号を設定した場合はエラーになります。また,構成要素名称および構成要素番号は,重複して設定できません。
設定しない場合は,レコードの全構成要素のデータを取得します。構成要素アクセスは,DAM/MAM/TAMデータベースに対して設定可能です。FMB/SAMデータベースに対して設定した場合はエラーとなります。また,DB対応エントリを使用かつ条件コード'N'の場合は設定できません。構成要素指定エリアの詳細を次の図に示します。予備にはすべてX'00'を設定してください。
設定しない場合は,NULLを設定します。
表1‒19 構成要素指定エリアアドレスの指定可否 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
構成要素指定エリアアドレス※
×
×
○
○
○
×
- (凡例)
-
○:指定可
×:指定不可
- 注※
-
DB対応エントリを使用かつ条件コード'N'または条件コード'C'の場合には指定できません。
図1‒14 構成要素名称指定と構成要素番号指定 -
データ格納エリアアドレス
検索したデータを格納するエリアのアドレスを設定します。データ格納エリアのサイズは,データ格納エリアサイズに設定してください。検索データの格納が不要の場合は,NULLを設定します。ただし,構成要素アクセスする場合は,必ずデータ格納エリアを設定します。
-
データ格納エリアサイズ
データ格納エリアの長さを設定します(単位:バイト)。検索データサイズより設定値が小さい場合はエラーとなります。
検索データの格納が不要の場合は,0を設定します。ただし,構成要素アクセスする場合は,必ずデータ格納エリアを設定します。
-
一連番号
条件式を用いないで一連番号を直接設定する(条件コードが'S'または'D')場合に検索要求する一連番号を設定します。1〜nの値を設定してください。条件コードが'S'または'D'以外の場合,設定値を無視します。
-
ダイレクトアクセス情報
すでに検索済みのレコードを再度検索する(条件コードが'R')場合に,前回の検索時に報告したダイレクトアクセス情報を設定します。条件コードが'R'以外の場合,設定値を無視します。
-
キー格納エリア
条件式を用いないでDBKEYまたはユーザキーを直接設定する(条件コードが'K'または'U')場合に検索要求するキーを設定します。条件コードが'K'または'U'以外の場合,設定値を無視します。
-
- 変更
-
対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
変更要求を示す要求コードを設定します。
'MODF':変更します。
-
指示コード
検索の基点を設定します。
ee_sdh_accsの検索要求時に設定した値をそのまま設定します。
-
検索コード
検索の方向を設定します。
ee_sdh_accsの検索要求時に設定した値をそのまま設定します。
-
条件コード
変更データの位置づけ方法(位置づけるための検索方法)を設定します。
検索済みのレコードを変更する場合は,'N'を設定します。
'N':条件を指定しません。検索要求で位置づけたレコードを変更します。
-
ポインタオプション
USERポインタを操作する場合に設定します。
本機能は,FMBデータベースの子レコードに対して有効となります。SDBデータベース定義でFMBの子レコードにUSERポインタの定義がない場合は設定値を無視します。
DAM/MAM/TAM/SAMデータベースとFMBデータベースのルートレコードの場合は'N'を設定します。
'U':ほかのレコードに設定されているUSERポインタを解消して,当該レコードにUSERポインタを設定します。
'C':当該レコードに設定されているUSERポインタを解消します。
'N':USERポインタを変更しません。
表1‒20 ポインタオプションの指定可否 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
ポインタオプション
U
×
○
×
×
×
×
2
C
×
○
×
×
×
×
3
N
○
○
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
-
一括オプション
'S':単一レコードの変更であることを指示します。
'△':指示なし(単一レコードの変更であることを指示します)。
-
ステータス報告オプション
ステータスおよびダイレクトアクセス情報,一連番号の取得有無を設定します。
'N'を設定します。
-
ページ切り替え
'△'を設定します。
-
PCTFREE有効化
'△'を設定します。
-
二次インデクス使用抑止オプション
'△'を設定します。
-
オプションコード7
ee_sdh_accsの検索要求時に設定した値をそのまま設定します。
-
条件式格納エリアアドレス
NULLを設定します。
-
構成要素指定エリアアドレス
NULLを設定します。
NULLは直前の検索時にアクセスした構成要素を変更するという意味です。
-
データ格納エリアアドレス
変更データを格納したエリアのアドレスを設定します。
データ格納エリアのサイズは,データ格納エリアサイズに設定します。
SDBデータベース定義でUSERポインタを保持する定義を行ったレコードに対して,USERポインタの操作だけを行う場合は,NULLを設定します。定義がない場合やUSERポインタを変更しない場合にNULLを設定するとエラーになります。
-
データ格納エリアサイズ
データ格納エリアの長さを設定します。
変更データサイズより設定値が小さい場合エラーとなります。変更データサイズより設定値が大きい場合は,後部を無視します。
SDBデータベース定義でUSERポインタを保持する定義を行ったレコードに対して,USERポインタの操作だけを行う場合は,0を設定します。定義がない場合やUSERポインタを変更しない場合に0を設定するとエラーになります。
-
事前割り当て要求ページ数
0を指定します。
-
一連番号
0を設定します。
-
ダイレクトアクセス情報
すべてX'00'を設定します。
-
キー格納エリア
すべてX'00'を設定します。
-
- 格納
-
対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
格納要求を示す要求コードを設定します。
'STOR':格納します。
-
指示コード
格納位置を設定します。
'△':指示なし(SDBデータベース定義に基づいて格納位置を決定します)
-
検索コード
格納位置を決定するために内部的な検索が発生する場合に,内部的な検索の方向を設定します。キーとは,ユーザキーを持つ場合はユーザキー,持たない場合は一連番号です。
'N':キーの昇順に検索します。
'P':キーの降順に検索します。
'△':指示なし
-
条件コード
格納条件の指定方法を設定します。
'K':条件キーとして,DBKEY(一連番号を含まない部分)を指定します。SDBデータベース定義で一連番号だけ定義したデータベースに要求する場合は,キー格納エリアへの設定は不要です。
'N':条件を指定しません。
表1‒21 条件コードの指定可否 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
条件コード
K
○
×
○
○
○
○
2
N
×
○
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
-
ポインタオプション
USERポインタを操作する場合に設定します。
本機能は,FMBデータベースの子レコードに対して有効となります。SDBデータベース定義でFMBの子レコードにUSERポインタの定義がない場合は設定値を無視します。
DAM/MAM/TAM/SAMデータベースとFMBデータベースのルートレコードの場合は'N'を設定します。
'U':ほかのレコードに設定されているUSERポインタを解消して,当該レコードにUSERポインタを設定します。
'N':USERポインタを変更しません。
表1‒22 ポインタオプションの指定可否 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
ポインタオプション
U
×
○
×
×
×
×
2
N
○
○
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
-
一括オプション
'△'または'S'を設定します。
'S':単一レコードの格納であることを指示します。
'△':指示なし(単一レコードの格納であることを指示します)。
-
ステータス報告オプション
'Y'を設定します。
-
ページ切り替え
レコード格納時にページの切り替えをする場合に設定します。
レコードに対するアクセス時の排他をページ単位で分散させたい場合は,'C'/'O'を設定します。それ以外は'N'/'△'を設定します。
適用基準を次の表に示します。
'C':レコード格納時にページを切り替え,空きページを確保します。確保したページに対するほかのレコードの格納は可能です。
'O':レコード格納時にページを切り替え,空きページを確保します。確保したページは格納レコードで占有し,ほかのレコードを格納しません。
'N':ページの切り替えは行いません。
'△':指示なし(ページの切り替えは行いません)。
表1‒23 ページ切り替えの適用基準 項番
DB種別
適用基準
1
FMB
ルートレコード格納ページの排他によって,配下の子レコードのアクセスをシリアライズするため,'C'/'O'指定は効果がなく,'N'を推奨します。
2
DAM/
MAM/
TAM/
SAM
一連番号なし
各レコードの格納件数は1件だけであるため,'C'/'O'指定に効果がなく,'N'を推奨します。
3
一連番号あり
参照だけ行う場合や他トランザクションが存在しない状態で単独で更新処理を実行する場合などは,'N'を推奨します。
上記以外では,'C'/'O'を推奨します。
-
PCTFREE有効化
SDB格納データベース定義のPCTFREEを有効にする場合に設定します。
ページ内に格納するレコード件数に上限を付け,ページ排他の影響範囲を局所化したい場合には,PCTFREE有効化を推奨します。
適用基準を次の表に示します。
'Y':レコード格納時にSDB格納データベース定義のPCTFREEで指定したページ内未使用領域比率を有効にします。
'N':レコード格納時にSDB格納データベース定義のPCTFREEで指定したページ内未使用領域比率を有効にしません。
'△':指示なし(SDB格納データベース定義のPCTFREEで指定したページ内未使用領域比率を有効にします)。
表1‒24 PCTFREEの適用基準 項番
DB種別
適用基準
1
FMB
ルートレコード格納ページの排他によって,配下の子レコードのアクセスをシリアライズするため,'Y'指定は効果がありません。
2
DAM/
MAM/
TAM/
SAM
一連番号なし
各レコードは1件だけであるため,'Y'指定は効果がありません。
3
一連番号あり
ページ内に格納するレコード件数に上限を付け,ページ排他の影響範囲を局所化したい場合には,PCTFREEを有効化してください。
-
二次インデクス使用抑止オプション
'△'を設定します。
-
オプションコード7
ee_sdh_accsの検索要求時に設定した値をそのまま設定するか,または,'△'を設定します。
-
条件式格納エリアアドレス
NULLを設定します。
-
構成要素指定エリアアドレス
NULLを設定します。
-
データ格納エリアアドレス
格納するデータを格納するエリアのアドレスを設定します。
データ格納エリアのサイズは,データ格納エリアサイズに設定します。
-
データ格納エリアサイズ
データ格納エリアの長さを設定します(単位:バイト)。
格納データサイズより設定値が小さい場合はエラーになります。格納データサイズより設定値が大きい場合は,後部を無視します。
-
事前割り当て要求ページ数
事前ページ割り当て機能を使用する場合,割り当てページ数を1〜2,147,483,647の範囲で指定します。事前ページ割り当て機能を使用しない場合,0を指定してください。
-
一連番号
0を設定します。
-
ダイレクトアクセス情報
すべてX'00'を設定します。
-
キー格納エリア
DBKEYを直接指定する(条件コードが'K')場合に格納要求するDBKEY(一連番号を含まない部分)を格納します。SDBデータベース定義で一連番号だけ定義したデータベースに要求する場合は,キー格納エリアへの設定は不要です。条件コードが'K'以外の場合,設定値を無視します。
-
- 削除
-
対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
削除要求を示す要求コードを設定します。
'ERAS':削除します。
-
指示コード
ee_sdh_accsの検索要求時に設定した値をそのまま設定します。
-
検索コード
ee_sdh_accsの検索要求時に設定した値をそのまま設定します。
-
条件コード
'N'を設定します。
-
ポインタオプション
'△'を設定します。
-
一括オプション
FMBデータベースの最下位レコードを一括削除する場合に設定します。最下位レコードでない場合はエラーとなります。
FMBで一括削除を行う場合,最下位レコードのどれかのレコードを検索しておいてください。
DAM/MAM/TAM/SAMの場合は,'S'または'△'を設定します。
'O':一括削除であることを指示します。
'S':単一レコードの削除であることを指示します。
'△':単一レコードの削除であることを指示します。
-
ステータス報告オプション
ステータスおよびダイレクトアクセス情報,一連番号の取得有無を設定します。
'N'を指定してください。
'N':取得しません(既存の値を変更しません)。
-
ページ切り替え
'△'を設定します。
-
PCTFREE有効化
'△'を設定します。
-
二次インデクス使用抑止オプション
'△'を設定します。
-
オプションコード7
ee_sdh_accsの検索要求時に設定した値をそのまま設定します。
-
条件式格納エリアアドレス
NULLを設定します。
-
構成要素指定エリアアドレス
NULLを設定します。
-
データ格納エリアアドレス
NULLを設定します。
-
データ格納エリアサイズ
X'00'を設定します。
-
事前割り当て要求ページ数
0を指定します。
-
一連番号
X'00'を設定します。
-
ダイレクトアクセス情報
すべてX'00'を設定します。
-
キー格納エリア
すべてX'00'を設定します。
-
- 複数レコードの検索
-
ルートレコードのエントリに次の値を設定します。指定可能な値以外を指定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
複数レコードの検索要求を示す要求コードを設定します。
'FTCA':複数レコードを検索します。
-
指示コード
検索の基点を設定します。
'F':検索範囲の最小キーのルートレコードから検索を開始します。条件式を指定していない場合は,すべてのレコードが検索対象となります。
'N':前回検索したレコードの次のレコードから検索を開始します。検索範囲は,'F'で指定した内容を引き継ぐため,条件式を指定しても無視します。
'S':前回の検索したルートレコード下のレコードの検索状態に関係なく,次のルートレコードから検索を開始します。検索範囲は,'F'で指定した内容を引き継ぐため,条件式を指定しても無視します。
表1‒25 指示コードの指定可否 項番
状態※
次要求
指示コード
動作
1
複数レコードの検索 実行中でない
'F'
条件式に従って検索を開始する
2
'N'
エラー
3
'S'
エラー
4
複数レコードの検索 実行中
'F'
条件式に従って新たな検索を開始する
5
'N'
次のレコードから検索を継続する
6
'S'
次のルートレコードから検索を継続する
- 注※
-
「複数レコードの検索 実行中」とは,複数レコードの検索の'F'指定で検索を開始してから,NOT FOUNDとなるまでの間です。
複数レコードの検索開始前,もしくは非ロールバックエラー発生直後は「複数レコードの検索 実行中」ではありません。
-
検索コード
'△'を設定します。
-
条件コード
検索条件の指定方法を設定します。ただし,指示コードに'N'または'S'を指定した場合は,条件コードに'K'を指定している場合でも,条件キーは無視されます。また,条件コードに'C'を指定している場合も,条件式は無視されます。
'K':条件キーとして,DBKEYを指定します。このコードを指定した場合,条件式は指定できません。
'C':条件式を指定します。このコードを指定した場合,必ず条件式を指定してください。
'N':条件を指定しません。
-
ポインタオプション
'△'を設定します。
-
一括オプション
'△'を設定します。
-
ステータス報告オプション
ステータスおよびダイレクトアクセス情報,一連番号の取得有無を設定します。
'N'を設定します。
-
ページ切り替え
'△'を設定します。
-
PCTFREE有効化
'△'を設定します。
-
二次インデクス使用抑止オプション
'△'を設定します。
-
オプションコード7
'△'を設定します。
-
条件式格納エリアアドレス
条件式を設定する(条件コードが'C')場合は,条件式格納エリアを確保し条件を設定後,そのアドレスを設定します。条件式格納エリアの詳細を次の図に示します。条件コードが'C'以外の場合,設定値を無視します。
設定しない場合は,NULLを設定します。
図1‒15 条件式格納エリア 表1‒26 条件式格納エリア内容 項番
分類
説明
1
識別記号
*FDN:構成要素名称を指定します。
2
構成要素名称
キーの条件を指定する場合は,'DBKEY△△△'を指定します。
キーの条件は2個まで指定できます。
キーの条件を2個指定する場合は範囲指定(例:3<=X<=7)となるように指定してください。
3
比較記号
'GT'or'>△':大きい
'GE'or'>=':大きいか等しい
'LT'or'<△':小さい
'LE'or'<=':小さいか等しい
'EQ'or'△=:等しい
4
論理式
条件式と条件式の間に指定します。条件式が1つの場合は指定できません。
'*'or'&':論理積
5
接続記号
'-'or'_'
6
値
構成要素の値を格納します。
値のサイズは,SDBデータベース定義の構成要素定義で指定したサイズです。
7
終了記号
'.'
-
構成要素指定エリアアドレス
NULLを設定します。
-
データ格納エリアアドレス
検索したデータを格納するエリアのアドレスを設定します。データ格納エリアのサイズは,データ格納エリアサイズに設定します。
複数レコードの検索では,指定されたサイズに入りきる分だけ格納します。
-
データ格納エリアサイズ
データ格納エリアの長さを設定します(単位:バイト)。検索データサイズより設定値が小さい場合はエラーとなります。
-
事前割り当て要求ページ数
0を指定します。
-
一連番号
0を設定します。
-
ダイレクトアクセス情報
すべてX'00'を設定します。
-
キー格納エリア
条件式を用いないでDBKEYを直接設定する場合(条件コードが'K'の場合),検索要求するキーを設定します。条件コードが'K'以外の場合,設定値を無視します。
-
- flags
-
EENOFLAGSを設定します。
TP1/EEから値が返される引数
- ift_pt
-
インタフェースエリアの各項目に値が設定されています。
リターン値がEE_OKまたはEESDHER_DBACCESSの場合だけ参照可能です。
次に記載のない項目についてはTP1/FSPは値を設定しません。
- ヘッダ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SDHステータスコード
SDHステータスコードを設定します。
「1.4 SDHステータスコード一覧」を参照してください。
複数エントリに対してDBアクセス(検索)要求し,SDHステータスコードが'00000'の場合,レコードが見つかった場合とレコードが見つからなかった場合の2とおりが混在してます。そのため,各エントリのステータスを参照してレコード検索正否を判断してください。
-
暗黙的ロールバック有無
HiRDBでの暗黙的ロールバック有無を設定します。HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合は,'N'が設定されます。
'Y':暗黙的ロールバックが発生している
'N':暗黙的ロールバックが発生していない
-
個別開始実行要求結果
個別開始実行要求オプションに'Y'を指定している場合,個別開始実行結果を設定します。APIの正常リターン時は必ず'Y'となり,APIの異常リターン時はHiRDBの状態によって'Y'または'N'のどちらかとなります。
'Y':個別開始が成功した,またはすでに個別開始済み
'N':個別開始が失敗した
なお,HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合,または個別開始実行要求オプションに'Y'を指定していない場合はX'00'を設定します。
-
SQLCODE
SQLCODEを設定します。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
表1‒27 検索時のSDHステータスコードとリターンコード情報 項番
SDHステータスコード
内容
各エントリ部の結果
キー報告エリア
一連番号
ダイレクトアクセス情報
ステータス
レコードサイズ
エントリ部ロケーション
二次インデクス使用フラグ
1
00000
正常終了
○
○
'N'以外
○
○※1
○
○
2
00100
レコードが見つからない※2
○
○
'N'以外
○
○※1
○
○
3
×
×
'N'
×
×
×
4
10072
データの終わりを検出
×
×
'N'
×
×
×
○
5
上記以外
異常
×
×
×
×
×
×
×
- (凡例)
-
○:参照可
×:参照不可
- 注※1
-
DB対応エントリだけ参照できます。
- 注※2
-
上段が検索成功したエントリ,下段が検索失敗した(レコードが見つからない)エントリです。
表1‒28 変更時のSDHステータスコードとリターンコード情報 項番
SDHステータスコード
内容
各エントリ部の結果
キー報告エリア
一連番号
ダイレクトアクセス情報
ステータス
レコードサイズ
エントリ部ロケーション
二次インデクス使用フラグ
1
00000
正常終了
×
×
×
×
×
×
×
2
上記以外
異常
×
×
×
×
×
×
×
- (凡例)
-
×:参照不可
表1‒29 格納時のSDHステータスコードとリターンコード情報 項番
SDHステータスコード
内容
各エントリ部の結果
キー報告エリア
一連番号
ダイレクトアクセス情報
ステータス
レコードサイズ
エントリ部ロケーション
二次インデクス使用フラグ
1
00000
正常終了
○
○
○
×
○※
○
○
2
上記以外
異常
×
×
×
×
×
×
×
- (凡例)
-
○:参照可
×:参照不可
- 注※
-
DB対応エントリだけ参照できます。
表1‒30 削除時のSDHステータスコードとリターンコード情報 項番
SDHステータスコード
内容
各エントリ部の結果
キー報告エリア
一連番号
ダイレクトアクセス情報
ステータス
レコードサイズ
エントリ部ロケーション
二次インデクス使用フラグ
1
00000
正常終了
×
×
×
×
×
×
×
2
上記以外
異常
×
×
×
×
×
×
×
- (凡例)
-
×:参照不可
表1‒31 複数レコードの検索時のSDHステータスコードとリターンコード情報 項番
SDHステータスコード
内容
各エントリ部の結果
キー報告エリア
一連番号
ダイレクトアクセス情報
ステータス
レコードサイズ
エントリ部ロケーション
二次インデクス使用フラグ
1
00000
正常終了
×
○
×
○
×
×
○
2
00100
レコードが見つからない
×
×
'N'
×
×
×
×
3
10070
データエリアが満杯になった
×
○
×
○
×
×
○
4
10072
データの終わりを検出
×
×
'N'
×
×
×
×
5
上記以外
異常
×
×
×
×
×
×
×
- (凡例)
-
○:参照可
×:参照不可
-
- エントリ部−要求部
-
-
要求コード
処理済みを示す要求コードを設定します。
'NNNN':処理済み
-
データ格納エリアアドレス
要求コードが'FTCH'/'FTCA'の場合は,インタフェースエリアのエントリ部のデータ格納エリアに検索結果を設定します。設定したサイズは,エントリ部のレコードサイズを参照してください。
-
- エントリ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。SDHステータスコードが'00000','00100','10070'または'10072'の場合に参照できます。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SQLCODE
SQLCODEを設定します。SDHステータスコードが'00000','00100','10070'または'10072'の場合に参照できます。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
レコードサイズ
要求コードの値によって設定する内容が異なります。
・要求コードが'FTCH'/'FTCA'の場合
データ格納エリアに格納したデータのサイズを設定します(単位:バイト)。
・要求コードが'MODF'/'STOR'/'ERAS'の場合
設定されている内容を変更しません。
-
エントリ部ロケーション
要求したエントリによって設定する内容が異なります。
・DB対応エントリの場合
条件コード'K'を設定した場合に,インタフェースエリア先頭からインタフェースエリア内の該当するエントリまでのロケーションを設定します。
条件コード'N'の場合は設定されている内容を変更しません。
図1‒16 エントリ部ロケーション ・その他の場合
設定されている内容を変更しません。
-
事前割り当て済みページ数
要求コードの値によって設定する内容が異なります。
・要求コードが'FTCH'/'FTCA'の場合
正常終了した場合,事前割り当て済みのページ数を設定します。異常終了,または検索レコードが事前ページ割り当て数の取得対象でない場合は,0を設定します。
・要求コードが'STOR'/'MODF/'ERAS'の場合
0を設定します。
-
一連番号
ステータス報告オプションの値によって設定する内容が異なります。
・ステータス報告オプションが'Y'の場合
一連番号を設定します。
・ステータス報告オプションが'N'の場合
設定されている内容を変更しません。
-
ダイレクトアクセス情報
ステータス報告オプションの値によって設定する内容が異なります。
・ステータス報告オプションが'Y'の場合
ダイレクトアクセス情報を設定します。
・ステータス報告オプションが'N'の場合
設定されている内容を変更しません。
-
二次インデクス使用フラグ
要求コードの値によって設定する内容が異なります。
・要求コードが'FTCH'/'STOR'の場合
'0':二次インデクスを使用していません。
'1':一連番号用の二次インデクスを使用しました。
'2':ユーザキー用の二次インデクスを使用しました。
・要求コードが'MODF'/'ERAS'/'FTCA'の場合
設定されている内容を変更しません。
-
ステータス
ステータス報告オプションの値によって設定する内容が異なります。
・ステータス報告オプションが'Y'の場合
検索したレコードに応じてステータスを設定します。ステータスを次の表に示します。
・ステータス報告オプションが'N'の場合
設定されている内容を変更しません。
表1‒32 ステータス 項番
値
FMB
MAM/DAM/SAM/TAM
1
'0'
中間レコード
&USERポインタなし
中間レコード
2
'1'
最終レコード
&USERポインタなし
最終レコード
3
'2'
先頭レコード
&USERポインタなし
先頭レコード
4
'3'
先頭&最終レコード
&USERポインタなし
先頭&最終レコード
5
'4'
中間レコード
&USERポインタあり
−
6
'5'
最終レコード
&USERポインタあり
−
7
'6'
先頭レコード
&USERポインタあり
−
8
'7'
先頭&最終レコード
&USERポインタあり
−
9
N'
レコードなし
(見つからない)
レコードなし
(見つからない)
- (凡例)
-
−:設定しません
-
- キー報告エリア部
-
要求コードの値によって設定する内容が異なります。
-
要求コードが'FTCH'/'STOR'の場合
アクセスしたレコードのキー情報を設定します。複数エントリにアクセス要求した場合は,最後にアクセスしたレコードのキー情報を設定します。ただし,レコードが見つからない場合(ステータスが'N'の場合)のキー情報は,DB種別によって設定内容が異なります。FMBの子レコードの場合は親レコードまでのキー情報を設定し,自レコードのキー情報は設定しません。FMBのルートレコード/DAM/MAM/TAM/SAMの場合,キー情報は設定しません。また,エラーが発生した場合は,キー報告エリアの内容は保障しません。
-
要求コードが'MODF'/'ERAS'の場合
設定されている内容を変更しません。
-
要求コードが'FTCA'の場合
アクセスしたレコードのキー情報を設定します。ただし,設定するのは,ルートキーだけです。レコードが見つからない場合,キー情報は設定しません。また,'10070'以外のエラーが発生した場合は,キー報告エリアの内容は保障しません。
図1‒17 キー報告エリア
-
- データ格納エリア部
-
要求コードが'FTCA'の場合にデータ格納エリアに設定する内容を次の図に示します。
図1‒18 データ格納エリア 各エントリの設定内容を次の表に示します(項番(1)〜(14)は上記の「図1-18 データ格納エリア」の(1)〜(14)にそれぞれ対応しています)。(3)以降はレコード数分存在します(レコード長が異なるため,単純な繰り返し構造ではありません)。
表1‒33 データ格納エリアの設定内容 項番
フィールド
長さ
内容
(1)
レコード数
4
データ格納エリアに格納したレコード数
(2)
予備
28
予備(0x00)
(3)
レコード全体長
4
(3)〜(14)の全体の長さ
(4)
レコード名称長
2
レコード名称の長さ
(5)
レコード名称
30
レコード名称を左詰めで格納(末尾は空白)。
(6)
予備
16
予備(0x00)
(7)
レコード実現値長
4
(14)のレコード実現値の長さ
(8)
ユーザデータのオフセット
4
ユーザデータの開始位置((14)レコード実現値先頭からのバイト数)
(9)
ファイル通番の長さ
4
TYPE U,Fのユーザデータがある場合に長さを設定。ない場合は0。
(10)
予備
3
予備(0x00)
(11)
フラグ
1
'U':親のユーザポインタで示されているレコードの場合に設定する
'△':上記以外の場合(ルートレコードも含む)
(12)
ユーザデータ長
4
(14)のレコード実現値のうち,ユーザデータ部分の長さ
(13)
一連番号
4
一連番号の値(非オカレンスの場合は1)
(14)
レコード実現値
(7)
レコード実現値(データベースキー,ユーザデータ)
- リターン値
-
リターン値
意味
EE_OK
正常に終了しました。
EECOMER_ENVIRON
TP1/EEの環境下にありません。
EECOMER_CNDUOC
UOCから発行しているため,この機能は使用できません。
EESDHER_ARGUMENT
引数に設定した値が間違っています。
-
インタフェースエリア(ift_pt)が不正(NULL)です。
EESDHER_CONDITION
発行条件が不正です。
-
TP1/FSPの環境下にありません。
-
SDBハンドラ機能が有効(sdh_use=Y)ではありません。
-
リソースマネジャが定義されていないか,リソースマネジャにHiRDBが定義されていません。
EESDHER_DBACCESS
構造型DBのアクセスに失敗しました。
詳細は「1.4 SDHステータスコード一覧」を参照してください。
-
(4) ee_sdh_clar
- 名称
-
データベースアクセス(一括削除(一連番号初期化))
- 形式
-
ANSI C,C++の形式
#include <eesdh.h> int ee_sdh_clar(EESDHIFT *ift_pt, EELONG flags); struct ee_sdh_interface_area_t { /*ヘッダ部 */ /*インタフェースエリア構成情報部*/ char sdhift_mgr_head_id[4]; /*ヘッダ識別子 */ EELONG sdhift_mgr_head_sz; /*ヘッダ部サイズ */ char sdhift_mgr_db_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhift_mgr_ift_sz; /*インタフェースエリア全体サイズ */ void *sdhift_mgr_ift_pt; /*自インタフェースエリアのテンプレートアドレス */ EELONG sdhift_mgr_entry_location; /*エントリ部先頭ロケーション */ EELONG sdhift_mgr_entry_sz; /*エントリ部サイズ */ EELONG sdhift_mgr_entry_num; /*エントリ部数 */ char yobi2[4]; /*予備 */ EELONG sdhift_mgr_key_advice_location; /*キー報告エリア部ロケーション */ EELONG sdhift_mgr_key_advice_sz; /*キー報告エリア部サイズ */ EELONG sdhift_mgr_component_location; /*構成要素情報表示部ロケーション */ EELONG sdhift_mgr_component_sz; /*構成要素情報表示部エントリサイズ */ char yobi3[40]; /*予備 */ short sdhift_mgr_db_name_sz; /*データベース名称サイズ */ char sdhift_mgr_db_name[30]; /*データベース名称 */ /*要求部*/ char sdhift_req_func_code[4]; /*機能コード */ char sdhift_req_req_code1; /*要求コード1 */ char sdhift_req_req_code2; /*要求コード2 */ char sdhift_req_req_code3; /*要求コード3 */ char sdhift_req_req_code4; /*要求コード4 */ char sdhift_req_access_mode1; /*アクセスモード1 */ char sdhift_req_access_mode2; /*アクセスモード2 */ char sdhift_req_access_mode3; /*アクセスモード3 */ char sdhift_req_access_mode4; /*アクセスモード4 */ char sdhift_req_exclusive_mode1; /*排他モード1 */ char sdhift_req_exclusive_mode2; /*排他モード2 */ char sdhift_req_exclusive_mode3; /*排他モード3 */ char sdhift_req_exclusive_mode4; /*排他モード4 */ char sdhift_req_data_area_format; /*データエリア形式 */ char sdhift_req_tb_cf_no; /*店番限定有無 */ char sdhift_req_base_condexp_opt; /*順アクセス内基点条件オプション */ char sdhift_req_fetchdb_all_opt; /*複数レコードの検索専用オプション */ char sdhift_req_option_code5; /*個別開始/終了一括要求オプションオプションコード5 */ char sdhift_req_option_code6; /*個別開始実行要求オプション */ char sdhift_req_option_code7; /*オプションコード7 */ char sdhift_req_option_code8; /*オプションコード8 */ char yobi4[8]; /*予備 */ void *sdhift_req_entry_list_pt; /*データベースアクセス用エントリリストアドレス */ void *sdhift_req_refs_info_area_pt; /*システム構成表示エリアアドレス */ short sdhift_req_db_name_sz; /*データベース名称サイズ指定 */ char sdhift_req_db_name[30]; /*データベース名称指定 */ void *sdhift_req_dbkey_pt; /*データベースキー指定エリアアドレス */ void *sdhift_req_migure_key_advice; /* TP1/FSP領域 */ char yobi5[4]; /*予備 */ char yobi6[12]; /*予備 */ char *sdhift_req_rdarea_name_pt; /*RDエリア名称格納エリア */ EELONG sdhift_req_rdarea_name_sz; /*RDエリア名称格納エリアサイズ */ char yobi26[4]; /*予備 */ short sdhift_req_tb_sz; /*店番サイズ */ char sdhift_req_tb[14]; /*店番 */ char yobi7[240]; /*予備 */ /*結果部*/ char sdhift_rsp_return_code; /*リターンコード */ char sdhift_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhift_rsp_detail_code; /*詳細コード */ EELONG sdhift_rsp_err_code1; /*エラーコード1 */ EELONG sdhift_rsp_err_code2; /*エラーコード2 */ char sdhift_rsp_status_code[5]; /*SDHステータスコード */ char yobi9[1]; /*予備 */ char sdhift_rsp_rollback_flg; /*暗黙的ロールバック有無 */ char sdhift_rsp_strt_ex_flg; /*個別開始実行要求結果 */ EELONG64 sdhift_rsp_sql_code; /*SQLCODE */ char sdhift_rsp_ob[32]; /*障害情報 */ EESDHDBL *sdhift_rsp_data_base_list_pt; /*データベース名称リストアドレス */ void *sdhift_rsp_ift_pt; /*アクセス機能用インタフェースエリアアドレス */ EELONG sdhift_rsp_entry_location; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ void *sdhift_rsp_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ void *sdhift_rsp_sdhrdkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi11[152]; /*予備 */ /*定義情報部*/ EELONG sdhift_def_db_no; /* データベース番号 */ char sdhift_def_db_type; /*種別 */ char yobi12[3]; /*予備 */ char sdhift_def_fetch_pm; /*参照可否 */ char sdhift_def_modify_pm; /*変更可否 */ char sdhift_def_store_pm; /*格納可否 */ char sdhift_def_erase_pm; /*削除可否 */ char sdhift_def_all_erase_pm; /*一括削除可否 */ char sdhift_def_db_utl_pm; /*DB作成UTL追加可否 */ char sdhift_def_format_write_pm; /*フォーマットライト可否 */ char sdhift_def_tg_const; /*店群構成 */ char sdhift_def_req_mode1; /*リクエストモード1 */ char sdhift_def_req_mode2; /*リクエストモード2 */ char yobi13[2]; /*予備 */ char sdhift_def_hrnd_ac; /*階層ランダム/シーケンシャル */ char sdhift_def_usr_flno_o; /*ユーザファイル通番可否 */ char yobi14[2]; /*予備 */ EELONG sdhift_def_record_type_num; /*レコード種別数 */ char yobi15[4]; /*予備 */ EELONG sdhift_def_record_lv_key_num; /*レコード分割キー数 */ short sdhift_def_record_lv_key_location;/*レコード分割キーのロケーション */ short sdhift_def_record_lv_key_sz; /*レコード分割キーのサイズ */ EELONG sdhift_def_tb_type_num; /*RDエリア分割キー数 */ short sdhift_def_tb_lv_key_location;/*RDエリア分割キーのロケーション */ short sdhift_def_tb_lv_key_sz; /*RDエリア分割キーのサイズ */ EELONG sdhift_def_max_record_lv; /*最大階層レベル */ EELONG sdhift_def_migure_key_advice_max_sz;/* TP1/FSP領域 */ char yobi16[8]; /*予備 */ EELONG sdhift_def_logical_key_sz; /*全キー長(レベル2〜一連番号までの合計サイズ)*/ EELONG sdhift_def_migure_cereal_no_sz;/* TP1/FSP領域 */ char yobi17[8]; /*予備 */ EELONG sdhift_def_dbkey_l2_ci; /*レベル2キー構成要素情報 */ EELONG sdhift_def_dbkey_l2_sz; /*レベル2論理キー長 */ EELONG sdhift_def_dbkey_l2_tc; /*レベル2論理キー種類数 */ char yobi18[4]; /*予備 */ EELONG sdhift_def_dbkey_l3_ci; /*レベル3キー構成要素情報 */ EELONG sdhift_def_dbkey_l3_sz; /*レベル3論理キー長 */ EELONG sdhift_def_dbkey_l3_tc; /*レベル3論理キー種類数 */ char yobi19[4]; /*予備 */ EELONG sdhift_def_dbkey_l4_ci; /*レベル4キー構成要素情報 */ EELONG sdhift_def_dbkey_l4_sz; /*レベル4論理キー長 */ EELONG sdhift_def_dbkey_l4_tc; /*レベル4論理キー種類数 */ char yobi20[4]; /*予備 */ EELONG sdhift_def_dbkey_l5_ci; /*レベル5キー構成要素情報 */ EELONG sdhift_def_dbkey_l5_sz; /*レベル5論理キー長 */ EELONG sdhift_def_dbkey_l5_tc; /*レベル5論理キー種類数 */ char yobi21[4]; /*予備 */ EELONG sdhift_def_dbkey_l6_ci; /*レベル6キー構成要素情報 */ EELONG sdhift_def_dbkey_l6_sz; /*レベル6論理キー長 */ EELONG sdhift_def_dbkey_l6_tc; /*レベル6論理キー種類数 */ char yobi22[4]; /*予備 */ EELONG sdhift_def_dbkey_l7_ci; /*レベル7キー構成要素情報 */ EELONG sdhift_def_dbkey_l7_sz; /*レベル7論理キー長 */ EELONG sdhift_def_dbkey_l7_tc; /*レベル7論理キー種類数 */ char yobi23[4]; /*予備 */ EELONG sdhift_def_sereal_no_ci; /*一連番号構成要素情報 */ EELONG sdhift_def_sereal_no_sz; /*一連番号サイズ */ char yobi24[8]; /*予備 */ EESDHRLKL *sdhift_def_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ EESDHRDKL *sdhift_def_sdhrlkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi25[48]; /*予備 */ char sdhift_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_t EESDHIFT; struct ee_sdh_interface_area_entry_t { /*エントリ部 */ /*インタフェースエリア構成情報部*/ char sdhifte_mgr_entry_id[4]; /*識別子 */ EELONG sdhifte_mgr_entry_sz; /*エントリ部サイズ */ char sdhifte_mgr_entry_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhifte_mgr_self_entry_location;/*インタフェースエリア内のエントリ部ロケーション */ EELONG sdhifte_mgr_compo_location; /*構成要素情報部ロケーション */ EELONG sdhifte_mgr_compo_num; /*構成要素情報エントリ数 */ char yobi2[72]; /*予備 */ short sdhifte_mgr_record_name_sz; /*レコード名称サイズ */ char sdhifte_mgr_record_name[30]; /*レコード名称 */ /*要求部*/ char sdhifte_req_req_code[4]; /*要求コード */ char sdhifte_req_as_code; /*指示コード */ char sdhifte_req_search_code; /*検索コード */ char sdhifte_req_cnd_code; /*条件コード */ char yobi3[1]; /*予備 */ char yobi4[8]; /*予備 */ char sdhifte_req_pointer_opt; /*ポインタオプション */ char sdhifte_req_lm_as_opt; /*一括オプション */ char sdhifte_req_status_adv_code; /*ステータス報告オプション */ char sdhifte_req_page_switch_opt; /*ページ切り替え */ char sdhifte_req_pctfree_opt; /*PCTFREE有効化 */ char sdhifte_req_2ndidx_susp; /*二次インデクス使用抑止オプション */ char sdhifte_req_option_code7; /*オプションコード7 */ char sdhifte_req_migure_info_flg; /* TP1/FSP領域 */ char yobi5[40]; /*予備 */ void *sdhifte_req_condexp_area_pt; /*条件式格納エリアアドレス */ void *sdhifte_req_compo_area_pt; /*構成要素指定エリアアドレス */ void *sdhifte_req_data_pt; /*データ格納エリアアドレス */ EELONG sdhifte_req_data_sz; /*データ格納エリアサイズ */ EELONG sdhifte_req_prepage_num; /*事前割り当て要求ページ数 */ char yobi6[56]; /*予備 */ char sdhifte_req_dbkey_l2[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_req_serial_no; /*一連番号 */ char sdhifte_req_direct[16]; /*ダイレクトアクセス情報 */ char yobi7[80]; /*予備 */ /*キー部*/ char sdhifte_key[256]; /*ユーザキー/論理キー格納エリアアドレス */ /*結果部*/ char sdhifte_rsp_return_code; /*リターンコード */ char sdhifte_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhifte_rsp_detail_code; /*詳細コード */ EELONG sdhifte_rsp_err_code1; /*エラーコード1 */ EELONG sdhifte_rsp_err_code2; /*エラーコード2 */ EELONG64 sdhifte_rsp_sql_code; /*SQLCODE */ char yobi9[8]; /*予備 */ char sdhifte_rsp_ob[32]; /*障害情報 */ EELONG sdhifte_rsp_record_sz; /*レコードサイズ */ EEULONG sdhifte_rsp_record_loc; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ EELONG sdhifte_rsp_prepage_num; /*事前割り当て済みページ数 */ char sdhifte_rsp_dbkey_l22[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_rsp_serial_no; /*一連番号 */ char sdhifte_rsp_direct[16]; /*ダイレクトアクセス情報 */ char yobi11[24]; /*予備 */ char sdhifte_rsp_bes_rearea[24]; /*BES,RDエリアに関する情報 */ char yobi12[40]; /*予備 */ char sdhifte_rsp_2ndidx; /*二次インデクス使用フラグ */ char sdhifte_rsp_status; /*ステータス */ short sdhifte_rsp_migure_record_sz; /* TP1/FSP領域 */ EELONG sdhifte_rsp_migure_direct_info; /* TP1/FSP領域 */ char yobi13[56]; /*予備 */ /*定義情報部*/ EELONG sdhifte_def_record_no; /*レコード番号 */ char sdhifte_def_db_type; /*種別 */ char yobi14[3]; /*予備 */ char sdhifte_def_fetch_pm; /*検索可否 */ char sdhifte_def_modify_pm; /*変更可否 */ char sdhifte_def_store_pm; /*格納可否 */ char sdhifte_def_erase_pm; /*削除可否 */ char sdhifte_def_all_erase_pm; /*一括削除可否 */ char sdhifte_def_compo_access_pm; /*構成要素指示可否 */ char yobi15[1]; /*予備 */ char sdhifte_def_tg_const; /*店群構成 */ char sdhifte_def_occurs_attr; /*オカレンス属性 */ char sdhifte_def_child_record_fl; /*子レコード有無 */ char sdhifte_def_user_pointer_fl; /*ユーザポインタ有無 */ char sdhifte_def_user_key_fl; /*ユーザキー有無 */ char yobi16[4]; /*予備 */ char sdhifte_def_req_mode1; /*リクエストモード1 */ char sdhifte_def_req_mode2; /*リクエストモード2 */ char yobi17[2]; /*予備 */ char sdhifte_def_hrnd_access; /*階層ランダム/シーケンシャル */ char sdhifte_def_usr_flno_pm; /*ユーザファイル通番取得可否 */ char yobi18[2]; /*予備 */ EELONG sdhifte_def_self_record_id_sz; /*自身のレコード識別コード長 */ char sdhifte_def_self_record_id[4]; /*自身のレコード識別コード */ EELONG sdhifte_def_self_record_no; /*レコード型番号 */ EELONG sdhifte_def_parent_record_no; /*親のレコード型番号 */ EELONG sdhifte_def_record_lv; /*レコードレベル番号 */ char yobi19[4]; /*予備 */ EELONG sdhifte_def_user_record_sz; /*ユーザレコードサイズ */ EELONG sdhifte_def_usr_flno_sz; /*ユーザレコード通番部サイズ */ EELONG sdhifte_def_public_component_num;/*公開構成要素数 */ EELONG sdhifte_def_sereal_no_min; /*一連番号最小値 */ EELONG sdhifte_def_sereal_no_max; /*一連番号最大値 */ char yobi20[52]; /*予備 */ char sdhifte_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_entry_t EESDHIFT_ENT; struct ee_sdh_key_advice_size_t { /*キー報告エリア部 */ short sdhiftkh_K1; /*K1 */ short sdhiftkh_K2; /*K2 */ short sdhiftkh_K3; /*K3 */ short sdhiftkh_K4; /*K4 */ short sdhiftkh_K5; /*K5 */ short sdhiftkh_K6; /*K6 */ short sdhiftkh_K7; /*K7 */ short sdhiftkh_K8; /*K8 */ short sdhiftkh_K9; /*K9 */ short sdhiftkh_K10; /*K10 */ short sdhiftkh_K11; /*K11 */ short sdhiftkh_K12; /*K12 */ short sdhiftkh_K13; /*K13 */ short sdhiftkh_K14; /*K14 */ short sdhiftkh_K15; /*K15 */ short yobi; /*予備 */ }; typedef struct ee_sdh_key_advice_size_t EESDHIFTKH; struct ee_sdh_interface_area_component_t { /*構成要素情報部 */ char sdhiftc_compo_id[4]; /*識別記号 */ EELONG sdhiftc_compo_no; /*構成要素番号 */ short sdhiftc_compo_name_sz; /*構成要素名称サイズ */ char sdhiftc_compo_name[30]; /*構成要素名称 */ char sdhiftc_data_attr; /*データ属性 */ char sdhiftc_compo_attr1; /*構成要素属性 */ char sdhiftc_compo_attr2; /*構成要素属性 */ char yobi1[1]; /*予備 */ EELONG sdhiftc_compo_loc; /*ロケーション */ EELONG sdhiftc_compo_sz; /*構成要素サイズ */ char sdhiftc_usr_info[2]; /*ユーザ情報 */ char yobi2[10]; /*予備 */ }; typedef struct ee_sdh_interface_area_component_t EESDHIFT_COMP;
- 機能
-
インタフェースエリアに指定されたデータベースに対して,要求されたDBKEYに対応したレコードを削除します。一括削除では,検索しないで削除することが可能です。DBKEYはDB対応エントリに設定します。
UAPは,ee_sdh_strt発行時にインタフェースエリア(ヘッダ部)のアクセスモード1を'U'に設定したインタフェースエリアをift_ptに設定します。
個別開始実行要求オプションに'Y'を指定する場合は,ee_sdh_strtの記述を参照し,インタフェースエリアをift_ptに指定してください。すでにee_sdh_strt発行済みだった場合,個別開始実行要求オプションは無視します。
表1‒34 一括削除 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
一括削除
×
×
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
UAPで値を設定する引数
- ift_pt
-
インタフェースエリアを設定します。
要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
- ヘッダ部−要求部
-
-
機能コード
データベースアクセス(一括削除)を示す機能コードを設定します。
'CLAR':一括削除
-
要求コード1
インタフェースエリアの確保方法を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの要求コード1の記載内容を参照し,値を設定してください。
-
要求コード2,要求コード3,要求コード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの要求コード2,要求コード3,要求コード4の記載内容を参照し,値を設定してください。
-
アクセスモード1
アクセスモードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのアクセスモード1の記載内容を参照し,値を設定してください。
-
アクセスモード2,アクセスモード3,アクセスモード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのアクセスモード2,アクセスモード3,アクセスモード4の記載内容を参照し,値を設定してください。
-
排他モード1
排他モードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード1の記載内容を参照し,値を設定してください。
-
排他モード2
排他の解放タイミングを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード2の記載内容を参照し,値を設定してください。
-
排他モード3
排他競合時の処置を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード3の記載内容を参照し,値を設定してください。
-
排他モード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード4の記載内容を参照し,値を設定してください。
-
データエリア形式
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのデータエリア形式の記載内容を参照し,値を設定してください。
-
店番限定有無
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの店番限定有無の記載内容を参照し,値を設定してください。
-
順アクセス内基点条件オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの順アクセス内基点条件オプションの記載内容を参照し,値を設定してください。
-
複数レコードの検索専用オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの複数レコードの検索専用オプションの記載内容を参照し,値を設定してください。
-
個別開始/終了一括要求オプション
ee_sdh_strt発行時に設定した値をそのまま設定してください。
-
個別開始実行要求オプション
一括削除の処理の中で個別開始をするかどうかを指定します。すでに個別開始済みの場合,本オプションの指定値は無視します。
'Y':一括削除の処理の中で個別開始を実行する
'N':指示なし
'△':指示なし
-
オプションコード7,オプションコード8
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのオプションコード7,オプションコード8の記載内容を参照し,値を設定してください。
-
データベースアクセス用エントリリスト
NULLを設定します。
-
システム構成表示エリアアドレス
NULLを設定します。
-
データベース名称サイズ指定
0を設定します。
-
データベース名称指定
すべてX'00'を設定します。
-
データベースキー指定エリアアドレス
NULLを設定します。
-
旧キー報告エリアアドレス
NULLを設定します。
-
RDエリア名称格納エリア
NULLを設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのRDエリア名称格納エリアの記載内容を参照し,値を設定してください。
-
RDエリア名称格納エリアサイズ
0を設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのRDエリア名称格納エリアサイズの記載内容を参照し,値を設定してください。
-
店番サイズ
X'00'を設定します。
-
店番
すべてX'00'を設定します。
-
- エントリ部−要求部
-
対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
データベースアクセス(一括削除)を示す機能コードを設定します。
'CLAR':一括削除
-
指示コード
'△'を設定します。
-
検索コード
'△'を設定します。
-
条件コード
一括削除要求するDBKEYの設定方法を設定します。
'K':条件キーとして,DBKEY(一連番号を含まない部分)を指定します。ただし,SDBデータベース定義で一連番号だけ定義したデータベースに要求する場合は,キー格納エリアへの格納は不要です。
'N':条件を指定しません。SDBデータベース定義で一連番号以外のキーが定義されているデータベースには指定できません。
表1‒35 条件コードの指定可否 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
一括削除
K
×
×
○
○
○
○
2
N
×
×
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
-
ポインタオプション
'△'を設定します。
-
一括オプション
'△'を設定します。
-
ステータス報告オプション
ステータスおよびダイレクトアクセス情報,一連番号の取得有無を設定します。
'N'を設定します。
-
ページ切り替え
'△'を設定します。
-
PCTFREE有効化
'△'を設定します。
-
オプションコード7
'△'を設定します。
-
条件式格納エリアアドレス
NULLを設定します。
-
構成要素指定エリアアドレス
NULLを設定します。
-
データ格納エリアアドレス
NULLを設定します。
-
データ格納エリアサイズ
0を設定します。
-
一連番号
X'00'を設定します。
-
ダイレクトアクセス情報
すべてX'00'を設定します。
-
キー格納エリア
一括削除要求するDBKEYを指定する(条件コードが'K')場合,DBKEY(一連番号を含まない部分)を格納します。SDBデータベース定義で一連番号だけを定義したデータベースに要求する場合は,キー格納エリアへの設定は不要です。条件コードが'K'以外の場合,設定値を無視します。
-
- flags
-
EENOFLAGSを設定します。
TP1/EEから値が返される引数
- ift_pt
-
インタフェースエリアの各項目に値が設定されています。
リターン値がEE_OKまたはEESDHER_DBACCESSの場合だけ参照可能です。
次に記載のない項目についてはTP1/FSPは値を設定しません。
- ヘッダ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SDHステータスコード
SDHステータスコードを設定します。
「1.4 SDHステータスコード一覧」を参照してください。
-
SQLCODE
SQLCODEを設定します。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
暗黙的ロールバック有無
HiRDBでの暗黙的ロールバック有無を設定します。HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合は,'N'が設定されます。
'Y':暗黙的ロールバックが発生している
'N':暗黙的ロールバックが発生していない
-
個別開始実行要求結果
個別開始実行要求オプションに'Y'を指定している場合,個別開始実行結果を設定します。APIの正常リターン時は必ず'Y'となり,APIの異常リターン時はHiRDBの状態によって'Y'または'N'のどちらかとなります。
'Y':個別開始が成功した,またはすでに個別開始済み
'N':個別開始が失敗した
なお,HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合,または個別開始実行要求オプションに'Y'を指定していない場合はX'00'を設定します。
-
- エントリ部−要求部
-
-
要求コード
処理済みを示す要求コードを設定します。
'NNNN':処理済み
-
- エントリ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。SDHステータスコードが'00000'の場合に参照できます。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SQLCODE
SQLCODEを設定します。SDHステータスコードが'00000'の場合に参照できます。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
- リターン値
-
リターン値
意味
EE_OK
正常に終了しました。
EECOMER_ENVIRON
TP1/EEの環境下にありません。
EECOMER_CNDUOC
UOCから発行しているため,この機能は使用できません。
EESDHER_ARGUMENT
引数に設定した値が間違っています。
-
インタフェースエリア(ift_pt)が不正(NULL)
EESDHER_CONDITION
発行条件が不正です。
-
TP1/FSPの環境下にありません。
-
SDBハンドラ機能が有効(sdh_use=Y)ではありません。
-
リソースマネジャが定義されていないか,リソースマネジャにHiRDBが定義されていません。
EESDHER_DBACCESS
構造型DBのアクセスに失敗しました。
詳細は「1.4 SDHステータスコード一覧」を参照してください。
-
(5) ee_sdh_refs
- 名称
-
システム構成表示(容量)
- 形式
-
ANSI C,C++の形式
#include <eesdh.h> int ee_sdh_refs(EESDHIFT *ift_pt, EELONG flags); struct ee_sdh_interface_area_t { /*ヘッダ部 */ /*インタフェースエリア構成情報部*/ char sdhift_mgr_head_id[4]; /*ヘッダ識別子 */ EELONG sdhift_mgr_head_sz; /*ヘッダ部サイズ */ char sdhift_mgr_db_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhift_mgr_ift_sz; /*インタフェースエリア全体サイズ */ void *sdhift_mgr_ift_pt; /*自インタフェースエリアのテンプレートアドレス */ EELONG sdhift_mgr_entry_location; /*エントリ部先頭ロケーション */ EELONG sdhift_mgr_entry_sz; /*エントリ部サイズ */ EELONG sdhift_mgr_entry_num; /*エントリ部数 */ char yobi2[4]; /*予備 */ EELONG sdhift_mgr_key_advice_location; /*キー報告エリア部ロケーション */ EELONG sdhift_mgr_key_advice_sz; /*キー報告エリア部サイズ */ EELONG sdhift_mgr_component_location; /*構成要素情報表示部ロケーション */ EELONG sdhift_mgr_component_sz; /*構成要素情報表示部エントリサイズ */ char yobi3[40]; /*予備 */ short sdhift_mgr_db_name_sz; /*データベース名称サイズ */ char sdhift_mgr_db_name[30]; /*データベース名称 */ /*要求部*/ char sdhift_req_func_code[4]; /*機能コード */ char sdhift_req_req_code1; /*要求コード1 */ char sdhift_req_req_code2; /*要求コード2 */ char sdhift_req_req_code3; /*要求コード3 */ char sdhift_req_req_code4; /*要求コード4 */ char sdhift_req_access_mode1; /*アクセスモード1 */ char sdhift_req_access_mode2; /*アクセスモード2 */ char sdhift_req_access_mode3; /*アクセスモード3 */ char sdhift_req_access_mode4; /*アクセスモード4 */ char sdhift_req_exclusive_mode1; /*排他モード1 */ char sdhift_req_exclusive_mode2; /*排他モード2 */ char sdhift_req_exclusive_mode3; /*排他モード3 */ char sdhift_req_exclusive_mode4; /*排他モード4 */ char sdhift_req_data_area_format; /*データエリア形式 */ char sdhift_req_tb_cf_no; /*店番限定有無 */ char sdhift_req_base_condexp_opt; /*順アクセス内基点条件オプション */ char sdhift_req_fetchdb_all_opt; /*複数レコードの検索専用オプション */ char sdhift_req_option_code5; /*個別開始/終了一括要求オプション */ char sdhift_req_option_code6; /*個別開始実行要求オプション */ char sdhift_req_option_code7; /*オプションコード7 */ char sdhift_req_option_code8; /*オプションコード8 */ char yobi4[8]; /*予備 */ void *sdhift_req_entry_list_pt; /*データベースアクセス用エントリリストアドレス */ void *sdhift_req_refs_info_area_pt;/*システム構成表示エリアアドレス */ short sdhift_req_db_name_sz; /*データベース名称サイズ指定 */ char sdhift_req_db_name[30]; /*データベース名称指定 */ void *sdhift_req_dbkey_pt; /*データベースキー指定エリアアドレス */ void *sdhift_req_migure_key_advice;/* TP1/FSP領域 */ char yobi5[4]; /*予備 */ char yobi6[12]; /*予備 */ char *sdhift_req_rdarea_name_pt; /*RDエリア名称格納エリア */ EELONG sdhift_req_rdarea_name_sz; /*RDエリア名称格納エリアサイズ */ char yobi26[4]; /*予備 */ short sdhift_req_tb_sz; /*店番サイズ */ char sdhift_req_tb[14]; /*店番 */ char yobi7[240]; /*予備 */ /*結果部*/ char sdhift_rsp_return_code; /*リターンコード */ char sdhift_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhift_rsp_detail_code; /*詳細コード */ EELONG sdhift_rsp_err_code1; /*エラーコード1 */ EELONG sdhift_rsp_err_code2; /*エラーコード2 */ char sdhift_rsp_status_code[5]; /*SDHステータスコード */ char yobi9[1]; /*予備 */ char sdhift_rsp_rollback_flg; /*暗黙的ロールバック有無 */ char sdhift_rsp_strt_ex_flg; /*個別開始実行要求結果 */ EELONG64 sdhift_rsp_sql_code; /*SQLCODE */ char sdhift_rsp_ob[32]; /*障害情報 */ EESDHDBL *sdhift_rsp_data_base_list_pt; /*データベース名称リストアドレス */ void *sdhift_rsp_ift_pt; /*アクセス機能用インタフェースエリアアドレス */ EELONG sdhift_rsp_entry_location; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ void *sdhift_rsp_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ void *sdhift_rsp_sdhrdkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi11[152]; /*予備 */ /*定義情報部*/ EELONG sdhift_def_db_no; /*データベース番号 */ char sdhift_def_db_type; /*種別 */ char yobi12[3]; /*予備 */ char sdhift_def_fetch_pm; /*参照可否 */ char sdhift_def_modify_pm; /*変更可否 */ char sdhift_def_store_pm; /*格納可否 */ char sdhift_def_erase_pm; /*削除可否 */ char sdhift_def_all_erase_pm; /*一括削除可否 */ char sdhift_def_db_utl_pm; /*DB作成UTL追加可否 */ char sdhift_def_format_write_pm; /*フォーマットライト可否 */ char sdhift_def_tg_const; /*店群構成 */ char sdhift_def_req_mode1; /*リクエストモード1 */ char sdhift_def_req_mode2; /*リクエストモード2 */ char yobi13[2]; /*予備 */ char sdhift_def_hrnd_ac; /*階層ランダム/シーケンシャル */ char sdhift_def_usr_flno_o; /*ユーザファイル通番可否 */ char yobi14[2]; /*予備 */ EELONG sdhift_def_record_type_num; /*レコード種別数 */ char yobi15[4]; /*予備 */ EELONG sdhift_def_record_lv_key_num; /*レコード分割キー数 */ short sdhift_def_record_lv_key_location;/*レコード分割キーのロケーション */ short sdhift_def_record_lv_key_sz; /*レコード分割キーのサイズ */ EELONG sdhift_def_tb_type_num; /*RDエリア分割キー数 */ short sdhift_def_tb_lv_key_location;/*RDエリア分割キーのロケーション */ short sdhift_def_tb_lv_key_sz; /*RDエリア分割キーのサイズ */ EELONG sdhift_def_max_record_lv; /*最大階層レベル */ EELONG sdhift_def_migure_key_advice_max_sz;/*TP1/FSP領域 */ char yobi16[8]; /*予備 */ EELONG sdhift_def_logical_key_sz; /*全キー長(レベル2〜一連番号までの合計サイズ) */ EELONG sdhift_def_migure_cereal_no_sz; /* TP1/FSP領域 */ char yobi17[8]; /*予備 */ EELONG sdhift_def_dbkey_l2_ci; /*レベル2キー構成要素情報 */ EELONG sdhift_def_dbkey_l2_sz; /*レベル2論理キー長 */ EELONG sdhift_def_dbkey_l2_tc; /*レベル2論理キー種類数 */ char yobi18[4]; /*予備 */ EELONG sdhift_def_dbkey_l3_ci; /*レベル3キー構成要素情報 */ EELONG sdhift_def_dbkey_l3_sz; /*レベル3論理キー長 */ EELONG sdhift_def_dbkey_l3_tc; /*レベル3論理キー種類数 */ char yobi19[4]; /*予備 */ EELONG sdhift_def_dbkey_l4_ci; /*レベル4キー構成要素情報 */ EELONG sdhift_def_dbkey_l4_sz; /*レベル4論理キー長 */ EELONG sdhift_def_dbkey_l4_tc; /*レベル4論理キー種類数 */ char yobi20[4]; /*予備 */ EELONG sdhift_def_dbkey_l5_ci; /*レベル5キー構成要素情報 */ EELONG sdhift_def_dbkey_l5_sz; /*レベル5論理キー長 */ EELONG sdhift_def_dbkey_l5_tc; /*レベル5論理キー種類数 */ char yobi21[4]; /*予備 */ EELONG sdhift_def_dbkey_l6_ci; /*レベル6キー構成要素情報 */ EELONG sdhift_def_dbkey_l6_sz; /*レベル6論理キー長 */ EELONG sdhift_def_dbkey_l6_tc; /*レベル6論理キー種類数 */ char yobi22[4]; /*予備 */ EELONG sdhift_def_dbkey_l7_ci; /*レベル7キー構成要素情報 */ EELONG sdhift_def_dbkey_l7_sz; /*レベル7論理キー長 */ EELONG sdhift_def_dbkey_l7_tc; /*レベル7論理キー種類数 */ char yobi23[4]; /*予備 */ EELONG sdhift_def_sereal_no_ci; /*一連番号構成要素情報 */ EELONG sdhift_def_sereal_no_sz; /*一連番号サイズ */ char yobi24[8]; /*予備 */ EESDHRLKL *sdhift_def_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ EESDHRDKL *sdhift_def_sdhrlkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi25[48]; /*予備 */ char sdhift_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_t EESDHIFT; struct ee_sdh_interface_area_entry_t { /*エントリ部 */ /*インタフェースエリア構成情報部*/ char sdhifte_mgr_entry_id[4]; /*識別子 */ EELONG sdhifte_mgr_entry_sz; /*エントリ部サイズ */ char sdhifte_mgr_entry_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhifte_mgr_self_entry_location;/*インタフェースエリア内のエントリ部ロケーション */ EELONG sdhifte_mgr_compo_location; /*構成要素情報部ロケーション */ EELONG sdhifte_mgr_compo_num; /*構成要素情報エントリ数 */ char yobi2[72]; /*予備 */ short sdhifte_mgr_record_name_sz; /*レコード名称サイズ */ char sdhifte_mgr_record_name[30]; /*レコード名称 */ /*要求部*/ char sdhifte_req_req_code[4]; /*要求コード */ char sdhifte_req_as_code; /*指示コード */ char sdhifte_req_search_code; /*検索コード */ char sdhifte_req_cnd_code; /*条件コード */ char yobi3[1]; /*予備 */ char yobi4[8]; /*予備 */ char sdhifte_req_pointer_opt; /*ポインタオプション */ char sdhifte_req_lm_as_opt; /*一括オプション */ char sdhifte_req_status_adv_code; /*ステータス報告オプション */ char sdhifte_req_page_switch_opt; /*ページ切り替え */ char sdhifte_req_pctfree_opt; /*PCTFREE有効化 */ char sdhifte_req_2ndidx_susp; /*二次インデクス使用抑止オプション */ char sdhifte_req_option_code7; /*オプションコード7 */ char sdhifte_req_migure_info_flg; /* TP1/FSP領域 */ char yobi5[40]; /*予備 */ void *sdhifte_req_condexp_area_pt; /*条件式格納エリアアドレス */ void *sdhifte_req_compo_area_pt; /*構成要素指定エリアアドレス */ void *sdhifte_req_data_pt; /*データ格納エリアアドレス */ EELONG sdhifte_req_data_sz; /*データ格納エリアサイズ */ EELONG sdhifte_req_prepage_num; /*事前割り当て要求ページ数 */ char yobi6[56]; /*予備 */ char sdhifte_req_dbkey_l2[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_req_serial_no; /*一連番号 */ char sdhifte_req_direct[16]; /*ダイレクトアクセス情報 */ char yobi7[80]; /*予備 */ /*キー部*/ char sdhifte_key[256]; /*ユーザキー/論理キー格納エリアアドレス */ /*結果部*/ char sdhifte_rsp_return_code; /*リターンコード */ char sdhifte_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhifte_rsp_detail_code; /*詳細コード */ EELONG sdhifte_rsp_err_code1; /*エラーコード1 */ EELONG sdhifte_rsp_err_code2; /*エラーコード2 */ EELONG64 sdhifte_rsp_sql_code; /*SQLCODE */ char yobi9[8]; /*予備 */ char sdhifte_rsp_ob[32]; /*障害情報 */ EELONG sdhifte_rsp_record_sz; /*レコードサイズ */ EEULONG sdhifte_rsp_record_loc; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ EELONG sdhifte_rsp_prepage_num; /*事前割り当て済みページ数 */ char sdhifte_rsp_dbkey_l22[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_rsp_serial_no; /*一連番号 */ char sdhifte_rsp_direct[16]; /*ダイレクトアクセス情報 */ char yobi11[24]; /*予備 */ char sdhifte_rsp_bes_rearea[24]; /*BES,RDエリアに関する情報 */ char yobi12[40]; /*予備 */ char sdhifte_rsp_2ndidx; /*二次インデクス使用フラグ */ char sdhifte_rsp_status; /*ステータス */ short sdhifte_rsp_migure_record_sz; /* TP1/FSP領域 */ EELONG sdhifte_rsp_migure_direct_info; /* TP1/FSP領域 */ char yobi13[56]; /*予備 */ /*定義情報部*/ EELONG sdhifte_def_record_no; /*レコード番号 */ char sdhifte_def_db_type; /*種別 */ char yobi14[3]; /*予備 */ char sdhifte_def_fetch_pm; /*検索可否 */ char sdhifte_def_modify_pm; /*変更可否 */ char sdhifte_def_store_pm; /*格納可否 */ char sdhifte_def_erase_pm; /*削除可否 */ char sdhifte_def_all_erase_pm; /*一括削除可否 */ char sdhifte_def_compo_access_pm; /*構成要素指示可否 */ char yobi15[1]; /*予備 */ char sdhifte_def_tg_const; /*店群構成 */ char sdhifte_def_occurs_attr; /*オカレンス属性 */ char sdhifte_def_child_record_fl; /*子レコード有無 */ char sdhifte_def_user_pointer_fl; /*ユーザポインタ有無 */ char sdhifte_def_user_key_fl; /*ユーザキー有無 */ char yobi16[4]; /*予備 */ char sdhifte_def_req_mode1; /*リクエストモード1 */ char sdhifte_def_req_mode2; /*リクエストモード2 */ char yobi17[2]; /*予備 */ char sdhifte_def_hrnd_access; /*階層ランダム/シーケンシャル */ char sdhifte_def_usr_flno_pm; /*ユーザファイル通番取得可否 */ char yobi18[2]; /*予備 */ EELONG sdhifte_def_self_record_id_sz; /*自身のレコード識別コード長 */ char sdhifte_def_self_record_id[4]; /*自身のレコード識別コード */ EELONG sdhifte_def_self_record_no; /*レコード型番号 */ EELONG sdhifte_def_parent_record_no; /*親のレコード型番号 */ EELONG sdhifte_def_record_lv; /*レコードレベル番号 */ char yobi19[4]; /*予備 */ EELONG sdhifte_def_user_record_sz; /*ユーザレコードサイズ */ EELONG sdhifte_def_usr_flno_sz; /*ユーザレコード通番部サイズ */ EELONG sdhifte_def_public_component_num;/*公開構成要素数 */ EELONG sdhifte_def_sereal_no_min; /*一連番号最小値 */ EELONG sdhifte_def_sereal_no_max; /*一連番号最大値 */ char yobi20[52]; /*予備 */ char sdhifte_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_entry_t EESDHIFT_ENT; struct ee_sdh_key_advice_size_t { /*キー報告エリア部 */ short sdhiftkh_K1; /*K1 */ short sdhiftkh_K2; /*K2 */ short sdhiftkh_K3; /*K3 */ short sdhiftkh_K4; /*K4 */ short sdhiftkh_K5; /*K5 */ short sdhiftkh_K6; /*K6 */ short sdhiftkh_K7; /*K7 */ short sdhiftkh_K8; /*K8 */ short sdhiftkh_K9; /*K9 */ short sdhiftkh_K10; /*K10 */ short sdhiftkh_K11; /*K11 */ short sdhiftkh_K12; /*K12 */ short sdhiftkh_K13; /*K13 */ short sdhiftkh_K14; /*K14 */ short sdhiftkh_K15; /*K15 */ short yobi; /*予備 */ }; typedef struct ee_sdh_key_advice_size_t EESDHIFTKH; struct ee_sdh_interface_area_component_t { /*構成要素情報部 */ char sdhiftc_compo_id[4]; /*識別記号 */ EELONG sdhiftc_compo_no; /*構成要素番号 */ short sdhiftc_compo_name_sz; /*構成要素名称サイズ */ char sdhiftc_compo_name[30]; /*構成要素名称 */ char sdhiftc_data_attr; /*データ属性 */ char sdhiftc_compo_attr1; /*構成要素属性 */ char sdhiftc_compo_attr2; /*構成要素属性 */ char yobi1[1]; /*予備 */ EELONG sdhiftc_compo_loc; /*ロケーション */ EELONG sdhiftc_compo_sz; /*構成要素サイズ */ char sdhiftc_usr_info[2]; /*ユーザ情報 */ char yobi2[10]; /*予備 */ }; typedef struct ee_sdh_interface_area_component_t EESDHIFT_COMP; struct ee_sdh_key_cap_head_t { /*キーの容量表示 */ EELONG sdhkeycapl_entry_num; /*エントリ数 */ EELONG yobi; /*予備 */ }; typedef struct ee_sdh_key_cap_head_t EESDHKEYCAPL; struct ee_sdh_key_cap_entry_t { /*キーの容量表示エントリ */ char sdhkeycaplent_key[256]; /*キー(一連番号を除く) */ char sdhkeycaplent_yobi[4]; /*予備 */ EELONG sdhkeycaplent_s_no; /*割り当て済み一連番号*/ }; typedef struct ee_sdh_key_cap_entry_t EESDHKEYCAPLENT;
- 機能
-
インタフェースエリアに指定されたデータベースの各種システム構成を取得します。取得できる項目を次に示します。
-
キーの容量情報(割り当て済み一連番号)
キーの容量情報を要求した場合は,指定されたDBKEYに対する割り当て済み一連番号を返却します。キーの容量情報はee_sdh_strt発行直後に要求してください。ee_sdh_accsおよびee_sdh_clar後に要求するとエラーになります。
UAPは,ee_sdh_strtに設定したインタフェースエリアをift_ptに設定してください。
個別開始実行要求オプションに'Y'を指定する場合は,ee_sdh_strtの記述を参照し,インタフェースエリアをift_ptに指定してください。ee_sdh_strt発行済みだった場合,個別開始実行要求オプションは無視します。
表1‒36 システム構成表示 項番
項目
DB種別
FMB
DAM
MAM
TAM
SAM
ルート
子
1
キーの容量情報
×
×
○
○
○
○
- (凡例)
-
○:指定可
×:指定不可
図1‒19 割り当て済み一連番号の例
-
UAPで値を設定する引数
- ift_pt
-
インタフェースエリアを設定します。
要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
- ヘッダ部−要求部
-
-
機能コード
構成表示を示す機能コードを設定します。
'REFS':構成表示
-
要求コード1
インタフェースエリアの確保方法を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの要求コード1の記載内容を参照し,値を設定してください。
-
要求コード2,要求コード3,要求コード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの要求コード2,要求コード3,要求コード4の記載内容を参照し,値を設定してください。
-
アクセスモード1
アクセスモードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのアクセスモード1の記載内容を参照し,値を設定してください。
-
アクセスモード2,アクセスモード3,アクセスモード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのアクセスモード2,アクセスモード3,アクセスモード4の記載内容を参照し,値を設定してください。
-
排他モード1
排他モードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード1の記載内容を参照し,値を設定してください。
-
排他モード2
排他の解放タイミングを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード2の記載内容を参照し,値を設定してください。
-
排他モード3
排他競合時の処置を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード3の記載内容を参照し,値を設定してください。
-
排他モード4
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの排他モード4の記載内容を参照し,値を設定してください。
-
データエリア形式
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのデータエリア形式の記載内容を参照し,値を設定してください。
-
店番限定有無
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの店番限定有無の記載内容を参照し,値を設定してください。
-
順アクセス内基点条件オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの順アクセス内基点条件オプションの記載内容を参照し,値を設定してください。
-
複数レコードの検索専用オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtの複数レコードの検索専用オプションの記載内容を参照し,値を設定してください。
-
個別開始/終了一括要求オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
個別開始実行要求オプション
システム構成表示の処理の中で個別開始をするかどうかを指定します。すでに個別開始済みの場合,このオプション指定値は無視します。
'Y':システム構成表示の処理の中で個別開始を実行する
'N':指示なし
'△':指示なし
-
オプションコード7,オプションコード8
ee_sdh_strt発行時に設定した値をそのまま設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのオプションコード7,オプションコード8の記載内容を参照し,値を設定してください。
-
データベースアクセス用エントリリスト
NULLを設定します。
-
システム構成表示エリアアドレス
エントリ部の要求コードに設定する値によって異なります。
・'LCAP'(キーの容量情報)を指定する場合
システム構成表示エリアを確保したあと,アドレスを設定します。
システム構成表示エリアには,容量を取得したいDBKEY(一連番号を除く)とキーのエントリ数を設定します。エントリ数には1以上の値を設定します。DBKEYが一連番号だけであるSDBに対して要求した場合,キー値の設定内容は無視し,割り当て済み一連番号を設定します。
図1‒20 システム構成表示エリア(キーの容量情報) -
データベース名称サイズ指定
0を設定します。
-
データベース名称指定
すべてX'00'を設定します。
-
データベースキー指定エリアアドレス
NULLを設定します。
-
旧キー報告エリアアドレス
NULLを設定します。
-
RDエリア名称格納エリア
NULLを設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのRDエリア名称格納エリアの記載内容を参照し,値を設定してください。
-
RDエリア名称格納エリアサイズ
0を設定します。ただし,個別開始実行要求オプションに'Y'を指定している場合は,ee_sdh_strtのRDエリア名称格納エリアサイズの記載内容を参照し,値を設定してください。
-
店番サイズ
0を設定します。
-
店番
すべてX'00'を設定します。
-
- エントリ部−要求部
-
エントリ部の先頭エントリ(DB対応エントリ)に次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
-
要求コード
システム構成表示を示す要求コードを設定します。
'LCAP':キーの容量情報
-
- flags
-
EENOFLAGSを設定します。
TP1/EEから値が返される引数
- ift_pt
-
インタフェースエリアの各項目に値が設定されています。
リターン値がEE_OKまたはEESDHER_DBACCESSの場合だけ参照可能です。
次に記載のない項目についてはTP1/FSPは値を設定しません。
- ヘッダ部−要求部
-
-
システム構成表示エリアアドレス
エントリ部の要求コードに設定した値によって異なります。
・'LCAP'(キーの容量情報)を指定した場合
指定された各DBKEYの割り当て済み一連番号を設定します。
-
- ヘッダ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SDHステータスコード
SDHステータスコードを設定します。
「1.4 SDHステータスコード一覧」を参照してください。
-
暗黙的ロールバック有無
HiRDBでの暗黙的ロールバック有無を設定します。HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合は,'N'が設定されます。
'Y':暗黙的ロールバックが発生している
'N':暗黙的ロールバックが発生していない
-
個別開始実行要求結果
個別開始実行要求オプションに'Y'を指定している場合,個別開始実行結果を設定します。APIの正常リターン時は必ず'Y'となり,APIの異常リターン時はHiRDBの状態によって'Y'または'N'のどちらかとなります。
'Y':個別開始が成功した,またはすでに個別開始済み
'N':個別開始が失敗した
なお,HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合,または個別開始実行要求オプションに'Y'を指定していない場合はX'00'を設定します。
-
SQLCODE
SQLCODEを設定します。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
- エントリ部−要求部
-
-
要求コード
処理済みを示す要求コードを設定します。
'NNNN':処理済み
-
- リターン値
-
リターン値
意味
EE_OK
正常に終了しました。
EECOMER_ENVIRON
TP1/EEの環境下にありません。
EECOMER_CNDUOC
UOCから発行しているため,この機能は使用できません。
EESDHER_ARGUMENT
引数に設定した値が間違っています。
-
インタフェースエリア(ift_pt)が不正(NULL)です。
EESDHER_CONDITION
発行条件が不正です。
-
TP1/FSPの環境下にありません。
-
SDBハンドラ機能が有効(sdh_use=Y)ではありません。
-
リソースマネジャが定義されていないか,リソースマネジャにHiRDBが定義されていません。
EESDHER_DBACCESS
構造型DBのアクセスに失敗しました。
詳細は「1.4 SDHステータスコード一覧」を参照してください。
-
(6) ee_sdh_fnsh
- 名称
-
個別終了要求
- 形式
-
ANSI C,C++の形式
#include <eesdh.h> int ee_sdh_fnsh(EESDHIFT *ift_pt, EELONG flags); struct ee_sdh_interface_area_t { /*ヘッダ部 */ /*インタフェースエリア構成情報部*/ char sdhift_mgr_head_id[4]; /*ヘッダ識別子 */ EELONG sdhift_mgr_head_sz; /*ヘッダ部サイズ */ char sdhift_mgr_db_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhift_mgr_ift_sz; /*インタフェースエリア全体サイズ */ void *sdhift_mgr_ift_pt; /*自インタフェースエリアのテンプレートアドレス */ EELONG sdhift_mgr_entry_location; /*エントリ部先頭ロケーション */ EELONG sdhift_mgr_entry_sz; /*エントリ部サイズ */ EELONG sdhift_mgr_entry_num; /*エントリ部数 */ char yobi2[4]; /*予備 */ EELONG sdhift_mgr_key_advice_location; /*キー報告エリア部ロケーション */ EELONG sdhift_mgr_key_advice_sz; /*キー報告エリア部サイズ */ EELONG sdhift_mgr_component_location;/*構成要素情報表示部ロケーション */ EELONG sdhift_mgr_component_sz; /*構成要素情報表示部エントリサイズ */ char yobi3[40]; /*予備 */ short sdhift_mgr_db_name_sz; /*データベース名称サイズ */ char sdhift_mgr_db_name[30]; /*データベース名称 */ /*要求部*/ char sdhift_req_func_code[4]; /*機能コード */ char sdhift_req_req_code1; /*要求コード1 */ char sdhift_req_req_code2; /*要求コード2 */ char sdhift_req_req_code3; /*要求コード3 */ char sdhift_req_req_code4; /*要求コード4 */ char sdhift_req_access_mode1; /*アクセスモード1 */ char sdhift_req_access_mode2; /*アクセスモード2 */ char sdhift_req_access_mode3; /*アクセスモード3 */ char sdhift_req_access_mode4; /*アクセスモード4 */ char sdhift_req_exclusive_mode1; /*排他モード1 */ char sdhift_req_exclusive_mode2; /*排他モード2 */ char sdhift_req_exclusive_mode3; /*排他モード3 */ char sdhift_req_exclusive_mode4; /*排他モード4 */ char sdhift_req_data_area_format; /*データエリア形式 */ char sdhift_req_tb_cf_no; /*店番限定有無 */ char sdhift_req_base_condexp_opt; /*順アクセス内基点条件オプション */ char sdhift_req_fetchdb_all_opt; /*複数レコードの検索専用オプション */ char sdhift_req_option_code5; /*個別開始/終了一括要求オプション */ char sdhift_req_option_code6; /*個別開始実行要求オプション */ char sdhift_req_option_code7; /*オプションコード7 */ char sdhift_req_option_code8; /*オプションコード8 */ char yobi4[8]; /*予備 */ void *sdhift_req_entry_list_pt; /*データベースアクセス用エントリリストアドレス */ void *sdhift_req_refs_info_area_pt;/*システム構成表示エリアアドレス */ short sdhift_req_db_name_sz; /*データベース名称サイズ指定 */ char sdhift_req_db_name[30]; /*データベース名称指定 */ void *sdhift_req_dbkey_pt; /*データベースキー指定エリアアドレス */ void *sdhift_req_migure_key_advice;/* TP1/FSP領域 */ char yobi5[4]; /*予備 */ char yobi6[12]; /*予備 */ char *sdhift_req_rdarea_name_pt; /*RDエリア名称格納エリア */ EELONG sdhift_req_rdarea_name_sz; /*RDエリア名称格納エリアサイズ */ char yobi26[4]; /*予備 */ short sdhift_req_tb_sz; /*店番サイズ */ char sdhift_req_tb[14]; /*店番 */ char yobi7[240]; /*予備 */ /*結果部*/ char sdhift_rsp_return_code; /*リターンコード */ char sdhift_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhift_rsp_detail_code; /*詳細コード */ EELONG sdhift_rsp_err_code1; /*エラーコード1 */ EELONG sdhift_rsp_err_code2; /*エラーコード2 */ char sdhift_rsp_status_code[5]; /*SDHステータスコード */ char yobi9[1]; /*予備 */ char sdhift_rsp_rollback_flg; /*暗黙的ロールバック有無 */ char sdhift_rsp_strt_ex_flg; /*個別開始実行要求結果 */ EELONG64 sdhift_rsp_sql_code; /*SQLCODE */ char sdhift_rsp_ob[32]; /*障害情報 */ EESDHDBL *sdhift_rsp_data_base_list_pt;/*データベース名称リストアドレス */ void *sdhift_rsp_ift_pt; /*アクセス機能用インタフェースエリアアドレス */ EELONG sdhift_rsp_entry_location; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ void *sdhift_rsp_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ void *sdhift_rsp_sdhrdkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi11[152]; /*予備 */ /*定義情報部*/ EELONG sdhift_def_db_no; /*データベース番号 */ char sdhift_def_db_type; /*種別 */ char yobi12[3]; /*予備 */ char sdhift_def_fetch_pm; /*参照可否 */ char sdhift_def_modify_pm; /*変更可否 */ char sdhift_def_store_pm; /*格納可否 */ char sdhift_def_erase_pm; /*削除可否 */ char sdhift_def_all_erase_pm; /*一括削除可否 */ char sdhift_def_db_utl_pm; /*DB作成UTL追加可否 */ char sdhift_def_format_write_pm; /*フォーマットライト可否 */ char sdhift_def_tg_const; /*店群構成 */ char sdhift_def_req_mode1; /*リクエストモード1 */ char sdhift_def_req_mode2; /*リクエストモード2 */ char yobi13[2]; /*予備 */ char sdhift_def_hrnd_ac; /*階層ランダム/シーケンシャル */ char sdhift_def_usr_flno_o; /*ユーザファイル通番可否 */ char yobi14[2]; /*予備 */ EELONG sdhift_def_record_type_num; /*レコード種別数 */ char yobi15[4]; /*予備 */ EELONG sdhift_def_record_lv_key_num; /*レコード分割キー数 */ short sdhift_def_record_lv_key_location;/*レコード分割キーのロケーション */ short sdhift_def_record_lv_key_sz; /*レコード分割キーのサイズ */ EELONG sdhift_def_tb_type_num; /*RDエリア分割キー数 */ short sdhift_def_tb_lv_key_location;/*RDエリア分割キーのロケーション */ short sdhift_def_tb_lv_key_sz; /*RDエリア分割キーのサイズ */ EELONG sdhift_def_max_record_lv; /*最大階層レベル */ EELONG sdhift_def_migure_key_advice_max_sz;/* TP1/FSP領域 */ char yobi16[8]; /*予備 */ EELONG sdhift_def_logical_key_sz; /*全キー長(レベル2〜一連番号までの合計サイズ)*/ EELONG sdhift_def_migure_cereal_no_sz;/* TP1/FSP領域 */ char yobi17[8]; /*予備 */ EELONG sdhift_def_dbkey_l2_ci; /*レベル2キー構成要素情報 */ EELONG sdhift_def_dbkey_l2_sz; /*レベル2論理キー長 */ EELONG sdhift_def_dbkey_l2_tc; /*レベル2論理キー種類数 */ char yobi18[4]; /*予備 */ EELONG sdhift_def_dbkey_l3_ci; /*レベル3キー構成要素情報 */ EELONG sdhift_def_dbkey_l3_sz; /*レベル3論理キー長 */ EELONG sdhift_def_dbkey_l3_tc; /*レベル3論理キー種類数 */ char yobi19[4]; /*予備 */ EELONG sdhift_def_dbkey_l4_ci; /*レベル4キー構成要素情報 */ EELONG sdhift_def_dbkey_l4_sz; /*レベル4論理キー長 */ EELONG sdhift_def_dbkey_l4_tc; /*レベル4論理キー種類数 */ char yobi20[4]; /*予備 */ EELONG sdhift_def_dbkey_l5_ci; /*レベル5キー構成要素情報 */ EELONG sdhift_def_dbkey_l5_sz; /*レベル5論理キー長 */ EELONG sdhift_def_dbkey_l5_tc; /*レベル5論理キー種類数 */ char yobi21[4]; /*予備 */ EELONG sdhift_def_dbkey_l6_ci; /*レベル6キー構成要素情報 */ EELONG sdhift_def_dbkey_l6_sz; /*レベル6論理キー長 */ EELONG sdhift_def_dbkey_l6_tc; /*レベル6論理キー種類数 */ char yobi22[4]; /*予備 */ EELONG sdhift_def_dbkey_l7_ci; /*レベル7キー構成要素情報 */ EELONG sdhift_def_dbkey_l7_sz; /*レベル7論理キー長 */ EELONG sdhift_def_dbkey_l7_tc; /*レベル7論理キー種類数 */ char yobi23[4]; /*予備 */ EELONG sdhift_def_sereal_no_ci; /*一連番号構成要素情報 */ EELONG sdhift_def_sereal_no_sz; /*一連番号サイズ */ char yobi24[8]; /*予備 */ EESDHRLKL *sdhift_def_sdhrlkl_pt; /*レコード分割キー一覧アドレス */ EESDHRDKL *sdhift_def_sdhrlkl_pt; /*RDエリア分割キー一覧アドレス */ char yobi25[48]; /*予備 */ char sdhift_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_t EESDHIFT; struct ee_sdh_interface_area_entry_t { /*エントリ部 */ /*インタフェースエリア構成情報部*/ char sdhifte_mgr_entry_id[4]; /*識別子 */ EELONG sdhifte_mgr_entry_sz; /*エントリ部サイズ */ char sdhifte_mgr_entry_type; /*種別 */ char yobi1[3]; /*予備 */ EELONG sdhifte_mgr_self_entry_location;/*インタフェースエリア内のエントリ部ロケーション */ EELONG sdhifte_mgr_compo_location; /*構成要素情報部ロケーション */ EELONG sdhifte_mgr_compo_num; /*構成要素情報エントリ数 */ char yobi2[72]; /*予備 */ short sdhifte_mgr_record_name_sz; /*レコード名称サイズ */ char sdhifte_mgr_record_name[30]; /*レコード名称 */ /*要求部*/ char sdhifte_req_req_code[4]; /*要求コード */ char sdhifte_req_as_code; /*指示コード */ char sdhifte_req_search_code; /*検索コード */ char sdhifte_req_cnd_code; /*条件コード */ char yobi3[1]; /*予備 */ char yobi4[8]; /*予備 */ char sdhifte_req_pointer_opt; /*ポインタオプション */ char sdhifte_req_lm_as_opt; /*一括オプション */ char sdhifte_req_status_adv_code; /*ステータス報告オプション */ char sdhifte_req_page_switch_opt; /*ページ切り替え */ char sdhifte_req_pctfree_opt; /*PCTFREE有効化 */ char sdhifte_req_2ndidx_susp; /*二次インデクス使用抑止オプション */ char sdhifte_req_option_code7; /*オプションコード7 */ char sdhifte_req_migure_info_flg; /* TP1/FSP領域 */ char yobi5[40]; /*予備 */ void *sdhifte_req_condexp_area_pt; /*条件式格納エリアアドレス */ void *sdhifte_req_compo_area_pt; /*構成要素指定エリアアドレス */ void *sdhifte_req_data_pt; /*データ格納エリアアドレス */ EELONG sdhifte_req_data_sz; /*データ格納エリアサイズ */ EELONG sdhifte_req_prepage_num; /*事前割り当て要求ページ数 */ char yobi6[56]; /*予備 */ char sdhifte_req_dbkey_l2[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_req_serial_no; /*一連番号 */ char sdhifte_req_direct[16]; /*ダイレクトアクセス情報 */ char yobi7[80]; /*予備 */ /*キー部*/ char sdhifte_key[256]; /*ユーザキー/論理キー格納エリアアドレス */ /*結果部*/ char sdhifte_rsp_return_code; /*リターンコード */ char sdhifte_rsp_sub_code; /*サブコード */ char yobi8[2]; /*予備 */ EELONG sdhifte_rsp_detail_code; /*詳細コード */ EELONG sdhifte_rsp_err_code1; /*エラーコード1 */ EELONG sdhifte_rsp_err_code2; /*エラーコード2 */ EELONG64 sdhifte_rsp_sql_code; /*SQLCODE */ char yobi9[8]; /*予備 */ char sdhifte_rsp_ob[32]; /*障害情報 */ EELONG sdhifte_rsp_record_sz; /*レコードサイズ */ EEULONG sdhifte_rsp_record_loc; /*エントリ部ロケーション */ char yobi10[4]; /*予備 */ EELONG sdhifte_rsp_prepage_num; /*事前割り当て済みページ数 */ char sdhifte_rsp_dbkey_l22[4]; /*レベル2論理キー(TAM(DAM)用) */ EELONG sdhifte_rsp_serial_no; /*一連番号 */ char sdhifte_rsp_direct[16]; /*ダイレクトアクセス情報 */ char yobi11[24]; /*予備 */ char sdhifte_rsp_bes_rearea[24]; /*BES,RDエリアに関する情報 */ char yobi12[40]; /*予備 */ char sdhifte_rsp_2ndidx; /*二次インデクス使用フラグ */ char sdhifte_rsp_status; /*ステータス */ short sdhifte_rsp_migure_record_sz; /*TP1/FSP領域 */ EELONG sdhifte_rsp_migure_direct_info; /*TP1/FSP領域 */ char yobi13[56]; /*予備 */ /*定義情報部*/ EELONG sdhifte_def_record_no; /*レコード番号 */ char sdhifte_def_db_type; /*種別 */ char yobi14[3]; /*予備 */ char sdhifte_def_fetch_pm; /*検索可否 */ char sdhifte_def_modify_pm; /*変更可否 */ char sdhifte_def_store_pm; /*格納可否 */ char sdhifte_def_erase_pm; /*削除可否 */ char sdhifte_def_all_erase_pm; /*一括削除可否 */ char sdhifte_def_compo_access_pm; /*構成要素指示可否 */ char yobi15[1]; /*予備 */ char sdhifte_def_tg_const; /*店群構成 */ char sdhifte_def_occurs_attr; /*オカレンス属性 */ char sdhifte_def_child_record_fl; /*子レコード有無 */ char sdhifte_def_user_pointer_fl; /*ユーザポインタ有無 */ char sdhifte_def_user_key_fl; /*ユーザキー有無 */ char yobi16[4]; /*予備 */ char sdhifte_def_req_mode1; /*リクエストモード1 */ char sdhifte_def_req_mode2; /*リクエストモード2 */ char yobi17[2]; /*予備 */ char sdhifte_def_hrnd_access; /*階層ランダム/シーケンシャル */ char sdhifte_def_usr_flno_pm; /*ユーザファイル通番取得可否 */ char yobi18[2]; /*予備 */ EELONG sdhifte_def_self_record_id_sz;/*自身のレコード識別コード長 */ char sdhifte_def_self_record_id[4];/*自身のレコード識別コード */ EELONG sdhifte_def_self_record_no; /*レコード型番号 */ EELONG sdhifte_def_parent_record_no; /*親のレコード型番号 */ EELONG sdhifte_def_record_lv; /*レコードレベル番号 */ char yobi19[4]; /*予備 */ EELONG sdhifte_def_user_record_sz; /*ユーザレコードサイズ */ EELONG sdhifte_def_usr_flno_sz; /*ユーザレコード通番部サイズ */ EELONG sdhifte_def_public_component_num;/*公開構成要素数 */ EELONG sdhifte_def_sereal_no_min; /*一連番号最小値 */ EELONG sdhifte_def_sereal_no_max; /*一連番号最大値 */ char yobi20[52]; /*予備 */ char sdhifte_wk[1024]; /*予備 */ }; typedef struct ee_sdh_interface_area_entry_t EESDHIFT_ENT; struct ee_sdh_key_advice_size_t { /*キー報告エリア部 */ short sdhiftkh_K1; /*K1 */ short sdhiftkh_K2; /*K2 */ short sdhiftkh_K3; /*K3 */ short sdhiftkh_K4; /*K4 */ short sdhiftkh_K5; /*K5 */ short sdhiftkh_K6; /*K6 */ short sdhiftkh_K7; /*K7 */ short sdhiftkh_K8; /*K8 */ short sdhiftkh_K9; /*K9 */ short sdhiftkh_K10; /*K10 */ short sdhiftkh_K11; /*K11 */ short sdhiftkh_K12; /*K12 */ short sdhiftkh_K13; /*K13 */ short sdhiftkh_K14; /*K14 */ short sdhiftkh_K15; /*K15 */ short yobi; /*予備 */ }; typedef struct ee_sdh_key_advice_size_t EESDHIFTKH; struct ee_sdh_interface_area_component_t { /*構成要素情報部 */ char sdhiftc_compo_id[4]; /*識別記号 */ EELONG sdhiftc_compo_no; /*構成要素番号 */ short sdhiftc_compo_name_sz; /*構成要素名称サイズ */ char sdhiftc_compo_name[30]; /*構成要素名称 */ char sdhiftc_data_attr; /*データ属性 */ char sdhiftc_compo_attr1; /*構成要素属性 */ char sdhiftc_compo_attr2; /*構成要素属性 */ char yobi1[1]; /*予備 */ EELONG sdhiftc_compo_loc; /*ロケーション */ EELONG sdhiftc_compo_sz; /*構成要素サイズ */ char sdhiftc_usr_info[2]; /*ユーザ情報 */ char yobi2[10]; /*予備 */ }; typedef struct ee_sdh_interface_area_component_t EESDHIFT_COMP;
- 機能
-
インタフェースエリアに指定された構造型データベースへのアクセスを終了します。
UAPは,ee_sdh_strtに設定したインタフェースエリアをift_ptに設定します。
UAPで値を設定する引数
- ift_pt
-
インタフェースエリアを設定します。
要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。
次に記載のない項目についてはTP1/FSPは参照しません。
- ヘッダ部−要求部
-
-
機能コード
個別終了要求する機能コードを設定します。
'FNSH':個別終了要求
-
要求コード1
インタフェースエリアの確保方法を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
要求コード2
トランザクション実行中に,当該インタフェースエリアを使用してレコードの格納/変更/削除/一括削除を1回以上要求し,かつ成功している状態で,ee_sdh_fnshを発行した場合のリターン値を選択します。
'C':ee_sdh_fnshをエラーリターン(SDHステータスコード20000)させる。
'△':指示なし
表1‒37 関数リターン値選択 項番
要求コード2
当該インタフェースエリアでレコードに対して行った要求
参照だけ(格納/変更/削除/一括削除を要求していない)
または何も行っていない
格納/変更/削除/一括削除を1回以上要求し,かつ成功している
1
'C'
成功
エラー
2
'△'
成功
成功
-
要求コード3,要求コード4
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
アクセスモード1
アクセスモードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
アクセスモード2,アクセスモード3,アクセスモード4
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
排他モード1
排他モードを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
排他モード2
排他の解放タイミングを設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
排他モード3
排他競合時の処置を設定します。
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
排他モード4
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
データエリア形式
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
店番限定有無
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
順アクセス内基点条件オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
複数レコードの検索専用オプション
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
個別開始/終了一括要求オプション
ee_sdh_strt発行時に設定した値をそのまま指定してください。
-
個別開始実行要求オプション
ee_sdh_strt発行時に設定した値をそのまま指定してください。
-
オプションコード7,オプションコード8
ee_sdh_strt発行時に設定した値をそのまま設定します。
-
データベースアクセス用エントリリストアドレス
NULLを設定します。
-
システム構成表示エリアアドレス
NULLを設定します。
-
データベース名称サイズ指定
0を設定します。
-
データベース名称指定
すべてX'00'を設定します。
-
データベースキー指定エリアアドレス
NULLを設定します。
-
旧キー報告エリアアドレス
NULLを設定します。
-
RDエリア名称格納エリア
NULLを設定します。
-
RDエリア名称格納エリアサイズ
0を設定します。
-
店番サイズ
0を設定します。
-
店番
すべてX'00'を設定します。
-
- flags
-
EENOFLAGSを設定します。
TP1/EEから値が返される引数
- ift_pt
-
インタフェースエリアの各項目に値が設定されています。
リターン値がEE_OKまたはEESDHER_DBACCESSの場合だけ参照可能です。
次に記載のない項目についてはTP1/FSPは値を設定しません。
- ヘッダ部−結果部
-
-
リターンコード,サブコード
リターンコードおよびサブコードを設定します。
詳細は「表1-11 リターンコードとサブコード」を参照してください。
-
詳細コード
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード1
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
エラーコード2
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
SDHステータスコード
SDHステータスコードを設定します。
「1.4 SDHステータスコード一覧」を参照してください。
-
暗黙的ロールバック有無
HiRDBでの暗黙的ロールバック有無を設定します。HiRDBへの要求前にエラー(引数エラー,ee_trn_rollback_mark関数発行済みなど)となった場合は,'N'が設定されます。
'Y':暗黙的ロールバックが発生している
'N':暗黙的ロールバックが発生していない
-
SQLCODE
SQLCODEを設定します。
-
障害情報
TP1/FSPがトラブルシュートで使用する情報を設定します。
-
- リターン値
-
リターン値
意味
EE_OK
正常に終了しました。
EECOMER_ENVIRON
TP1/EEの環境下にありません。
EECOMER_CNDUOC
UOCから発行しているため,この機能は使用できません。
EESDHER_ARGUMENT
引数に設定した値が間違っています。
-
インタフェースエリア(ift_pt)が不正(NULL)
EESDHER_CONDITION
発行条件が不正です。
-
TP1/FSPの環境下にありません。
-
SDBハンドラ機能が有効(sdh_use=Y)ではありません。
-
リソースマネジャが定義されていないか,リソースマネジャにHiRDBが定義されていません。
EESDHER_DBACCESS
構造型DBのアクセスに失敗しました。
詳細は「1.4 SDHステータスコード一覧」を参照してください。
-