Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform プログラム作成の手引


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ステータスコード一覧」を参照してください。