付録D.3 関数の記述形式
(1) データ項目の検査関数
データ項目の定義情報をチェックし,その結果をResultに返します。
(a) 関数名
DscCheckItem-データ項目の定義情報チェック
(b) 形式
Dsc_status_t DscCheckItem(
const Dsc_item_struct_t *Item,
/* データ項目情報構造体 */
Dsc_err_id_t **ErrIDList,
/* エラーID配列 */
Dsc_int_t *ErrCount,
/* エラーの数 */
Dsc_result_t *Result
/* 検査結果 */
);
(c) 引数
●Item
データ項目情報構造体を格納するポインタを指定します。
- データ項目種別(item_kind)には,対象データ項目の種別が返ります。
DSD_ITM_KIND_SIMPLE :単項目
DSD_ITM_KIND_COMPOSITE :結合項目
- 親データ項目名(parent_name)には,対象データ項目の親データ項目名が返ります。ただし,親データ項目なし(辞書フォルダ直下のデータ項目)の場合はNULLが返ります。
- 標準名称(std_name),フリガナ(furigana),コメント(comment)は,配列の添字に国語区分番号を指定することで値を取得できます。指定できる値を次に示します。
DSD_NATIONAL_NO_JAPANESE :国語区分「日本語」
DSD_NATIONAL_NO_ENGLISH :国語区分「英語」
DSD_NATIONAL_NO_RESERVED_1 :国語区分「未設定1」
DSD_NATIONAL_NO_RESERVED_2 :国語区分「未設定2」
- フィールド(field)は,配列の添字にフィールド番号を指定することで値を取得できます。指定できる値は,「DSD_ITEM_FIELD_NO_x」です。xは1~20の数字で,それぞれフィールド1~20に対応します。
- 分類(type_group)には,次に示すDS_type_group_t列挙型※の値が返ります。
DSD_GRP_ALPHABETIC :英数字文字列データ
DSD_GRP_JAPANESE :日本語文字列データ
DSD_GRP_INTEGRAL :整数データ
DSD_GRP_POSITIVE :正整数データ
DSD_GRP_REAL :実数データ
DSD_GRP_DATE :日付データ
DSD_GRP_TIME :時刻データ
DSD_GRP_COMPOSITE :結合データ
DSD_NO_GRP :分類なし
- 名前(var_name),タイプ(type),タイプキーワード名(type_name),タイプキーワードの説明(type_comment),タイプフリー定義(type_free),タイプ修飾情報(edit_str),初期値(init_val),言語別フィールド(lang_field)は,配列の添字に言語区分番号を指定することで値を取得できます。指定できる値を次に示します。
DSD_PROG_NO_COBOL :言語区分「COBOL又はOOCOBOL」
DSD_PROG_NO_C :言語区分「C又はC++」
DSD_PROG_NO_SQL :言語区分「SQL」
DSD_PROG_NO_CORBA :言語区分「IDL(CORBA)」
DSD_PROG_NO_EUR :言語区分「帳票定義」
DSD_PROG_NO_JAVA :言語区分「Java」
DSD_PROG_NO_RESERVED_4:言語区分「言語4」
DSD_PROG_NO_RESERVED_5:言語区分「言語5」
DSD_PROG_NO_RESERVED_6:言語区分「言語6」
DSD_PROG_NO_RESERVED_7:言語区分「言語7」
- 言語区分「COBOL又はOOCOBOL」のメンバedit_strには,編集文字列の定義情報,言語区分「IDL(CORBA)」のメンバedit_strには,シーケンスの定義情報が返ります。
- 言語区分「COBOL又はOOCOBOL」,「C又はC++」,「IDL(CORBA)」で,タイプが「フリー定義」以外の場合,メンバtype_freeには,文字列表現された取りうる値の定義情報が返ります。
例えば,取りうる値リストの記号と値の組み合わせが次に示す表の場合,"TOKYO=,NAGOYA,OOSAKA= ¥,¥=¥¥ ¥¥ "という文字列が返ります。
記号 | 値 |
---|
"TOKYO" | "" |
"NAGOYA" | NULL |
"OOSAKA" | " ,=¥ ¥ " |
- タイプ(type)には,DS_type_id_t列挙型※の値が返ります。
- タイプキーワード名(type_name)には,DS_type_id_t列挙型※の値に対応したタイプキーワード名が返ります。
- タイプキーワードの説明(type_comment)には,DS_type_id_t列挙型※の値に対応したタイプキーワードの説明が返ります。
- 検査状態(exam_result)には,次に示すDS_exam_result_t列挙型※の値が返ります。
DSD_EXM_OK :エラーなし
DSD_EXM_NG :エラーあり
DSD_NO_EXM :未検査
- 注※
- 列挙型の値は,ヘッダファイル(Dsc_interface.h)中のコメントで確認できます。
●ErrIDList
エラーID配列へのポインタを受け取るエリアのポインタを指定します。
●ErrCount
エラーの数(ErrIDListに指定した配列の要素数)を受け取るエリアのポインタを指定します。
●Result
検査結果を受け取るエリアのポインタを指定します。
(d) 戻り値
DSC_OK :正常終了
DSC_ERROR:エラーが発生した
(e) 注意事項
- 検査DLLを複数登録する場合は,検査関数で返すエラーID(Dsc_err_id_t列挙型)は,登録した検査DLL内でユニークにする必要があります。
- 次に該当する場合,データ項目情報構造体または構成項目情報構造体のメンバには次の未定義値が返ります。
- データ項目種別(item_kind)がDSD_ITM_KIND_SIMPLE(単項目)でけた数,小数部けた数,反復回数が未定義の場合
- データ項目種別(item_kind)がDSD_ITM_KIND_COMPOSITE(結合項目)で反復回数が未定義の場合
各メンバの未定義値を次に示します。
- けた数(total):DSD_ITM_TOTAL_NULL(-1)
- 小数部けた数(dec_part):DSD_ITM_DEC_PART_NULL(-1)
- 反復回数(repeat):DSD_ITM_REPEAT_NULL(-1)
- データ項目種別(item_kind)がDSD_ITM_KIND_COMPOSITE(結合項目)の場合,けた数(total),小数部けた数(dec_part),タイプ(type)の値は保証されません。
(2) 業務ルールの検査関数
業務ルールの定義情報をチェックし,その結果をResultに返します。
(a) 関数名
DscCheckRule-業務ルールの定義情報チェック
(b) 形式
Dsc_status_t DscCheckRule(
const Dsc_Rule_struct_t *Rule,
/* 業務ルール情報構造体 */
Dsc_err_id_t **ErrIDList,
/* エラーID配列 */
Dsc_int_t *ErrCount,
/* エラーの数 */
Dsc_result_t *Result
/* 検査結果 */
);
(c) 引数
●Rule
業務ルール情報構造体を格納するポインタを指定します。
- 業務ルール種別(rule_kind)には,対象業務ルールの種別が返ります。
DSD_BRL_KIND_SINGLE:単項目関連業務ルール(共有する)
DSD_BRL_KIND_MULTI:複項目関連業務ルール(専用にする)
DSD_BRL_KIND_MULTI_SAME_ANY:同一項目用業務ルール(結合,単項目)
DSD_BRL_KIND_MULTI_SAME_SIMPLE:同一項目用業務ルール(単項目)
- 標準名称(std_name),フリガナ(furigana),コメント(comment)は,配列の添字に国語区分番号を指定することで値を取得できます。指定できる値を次に示します。
DSD_NATIONAL_NO_JAPANESE :国語区分「日本語」
DSD_NATIONAL_NO_ENGLISH :国語区分「英語」
DSD_NATIONAL_NO_RESERVED_1:国語区分「未設定1」
DSD_NATIONAL_NO_RESERVED_2:国語区分「未設定2」
- フィールド(field)は,配列の添字にフィールド番号を指定することで値を取得できます。指定できる値を次に示します。
DSD_RULE_FIELD_NO_1 :フィールド1
DSD_RULE_FIELD_NO_2 :フィールド2
DSD_RULE_FIELD_NO_3 :フィールド3
- ルールスクリプト(src_info)は,配列の添字に言語区分番号を指定することで値を取得できます。指定できる値を次に示します。
DSD_PROG_NO_COBOL :言語区分「COBOL又はOOCOBOL」
DSD_PROG_NO_C :言語区分「C又はC++」
DSD_PROG_NO_SQL :言語区分「SQL」
DSD_PROG_NO_CORBA :言語区分「IDL(CORBA)」
DSD_PROG_NO_EUR :言語区分「帳票定義」
DSD_PROG_NO_JAVA :言語区分「Java」
DSD_PROG_NO_RESERVED_4 :言語区分「言語4」
DSD_PROG_NO_RESERVED_5 :言語区分「言語5」
DSD_PROG_NO_RESERVED_6 :言語区分「言語6」
DSD_PROG_NO_RESERVED_7 :言語区分「言語7」
- 検査状態(exam_result)には,次に示すDS_exam_result_t列挙型※の値が返ります。
DSD_EXM_OK :エラーなし
DSD_EXM_NG :エラーあり
DSD_NO_EXM :未検査
- 関連データ項目情報の適用条件(trigger)には,次に示すDS_trigger_t列挙型※の値が返ります。
DSD_NO_TRIGGER :未指定
DSD_TRIGGER_INPUT :入力
DSD_TRIGGER_OUTPUT :出力
関連データ項目情報のほかのメンバについては,「(1) データ項目の検査関数」の引数 Itemの説明を参照してください。
- 注※
- 列挙型の値は,ヘッダファイル(Dsc_interface.h)中のコメントで確認できます。
●ErrIDList
エラーID配列へのポインタを受け取るエリアのポインタを指定します。
●ErrCount
エラーの数(ErrIDListに指定した配列の要素数)を受け取るエリアのポインタを指定します。
●Result
検査結果を受け取るエリアのポインタを指定します。
(d) 戻り値
DSC_OK:正常終了
DSC_ERROR:エラーが発生した
(e) 注意事項
- 複数の検査DLLを登録する場合は,検査関数で返すエラーID(Dsc_err_id_t列挙型)は,登録した検査DLL内でユニークにする必要があります。
- 業務ルール種別がDSD_BRL_KIND_SINGLE(単項目関連業務ルール(共有する))またはDSD_BRL_KIND_MULTI(複項目関連業務ルール(専用にする))のとき,次に該当する場合は関連データ項目情報構造体のメンバには,未定義値が返ります。
- 関連データ項目情報構造体のデータ項目種別(item_kind)がDSD_ITM_KIND_SIMPLE(単項目)で,けた数,小数部けた数,反復回数が未定義の場合
- 関連データ項目情報構造体のデータ項目種別(item_kind)がDSD_ITM_KIND_COMPOSITE(結合項目)で,反復回数が未定義の場合
各メンバの未定義値を次に示します。
- けた数(total):DSD_ITM_TOTAL_NULL(-1)
- 小数部けた数(dec_part):DSD_ITM_DEC_PART_NULL(-1)
- 反復回数(repeat):DSD_ITM_REPEAT_NULL(-1)
- 業務ルール種別がDSD_BRL_KIND_SINGLE(単項目関連業務ルール(共有する))またはDSD_BRL_KIND_MULTI(複項目関連業務ルール(専用にする))のとき,関連データ項目情報構造体のデータ項目種別(item_kind)がDSD_ITM_KIND_COMPOSITE(結合項目)の場合,けた数(total),小数部けた数(dec_part),タイプ(type)の値は保証されません。
- 業務ルール種別がDSD_BRL_KIND_MULTI_SAME_ANYまたはDSD_BRL_KIND_MULTI_SAME_SIMPLE(同一項目用業務ルール)の場合,関連データ項目情報構造体のキーワード(keyword)と適用条件(trigger)以外は保証されません。
(3) エラーIDからメッセージの取得関数
エラーIDからエラーメッセージを取得します。
指定されたエラーIDに対応するメッセージがない場合は,戻り値にDSC_ERRORを返します。
(a) 関数名
DscGetMessageFromErrID-エラーIDからメッセージを取得
(b) 形式
Dsc_status_t DscGetMessageFromErrID(
Dsc_err_id_t ErrID, /* エラーID */
Dsc_char_t **Message /* エラーメッセージ */
);
(c) 引数
●ErrID
エラーIDを指定します。
●Message
エラーメッセージへのポインタを受け取るエリアのポインタを指定します。
- エラーID(Dsc_err_id_t)に対応したメッセージを返します。
エラーIDとメッセージの対応例を次に示します。
- DSC_ERRID_ITEM_ERR_1
- コメント(COBOL又はOOCOBOL)が指定されていません。
- DSC_ERRID_ITEM_ERR_2
- コメント(C又はC++)が指定されていません。
- DSC_ERRID_RULE_ERR_1
- ルールスクリプト(COBOL又はOOCOBOL)に誤りがあります。
- DSC_ERRID_RULE_ERR_2
- ルールスクリプト(C又はC++)に誤りがあります。
(d) 戻り値
DSC_OK:正常終了
DSC_ERROR:エラーIDに対応にするメッセージがない
(4) エラーID領域の解放関数
引数ErrIDListで指定されたエラーID配列を破棄します。
(a) 関数名
DscFreeErrID-エラーID配列の破棄
(b) 形式
void DscFreeErrID(
Dsc_err_id_t *ErrIDList /* エラーID配列 */
);
(c) 引数
●ErrIDList
削除するエラーID(検査関数で返されたエラーID)のポインタを指定します。
(d) 戻り値
戻り値はありません。