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

手引・文法書

3000-3-K02-50

前書き

対象製品

・適用OS：Red Hat Enterprise Linux Server 6 (64-bit x86_64)，Red Hat Enterprise Linux Server 7 (64-bit x86_64)，Red Hat Enterprise Linux Server 8 (64-bit x86_64)

P-8264-9511 uCosminexus TP1/Financial Service Platform 01-12

・適用OS：Red Hat Enterprise Linux Server 9 (64-bit x86_64)

P-8864-9511 uCosminexus TP1/Financial Service Platform 01-14

これらのプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

発行

2025年4月　3000-3-K02-50

著作権

All Rights Reserved. Copyright (C) 2015, 2025, Hitachi, Ltd.

変更内容

変更内容（3000-3-K02-50）uCosminexus TP1/Financial Service Platform　01-14，uCosminexus TP1/Financial Service Platform　01-12

追加・変更内容

変更個所

対象製品を更新した。

P-9W64-9511を削除した。

Red Hat Enterprise Linux Server 8 (64-bit x86_64)をサポートした（P-8264-9511）。

Red Hat Enterprise Linux Server 9 (64-bit x86_64)をサポートした（P-8864-9511の追加）。

−

トランザクションインタフェースのスレッドダウン種別の説明を変更した。

1.2.4(1)(c)

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは，次に示すプログラムプロダクトで使用するアプリケーションプログラムの作成方法，API関数の文法について説明したものです。

uCosminexus TP1/Financial Service Platform

以降，このマニュアルでは，このプログラムプロダクトを「TP1/FSP」と表記します。

対象読者

TP1/FSPで使用するアプリケーションを作成するプログラマの方を対象としています。

また，次に示す知識があることを前提としています。

オペレーティングシステム（Linux）とオンラインシステムの基礎的な知識

Linuxのシステム管理の基礎的な知識

TP1/Server BaseおよびTP1/Server Base Enterprise Optionの知識

アプリケーションプログラムのコーディングに使う高級言語（C言語またはCOBOL言語）の文法の知識

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

JISコード配列のキーボードとASCIIコード配列のキーボードとの違いについて

JISコード配列とASCIIコード配列では，次に示すコードで入力文字の違いがあります。このマニュアルの文字入力例（コーディング例）の表記は，JISコード配列（日本語のキーボード）に従った文字に統一しています。

コード

JISコード配列

ASCIIコード配列

(5c)₁₆

' ¥ '（円記号）

' ＼ '（バックスラッシュ）

(7e)₁₆

' ￣ '（オーバライン）

' ~ '（チルダ）

文法の記号

このマニュアルで使用する各種記号を説明します。特に断りがない場合は，C言語，COBOL言語の説明で共通に使用する記号です。なお，C言語とCOBOL言語で共通の内容を説明するときは，C言語の用語に統一して説明します。C言語の用語に対応するCOBOL言語の用語については，マニュアル「OpenTP1　プログラム作成リファレンス　COBOL言語編」でご確認ください。

（1）文法記述記号

システム定義，コマンドのオプションおよび引数の指定方法について説明する記号です。

文法記述記号

意味

〔　　〕

この記号で囲まれている項目は省略してもよいことを示します。

（例）AAA［-b］

これは，AAA -bと指定するか，AAAと指定することを示します。

（例）［-c サービス名］

これは，何も指定しないか，または-cオプションで指定された項目は「サービス名」を値として取ることを示します。

…

この記号で示す直前の項目を繰り返し指定できることを示します。

（例）DDD -e サービス名〔,サービス名…〕

これは，DDD -eで指定するサービス名を複数個指定できることを示します。

｛｛　　｝｝

この記号で囲まれた複数の項目が1つの繰り返し項目の単位であることを示します。

（例）｛｛FFF -g ファイルグループ番号｝｝

これは，FFF -g ファイルグループ番号

FFF -g ファイルグループ番号

と指定できることを示します。

｛　　｝

この記号で囲まれている複数の項目のうちから1つを選択することを示します。項目の区切りは｜で示します。

（例）｛-h｜-i サービス名｝

これは，-hと-i サービス名の2つの項目のうち，どちらかを指定することを示します。

｜

この記号で区切られた項目は選択できることを示します。

（例）JJJ=Y｜N

これは，JJJオペランドに，YかNを指定できることを示します。

＿

（下線）

この記号で示す項目は，該当オペランド，またはオプションを省略した場合の省略時解釈値を示します。

（例）KKK=Y｜N

これは，KKKオペランドを省略した場合，Yを省略時解釈値とすることを示します。

△

半角スペースを示します。

（例）論理ファイル名△物理ファイル名

これは，論理ファイル名と物理ファイル名の間に半角スペースを挿入することを示します。

（2）属性表示記号

システム定義，およびコマンドのユーザ指定値の範囲などを説明する記号です。

属性表示記号

意味

〜

この記号のあとに指定値の属性を示します。

《　　》

指定を省略したときに仮定される値を示します。

〈　　〉

指定値の構文要素を示します。

((　　))

指定値の指定範囲を示します。

（3）構文要素記号

システム定義，およびコマンドのユーザ指定値の内容を説明する記号です。

構文要素記号

意味

〈英字〉

アルファベット（A〜Z，a〜z）と_（アンダスコア）

〈英字記号〉

アルファベット（A〜Z，a〜z）と#，@，¥，$，%

〈英数字〉

英字と数字（0〜9）

〈英数字記号〉

英字記号と数字（0〜9）

〈符号なし整数〉

数字列（0〜9）

〈16進数〉

数字（0〜9），A〜F，およびa〜f

〈識別子〉

先頭がアルファベットの英数字列

〈英大識別子〉

先頭がアルファベットの大文字の英数字列

〈記号名称〉

先頭が英字記号の英数字記号列

〈文字列〉

引用符「"」を除く任意の文字の配列※

〈パス名〉

記号名称，/，および　.（ピリオド）

（ただし，パス名は使用するOSに依存）

〈TP1EEファイル名〉

アルファベット（A〜Z，a〜z），数字（0〜9），　.（ピリオド），_（アンダスコア），および@で構成される文字列（最大14文字）

〈ホスト名〉

英数字，および!，#，$，%，&，'，(，)，*，+，-，.（ピリオド），/，;，<，=，>，?，@，[，¥，]，^，_（アンダスコア），{，|，}，~，,（コンマ）

ただし，OSによって使用できる文字が異なります。詳細は，使用しているOSのマニュアルを参照してください。

使用上の注意

すべて半角文字を使用してください。

注※

システム定義のオペランド，およびコマンドのオプションに文字列を指定する場合は，指定値全体を引用符「"」で囲む必要があります。この場合，指定値全体を囲む引用符は指定値には含まれません。また，特に断りがないかぎり，引用符は指定値の中の文字として使用できません。

1　トランザクションインタフェース

この章では，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」との差分についてだけ説明します。マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」もあわせて参照してください。

1.1　トランザクションで使用できるAPI関数

SPPで使用できるTP1/FSPのAPIは，トランザクション種別によって異なります。それぞれのトランザクションで使用できるAPIを次の表に示します。

表1‒1　 TP1/FSPのトランザクションで使用できるAPI関数

API関数（上段：C言語インタフェース，下段：COBOL言語インタフェース）

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

RL

UT

CU

JI

BS

TZ

ee_rpc_get_bizid

CBLEERPC('GETBIZID')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_rpc_set_bizid

CBLEERPC('SETBIZID')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_trn_watch

CBLEETRN('WATCH ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_trn_getrtime

CBLEETRN('GETRTIME')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_trn_uap_put

CBLEETRN('UAPPUT ')

×

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_trn_retry_rollback

CBLEETRN('R-ROLL ')

×

×

△

×

×

×

×

×

×

○

×

×

×

×

×

×

ee_trn_gethandle

CBLEETRN('GETHNDL ')

×

×

×

×

×

×

×

×

×

×

×

×

×

×

○

×

ee_trn_uap_change

CBLEETRN('UAPCHG ')

×

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_trn_set_uj_info

CBLEETRN('SETUJINF')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_logprint_user

CBLEELOG('PRINTU ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_log_dctmsg

CBLEELOG('DCTMSG ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_log_actmsg

CBLEELOG('ACTMSG ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_tim_execap_perm

CBLEETIM('EXECAP-P')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_tim_execap_cancel_perm

CBLEETIM('CANCEL-P')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_tim_execap_check_perm

CBLEETIM('CHECK-P')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

×

○

ee_mem_userdump

CBLEEMEM('USERDUMP')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_sdh_init

CBLEESDH('INIT ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_sdh_strt

CBLEESDH('STRT ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_sdh_accs

CBLEESDH('ACCS ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_sdh_clar

CBLEESDH('CLAR ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_sdh_refs

CBLEESDH('REFS ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_sdh_fnsh

CBLEESDH('FNSH ')

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ee_obm_lot_end

CBLEEOBM('LOTEND')

×

×

△

×

×

×

×

×

×

×

×

×

×

×

×

×

ee_obm_lot_stop

CBLEEOBM('LOTSTOP')

×

×

△

×

×

×

×

×

×

×

×

×

×

×

×

×

ee_obm_stop

CBLEEOBM('STOP')

×

×

△

×

×

×

×

×

×

×

×

×

×

×

×

×

ee_obm_any_stop

CBLEEOBM('ANYSTOP')

×

×

○

○

○

○

○

○

○

○

○

×

○

○

×

○

ee_obm_recv

CBLEEOBM('RECV')

×

×

△

×

×

×

×

×

×

×

×

×

×

×

×

×

ee_bpp_setrc

CBLEEBPP('SETRC ')

×

×

×

×

×

×

×

×

×

×

×

×

×

×

○

×

ee_bpp_term

CBLEEBPP('TERM ')

×

×

×

×

×

×

×

×

×

×

×

×

×

×

○

×

ee_zrc_snd_message

なし

×

×

△

×

×

×

×

×

×

○

△

×

○

×

×

×

ee_zrc_snd_response

なし

×

×

△

×

×

△

×

×

×

×

×

×

×

×

×

×

ee_zrc_errtrns

なし

×

×

×

×

×

×

×

○

×

×

×

×

×

×

×

×

（凡例）

○：使用可

△：一部使用可。詳細は各APIの説明を参照してください。

×：使用不可

1.2　TP1/FSPライブラリ関数の文法（C言語）

1.2.1　形式

#include <eerpcsrv.h>

void  関数名(char *in, EEULONG *in_len, char *out, EEULONG *out_len,
EERPC_INTERFACE_TBL *trninf);

{
  サービスの処理
}

EERPC_INTERFACE_TBL構造体の形式を示します。

EERPC_INTERFACE_TBL {
  EEULONG    trn_len;
  EEULONG    group_len;
  char       servicegroup[32];
  EEULONG    service_len;
  char       service[32];
  char       trn_id[2];
  char       auto_block;
  char       commit_inf;
  EEULONG    thread_no;
  EEULONG    err_code;
  EEULONG    uifa_len;
  char       yobi_1[4];
  char       *uifa;
  EEULONG    usat_len;
  char       yobi_2[4];
  char       *usat;
  char       ans_inf;
  char       msg_inf;
  char       start_inf;
  char       before_end_inf;
  char       end_inf;
  char       thread_down_inf;
  char       uap_errtrn_inf;
  char       trninf_ex;
  EEULONG    rm_no;
  EELONG     rm_inf;
  EEULONG    es_group_len;
  char       es_servicegroup[32];
  EEULONG    es_service_len;
  char       es_service[32];
  EEULONG    abn_thread_no;
  EEULONG    trnlevel_len;
  union {
      TRNINF_SERVICE_EX  *trninf_service_ex;
      TRNINF_DBQ_EX      *trninf_dbq_ex;
      TRNINF_DBQ_OBS_EX  *trninf_dbq_obs_ex;
      TRNINF_OBM_EX      *trninf_obm_ex;
      TRNINF_TIM_EX      *trninf_tim_ex;
  } ex_inf;
  void             *xtc_pt;
  void             *mcp_pt;
  char             msg_type;
  char             errtrn_factor;
  char             run_inf;
  char             rm_func;
  EEULONG          rerun_cnt;
  EEULONG64        uifa_large_len;
  EEULONG64        usat_large_len;
  char             start_time[14];
  char             node_id[5];
  unsigned char    rtyrbk_cnt;
  char             trnlevel[32];
  char             yobi_ff[4];
  char             rtyrbk_area[32];
}

1.2.2　サービス関数に値が渡される引数

サービス関数に値が渡される引数を次の表に示します。

表1‒2　サービス関数に値が渡される引数

引数情報

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

UT

CU

JI

BS

入力パラメタ

×

×

○

○

○

○

○

○

○

○

×

○

×

○

入力パラメタ長

×

×

○

○

○

○

○

○

○

○

×

○

×

○

サービス関数の応答

×

×

×

×

×

×

×

×

△※

×

×

×

×

×

応答の長さ

×

×

○

○

○

○

×

×

○

×

×

○

×

×

トランザクション

インタフェース情報

○

○

○

○

○

○

○

○

○

○

○

○

○

○

（凡例）

○：参照可

△：条件によって参照可能

×：参照不可

MI：初期化トランザクション

ME：終了トランザクション

MN：サービストランザクション

E1：エラートランザクション1

E2：エラートランザクション2

E3：エラートランザクション3

E4：エラートランザクション4

ES：エラートランザクションS

ER：エラートランザクションR

TM：タイマトランザクション

UT：ユーザ初期化トランザクション

CU：ユーザコマンドトランザクション

JI：共有リソース初期化トランザクション

BS：オフラインバッチユーザトランザクション

注※

ERRTRNRによるRPC応答電文送信処理機能（rpc_reply_errtrnr=Y）使用時で拡張トランザクション種別（trninf_ex）がEERPC_SERVICE_TRN_EXの場合に○になります。

1.2.3　クライアントUAPから値が渡される引数

(1)　in

クライアントUAPで設定した，入力パラメタが渡されます。

ただし，トランザクション種別が「TM」「E4」「ES」「CU」「BS」の場合は次の値が渡されます。

表1‒3　トランザクション種別が「TM」「E4」「ES」「CU」「BS」の場合のin

トランザクション種別

渡される値

TM

ee_tim_execap，ee_tim_execap_permの起動するトランザクションに渡すデータ（data）に設定した値

E4

ee_tim_execap，ee_tim_execap_permの起動するトランザクションに渡すデータ（data）に設定した値

ES

トランザクションと同期して送信する非同期型のメッセージ送信API（ee_rpc_cmtsendなど）の入力パラメタ（in）に設定した値

CU

eeucmdコマンドの引数で指定する入力文字列で設定した値

BS

eebpprunコマンドの引数で指定する入力文字列で設定した値

コマンド引数省略時は空文字列

メッセージ種別がEERPC_MSGTYPE_OBMの場合

データ型OBMのノーマルトランザクションでトランザクション種別が「MN」「ER」「E3」の場合，バッチデータが渡されます。トランザクション種別が「ER」または「E3」で，発生元のトランザクション種別が「MN」のトランザクションでee_obm_recvを実行している場合は，最後にee_obm_recvを実行したときのバッチデータが渡されます。

オープントランザクション，クローズトランザクション，およびイベント型OBMのノーマルトランザクションでは参照できません。

(2)　in_len

クライアントUAPで設定した，入力パラメタの長さが渡されます。

ただし，トランザクション種別が「TM」「E4」「ES」「CU」「BS」の場合は次の値が渡されます。

表1‒4　トランザクション種別が「TM」「E4」「ES」「CU」「BS」の場合のin_len

トランザクション種別

渡される値

TM

ee_tim_execap，ee_tim_execap_permの起動するトランザクションに渡すデータの長さ（dataleng）に設定した値

E4

ee_tim_execap，ee_tim_execap_permの起動するトランザクションに渡すデータの長さ（dataleng）に設定した値

ES

トランザクションと同期して送信する非同期型のメッセージ送信API（ee_rpc_cmtsendなど）の入力パラメタ長（in_len）に設定した値

CU

eeucmdコマンドの引数で指定する入力文字列で設定した値の長さ

BS

eebpprunコマンドの引数で指定する入力文字列で設定した値の長さ

コマンド引数省略時は0

メッセージ種別がEERPC_MSGTYPE_OBMの場合

データ型OBMのノーマルトランザクションでトランザクション種別が「MN」「ER」「E3」の場合，バッチデータの長さが渡されます。トランザクション種別が「ER」または「E3」で，発生元のトランザクション種別が「MN」のトランザクションでee_obm_recvを実行している場合は，最後にee_obm_recvを実行したときのバッチデータの長さが渡されます。

オープントランザクション，クローズトランザクション，およびイベント型OBMのノーマルトランザクションでは参照できません。

(3)　out_len

クライアントUAPで設定した，応答の長さが渡されます。

メッセージ種別がEERPC_MSGTYPE_OBMの場合は参照できません。

1.2.4　TP1/EEから値が渡される引数（TP1/EE独自）

(1)　trninf

トランザクションインタフェース情報が渡されます。

本情報は，参照だけ可能です。内容を次の表に示します。

表1‒5　トランザクションインタフェース情報

項目

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

UT

CU

JI

BS

情報長

○

○

○

○

○

○

○

○

○

○

○

○

○

○

サービスグループ名長

○

○

○

○

○

○

○

○

○

○

○

○

○

○※2

サービスグループ名

○

○

○

○

○

○

○

○

○

○

○

○

○

○※2

サービス名長

×

×

○

○

○

○

○

×

○

○

×

○

×

×

サービス名

×

×

○

○

○

○

○

×

○

○

×

○

×

×

トランザクション種別

○

○

○

○

○

○

○

○

○

○

○

○

○

○

自動閉塞有無

×

×

×

×

×

○

×

×

×

×

×

×

×

×

コミット有無

×

×

×

×

×

○

×

×

○

×

×

×

×

×

処理スレッド通番

○

○

○

○

○

○

○

○

○

○

○

○

○

○

エラー要因コード

×

×

×

×

×

○

×

○

○

×

×

×

×

×

ユーザIFAエリアサイズ

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ユーザIFAエリアポインタ

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ユーザSATエリアサイズ

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ユーザSATエリアポインタ

○

○

○

○

○

○

○

○

○

○

○

○

○

○

応答要否

×

×

○

×

×

×

×

×

○

×

×

×

×

×

メッセージ状態

×

×

○

○

○

○

○

○

○

○

×

○

×

×

プロセス起動要因

○

×

×

×

×

×

×

×

×

×

×

×

○

×

前回プロセス終了要因

○

×

×

×

×

×

×

×

×

×

×

×

○

×

プロセス終了要因

×

○

×

×

×

×

×

×

×

×

×

×

×

×

スレッドダウン種別

×

×

×

×

×

○

×

×

×

×

×

×

×

×

異常発生トランザクション種別

×

×

×

×

×

○

×

×

○

×

×

×

×

×

拡張トランザクション種別

×

×

○

○

×

○

○

×

○

○

×

○

×

×

リソースマネジャ数

○

○

○

○

○

○

○

○

○

○

○

○

○

○

リソースマネジャ接続状態

○

○

○

○

○

○

○

○

○

○

○

○

○

×

送信サービスグループ名長

×

×

×

×

×

×

×

○

×

×

×

×

×

×

送信サービスグループ名

×

×

×

×

×

×

×

○

×

×

×

×

×

×

送信サービス名長

×

×

×

×

×

×

×

○

×

×

×

×

×

×

送信サービス名

×

×

×

×

×

×

×

○

×

×

×

×

×

×

異常発生処理スレッド通番

×

×

×

×

×

○

×

×

○

×

×

×

×

×

拡張トランザクションインタフェース情報

×

×

△

△

×

△

△

×

△

△

×

△

×

×

TP1/XTC拡張トランザクション情報

×

×

×

×

×

×

×

×

×

×

×

×

×

×

TP1/MCP拡張トランザクション情報

※1

※1

※1

※1

※1

※1

※1

※1

※1

※1

※1

※1

※1

×

メッセージ種別

×

×

○

○

○

○

×

○

○

×

×

○

×

×

エラートラン要因

×

×

×

×

×

×

○

×

×

×

×

×

×

×

ユーザIFAエリアサイズ（拡張）

○

○

○

○

○

○

○

○

○

○

○

○

○

○

ユーザSATエリアサイズ（拡張）

○

○

○

○

○

○

○

○

○

○

○

○

○

○

トランザクション起動要因

×

×

×

○

×

×

×

×

×

×

○

○

○

×

リソースマネジャ連携有無

○

○

○

○

○

○

○

○

○

○

○

○

○

○

サーバ再起動回数

○

×

×

×

×

×

×

×

×

×

×

×

○

×

トランザクション起動時刻

○

○

○

○

○

○

○

○

○

○

○

○

○

○

送信元のノード識別子

×

×

○

○

○

○

×

×

○

×

×

×

×

×

リトライ回数

×

×

○

×

×

×

×

×

×

○

×

○

×

×

トランザクションレベル名長

×

×

○

○

×

○

×

×

×

○

×

○

×

×

トランザクションレベル名

×

×

○

○

×

○

×

×

×

○

×

○

×

×

トランザクション引き継ぎ情報

×

×

○

×

×

○

×

×

×

○

×

○

×

×

（凡例）

○：参照可

△：拡張トランザクション種別がNULL以外の場合参照可

×：参照不可

注※1

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引」を参照してください。

注※2

サービスグループ名の代わりにジョブ名が設定されます。

(a)　トランザクション種別

トランザクション種別を設定します。

各トランザクションについては，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引」を参照してください。

（ ）はCOBOLで参照する場合の値です。

　EERPC_TRNKIND_MI：初期化トランザクション（'MI'）

　EERPC_TRNKIND_ME：終了トランザクション（'ME'）

　EERPC_TRNKIND_MN：サービストランザクション（'MN'）

　EERPC_TRNKIND_E1：エラートランザクション1（'E1'）

　EERPC_TRNKIND_E2：エラートランザクション2（'E2'）

　EERPC_TRNKIND_E3：エラートランザクション3（'E3'）

　EERPC_TRNKIND_E4：エラートランザクション4（'E4'）

　EERPC_TRNKIND_ES：エラートランザクションS（'ES'）

　EERPC_TRNKIND_ER：エラートランザクションR（'ER'）

　EERPC_TRNKIND_TM：タイマトランザクション（'TM'）

　EERPC_TRNKIND_UT：ユーザ初期化トランザクション（'UT'）

　EERPC_TRNKIND_CU：ユーザコマンドトランザクション（'CU'）

　EERPC_TRNKIND_JI：共有リソース初期化トランザクション（'JI'）

　EERPC_TRNKIND_BS：オフラインバッチユーザトランザクション（'BS'）

(b)　エラー要因コード

エラーとなった要因コードを設定します。

スレッドダウンの場合は，その詳細を設定します。この場合「スレッドダウン種別」の内容によって設定情報が異なります。

　同期シグナルの場合：シグナル番号

　トランザクションタイマの場合：なし

　ロールバック要求（スレッド強制終了指示）の場合：ee_trn_chained_rollback関数のecode引数

　DBキューの交替用メッセージ表書き込み機能使用時のロールバック要求（スレッド強制終了指示）の場合：次の情報を設定します。

　　・EEDBQ_ERRINF_WRITE：書き込み処理でエラー(5)

　　・EEDBQ_ERRINF_READ：読み出し処理でエラー(6)

　ロールバックリトライ発行回数上限オーバーの場合：ee_trn_retry_rollback関数のecode引数

　上記以外の場合：なし

トランザクション種別がエラートランザクションRの場合は，次の情報を設定します。

　EERPC_ERRINF_ROLLBACK：UAPリターン後，ロールバック決着(1)

　EERPC_ERRINF_HEURISTIC：UAPリターン後，ヒューリスティック決着(2)

　EERPC_ERRINF_NET_DOWN：UAPリターン後の同期点処理で，通信障害発生によってトランザクション未決着(3)

　EERPC_ERRINF_RM_DOWN：UAPリターン後の同期点処理で，RM障害発生によってトランザクション未決着(4)

(c)　スレッドダウン種別

スレッドダウン種別を設定します。

　EERPC_THDDOWN_SIGNAL：同期シグナル（X'01'）

　EERPC_THDDOWN_TIMER：トランザクションタイマ（X'02'）

　EERPC_THDDOWN_ROLLBACK：ロールバック要求（スレッド強制終了指示）（X'04'）

　EERPC_THDDOWN_ROLLBACKLIMITOVER：ロールバック発行回数上限オーバー（X'08'）

　EERPC_THDDOWN_INSTRUCTION：スレッドダウン指示による終了（X'09'）※

　EERPC_THDDOWN_COMMITLIMITOVER：コミット発行回数上限オーバー（X'20'）

　EERPC_THDDOWN_RETRYLIMITOVER：ロールバックリトライ発行回数上限オーバー（X'48'）

　EERPC_THDDOWN_STATIONARY_FORCE：トランザクション静止化による強制終了（X'80'）

　EERPC_THDDOWN_UNKNOWN：上記以外（X'40'）

注※

リトライロールバック前処理UOCでリターン値EETRN_UOC_NORETRY_KILL，EETRN_UOC_NORETRY_ABORT設定時

(d)　異常発生トランザクション種別

異常発生したトランザクション（要求元トランザクション）の種別を設定します。

　EERPC_UAPABN_MN：サービストランザクション（X'01'）

　EERPC_UAPABN_TM：タイマトランザクション（X'02'）

　EERPC_UAPABN_RM：再起動トランザクション（X'04'）

　EERPC_UAPABN_CU：ユーザコマンドトランザクション（X'08'）

(e)　メッセージ種別

トランザクション起動契機となった入力メッセージの種別を設定します。

　EERPC_MSGTYPE_RPC：RPCメッセージ（TCP/IP）（X'00'）

　EERPC_MSGTYPE_TIM：タイマトランザクションメッセージ（X'01'）

　EERPC_MSGTYPE_RAP：RAPメッセージ（TCP/IP）（X'02'）

　EERPC_MSGTYPE_DBQ：DBキューメッセージ（X'11'）

　EERPC_MSGTYPE_OBS：オンラインバッチメッセージ（X'12'）

　EERPC_MSGTYPE_OBM：OBMメッセージ（X'13'）

　EERPC_MSGTYPE_CMD：ユーザコマンドトランザクションメッセージ（X'21'）

(f)　拡張トランザクション種別

拡張トランザクション種別を設定します。拡張トランザクション種別がNULL以外の場合，拡張トランザクション情報を設定します。

　EERPC_TRN_EX_OBM：OBM拡張トランザクション情報（'B'）

　EERPC_TRN_EX_TIM：タイマ拡張トランザクション情報（'T'）

(g)　トランザクション起動要因

トランザクションを起動した要因を設定します。

UTトランの場合

EERPC_RUNINF_PROCSTART：プロセス初期化時の起動（X'01'）

EERPC_RUNINF_THDDOWN：スレッドダウン後の起動（X'02'）

EERPC_RUNINF_COMMAND：運用コマンドによる起動（X'03'）

EERPC_RUNINF_EECHGLIB：eechglibのライブラリ入れ替えによる起動（X'04'）

CUトランの場合

EERPC_RUNINF_START_OWN：自ノードからのユーザコマンド起動（X'01'）

EERPC_RUNINF_START_OTHER：他ノードからのユーザコマンド起動（X'02'）

E1トランの場合

EERPC_RUNINF_SERVICE_NAME：サービス名不正による起動（X'00'）

EERPC_RUNINF_TRNLEVEL_NAME：トランザクションレベル不正による起動（X'01'）

JIトランの場合

EERPC_RUNINF_FIRST：最初に起動したサーバ（X'01'）

EERPC_RUNINF_AFTER：2番目以降に起動したサーバ（X'02'）

(h)　リソースマネジャ連携有無

リソースマネジャ連携機能の使用有無を論理和で設定します。

　EERPC_RMFUNC_NONE：未使用（X'00'）

　EERPC_RMFUNC_XA：XA連携機能使用（X'01'）

　EERPC_RMFUNC_NONXA：非XA連携機能使用（X'02'）

(i)　サーバ再起動回数

TP1/EEを再起動した回数を設定します。TP1/EE起動時にKFSB55305-Eメッセージが出力されている場合は0を設定します。

(j)　送信元のノード識別子

送信元のノード識別子（¥0終端あり）を設定します。RPC要求以外でトランザクションを起動した場合は¥0を設定します。設定値についてはRPC関連定義のrpc_extend_sb_node_idオペランドの説明を参照してください。

(k)　トランザクションレベル名長

トランザクションレベル名長を設定します。

(l)　トランザクションレベル名

トランザクションレベル名を設定します。

E1起動時は，トランザクションレベル名判定UOCで不正とされたトランザクションレベル名が設定されます。不正とされたトランザクションレベル名が最大文字数（31文字）を超過して指定されている場合は，先頭から31バイト分が設定されます。

E3起動時は，スレッドダウンする前のトランザクションレベル名が設定されます。

(m)　拡張トランザクション情報

拡張トランザクション情報を設定します。

表1‒6　トランザクションインタフェース情報2

項目

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

UT

CU

JI

BS

情報長

×

×

×

×

×

×

×

×

○

×

×

×

×

×

サービス関数起動時の応答の長さ

×

×

×

×

×

×

×

×

○

×

×

×

×

×

（凡例）

○：参照可

×：参照不可

表1‒7　トランザクションインタフェース情報2（DBキュー機能使用時）

項目

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

UT

CU

JI

BS

情報長

×

×

○

×

×

○

×

×

○

×

×

×

×

×

読み込みDBキュー名

×

×

○

×

×

○

×

×

○

×

×

×

×

×

通番（読み込み）

×

×

○

×

×

○

×

×

×

×

×

×

×

×

ロールバック回数

×

×

○

×

×

○

×

×

○

×

×

×

×

×

（凡例）

○：参照可

×：参照不可

メッセージ種別がEERPC_MSGTYPE_OBMの場合

OBMの拡張トランザクション情報が設定されます。

EEOBM_INTERFACE_TBL{
    char          trn_type;     /* OBM トランザクション種別 */
    char          filler1[7];   /* 予備 */
    EEOBM_OPEN_TBL *open_pt;    /* オープントランザクションインタフェースアドレス */
    EEOBM_NORM_TBL *norm_pt;    /* ノーマルトランザクションインタフェースアドレス */
    EEOBM_CLOSE_TBL *close_pt;  /* クローズトランザクションインタフェースアドレス */
    char          filler2[64];  /* 予備 */
}

trn_type

OBMのトランザクション種別が設定されます。

　EEOBM_TRN_OPEN：オープントランザクション

　EEOBM_TRN_NORM：ノーマルトランザクション

　EEOBM_TRN_CLOSE：クローズトランザクション

open_pt

オープントランザクションのインタフェースのアドレスです。OBMのトランザクション種別がEEOBM_TRN_OPENの場合に参照できます。

norm_pt

ノーマルトランザクションのインタフェースのアドレスです。OBMのトランザクション種別がEEOBM_TRN_NORMの場合に参照できます。

close_pt

クローズトランザクションのインタフェースのアドレスです。OBMのトランザクション種別がEEOBM_TRN_CLOSEの場合に参照できます。

表1‒8　拡張トランザクションインタフェース情報

項目

トランザクション種別

MN

E3

ER

OBMトランザクション種別

( )内は設定される値

○

(O)

○

(N)

○

(C)

○

(O)

○

(N)

○

(C)

○

(O)

○

(N)

○

(C)

オープントランザクションインタフェースアドレス

○

×

×

○

×

×

○

×

×

ノーマルトランザクションインタフェースアドレス

×

○

×

×

○

×

×

○

×

クローズトランザクションインタフェースアドレス

×

×

○

×

×

○

×

×

○

（凡例）

○：参照可

×：参照不可

O：オープントランザクション

N：ノーマルトランザクション

C：クローズトランザクション

オープントランザクションインタフェース

EEOBM_OPEN_TBL{
    EELONG    lot_name_len;             /* ロット名長           */
    char      lot_name[9];              /* ロット名             */
    char      filler1[3];               /* 予備                 */
    char      type;                     /* バッチの形式         */
    char      req;                      /* 要求種別             */
    char      status;                   /* OBM状態              */
    char      filler1[61];              /* 予備                 */
}

lot_name_len

開始要求を受け付けた最上位のロット名（OBM名）長が設定されます。

lot_name

開始要求を受け付けた最上位のロット名（OBM名）が設定されます。

type

バッチの形式が設定されます。

　EEOBM_TYPE_DATA：データ型OBM

　EEOBM_TYPE_EVENT：イベント型OBM

req

開始要求種別が設定されます。

　EEOBM_START：OBM開始

　EEOBM_RESTART：OBM再開始

status

OBM開始，再開始要求を受け付けたときのOBMの状態が設定されます。

　EEOBM_STATUS_INIT：初期状態

　EEOBM_STATUS_STOP_P：計画停止中

　EEOBM_STATUS_STOP_F：強制停止中

ノーマルトランザクションインタフェース

EEOBM_NORM_TBL{
    EELONG   lot_name_len[4]; /* ロット名長                       */
    char     lot_name[4][9];  /* ロット名                         */
    EELONG   lot_name_num;    /* ロット名数                       */
    EELONG   lotid[4];        /* ユーザが任意に設定したロットID   */
    EELONG   key_len[7];      /* バッチデータのキー長             */
    char     key[7][8];       /* バッチデータのキー               */
    char     filler1[3];      /* 予備                             */
    char     type;            /* バッチの形式                     */
    EELONG   data_no;         /* バッチデータの通番               */
    EELONG   proc_num;        /* ノーマルトランザクション処理済み件数 */
    EELONG    total_proc_num;   /* 処理済み件数                   */
    char      filler2[32];      /* 予備                           */
}

lot_name_len

ロット名長が設定されます。

配列の0番目が最上位のロット名長で，以下昇順に下位ロットのロット名長が設定されます。配列の3番目の要素は，今後の拡張用です。

lot_name

ロット名が設定されます。

配列の0番目が最上位のロット名で，以下昇順に下位ロットのロット名が設定されます。配列の3番目の要素は，今後の拡張用です。

lot_name_num

lot_name_len，lot_name，lotidに設定されたロット名長，ロット名，およびロットIDの数が設定されます（最下位ロットのロットレベル）。

lotid

開始UOCでユーザが設定したロットIDが設定されます。

配列の0番目が最上位のロットIDで，以下昇順に下位ロットのロットIDが設定されます。

key_len

バッチデータのキーの長さが設定されます。データ型OBMの場合に設定されます。OBM構成定義lotentry -k keyn_sizeオペランドの設定値が配列のn-1番目に設定されます。ロット構成が1階層の場合は，キーの長さは0が設定されます。

配列の3番目以降の要素は，今後の拡張用です。

key

バッチデータのキーが設定されます。データ型OBMの場合に設定されます。OBM構成定義の最下位ロットのlotdef -k hexnオペランドの設定値が配列のn-1番目に設定されます。ロット構成が1階層の場合は，キーは設定されません。

配列の3番目以降の要素は，今後の拡張用です。

type

バッチの形式が設定されます。

　EEOBM_TYPE_DATA：データ型OBM

　EEOBM_TYPE_EVENT：イベント型OBM

data_no

バッチデータの通番が設定されます。データ型OBMの場合に設定されます。

proc_num

該当ロットのノーマルトランザクションの正常終了によって処理済みとしたバッチデータ件数が設定されます。データ型OBMでトレーラレコードのノーマルトランザクションの場合に設定されます。

トランザクション種別が「ER」の場合は，処理済みとしたバッチデータ件数が設定されないで0が設定されることがあります。

total_proc_num

該当ロットの処理済みのバッチデータ件数が設定されます。データ型OBMでトレーラレコードのノーマルトランザクションの場合に設定されます。処理済みのバッチデータ件数に数えられるのは，次の件数の和です。

ノーマルトランザクションの正常終了によって処理済みとした件数。

OBM構成定義obmdef -eにskipを設定した場合にノーマルトランザクションの異常終了によって処理済みとした件数。

eeobmskipコマンドで処理済みとした件数。

トランザクション種別が「ER」の場合は，処理済みとしたバッチデータ件数が設定されないで0が設定されることがあります。

クローズトランザクションインタフェース

EEOBM_CLOSE_TBL{
    EELONG    lot_name_len;    /* ロット名長                          */
    char      lot_name[9];     /* ロット名                            */
    char      filler1[1];      /* 予備                                */
    char      type;            /* バッチの形式                        */
    char      status;          /* OBM状態                             */
    EELONG    reason_code;     /* 停止，終了理由コード                 */
    EELONG    user_code;       /* ユーザが設定した停止，終了理由コード */
    EELONG    proc_num;        /* ノーマルトランザクション処理済み件数 */
    EELONG    trail_num;       /* 処理済みトレイラレコード数           */
    EELONG    total_proc_num;  /* 処理済み件数                         */
    EELONG    max_data_num;    /* 一連通番の最大値の合計               */
    char      filler2[60];     /* 予備                                 */
}

lot_name_len

最上位のロット名（OBM名）長が設定されます。

lot_name

最上位のロット名（OBM名）が設定されます。

type

バッチの形式が設定されます。

　EEOBM_TYPE_DATA：データ型OBM

　EEOBM_TYPE_EVENT：イベント型OBM

status

OBM停止，終了要求を受け付けたときの要求された終了，停止形態が設定されます。

　EEOBM_STATUS_STOP_P：計画停止

　EEOBM_STATUS_STOP_F：強制停止

　EEOBM_STATUS_END_F：強制終了

　EEOBM_STATUS_END_N：正常終了

reason_code

OBMが停止した理由コードが設定されます。強制終了の場合は，計画停止，または強制停止時の理由コードが引き継がれます。

　EEOBM_RCODE_NONE：理由コードなし（正常終了の場合に設定されます）

　EEOBM_RCODE_USER：ユーザ要求

　EEOBM_RCODE_LOT_STOP：全ロット停止

　EEOBM_RCODE_RRN：TP1/EE再開始

　EEOBM_RCODE_ROLLBACK：ノーマルトランザクション異常終了

　EEOBM_RCODE_ROLLBACK_OPE：オープントランザクション異常終了

　EEOBM_RCODE_ROLLBACK_CLS：クローズトランザクション異常終了

　EEOBM_RCODE_UOC：終了UOCの設定値不正

　EEOBM_RCODE_DATA_ACCESS：バッチデータ入力障害

　EEOBM_RCODE_MEMORY：メモリ不足

　EEOBM_RCODE_DATA_NUM：バッチデータ通番抜け

　EEOBM_RCODE_NO_SUCH_SERVICE：サービス名不正

　EEOBM_RCODE_DB_DESTROY：バッチデータ表不正

　EEOBM_RCODE_NO_SUCH_TRNLVL：トランザクションレベル名不正

　EEOBM_RCODE_DATA_NUM_MIX：ヒューリスティックハザード決着による通番矛盾

　EEOBM_RCODE_SCD_DBAREA：処理済み通番管理表RDエリア不足

　EEOBM_RCODE_SCD_ROLLBACK：ロットスケジューラ障害

　EEOBM_RCODE_RPC_SEND：BCMからBCSへ送信時の通信障害

　EEOBM_RCODE_RPC_RECV：BCSからの応答受信時の通信障害

　EEOBM_RCODE_TIMEOUT：BCSとのハートビート障害

　EEOBM_RCODE_RPC_RECV_CLT：OBM開始コマンドからの要求受信時の通信障害

　EEOBM_RCODE_RPC_SEND_CLT：OBMからOBM開始コマンドへ応答送信時の通信障害

　EEOBM_RCODE_TIMEOUT_CLT：OBM開始コマンドとのハートビート障害

　EEOBM_RCODE_SYSERR：その他要因

user_code

ユーザが停止要求時に設定した理由コードが設定されます。停止した理由コードがEEOBM_RCODE_USER以外の場合は，値は設定されません。

proc_num

該当OBMの全ロットのノーマルトランザクションの正常終了によって処理済みとしたバッチデータ件数が設定されます。データ型OBMの場合に設定されます。2,147,483,647を超える場合は，2,147,483,647が設定されます。

ノーマルトランザクションで処理済みとしたトレイラレコードの数は含みません。

BCSのTP1/EEがプロセスダウンした場合は，実際の処理済み件数より少ない値が設定されることがあります。

trail_num

該当OBMの全ロットのノーマルトランザクションの正常終了によって処理済みとしたトレイラレコードの数が設定されます。トレイラレコードをノーマルトランザクションで処理しない場合は，カウントされません。トレイラレコードをeeobmskipコマンドで処理済みとした場合，およびOBM構成定義obmdef -eにskipを設定した場合にノーマルトランザクションの異常終了によって処理済みとした場合は，その件数を含みません。

total_proc_num

該当OBMの全ロットの処理済みのバッチデータ件数が設定されます。データ型OBMの場合に設定されます。処理済みのバッチデータ件数に数えられるのは，次の件数の和です。2,147,483,647を超える場合は，2,147,483,647が設定されます。

BCSのTP1/EEがプロセスダウンした場合は，実際の処理済み件数より少ない値が設定されることがあります。

ノーマルトランザクションの正常終了によって処理済みとした件数。

ノーマルトランザクションの正常終了によって処理済みとしたトレイラレコードの件数。

トレイラレコードをノーマルトランザクションで処理しない場合は，カウントされません。

OBM構成定義obmdef -eにskipを設定した場合にノーマルトランザクションの異常終了によって処理済みとした件数。2,147,483,647を超える場合は，2,147,483,647が設定されます。

eeobmskipコマンドで処理済みとした件数。トレイラレコードをeeobmskipコマンドで処理済みとした場合は，その件数も含みます。2,147,483,647を超える場合は，2,147,483,647が設定されます。

max_data_num

該当OBMの全ロットのバッチデータの一連通番の最大値の合計が設定されます。2,147,483,647を超える場合は，2,147,483,647が設定されます。

拡張トランザクション種別がEERPC_TRN_EX_TIMの場合

永続化指定のタイマトランザクションの拡張トランザクション情報が設定されます。

TRNINF_TIM_EX{
    EEULONG  trn_len;          /* 情報長                      */
    char     reqid[32];        /* リクエスト識別子            */
    char     yobi[164];        /* 予備                        */
}

情報長

トランザクションインタフェース情報長を設定します。

図1‒1　設定するトランザクションインタフェース情報長

リクエスト識別子

永続化指定のタイマトランザクション登録時に指定したリクエスト識別子を設定します。ユーザタイマ参照UOCでリクエスト識別子を変更した場合は，変更後のリクエスト識別子を設定します。

表1‒9　設定するリクエスト識別子

項目

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

UT

CU

JI

BS

情報長

×

×

×

○

×

○

○

×

○

○

×

×

×

×

リクエスト識別子

×

×

×

○

×

○

○

×

○

○

×

×

×

×

（凡例）

○：参照可

×：参照不可

メッセージ種別がEERPC_MSGTYPE_OBMの場合

メッセージ種別がEERPC_MSGTYPE_OBMの場合にトランザクションで発行可否が異なるAPIの発行可否一覧を次に示します。ここに記載のないAPIは，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

API名

トランザクション種別

MN

E3

ER

OBMトランザクション種別

O

N

C

O

N

C

O

N

C

ee_obm_lot_end

×

○

×

×

×

×

×

×

×

ee_obm_lot_stop

×

○

×

×

×

×

×

×

×

ee_obm_stop

×

○

×

×

×

×

×

×

×

ee_obm_any_stop

○

○

○

○

○

○

○

○

○

ee_obm_recv

×

○

×

×

×

×

×

×

×

（凡例）

○：発行可

×：発行不可

O：オープントランザクション

N：ノーマルトランザクション

C：クローズトランザクション

(n)　トランザクション引き継ぎ情報

リトライロールバック機能使用時，リトライロールバック前処理UOCで指定したトランザクション引き継ぎ情報を設定します。

(o)　リトライ回数

リトライロールバック機能使用時，リトライ回数を設定します。

1.2.5　トランザクション制御（ee_trn_〜）（C言語）

(1)　ee_trn_watch

名称

トランザクション処理時間監視

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_watch(EEULONG cntrl, EEULONG time_type, EEULONG watch_time, EELONG flags);

機能

トランザクション処理の時間監視を経過時間（リアルタイム）で行います。トランザクション実行中にタイムアウトとなったときは，uapabend_downmodeオペランド値に従い，プロセスダウン，または該当のスレッドを強制終了させて，ERRTRN3（定義がある場合だけ）を起動します。

同一トランザクション内でee_trn_set_exp_time関数を発行済みの場合，本関数は使用できません。

UAPで値を設定する引数

cntrl

時間監視に関する指示を設定します。

EETRN_CNTRL_START：時間監視を開始します。

EETRN_CNTRL_SUPRES：時間監視を抑止します。

EETRN_CNTRL_RSTART：抑止した時間監視を再開します。

EETRN_CNTRL_STOP：時間監視を終了します。

time_type

監視時間値watch_timeの形式を設定します。cntrlにEETRN_CNTRL_START以外が指定された場合，指定値を無視します。

EETRN_TIME_TYPE_BINARY：EEULONGの形式で設定します。

watch_time

監視時間値を秒単位（1〜65,535）で設定します。

cntrlにEETRN_CNTRL_START以外が指定された場合，指定値を無視します。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

EETRNER_UNRESOLVABLE

その他のエラーが発生しました。

注意事項

トランザクション関連定義のtrn_expiration_time，trn_expiration_time_xx，またはユーザサービス定義のservice_attrでトランザクション処理監視時間を指定しているときは，トランザクション処理の時間監視が開始した状態でUAPのサービス関数が呼び出されます。同期点処理後は定義で指定したトランザクション処理時間監視値に戻ります。

トランザクション処理の監視時間の変更は，コール元のトランザクションに限定されるため，eetrntimコマンドの-lオプション指定によるトランザクション処理の監視時間情報の表示には反映されません。

(2)　ee_trn_getrtime

名称

トランザクション処理時間監視の残り時間取得

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_getrtime(EEULONG time_type, EEULONG *res_time, EELONG flags);

機能

トランザクション処理の時間監視での残り時間を取得します。

UAPで値を設定する引数

time_type

残り時間値res_timeの形式を設定します。

EETRN_TIME_TYPE_BINARY：EEULONGの形式で設定します。

res_time

残り時間値を格納する領域のアドレスを設定します。

flags

EENOFLAGSを設定します。

TP1/EEから値が返される引数

res_time

トランザクション処理の時間監視での残り時間が秒単位で格納されます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

EETRNER_NONE

トランザクション処理の時間監視中ではありません。

EETRNER_UNRESOLVABLE

その他のエラーが発生しました。

(3)　ee_trn_uap_put

名称

UAP履歴情報の取得

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_uap_put(EETRNUAPBUF *uap_buf, EELONG flags);

typedef struct ee_trn_uap_buf_t{    /*履歴情報バッファ構造体    */
        EETRNUAPBUF *next_uap_buf;  /*次履歴情報バッファアドレス*/
        char *uap_inf;              /*履歴情報アドレス          */
        EEULONG buf_size;           /*履歴情報全体サイズ        */
        EEULONG ee_inf1;            /*TP1/EE使用領域            */
        EEULONG ee_inf2;            /*TP1/EE使用領域            */
        char dummy[4];             /*予備                      */
} EETRNUAPBUF;

typedef struct ee_trn_uap_header_t{  /*履歴情報ヘッダ構造体     */
        char uap_info[4];            /*データ連携支援引き継ぎ情報*/
        char uap_header[16];         /*ユーザ任意情報            */
        unsigned short uap_putid;    /*取得先ID                 */
        unsigned char uap_type;      /*履歴情報種別             */
        unsigned char uap_code;      /*履歴情報コード           */
        char dummy2[4];              /*予備                     */
        EEULONG uap_size;            /*履歴情報サイズ           */
} EEUAPHEADER;

機能

指定したUAP履歴情報（履歴情報ヘッダ含む）をトランザクションのコミット時に取得先IDに対応したDB表（履歴情報表）に取得します。

UAPで値を設定する引数

uap_buf

履歴情報バッファ構造体の先頭アドレスを設定します。

履歴情報バッファ構造体には次の情報を設定します。

次履歴情報バッファアドレス

次の履歴情報バッファがない場合は，NULLを設定します。

履歴情報アドレス

履歴情報全体サイズ

履歴情報ヘッダと履歴情報のサイズの合計値を設定します。履歴情報全体サイズの最大長は，マニュアル「TP1/Financial Service Platform 使用の手引」を参照してください。

履歴情報ヘッダ構造体に次の情報を設定します。

ユーザ任意情報

任意の情報を設定します。TP1/EEでは参照しません。

取得先ID

トランザクション関連定義のtrnaphputid定義コマンドで指定した取得先IDを設定します。

履歴情報種別

EETRN_UAP_TYPE_UJ：ユーザデータ（UJ）としてUAP履歴情報を取得するときに設定します。

EETRN_UAP_TYPE_IJ：入力データ（IJ）としてUAP履歴情報を取得するときに設定します。

履歴情報コード

任意の情報を設定します。TP1/EEでは参照しません。

履歴情報サイズ

履歴情報（ユーザデータまたは入力データ）のサイズを設定します。TP1/EEでは参照しません。

図1‒2　履歴情報領域の構造

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

発行不可のトランザクションです。

ee_trn_rollback_mark関数を発行済みです。

ee_trn_uap_fput関数を発行済みです。

EETRNER_NO_OPTION

UAP履歴情報取得機能は使用できません。

EETRNER_RM_CONNECT

リソースマネジャと未接続です。

EETRNER_OVER

1トランザクションで取得できるUAP履歴情報の最大数を超えています。

EETRNER_SQL_ERROR

SQL実行時にエラーが発生したため，ee_trn_rollback_mark関数を呼び出しました。

EETRNER_STOP

取得先IDに属するすべてのUAP履歴情報グループは，障害によって使用不可状態です。

注意事項

1トランザクションで取得できるUAP履歴情報（製品が取得する出力データ（OJ）も含む）の最大数は，32,767です。

取得先IDに属するUAP履歴情報グループのうち，使用不可状態でないUAP履歴情報グループが1つでもある場合，リターン値はEETRNER_STOPで返りません。

履歴情報全体サイズが指定可能な最大長を超えた場合，リターン値はEETRNER_ARGUMENTになります。

1回の要求で，1トランザクションで取得できるUAP履歴情報の最大数を超えた場合，リターン値はEETRNER_ARGUMENTになります。

履歴情報ヘッダ構造体のデータ連携支援引き継ぎ情報は，データ連携支援実行時にee_trn_set_uj_info()関数で設定した情報で更新します。

(4)　ee_trn_retry_rollback

名称

リトライモードのロールバック

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_retry_rollback(EEULONG thkind, EEULONG ecode);

機能

トランザクションをロールバックします。ロールバックしたあとには，スレッドダウンします。スレッドダウン後に，サービス関数を再度開始します。このとき，サービスに渡すメッセージは，ee_trn_retry_rollbackを呼び出したサービス関数に渡したメッセージと同じ内容です。ee_trn_retry_rollbackを呼び出したサービス関数でメッセージを更新しても，更新内容は反映されないで更新前のメッセージを渡します。

ee_trn_retry_rollbackは同期点処理が完了すると，ee_trn_retry_rollbackを呼び出したスレッドを強制終了します。呼び出したサービス関数にリターンするのはエラーのときだけです。

UAPで値を設定する引数

thkind

リトライ回数の上限に達した場合に，メモリDUMPファイルとCOBOL異常終了時要約リストを出力するかどうかを設定します。

EETRN_KILL：メモリDUMPファイルとCOBOL異常終了時要約リストを出力しません。

EETRN_ABRT：メモリDUMPファイルとCOBOL異常終了時要約リストを出力します。

ecode

リトライ回数の上限に達した場合に，ERRTRN3へ引き渡すエラー要因コードを設定します。

リターン値

リターン値

意味

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

trn_max_retry_countオペランドに0を指定しています。

発行不可のトランザクションです。

トランザクショナルRPCによって起動されたトランザクションです。

トランザクショナルRPC要求を行ったトランザクションです。

RPC応答メッセージを抑止済みです。

(5)　ee_trn_uap_change

名称

UAP履歴情報の取得先ID変更

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_uap_change(unsigned char uap_type,
                      unsigned short before_uap_putid,
                      unsigned short after_uap_putid,
                      EELONG flags);

機能

入力データ（IJ）および出力データ（OJ）の取得先IDを変更します。

入力データ（IJ）の取得先ID変更

本関数発行以前に本トランザクションでUAP履歴情報取得要求した入力データ（IJ）に対して有効です。変更後の変更先IDに属するUAP履歴情報グループのバッファにバッファリングします。

出力データ（OJ）の取得先ID変更

本関数発行以降に本トランザクションでUAP履歴情報取得要求する出力データ（OJ）に対して有効です。出力データ（OJ）の取得先IDが，変更後の取得先IDに代わります。

UAPで値を設定する引数

uap_type

EETRN_UAP_TYPE_IJ：入力データ（IJ）の取得先IDを変更する場合に指定します。

EETRN_UAP_TYPE_OJ：出力データ（OJ）の取得先IDを変更する場合に指定します。

before_uap_putid

uap_typeがEETRN_UAP_TYPE_IJの場合，トランザクション関連定義のtrnaphputid定義コマンドで指定した変更前の取得先IDを設定します。

uap_typeがEETRN_UAP_TYPE_OJの場合，指定値を無視します。

after_uap_putid

トランザクション関連定義のtrnaphputid定義コマンドで指定した変更後の取得先IDを設定します。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

発行不可のトランザクションです。

ee_trn_rollback_mark関数を発行済みです。

EETRNER_NO_OPTION

UAP履歴情報取得機能は使用できません。

EETRNER_RM_CONNECT※1

リソースマネジャと未接続です。

EETRNER_SQL_ERROR※2

SQL実行時にエラーが発生したため，ee_trn_rollback_mark関数を呼び出しました。

EETRNER_STOP※1

取得先IDに属するすべてのUAP履歴情報グループは，障害によって使用不可状態です。

EETRNER_NO_DATA※2

変更前の取得先IDに，入力データ（IJ）がありません。

変更前の取得先IDに属するUAP履歴情報グループで，途中書き込みが発生しているため，変更できません。

注※1

変更後の取得先ID関連だけチェックします。

注※2

uap_typeにEETRN_UAP_TYPE_IJを指定した場合だけです。

注意事項

以前に取得した入力データ（IJ）のうち，変更前の取得先IDが一致する入力データ（IJ）だけ，取得先IDが変更されます。変更前の取得先IDが一致しない入力データ（IJ）は変更されません。

入力データ（IJ）について，最大履歴情報長（eeaphgrphコマンドの-zオプション指定値）が変更前の取得先IDに属するUAP履歴情報グループより小さくなる場合，履歴情報のサイズが算出式を満たしていないと，エラーになります。

(6)　ee_trn_gethandle

名称

接続ハンドル取得

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_gethandle(char *groupid, void **handle_pt, EELONG flags);

機能

HiRDBを使用した環境でSQLを実行するために，TP1/EEが管理している接続ハンドルを取得します。

UAPで値を設定する引数

groupid

ユーザサービス用xa_open関数用文字列に指定した環境変数グループ識別子（先頭4文字）を設定します。文字列の最後にはヌル文字を設定してください。このヌル文字は文字列の長さに数えません。

handle_pt

接続ハンドルを格納する領域のアドレスを設定します。

flags

EENOFLAGSを設定します。

TP1/EEから値が返される引数

handle_pt

接続ハンドルが格納されます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチ/データ連携支援以外から発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

トランザクション関連定義trnstring定義コマンドが設定されていません。

EETRNER_RM_CONNECT

リソースマネジャと未接続です。

注意事項

TP1/EEは，HiRDBの複数接続機能を使用して，HiRDBサーバと接続します。本関数で取得した接続ハンドルを使用して，接続ハンドルの宣言「DECLARE CONNECTION HANDLE SET」を行ってください。

(7)　ee_trn_set_uj_info

名称

データ連携支援引き継ぎ情報の設定

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_set_uj_info(char *uj_info, EELONG flags)

機能

データ連携支援機能へ引き継ぐユーザ情報（データ連携支援引き継ぎ情報）を設定します。

データ連携支援引き継ぎ情報サイズは4バイト固定です。

この情報は，データ連携支援機能の次のUOCで参照できます。

反映先指定UOC

編集UOC

反映UOC

この情報は，本API発行が正常終了したあとに同期点を取得した，全トランザクションのUAP履歴情報に引き継がれます。

この情報は，APIを発行したトランザクションがロールバックした場合でも有効となります。

この情報は，リラン回復対象ではありません。

UAPで値を設定する引数

uj_info

データ連携支援引き継ぎ情報格納領域の先頭アドレスを指定します。

指定されたアドレスから先頭4バイトをデータ連携支援引き継ぎ情報とします。

この情報は，履歴情報レコードエリアの履歴情報ヘッダのデータ連携支援引き継ぎ情報領域に格納されます。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，この機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

EETRNER_NO_OPTION

UAP履歴情報取得機能は使用できません。

注意事項

UAP履歴情報のデータ連携支援引き継ぎ情報は，データ連携支援機能だけで有効です。

(8)　ee_trn_uap_fput

名称

UAP履歴情報の強制取得

形式

ANSI C，C++の形式

#include <eetrn.h>
int ee_trn_uap_fput(EETRNUAPBUF *uap_buf, EETRNUAPTBL *uap_tbl, EELONG flags)

typedef struct ee_trn_uap_buf_t{   /*履歴情報バッファ構造体      */
        EETRNUAPBUF *next_uap_buf; /*次履歴情報バッファアドレス  */
        char *uap_inf;             /*履歴情報アドレス            */
        EEULONG buf_size;          /*履歴情報全体サイズ          */
        EEULONG ee_inf1;           /*TP1/EE使用領域              */
        EEULONG ee_inf2;           /*TP1/EE使用領域              */
        char dummy[4];             /*予備                         */
} EETRNUAPBUF;

typedef struct ee_trn_uap_tbl_t{  /*取得先情報構造体        */
        char group_name[32];      /*UAP履歴情報グループ名  */
        char tbl_name[32];        /*履歴情報表名            */
        char dummy[64];           /*予備                    */
} EETRNUAPTBL;

typedef struct ee_trn_uap_header_t{  /*履歴情報ヘッダ構造体    */
        char uap_info[4];            /*データ連携引き継ぎ情報  */
        char uap_header[16];         /*ユーザ任意情報          */
        unsigned short uap_putid;    /*取得先ID               */
        unsigned char uap_type;      /*履歴情報種別            */
        unsigned char uap_code;      /*履歴情報コード          */
        char dummy2[4];              /*予備                    */
        EEULONG uap_size;            /*履歴情報サイズ          */
} EEUAPHEADER;

機能

指定したUAP履歴情報（履歴情報ヘッダ含む）をトランザクションのコミット時に取得先情報に指定した履歴情報表に取得します。

この関数は，-cオプションを指定したeeaphswapコマンドによってスワップして使用済みの状態となった履歴情報表だけを対象とします。

1トランザクション内で同じUAP履歴情報グループの異なる履歴情報表への取得はできません。

-tオプション，または-Tオプションを指定してeeaphlshコマンドを実行して強制書き込み可能数を確認することで，この関数が発行できるかどうかを確認できます。

UAPで値を設定する引数

uap_buf

履歴情報バッファ構造体の先頭アドレスを設定します。

履歴情報バッファ構造体に次の情報を設定します。

次履歴情報バッファアドレス

NULLを設定します。

履歴情報アドレス

履歴情報全体サイズ

履歴情報ヘッダと履歴情報のサイズの合計値を設定します。履歴情報全体サイズの最大長は，マニュアル「TP1/Financial Service Platform 使用の手引」を参照してください。

履歴情報ヘッダ構造体に次の情報を設定します。

データ連携引き継ぎ情報

データ連携引き継ぎ情報を設定します。

ユーザ任意情報

任意の情報を設定します。TP1/EEでは参照しません。

取得先ID

トランザクション関連定義のtrnaphputid定義コマンドで指定した取得先IDを設定します。

履歴情報種別

EETRN_UAP_TYPE_UJ：ユーザデータ（UJ）としてUAP履歴情報を取得するときに設定します。

履歴情報コード

任意の情報を設定します。TP1/EEでは参照しません。

履歴情報サイズ

履歴情報（ユーザデータ）のサイズを設定します。TP1/EEでは参照しません。

図1‒3　履歴情報領域の構造

uap_tbl

取得先情報構造体の先頭アドレスを設定します。

取得先情報構造体に次の情報を設定します。

UAP履歴グループ名

取得先のUAP履歴情報グループ名を26バイト以内の文字列で設定します。文字列の最後にはヌル文字を設定してください。このヌル文字は文字列の長さに数えません。

履歴情報表名

取得先の履歴情報表名を26バイト以内の文字列で設定します。文字列の最後にはヌル文字を設定してください。このヌル文字は文字列の長さに数えません。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

発行不可のトランザクションです。

ee_trn_rollback_mark関数を発行済みです。

ee_trn_uap_put関数発行済み，または出力データ（OJ）を取得済みです。

強制取得可能な履歴情報表ではありません。

履歴情報表の空きが不足しています。

EETRNER_NO_OPTION

UAP履歴情報取得機能は使用できません。

EETRNER_RM_CONNECT

リソースマネジャと未接続です。

EETRNER_OVER

取得できるUAP履歴情報の最大数を超えています。

EETRNER_SQL_ERROR

SQL実行時にエラーが発生したため，ee_trn_rollback_mark関数を呼び出しました。

EETRNER_STOP

UAP履歴情報グループは，障害によって使用不可状態です。

注意事項

この関数で取得できるUAP履歴情報の最大数は，eeaphswapコマンドの-cオプション指定値に依存します。

同じ履歴情報表名を設定して，複数スレッドから同時にこの関数を実行しないでください。実行した場合，UAP履歴情報の取得に失敗することがあります。

履歴情報全体サイズが指定可能な最大長を超えた場合，リターン値はEETRNER_ARGUMENTになります。

履歴情報ヘッダ構造体のデータ連携引き継ぎ情報は，ee_trn_set_uj_info()関数で設定した情報では更新されないため，この関数で設定してください。この関数を1トランザクションで複数回発行したときは，最後に発行したときのデータ連携引き継ぎ情報が有効となります。

この関数の延長でSQLが実行されます。

1.2.6　メッセージログの出力（ee_log_〜）（C言語）

(1)　ee_logprint_user

名称

ユーザメッセージログの出力

形式

ANSI C，C++の形式

#include <eelog.h>
int  ee_logprint_user(char *msgid,char *pgm_id, char *string,char *info,
EELONG stdflags, EELONG flags);

機能

引数に設定した文字列に，TP1/EEで行ヘッダ，メッセージID，要求元プログラムIDを付けて，メッセージログファイル，標準出力，syslogに出力します。メッセージログファイルの行ヘッダは，プロセスID，メッセージ通番，サービス名称，中央処理通番，年月日，時刻です。標準出力，syslogの行ヘッダは定義で設定します。syslog出力は，flagsに設定した出力レベルが定義に指定した出力レベルと同じか高い場合です。flagsに出力レベルを設定しなかった場合の出力レベルは，1です。

メッセージテキストに復改文字「¥n」を含むメッセージログは，メッセージログファイル，syslogへの出力時，1行で出力されます。標準出力への出力時は，復改文字「¥n」はそのまま出力されます。

障害が起こってUAPからメッセージログが出力できない場合でも，ee_logprint_user関数がEE_OKで正常に終了することがあります。そのためメッセージログが抜ける場合がありますが，メッセージログの抜けはメッセージログに付けるメッセージログ通番で確認できます。

1つのスレッドから複数回ee_logprint_user関数を呼び出した場合は，メッセージログファイルへの出力順序は保証されます。ただし，複数のスレッドから別々にee_logprint_user関数を呼び出した場合は，呼び出した順にメッセージログファイルに出力されない場合があります。

エラーを検出した場合，TP1/EEはエラーの原因を示すメッセージログにee_logprint_user関数に指定したメッセージを付けて，標準エラー出力に出力します。

UAPから値を設定する引数

msgid

メッセージログごとに付けられる識別子（メッセージID）を設定します。1〜11バイトの文字列（文字列中に半角スペース指定不可）を指定します。最後にヌル文字を付けて設定します。

TP1/EEや他製品と重複した識別子を指定しないでください。

pgm_id

ee_logprint_user関数を呼び出したUAPを識別する値（要求元プログラムID）を，ユーザ任意で設定します。英数字0〜2文字で，最後はヌル文字で終わらせて設定します。

string

メッセージログファイルにメッセージログとして出力したい任意の文字列を設定します。最大800バイトで，最後はヌル文字で終わらせて設定します。

メッセージ内にマルチバイト文字を指定した場合は，800文字未満となります。

info

NULLを設定します。

stdflags

次のフラグを設定します。

フラグ値

意味

EENOFLAGS

メッセージを標準出力に出力しません。

EELOG_FLAG_STDOUT_PRINT

メッセージを標準出力に出力します。

flags

次のフラグを設定します。

フラグ値

意味

EENOFLAGS

なし。syslog出力レベルはデフォルトの1になります。

EELOG_FLAG_SYSLOG_L1

syslog出力レベルを1にします。

EELOG_FLAG_SYSLOG_L2

syslog出力レベルを2にします。

EELOG_FLAG_SYSLOG_L3

syslog出力レベルを3にします。

EELOG_FLAG_SYSLOG_L4

syslog出力レベルを4にします。

EELOG_FLAG_SYSLOG_L5

syslog出力レベルを5にします。

EELOG_FLAG_SYSLOG_L6

syslog出力レベルを6にします。

EELOG_FLAG_SYSLOG_NOPRINT

メッセージをsyslogに出力しません。

syslog出力レベルは，1が最も高く，6が最も低くなります。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EELOGER_ARGUMENT

引数に設定した値が間違っています。

EELOGER_EXCLOCK

メッセージログ機能内の排他設定に失敗しました。

EELOGER_EXCUNLOCK

メッセージログ機能内の排他解除に失敗しました。

EELOGER_SNPRINTF

メッセージの組み立てに失敗しました。

EELOGER_CONDITION

メッセージの出力できる状態にありません。

TP1/FSPの環境下にありません。

EELOGER_STDERR

標準エラー出力に失敗しました。

EELOGER_FILEOUT

ログファイルへの出力に失敗しました。

EELOGER_FILE_OVER

すべてのログファイル切り替えに失敗しました。

EELOGER_SYSLOG

syslogへの出力に失敗しました。

注意事項

ログ出力量が多い場合は，ee_logprint_user関数のリターンが遅くなります。例えば，障害発生時にメッセージ出力量が非常に多くなると，トランザクション処理時間が延びてしまいます。

これはスローダウンの要因になりますので，注意してください。

環境変数LANGにOS設定値と異なる言語種別を指定し，ee_logprint_user関数でsyslogに非ASCII文字を含むメッセージを出力する場合，syslogに複数の文字コードが混在するおそれがあります。

この場合は次の方法で回避してください。

・出力メッセージをASCII文字だけにします。

・flagsにEELOG_FLAG_SYSLOG_NOPRINTを指定します。

・拡張SYSLOGを使用し，log_hsyslog_cmodeオペランドにSJISを指定します（出力メッセージがシフトJISかつOSの言語設定がUTF-8の場合だけ）。

(2)　ee_log_dctmsg

名称

メッセージの出力抑止

形式

ANSI C，C++の形式

#include <eelog.h>
int  ee_log_dctmsg(char *msgid, EELONG flags);

機能

引数で指定したメッセージIDのメッセージの出力を抑止します。

抑止対象としたメッセージは，メッセージログファイル，標準出力（標準エラー出力），syslogへの出力を行いません。

UAPから値を設定する引数

msgid

抑止対象のメッセージIDを設定します。「KFSBn1n2n3n4n5」の形式（9文字）で，最後にヌル文字を付けて設定します。TP1/EEが出力するメッセージIDを設定します。

ee_logprint_user()で指定するメッセージは，抑止対象にはなりません。また，システムで出力する一部のメッセージ，コマンドプロセスで出力するメッセージは抑止対象とはなりません。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EELOGER_ARGUMENT

引数に設定した値が間違っています。

抑止対象にできないメッセージIDを指定しています。

EELOGER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

メッセージ出力抑止機能が有効になっていません。

注意事項

メッセージの出力抑止状態は，システム再開始後引き継がれません。必要に応じてメッセージの抑止を再設定してください。

(3)　ee_log_actmsg

名称

メッセージの出力抑止解除

形式

ANSI C，C++の形式

#include <eelog.h>
int  ee_log_actmsg(char *msgid, EELONG flags);

機能

引数で指定したメッセージID，またはすべてのメッセージの出力抑止を解除します。

UAPから値を設定する引数

msgid

抑止解除対象のメッセージIDを設定します。設定方法はee_log_dctmsg()を参照してください。

すべてのメッセージの出力抑止を解除する場合，メッセージIDを指定しないでください（先頭をヌル文字にしてください）。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EELOGER_ARGUMENT

引数に設定した値が間違っています。

抑止解除対象にできないメッセージIDを指定しています。

EELOGER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

メッセージ出力抑止機能が有効になっていません。

1.2.7　メモリ管理（ee_mem_〜）（C言語）

(1)　ee_mem_userdump

名称

メモリ領域のダンプ出力

形式

ANSI C，C++の形式

#include <eemem.h>
int ee_mem_userdump(void *addr_pt, EEULONG64 size, EELONG kind, EELONG flags);

機能

指定されたユーザメモリ領域をファイルに出力する設定を行います。

指定されたユーザメモリ領域は，ユーザメモリダンプファイルに即時出力，またはスレッドダウン時にメモリDUMPファイルに出力します。

UAPで値を設定する引数

addr_pt

出力するメモリアドレスを設定します。

次の領域の範囲にあるアドレスを指定してください。領域の先頭アドレスである必要はありません。

ユーザSAT領域

ユーザIFA領域

ee_mem_getwkseg()で確保したワークセグメント領域

kindにEEMEM_DUMPKIND_CLEARを指定した場合は，指定不要です。

size

出力するメモリ領域サイズを1バイト単位で指定します。1から17,179,869,184までの範囲で指定してください。

出力する領域がaddr_ptで指定した領域の末尾領域を超えないように指定してください。

kindにEEMEM_DUMPKIND_CLEARを指定した場合は，指定不要です。

kind

次の値を指定します。

EEMEM_DUMPKIND_IMMEDIATE：即時ファイル出力

指定されたメモリ領域をユーザメモリダンプファイルに出力します。

EEMEM_DUMPKIND_MEMDUMP：メモリDUMP出力対象領域の設定

スレッドダウン時，メモリDUMPファイルに出力する領域を設定します。

1スレッドにつき30か所まで設定できます。

EEMEM_DUMPKIND_CLEAR：メモリDUMP出力対象領域のクリア

EEMEM_DUMPKIND_MEMDUMPで設定した出力領域をすべてクリアします。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EEMEMER_ARGUMENT

引数に設定した値が間違っています。

EEMEMER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

EEMEMER_INVALID

無効なメモリ領域を設定しています。

EEMEMER_FILEOUT

ファイル出力に失敗しました。

EEMEMER_NUM_OVER

メモリ領域の設定可能最大数を超過しました。

注意事項

出力時に指定されたメモリ領域が使用可能な領域であるかどうかのチェックは行いません。ファイル出力時に指定されたメモリ領域が返却済みのワークセグメントであっても，指定されたメモリ領域をファイルに出力します。

設定したメモリDUMP出力対象領域の設定は，システム再開始後引き継がれません。

kindにEEMEM_DUMPKIND_IMMEDIATEを指定した場合は，環境変数にEEUSERDUMPDIRを指定してください。当該環境変数を指定しない場合，本APIは即時出力処理を行わないでEE_OKでリターンします。

オフラインバッチプロセスでは，kindにEEMEM_DUMPKIND_IMMEDIATEを指定してください。それ以外の値をkindに指定した場合，メモリDUMP出力対象領域の設定/クリア処理は行われますが，オフラインバッチプロセスはスレッドダウンしないため出力の契機はありません。

1.2.8　タイマトランザクション（ee_tim_〜）（C言語）

(1)　ee_tim_execap_perm

名称

永続指定のタイマトランザクションの起動

形式

ANSI C，C++の形式

#include <eetim.h>
int  ee_tim_execap_perm(EEULONG acttype, EEULONG action, EEULONG active,
char *reqid, char *service, EEULONG priority, char *data, EEULONG dataleng, EELONG flags);

機能

UAPから，永続指定のトランザクションを起動します。すぐに起動することも，設定した時間経過後に起動することもできます。

UAPで値を設定する引数

acttype

タイマトランザクションの起動方式を設定します。

EETIM_INST

コミットとは無関係に，actionに設定した条件になったら直ちにトランザクションを起動する場合に設定します。

EETIM_COMT

コミット後，actionに設定した条件になったらトランザクションを起動する場合に設定します。

コミット前には起動されません。

action

タイマトランザクションの起動タイミングを設定します。

EETIM_INTV

経過時間指定のタイマ起動の場合に設定します。

activeに設定した時間だけ経過したあとに，トランザクションを起動します。acttypeにEETIM_INSTを設定した場合は，ee_tim_execap_perm関数を呼び出してからの経過時間，acttypeにEETIM_COMTを設定した場合は，コミットからの経過時間です。

EETIM_TIME

時刻指定のタイマ起動の場合に設定します。activeに設定した時刻に，トランザクションを起動します。

active

actionに設定した起動タイミングに応じて次のように設定します。

経過時間指定のタイマ起動（actionにEETIM_INTVを設定）の場合

指定した時間経過後にトランザクションを起動します。タイマトランザクションは100ミリ秒単位に起動できます。設定できる時間の範囲は，1から3,600,000まで（100ミリ秒から100時間まで）です。acttypeにEETIM_INSTを設定した場合は，ee_tim_execap_perm関数を呼び出してからの経過時間，acttypeにEETIM_COMTを設定した場合は，コミットからの経過時間です。

指定方法の詳細については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のee_tim_execapを参照してください。

時刻指定のタイマ起動（actionにEETIM_TIMEを設定）の場合

トランザクションを起動する時刻を設定します。0時0分0秒を基準にして，起動時刻を秒数で算出して設定します。

（時刻の設定例）

午後2時30分30秒に起動させる場合：

14×3600＋30×60＋30=52,230

52,230をactiveに設定します。

設定できる値の範囲は，0（0時0分0秒に開始）から86,399（23時59分59秒に開始）までです。

指定方法の詳細については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のee_tim_execapを参照してください。

reqid

タイマトランザクションを取り消す場合のキーとなるリクエスト識別子を設定します。32バイトのバイト列で設定します。登録したタイマの参照，取り消しを行わない場合はNULLまたは32バイトの¥0領域を設定します。

service

起動するトランザクションのサービス名を，31バイト以内のアスキー文字列で設定します。文字列の最後にはヌル文字を設定してください。このヌル文字は文字列の長さに数えません。

priority

タイマトランザクションが起動時刻を迎えた時点で，そのときに登録されている処理キューの中で，優先的に起動するか，非優先的に起動するかを設定してください。

EETIM_HI：優先的に起動します。

EETIM_LOW：非優先的に起動します。

トランザクションレベル方式の処理キュー制御機能を使用している場合，この引数の指定値は有効にならないで，タイマトランザクションを優先的に起動しません。優先的に起動したい場合は，トランザクションレベル名判定UOCでプライオリティのいちばん高いトランザクションレベル名を指定してください。

data

起動するトランザクションに渡す，データを設定します。

dataleng

起動するトランザクションに渡すデータの長さ（バイト長）を設定します。渡せるデータの最大長はメモリ関連定義のtime_message_sizeの指定値，またはタイマデータ表作成コマンド（eetimtblh）の-zオプションで指定した最大引き継ぎデータ長のどちらか小さい値までです。渡すデータがない場合は0を設定します。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETIMER_ARGUMENT

引数に設定した値が間違っています。

EETIMER_NO_SERVICE

serviceに設定したサービス名が間違っています。

EETIMER_DATA_OVER

datalengに設定したデータ長が大き過ぎます。

EETIMER_RESOURCE_SHORT

次の要因によって，資源不足で登録できません。

メモリ関連定義のtime_message_noの指定値を超えています。

メモリ関連定義のicb_noの指定値を超えています。

メモリ関連定義のpce_noの指定値を超えています。

EETIMER_PROHIBIT

TP1/EEシステムが終了処理中のため，登録できません。

EETIMER_NO_ENTRY

指定したサービス名に対するエントリポインタがありません。

EETIMER_TIME_INJUSTICE

指定した時刻が先行および後退許容時間範囲内にありません。

EETIMER_CONDITION

発行条件が不正です。

EETIMER_TIMEOUT

タイマ登録処理がタイムアウトしました。

EETIMER_SQLERR

タイマデータ表へのタイマ登録処理が失敗しました。

EETIMER_IPC

タイマ登録処理で内部通信エラーが起こりました。

注意事項

acttypeにEETIM_COMTを設定した場合，コミット前にトランザクションが異常終了したとき，またはロールバックしたときは，本関数の要求は無効になります。同一のトランザクション内でee_trn_rollback_markがすでに発行されている場合は，EETIMER_CONDITIONエラーリターンします。

acttypeにEETIM_INSTを設定した場合，トランザクションが異常終了したとき，またはロールバックしたときも，本関数の要求は有効になります。

acttypeにEETIM_COMT，actionにEETIM_TIMEを設定した場合，先行/後退許容時間チェックは関数呼び出し時に行います。

関数呼び出し時点で先行/後退許容時間外の場合はエラーとし，コミット時には先行/後退許容時間のチェックは行いません。

コミット時に後退許容時間外となっていた場合はそのまま即時起動とします。

acttypeにEETIM_COMTを設定した本関数は，発行したトランザクションではトランザクションの最適化を行いません。

永続タイマを監視するTP1/EEの監視間隔や通信時間が起動時間の誤差となります。

本関数で登録した永続タイマは，タイマ登録したTP1/EEとは別のTP1/EEでタイマ取り消しを行えます。このため，reqidは同一のタイマデータ表に登録するTP1/EE間で一意の値を設定することを推奨します。

(2)　ee_tim_execap_cancel_perm

名称

永続指定のタイマトランザクションの起動取り消し

形式

ANSI C，C++の形式

#include <eetim.h>
int  ee_tim_execap_cancel_perm(EEULONG acttype, char *reqid, EELONG flags);

機能

ee_tim_execap_perm関数で登録したタイマトランザクションを，指定時刻または時間に達する前に取り消すことができます。

UAPで値を設定する引数

acttype

どの起動方式のタイマトランザクションを取り消すかを設定します。

EETIM_INST

次のタイマトランザクションを，コミットとは無関係に直ちに取り消す場合に設定します。

・acttypeでEETIM_INSTを設定したee_tim_execap_perm関数のタイマトランザクション

・acttypeでEETIM_COMTを設定したee_tim_execap_perm関数（コミット後）のタイマトランザクション

EETIM_COMT

acttypeでEETIM_COMTを設定したee_tim_execap_perm関数のタイマトランザクションを取り消す場合に設定します。ただし，コミット前の場合に限ります。

EETIM_CMTC

次のタイマトランザクションを，コミット後に取り消す場合に設定します。

・acttypeでEETIM_INSTを設定したee_tim_execap_perm関数のタイマトランザクション

・acttypeでEETIM_COMTを設定したee_tim_execap_perm関数（コミット後）のタイマトランザクション

reqid

取り消すタイマトランザクションを登録したee_tim_execap_perm関数発行時のreqidで設定したリクエスト識別子と同じものを設定します。同一のリクエスト識別子のタイマトランザクションが複数指定されている場合，acttypeでEETIM_INSTまたはEETIM_CMTCを設定したときは起動時刻の最も早いものを，acttypeでEETIM_COMTを設定したときは最も早く登録したものを取り消します。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETIMER_ARGUMENT

引数に設定した値が間違っています。

EETIMER_NOTHING

設定された要求識別子を持つタイマトランザクションは未登録，または起動中，またはすでに起動済みです。

EETIMER_CONDITION

発行条件が不正です。

EETIMER_TIMEOUT

タイマ取り消し処理がタイムアウトしました。

EETIMER_SQLERR

タイマデータ表へのタイマ取り消し処理が失敗しました。

EETIMER_IPC

タイマ取り消し処理で内部通信エラーが起こりました。

注意事項

acttypeでEETIM_COMTを設定したee_tim_execap_perm関数のタイマトランザクションは，コミット後は，取り消せません。コミット後に取り消したい場合は，acttypeでEETIM_INSTまたはEETIM_CMTCを設定して取り消してください。また，コミット前に取り消せるのは，本タイマトランザクションを登録したトランザクションからだけです。

すでに起動時刻に達しているタイマトランザクションの起動は，取り消しできません。

acttypeでEETIM_CMTCを設定した場合，対象のタイマトランザクションが同期点処理前に起動時刻に達しても，タイマトランザクションを起動しません。

acttypeにEETIM_CMTCを設定した場合，コミット前にトランザクションが異常終了したとき，またはロールバックしたときは，本関数の要求は無効になります。このとき，起動時刻に達している場合はタイマトランザクションを即時起動します。同一のトランザクション内でee_trn_rollback_markがすでに発行されている場合は，EETIMER_CONDITIONでエラーリターンします。

(3)　ee_tim_execap_check_perm

名称

永続指定のタイマトランザクションの登録確認

形式

ANSI C，C++の形式

#include <eetim.h>
int  ee_tim_execap_check_perm(EEULONG acttype, char *reqid, EELONG flags);

機能

ee_tim_execap_perm関数で登録したタイマトランザクションが登録中となっているかどうかを確認します。

UAPで値を設定する引数

acttype

どの起動方式のタイマトランザクションを確認するかを設定します。

EETIM_INST

次のタイマトランザクションの登録状況を確認する場合に設定します。

・acttypeでEETIM_INSTを設定したee_tim_execap_perm関数のタイマトランザクション

・acttypeでEETIM_COMTを設定したee_tim_execap_perm関数（コミット後）のタイマトランザクション

EETIM_COMT

acttypeでEETIM_COMTを設定したee_tim_execap_perm関数のタイマトランザクションの登録状況を確認する場合に設定します。ただし，コミット前の場合に限ります。

reqid

確認対象のタイマトランザクションを登録したee_tim_execap_perm関数発行時のreqidで設定したリクエスト識別子と同じものを設定します。

flags

0を設定します。

リターン値

リターン値

意味

EE_OK

設定された要求識別子を持つタイマトランザクションは登録されています。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EETIMER_ARGUMENT

引数に設定した値が間違っています。

EETIMER_NOTHING

設定された要求識別子を持つタイマトランザクションは未登録，または起動中，またはすでに起動済みです。

EETIMER_CONDITION

発行条件が不正です。

EETIMER_SQLERR

タイマデータ表への登録確認処理が失敗しました。

1.2.9　リモートプロシジャコール（ee_rpc_〜）（C言語）

(1)　ee_rpc_get_bizid

名称

当該トランザクションの業務IDの参照

形式

ANSI C，C++の形式

#include <eerpc.h>
int ee_rpc_get_bizid(char *biz_id, EELONG *biz_type, EELONG flags);

機能

現在のトランザクションの業務ID（オリジナル業務IDまたはカレント業務ID）を参照します。

ee_rpc_set_bizid関数を発行している場合は，ee_rpc_set_bizid関数で設定した業務IDを返します。

UAPで値を設定する引数

biz_id

業務IDを格納する領域を設定します。この領域は17バイト必要です。

biz_type

業務ID設定方法を格納する領域を設定します。

flags

取得する業務IDの種別を指定します。

EENOFLAGS

引き継ぎ用の業務IDを取得します。ユーザ処理によって業務IDの引き継ぎを行う場合は，本オプションで取得した業務IDを使用してください。

引き継ぎ用の業務IDとは，現在のオリジナル業務IDに通番とノードIDを更新したものです。

EERPC_BIZID_MYTRN

自トランザクションの業務IDを取得します。

カレント業務IDを取得したい場合は，上記のどれかの値に次の値の論理和で指定することで取得できます。

EERPC_BIZID_CURRENT

カレント業務IDを取得します。本値を省略した場合はオリジナル業務IDが取得されます。

TP1/EEから値が返される引数

biz_id

当該トランザクションの業務IDが返されます。

biz_type

当該トランザクションの業務ID設定方法が返されます。

EERPC_BIZID_TP_NEW：新規に業務IDを割り当てた

EERPC_BIZID_TP_CON：既存の業務IDを引き継いだ

EERPC_BIZID_TP_CON_USER：ユーザ指示によって既存の業務IDを引き継いだ

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EERPCER_ARGUMENT

引数に設定した値が間違っています。

EERPCER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

(2)　ee_rpc_set_bizid

名称

当該トランザクションの業務IDの設定

形式

ANSI C，C++の形式

#include <eerpc.h>
int ee_rpc_set_bizid(char *biz_id, EELONG flags);

機能

現在のトランザクションの業務ID（オリジナル業務IDまたはカレント業務ID）を設定します。

本関数によるオリジナル業務IDの設定は同一トランザクション上で2回以上発行することはできません。オリジナル業務IDを変更すると，同時にカレント業務IDも変更されます。

カレント業務IDを設定する場合は同一トランザクション上で2回以上発行することができます。

UAPで値を設定する引数

biz_id

業務IDを格納している領域を設定します。この領域は17バイト必要です。

flags

EENOFLAGS

オリジナル業務IDを設定します。

EERPC_BIZID_CURRENT

カレント業務IDだけを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EERPCER_ARGUMENT

引数に設定した値が間違っています。

EERPCER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

EERPCER_ALREADY

EENOFLAGSを指定したee_rpc_set_bizid関数を同一トランザクション上で2回以上発行しました。

注意事項

設定した業務IDが正しいかどうかのチェックは行わないため，不正な値を指定した場合，業務IDによるトランザクションの紐づけができなくなります。

1.2.10　オンラインバッチ制御（ee_obm_〜）（C言語）

(1)　ee_obm_lot_end

名称

ノーマルトランザクションのロットの終了要求

形式

ANSI C，C++の形式

#include <eeobm.h>
int ee_obm_lot_end(EELONG flags);

機能

ロットの正常終了を要求します。ノーマルトランザクションを起動したロットを正常終了します。ほかのロットを正常終了することはできません。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると，ロットが正常終了します。

本関数を実行したサービス関数リターン後，トランザクションがロールバック決着した場合，またはスレッドダウンした場合はロットの終了要求は無効となります。

本関数は，イベント型OBMのノーマルトランザクションから実行できます。

UAPで値を設定する引数

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

イベント型OBMのノーマルトランザクションではありません。

ee_trn_rollback_mark関数を発行済みです。

EEOBMER_ORDER_INJUSTICE

同一トランザクションで次のどれかの関数を発行済みです。

ee_obm_lot_end()

ee_obm_lot_stop()

ee_obm_stop()

(2)　ee_obm_lot_stop

名称

ノーマルトランザクションのロットの停止要求

形式

ANSI C，C++の形式

#include <eeobm.h>
int ee_obm_lot_stop(char stop_factor, char postprocessing, EELONG flags);

機能

ロットの停止を要求します。本関数は，ノーマルトランザクションから実行できます。ノーマルトランザクションを起動したロットを停止します。ほかのロットを停止することはできません。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると，本関数で設定した停止要因でロットが停止します。

本関数を実行したサービス関数リターン後にトランザクションがロールバック決着した場合，またはスレッドダウンした場合はロットの停止要求は無効となります。

UAPで値を設定する引数

stop_factor

ロットの停止要因を設定します。計画停止は，イベント型OBMの場合だけ設定できます。

EEOBM_STOP_FORCE：強制停止します。

EEOBM_STOP_PLAN：計画停止します。

postprocessing

本関数を実行したノーマルトランザクションで処理していたバッチデータを処理済みとするか，未処理のままとするかを設定します。イベント型OBMの場合は，EEOBM_DATA_RETRYを設定してください。EEOBM_DATA_SKIPを設定しても無視します。

EEOBM_DATA_SKIP：バッチデータを処理済みとします。

EEOBM_DATA_RETRY：バッチデータを未処理のままとします。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

ノーマルトランザクションではありません。

停止要因に計画停止が設定されていますが，イベント型OBMではありません。

ee_trn_rollback_mark関数を発行済みです。

EEOBMER_ORDER_INJUSTICE

同一トランザクションで次のどれかの関数を発行済みです。

ee_obm_lot_end()

ee_obm_lot_stop()

ee_obm_stop()

(3)　ee_obm_stop

名称

ノーマルトランザクションのOBMの停止要求

形式

ANSI C，C++の形式

#include <eeobm.h>
int ee_obm_stop(char stop_factor, EELONG reason_code, char postprocessing, EELONG flags);

機能

OBMの停止を要求します。本関数は，ノーマルトランザクションから実行できます。ノーマルトランザクションを起動したOBMを停止します。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると，本関数で設定した停止要因でOBMが停止します。

本関数を実行したサービス関数リターン後にトランザクションがロールバック決着した場合，またはスレッドダウンした場合はOBMの停止要求は無効となります。

UAPで値を設定する引数

stop_factor

ロットの停止要因を設定します。計画停止は，イベント型OBMの場合だけ設定できます。

EEOBM_STOP_FORCE：強制停止します。

EEOBM_STOP_PLAN：計画停止します。

reason_code

任意の理由コードを設定します。本関数で設定した理由コードは，クローズトランザクション，終了/停止UOC，再開始UOCで参照できます。

postprocessing

本関数を実行したノーマルトランザクションで処理していたバッチデータを処理済みとするか，未処理のままとするかを設定します。イベント型OBMの場合は，EEOBM_DATA_RETRYを設定してください。EEOBM_DATA_SKIPを設定しても無視します。

EEOBM_DATA_SKIP：バッチデータを処理済みとします。

EEOBM_DATA_RETRY：バッチデータを未処理のままとします。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

ノーマルトランザクションではありません。

停止要因に計画停止が設定されていますが，イベント型OBMではありません。

ee_trn_rollback_mark関数を発行済みです。

EEOBMER_ORDER_INJUSTICE

同一トランザクションで次のどれかの関数を発行済みです。

ee_obm_lot_end()

ee_obm_lot_stop()

ee_obm_stop()

注意事項

複数のトランザクションでOBMの停止要求を実行した場合，最初にコミット決着したトランザクションで設定した停止要因，理由コードで停止します。

本関数を実行したトランザクションがコミット決着した場合でも，停止処理中に障害が発生した場合は，停止要因，理由コードは障害による停止要因，理由コードとなります。

(4)　ee_obm_any_stop

名称

任意のOBMの停止要求

形式

ANSI C，C++の形式

#include <eeobm.h>
int ee_obm_any_stop(char *obm_name, char stop_factor, EELONG reason_code, EELONG flags);

機能

OBMの停止を要求します。実行中状態，初期化中状態，および再開始処理中状態のOBMに対して要求できます。

本関数が正常に終了すると，OBMを停止します。

本関数は，OBMのトランザクション以外のトランザクションからも実行できます。BCSのTP1/EEから実行する場合は，BCMとネゴシエーションが完了している必要があります。ネゴシエーションが完了していない場合に実行すると本関数はエラーリターンします。

OBMのノーマルトランザクションから該当OBMに対して停止要求を実行する場合は，ee_obm_stop()を使用することを推奨します。OBMのノーマルトランザクションから該当OBMに対して停止要求を実行した場合は，タイミングによっては，該当OBMが停止する前に本関数を実行したロットのノーマルトランザクションが何回か起動される場合があります。

OBMのオープントランザクションから該当OBMに対しての停止要求は，該当OBMのノーマルトランザクションが起動されることなくOBMが停止します。

UAPで値を設定する引数

obm_name

OBM名を8バイト以内のアスキー文字列で設定します。文字列の末尾にはヌル文字を付けてください。この空白は文字列の長さには数えません。

stop_factor

ロットの停止要因を設定します。計画停止は，イベント型OBMの場合だけ設定できます。

EEOBM_STOP_FORCE：強制停止します。

EEOBM_STOP_PLAN：計画停止します。

reason_code

任意の理由コードを設定します。本関数で設定した理由コードは，クローズトランザクション，終了/停止UOC，再開始UOCで参照できます。

flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

ノーマルトランザクションではありません。

停止要因に計画停止が設定されていますが，イベント型OBMではありません。

EEOBMER_STATE_INJUSTICE

状態不正。実行中状態ではありません。

EEOBMER_TIMING

タイミング不正。BCMとのネゴシエーションが未完了です。

テーブル排他の取得ができません。

EEOBMER_NO_SUCH_LOT

指定したOBM名は定義されていません。

EEOBMER_COMMUNICATE

BCMへの送信処理で障害が発生しました。

EEOBMER_TIMED_OUT

BCMからの応答待ち時間切れ（タイムアウト）になりました。

注意事項

複数のトランザクションでOBMの停止要求を実行した場合，最初に本関数を実行したトランザクションで設定した停止要因，理由コードで停止します。

本関数を実行後のOBMの停止処理中に障害が発生した場合は，停止要因，理由コードは障害による停止要因，理由コードとなります。

EEOBMER_TIMED_OUTでリターンした場合は，停止要求は受け付けられていることがあります。

再実行するか，BCMのTP1/EEでeeobmstslsコマンドを実行して状態を確認してください。

複数のBCMと接続しているBCSで本関数を実行した場合，通常使用BCM,切替用BCMの順番で停止要求を送信します。どちらかが停止要求を受け付ければ，本関数は，EE_OKでリターンします。両方でエラーとなった場合は，通常使用BCMからの応答に合わせてリターン値を設定します。ただし，通常使用BCMとは通信できずに，切替用BCMと通信できた場合は，切替用BCMからの応答に合わせてリターン値を設定します。

(5)　ee_obm_recv

名称

バッチデータの受信

形式

ANSI C，C++の形式

#include <eeobm.h>
int ee_obm_recv(EEOBMKEY* data_key, EELONG *data_size, char **data_addr, EELONG flags);

typedef struct ee_obm_key{
  EELONG              key_len[7];       /* バッチデータのキー長 */
  char                key[7][8];        /* バッチデータのキー   */
  EELONG              data_no;          /* バッチデータの通番   */
} EEOBMKEY;

機能

ブロック送信機能を使用している場合に，ブロック内の後続レコードを受信します。データ型OBMのノーマルトランザクションで実行できます。

UAPで値を設定する引数

data_key

受信するバッチデータキーを格納する領域を指定します。

data_size

受信するバッチデータ長を格納する領域を指定します。

data_addr

受信するバッチデータを格納するエリアのアドレスを格納する領域を指定します。

flags

EENOFLAGSを設定します。

TP1/EEから値が返される引数

key_len

受信したバッチデータのキーの長さが返されます。リターン値がEE_OK，またはEEOBMER_OVERFLOWのときに参照できます。配列の3番目以降は今後の拡張用です。

key

受信したバッチデータのキーが返されます。リターン値がEE_OK，またはEEOBMER_OVERFLOWのときに参照できます。配列の3番目以降は今後の拡張用です。

data_no

受信したバッチデータの一連通番が返されます。リターン値がEE_OK，またはEEOBMER_OVERFLOWのときに参照できます。

data_size

受信したバッチデータの長さが返されます。リターン値がEE_OK，またはEEOBMER_OVERFLOWのときに参照できます。

data_addr

受信したバッチデータを格納したエリアのアドレスが返されます。リターン値がEE_OK，またはEEOBMER_OVERFLOWのときに参照できます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチプロセスから発行しているため，本機能は使用できません。

EEOBMER_ARGUMENT

引数に設定した値が間違っています。

EEOBMER_CONDITION

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

本関数を実行できるトランザクションではありません。

ee_trn_rollback_mark関数を発行済みです。

データ型OBMではありません。

EEOBMER_OVERFLOW

入力メッセージ引き渡しエリア（IMA）がオーバフローしました※。

EEOBMER_NO_DATA

ブロックの全バッチデータを受信済みです。

注※

data_sizeにはdata_addrが指すアドレスに格納できたバッチデータのサイズが返されます。

注意事項

本関数では，トランザクション起動時にサービスプログラムにバッチデータを設定した領域（入力パラメタ，入力パラメタ長）を再利用します。本関数実行後に，前のバッチデータを参照したい場合は，あらかじめ別の領域に複写してください。

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

1.3　TP1/FSPライブラリ関数の文法（COBOL言語）

1.3.1　形式

PROGRAM-ID. プログラム名.
LINKAGE SECTION.
01 一意名1.
  02 データ名A  PIC X(n).
01 一意名2.
  02 データ名B  PIC S9(9) COMP.
01 一意名3.
  02 データ名C  PIC X(n).
01 一意名4.
  02 データ名D  PIC S9(9) COMP.
01 一意名5.
  02 データ名E  PIC 9(9) COMP.      /*情報長                        */
  02 データ名F  PIC 9(9) COMP.      /*サービスグループ名長          */
  02 データ名G  PIC X(32).          /*サービスグループ名            */
  02 データ名H  PIC 9(9) COMP.      /*サービス名長                  */
  02 データ名I  PIC X(32).          /*サービス名                    */
  02 データ名J  PIC X(2).           /*トランザクション種別          */
  02 データ名K  PIC X(1).           /*自動閉塞有無                  */
  02 データ名L  PIC X(1).           /*コミット有無                  */
  02 データ名M  PIC 9(9) COMP.      /*処理スレッド通番              */
  02 データ名N  PIC 9(9) COMP.      /*エラー要因コード              */
  02 データ名O  PIC 9(9) COMP.      /*ユーザIFAエリアサイズ        */
  02 FILLER     PIC X(4).           /*予備                          */
  02 データ名P  ADDRESS.            /*ユーザIFAエリアポインタ      */
  02 データ名Q  PIC 9(9) COMP.     /*ユーザSATエリアサイズ         */
  02 FILLER     PIC X(4).           /*予備                          */
  02 データ名R  ADDRESS.           /*ユーザSATエリアポインタ       */
  02 データ名S  PIC X(1).          /*応答要否                       */
  02 データ名T  PIC X(1).          /*メッセージ状態                 */
  02 データ名U  PIC X(1).          /*プロセス起動要因               */
  02 データ名V  PIC X(1).          /*前回プロセス終了要因           */
  02 データ名W  PIC X(1).          /*プロセス終了要因               */
  02 データ名X  PIC X(1).          /*スレッドダウン種別             */
  02 データ名Y  PIC X(1).          /*異常発生トランザクション種別   */
  02データ名Z  PIC X(1).           /*拡張トランザクション種別      */
  02 データ名AA  PIC 9(9) COMP.    /*リソースマネジャ数             */
  02 データ名AB  PIC S9(9) COMP.   /*リソースマネジャ状態           */
  02 データ名AC  PIC 9(9) COMP.    /*送信サービスグループ名長       */
  02 データ名AD  PIC X(32).        /*送信サービスグループ名         */
  02 データ名AE  PIC 9(9) COMP.    /*送信サービス名長               */
  02 データ名AF  PIC X(32).        /*送信サービス名                 */
  02 データ名AG  PIC 9(9) COMP.    /*異常発生処理スレッド通番       */
  02データ名AS  PIC 9(9) COMP.     /*トランザクションレベル名長    */
  02データ名AH  ADDRESS.           /*拡張トランザクション情報      */
  02データ名AI  ADDRESS.          /*TP1/XTC拡張トランザクション情報*/
  02データ名AJ  ADDRESS.          /*TP1/MCP拡張トランザクション情報*/
  02データ名AK  PIC X(1).          /*メッセージ種別                */
  02データ名AL  PIC X(1).          /* エラートラン要因             */
  02データ名AO  PIC X(1).          /* トランザクション起動要因     */
  02 データ名AU  PIC X(1).          /* リソースマネジャ連携有無     */
  02データ名AP  PIC 9(9) COMP.     /* サーバ再起動回数             */
  02 データ名AM  PIC 9(18) COMP.   /*ユーザIFAエリアサイズ(拡張)   */
  02 データ名AN  PIC 9(18) COMP.   /*ユーザSATエリアサイズ(拡張)   */
  02データ名AQ  PIC X(14).         /* トランザクション起動時刻     */
  02 データ名AR  PIC X(5).         /* 送信元のノード識別子         */
  02 データ名AX  PIC X(1).         /*リトライ回数                  */
  02 データ名AT  PIC X(32).        /*トランザクションレベル名      */
  02 FILLER      PIC X(4).         /*予備                          */
  02 データ名AY  PIC X(32).        /*トランザクション引き継ぎ情報  */

1.3.2　クライアントUAPから値が渡される引数

「1.2.3　クライアントUAPから値が渡される引数」を参照してください。

1.3.3　TP1/EEから値が渡される引数

「1.2.4　TP1/EEから値が渡される引数（TP1/EE独自）」を参照してください。

メッセージ種別がX'13'の場合

拡張トランザクション情報

OBMの拡張トランザクション情報が設定されます。

01 一意名1.
  02 データ名A1  PIC X(1).          OBMトランザクション種別
  02 FILLER      PIC X(7).          予備
  02 データ名A2  ADDRESS.  オープントランザクションインタフェースアドレス
  02 データ名A3  ADDRESS.  ノーマルトランザクションインタフェースアドレス
  02 データ名A4  ADDRESS.  クローズトランザクションインタフェースアドレス
  02 FILLER      PIC X(64).        予備

データ名A1

OBMのトランザクション種別が設定されます。

　VALUE 'O'：オープントランザクション

　VALUE 'N'：ノーマルトランザクション

　VALUE 'C'：クローズトランザクション

データ名A2

オープントランザクションのインタフェースのアドレスです。OBMのトランザクション種別が'O'の場合に参照できます。

データ名A3

ノーマルトランザクションのインタフェースのアドレスです。OBMのトランザクション種別が'N'の場合に参照できます。

データ名A4

クローズトランザクションのインタフェースのアドレスです。OBMのトランザクション種別が'C'の場合に参照できます。

オープントランザクションインタフェース

01 一意名1.
  02 データ名A1    PIC S9(9) COMP.       ロット名長
  02 データ名A2    PIC X(9).             ロット名
  02 FILLER        PIC X(3).             予備
  02 データ名A3    PIC X(1).             バッチの形式
  02 データ名A4    PIC X(1).             要求種別
  02 データ名A5    PIC X(1).             OBM状態
  02 FILLER        PIC X(61).            予備

データ名A1

開始要求を受け付けた最上位のロット名（OBM名）長が設定されます。

データ名A2

開始要求を受け付けた最上位のロット名（OBM名）が設定されます。

データ名A3

バッチの形式が設定されます。

　VALUE 'D' データ型OBM

　VALUE 'E' イベント型OBM

データ名A4

開始要求種別が設定されます。

　VALUE 'S' OBM開始

　VALUE 'R' OBM再開始

データ名A5

OBM開始，再開始要求を受け付けた時のOBMの状態が設定されます。

　VALUE 'I' 初期状態

　VALUE 'P' 計画停止中

　VALUE 'F' 強制停止中

ノーマルトランザクションインタフェース

01 一意名1.
  02 データ名A1    PIC S9(9) COMP OCCURS 4 TIMES.    ロット名長
  02 データ名A2    PIC X(9) OCCURS 4 TIMES.          ロット名
  02 データ名A3    PIC S9(9) COMP.                   ロット名数
  02 データ名A4    PIC S9(9) COMP OCCURS 4 TIMES.    ユーザが任意に設定したロットID
  02 データ名A5    PIC S9(9) COMP OCCURS 7 TIMES.    バッチデータのキー長
  02 データ名A6    PIC X(8) OCCURS 7 TIMES.          バッチデータのキー
  02 FILLER        PIC X(3).
  02 データ名A7    PIC X(1).                         バッチの形式
  02 データ名A8    PIC S9(9) COMP.                   バッチデータの通番
  02 データ名A9    PIC S9(9) COMP.    ノーマルトランザクション処理済み件数
  02 データ名A10   PIC S9(9) COMP.                    処理済み件数
  02 FILLER        PIC X(32).                         予備

データ名A1

ロット名長が設定されます。

配列の1番目が最上位のロット名長で，以下昇順に下位ロットのロット名長が設定されます。配列の4番目の要素は，今後の拡張用です。

データ名A2

ロット名が設定されます。

配列の1番目が最上位のロット名で，以下昇順に下位ロットのロット名が設定されます。配列の4番目の要素は，今後の拡張用です。

データ名A3

ロット名長，ロット名，およびロットIDの数が設定されます（最下位ロットのロットレベル）。

データ名A4

開始UOCでユーザが設定したロットIDが設定されます。

配列の1番目が最上位のロットIDで，以下昇順に下位ロットのロットIDが設定されます。

データ名A5

バッチデータのキーの長さが設定されます。データ型OBMの場合に設定されます。OBM構成定義lotentry -k keyn_sizeオペランドの設定値が配列のn番目に設定されます。ロット構成が1階層の場合は，キーの長さは0が設定されます。

配列の4番目以降は，今後の拡張用です。

データ名A6

バッチデータのキーが設定されます。データ型OBMの場合に設定されます。OBM構成定義の最下位ロットのlotdef -k hexnオペランドの設定値が配列のn番目に設定されます。ロット構成が1階層の場合は，キーは設定されません。

配列の4番目以降は，今後の拡張用です。

データ名A7

バッチの形式が設定されます。

　VALUE 'D' データ型OBM

　VALUE 'E' イベント型OBM

データ名A8

バッチデータの通番が設定されます。データ型OBMの場合に設定されます。

データ名A9

該当ロットのノーマルトランザクションの正常終了によって処理済みとしたバッチデータ件数が設定されます。データ型OBMでトレーラレコードのノーマルトランザクションの場合に設定されます。

トランザクション種別が「ER」の場合は，処理済みとしたバッチデータ件数が設定されないで0が設定されることがあります。

データ名A10

該当ロットの処理済みのバッチデータ件数が設定されます。データ型OBMでトレーラレコードのノーマルトランザクションの場合に設定されます。処理済みのバッチデータ件数に数えられるのは，次の件数の和です。

ノーマルトランザクションの正常終了によって処理済みとした件数

OBM構成定義obmdef -eにskipを設定した場合にノーマルトランザクションの異常終了によって処理済みとした件数

eeobmskipコマンドで処理済みとした件数

トランザクション種別が「ER」の場合は，処理済みとしたバッチデータ件数が設定されないで0が設定されることがあります。

クローズトランザクションインタフェース

01 一意名1.
  02 データ名A1    PIC S9(9) COMP.    ロット名長
  02 データ名A2    PIC X(9).          ロット名
  02 FILLER        PIC X(1).          予備
  02 データ名A3    PIC X(1).          バッチの形式
  02 データ名A4    PIC X(1).          OBM状態
  02 データ名A5    PIC S9(9) COMP.    停止，終了理由コード
  02 データ名A6    PIC S9(9) COMP.    ユーザが設定した停止，終了理由コード
  02 データ名A7    PIC S9(9) COMP.    ノーマルトランザクション処理済み件数
  02 データ名A8    PIC S9(9) COMP.    処理済みトレーララベル数
  02 データ名A9    PIC S9(9) COMP.    処理済み件数
  02 データ名A10   PIC S9(9) COMP.    一連通番の最大値の合計
  02 FILLER        PIC X(60).          予備

データ名A1

最上位のロット名（OBM名）長が設定されます。

データ名A2

最上位のロット名（OBM名）が設定されます。

データ名A3

バッチの形式が設定されます。

　VALUE 'D' データ型OBM

　VALUE 'E' イベント型OBM

データ名A4

OBM停止，終了要求を受け付けたときの要求された終了，停止形態が設定されます。

　VALUE 'P' 計画停止

　VALUE 'F' 強制停止

　VALUE 'E' 強制終了

　VALUE 'N' 正常終了

データ名A5

OBMが停止した理由コードが設定されます。強制終了の場合は，計画停止，または強制停止時の理由コードが引き継がれます。

0 停止していない （正常終了の場合に設定されます）

1 ユーザ要求

3 全ロット停止

11 TP1/EE再開始

21 ノーマルトランザクション異常終了

22 オープントランザクション異常終了

23 クローズトランザクション異常終了

24 終了UOCの設定値不正

31 バッチデータ入力障害

32 メモリ不足

33 データ通番抜け

34 サービス名不正

35 バッチデータ表不正

36 ヒューリスティックハザード決着による通番矛盾

37 処理済み通番管理表RDエリア不足

38 ロットスケジューラ障害

39 トランザクションレベル名不正

41 BCMからBCSへ送信時の通信障害

42 BCSからの応答受信時の通信障害

43 BCSからのalive電文タイムアウト

46 OBM開始コマンドからのalive電文タイムアウト

99 その他要因

データ名A6

ユーザが停止要求時に設定した理由コードが設定されます。停止した理由コードが'01'以外の場合は，設定されません。

データ名A7

該当OBMの全ロットのノーマルトランザクションの正常終了によって処理済みとしたバッチデータ件数が設定されます。データ型OBMの場合に設定されます。2,147,483,647を超える場合は，2,147,483,647が設定されます。

ノーマルトランザクションで処理済みとしたトレイラレコードの数は含みません。

BCSのTP1/EEがプロセスダウンした場合は，実際の処理済み件数より少ない値が設定されることがあります（該当ロットの処理済み通番管理表に排他が掛かったままとなっていると確認できないため）。

データ名A8

該当OBMの全ロットのノーマルトランザクションの正常終了によって処理済みとしたトレイラレコードの数が設定されます。トレイラレコードをノーマルトランザクションで処理しない場合は，カウントされません。トレイラレコードをeeobmskipコマンドで処理済みとした場合，およびOBM構成定義obmdef -eにskipを設定した場合にノーマルトランザクションの異常終了によって処理済みとした場合は，その件数を含みません。

データ名A9

該当OBMの全ロットの処理済みのバッチデータ件数が設定されます。データ型OBMの場合に設定されます。処理済みのバッチデータ件数に数えられるのは，次の件数の和です。2,147,483,647を超える場合は，2,147,483,647が設定されます。BCSのTP1/EEがプロセスダウンした場合は，実際の処理済み件数より少ない値が設定されることがあります（該当ロットの処理済み通番管理表に排他が掛かったままとなっていると確認できないため）。

ノーマルトランザクションの正常終了によって処理済みとした件数

ノーマルトランザクションの正常終了によって処理済みとしたトレイラレコードの件数

トレイラレコードをノーマルトランザクションで処理しない場合は，カウントされません。

OBM構成定義obmdef -eにskipを設定した場合にノーマルトランザクションの異常終了によって処理済みとした件数

eeobmskipコマンドで処理済みとした件数

トレイラレコードをeebomskipコマンドで処理済みとした場合は，その件数も含みます。

データ名A10

該当OBMの全ロットのバッチデータの一連通番の最大値の合計。2,147,483,647を超える場合は，2,147,483,647が設定されます。

拡張トランザクション種別が'T'の場合

拡張トランザクション情報

永続化指定のタイマトランザクションの拡張トランザクション情報が設定されます。

01 一意名1.
  02 データ名B1    PIC 9(9) COMP.      情報長
  02 データ名B2    PIC X(32).          リクエスト識別子
  02 FILLER        PIC X(164).         予備

データ名B1

トランザクションインタフェース情報長を設定します。

図1‒21　設定するトランザクションインタフェース長

データ名B2

永続化指定のタイマトランザクション登録時に指定したリクエスト識別子を設定します。ユーザタイマ参照UOCでリクエスト識別子を変更した場合は，変更後のリクエスト識別子を設定します。

1.3.4　トランザクション制御（CBLEETRN）

(1)　CBLEETRN('WATCH ')

名称

トランザクション処理時間監視

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'WATCH   '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
  02 データ名D  PIC X(6).
  02 FILLER     PIC X(2).
  02 データ名E  PIC 9(9) COMP.
  02 データ名F  PIC 9(9) COMP.

機能

トランザクション処理の時間監視を経過時間（リアルタイム）で行います。トランザクション実行中にタイムアウトとなったときは，uapabend_downmodeオペランド値に従い，プロセスダウン，または該当のスレッドを強制終了させて，ERRTRN3（定義がある場合だけ）を起動します。

同一トランザクション内でCBLEETRN('EXPTIME ')を発行済みの場合，CBLEETRN('WATCH ')は使用できません。

UAPで値を設定するデータ領域

データ名A

トランザクション処理時間監視を示す要求コードを「VALUE 'WATCH△△△'」と設定します。

データ名C

0を設定します。

データ名D

時間監視に関する指示を設定します。

VALUE ' START '：時間監視を開始する。

VALUE ' SUPRES'：時間監視を抑止する。

VALUE ' RSTART'：抑止した時間監視を再開する。

VALUE ' STOP '：時間監視を終了する。

データ名E

監視時間値データ名Fの形式を設定します。データ名DにVALUE'START'以外が指定された場合，指定値を無視します。

0：整数の形式で設定します。

データ名F

監視時間値を秒単位（1〜65,535）で設定します。

データ名DにVALUE'START'以外が指定された場合，指定値を無視します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00901

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

00944

その他のエラーが発生しました。

注意事項

トランザクション関連定義のtrn_expiration_time，trn_expiration_time_xx，またはユーザサービス定義のservice_attrでトランザクション処理監視時間を指定しているときは，トランザクション処理の時間監視が開始した状態でUAPのサービス関数が呼び出されます。同期点処理後は定義で指定したトランザクション処理時間監視値に戻ります。

トランザクション処理の監視時間の変更は，コール元のトランザクションに限定されるため，eetrntimコマンドの-lオプション指定によるトランザクション処理の監視時間情報の表示には反映されません。

(2)　CBLEETRN('GETRTIME')

名称

トランザクション処理時間監視の残り時間取得

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'GETRTIME'.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
  02 データ名D  PIC 9(9) COMP.
  02 データ名E  PIC 9(9) COMP.

機能

トランザクション処理の時間監視での残り時間を取得します。

UAPで値を設定するデータ領域

データ名A

トランザクション処理時間監視の残り時間取得を示す要求コードを「VALUE 'GETRTIME'」と設定します。

データ名C

0を設定します。

データ名D

残り時間値データ名Eの形式を設定します。

0：整数の形式で設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが5桁の数字で返されます。

データ名E

トランザクション処理の時間監視での残り時間が秒単位で格納されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00901

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

00939

トランザクション処理の時間監視中ではありません。

00944

その他のエラーが発生しました。

(3)　CBLEETRN('UAPPUT ')

名称

UAP履歴情報の取得

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'UAPPUT  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  ADDRESS.

01 一意名3.                       /*履歴情報バッファ構造体       */
  02 データ名E  ADDRESS.          /*次履歴情報バッファアドレス   */
  02 データ名F  ADDRESS.          /*履歴情報アドレス             */
  02 データ名G  PIC 9(9) COMP.    /*履歴情報全体サイズ           */
  02 FILLER     PIC 9(9) COMP.    /*TP1/EE使用領域               */
  02 FILLER     PIC 9(9) COMP.    /*TP1/EE使用領域               */
  02 FILLER     PIC X(4).         /*予備                         */

01 一意名4.                       /*履歴情報ヘッダ構造体         */
  02 データ名H  PIC X(4).         /*データ連携支援引き継ぎ情報   */
  02 データ名M  PIC X(16).        /*ユーザ任意情報               */
  02 データ名I  PIC S9(4) COMP.   /*取得先ID                     */
  02 データ名J  PIC X(1).         /*履歴情報種別                 */
  02 データ名K  PIC X(1).         /*履歴情報コード               */
  02 FILLER     PIC X(4).         /*予備                          */
  02 データ名L  PIC 9(9) COMP.    /*履歴情報サイズ               */

機能

指定したUAP履歴情報（履歴情報ヘッダ含む）をトランザクションのコミット時に取得先IDに対応したDB表（履歴情報表）に取得します。

UAPで値を設定するデータ領域

データ名A

UAP履歴情報を設定するバッファの割り当てを示す要求コードを「VALUE 'UAPPUT△△'」と設定します。

データ名C

0を設定します。

データ名D

履歴情報バッファ構造体の先頭アドレスを設定します。

データ名E

次の履歴情報バッファ構造体のアドレスを設定します。

次の履歴情報バッファがない場合は，ZEROを設定します。

データ名F

UAP履歴情報（履歴情報ヘッダ含む）を設定したアドレスを設定します。

データ名G

履歴情報ヘッダと履歴情報のサイズの合計値を設定します。履歴情報全体サイズの最大長については，マニュアル「TP1/Financial Service Platform 使用の手引」を参照してください。

データ名M

ユーザ任意情報を設定します。TP1/EEでは参照しません。

データ名I

トランザクション関連定義trnaphputid定義コマンドで指定した取得先IDを設定します。

データ名J

履歴情報種別を設定します。

VALUE 'U'：ユーザデータ（UJ）としてUAP履歴情報を取得するときに設定します。

VALUE 'I'：入力データ（IJ）としてUAP履歴情報を取得するときに設定します。

データ名K

履歴情報コードとして任意の情報を設定します。TP1/EEでは参照しません。

データ名L

履歴情報（ユーザデータまたは入力データ）のサイズを設定します。TP1/EEでは参照しません。

図1‒22　履歴情報領域の構造

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00901

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

発行不可のトランザクションです。

CBLEETRN('ROLLMARK')を発行済みです。

CBLEETRN('UAPFPUT')を発行済みです。

00950

UAP履歴情報取得機能は使用できません。

00952

リソースマネジャと未接続です。

00953

1トランザクションで取得できるUAP履歴情報の最大数を超えています。

00954

SQL実行時にエラーが発生したため，CBLEETRN('ROLLMARK')を呼び出しました。

00955

取得先IDに属するすべてのUAP履歴情報グループは，障害によって使用不可状態です。

注意事項

1トランザクションで取得できるUAP履歴情報（製品が取得する出力データ（OJ）も含む）の最大数は，32,767です。

取得先IDに属するUAP履歴情報グループのうち，使用不可状態でないUAP履歴情報グループが1つでもある場合，ステータスコードは00955で返りません。

履歴情報全体サイズが指定可能な最大長を超えた場合，ステータスコードは00901になります。

1回の要求で，1トランザクションで取得できるUAP履歴情報の最大数を超えた場合，ステータスコードは00901になります。

データ名Hは，データ連携支援実行時にCBLEETRN（'SETUJINF'）で設定した情報で更新します。

(4)　CBLEETRN('R-ROLL ')

名称

リトライモードのロールバック

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'R-ROLL  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
  02 データ名D  PIC X(4).
  02 データ名E  PIC 9(9) COMP-X.

機能

トランザクションをロールバックします。ロールバックしたあとには，スレッドダウンします。スレッドダウン後に，サービス関数を再度開始します。このとき，サービスに渡すメッセージは，CBLEETRN('R-ROLL ')を呼び出したサービス関数に渡したメッセージと同じ内容です。CBLEETRN('R-ROLL ')を呼び出したサービス関数でメッセージを更新しても，更新内容は反映されないで更新前のメッセージを渡します。

CBLEETRN('R-ROLL ')は同期点処理が完了すると，CBLEETRN('R-ROLL ')を呼び出したスレッドを強制終了します。呼び出したサービス関数にリターンするのはエラーのときだけです。

UAPで値を設定する引数

データ名A

リトライモードのロールバックを示す要求コードを「VALUE 'R-ROLL△△'」と設定します。

データ名C

0を指定します。

データ名D

リトライ回数の上限に達した場合に，メモリDUMPファイルとCOBOL異常終了時要約リストを出力するかどうかを設定します。

　VALUE 'KILL'：メモリDUMPファイルとCOBOL異常終了時要約リストを出力しません。

　VALUE 'ABRT'：メモリDUMPファイルとCOBOL異常終了時要約リストを出力します。

データ名E

リトライ回数の上限に達した場合に，ERRTRN3へ引き渡すエラー要因コードを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00901

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

trn_max_retry_countオペランドに0を指定しています。

発行不可のトランザクションです。

トランザクショナルRPCによって起動されたトランザクションです。

トランザクショナルRPC要求を行ったトランザクションです。

RPC応答メッセージを抑止済みです。

(5)　CBLEETRN('UAPCHG ')

名称

UAP履歴情報の取得先ID変更

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'UAPCHG  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
  02 データ名D  PIC X(1).
  02 FILLER     PIC X(3).
  02 データ名E  PIC S9(4) COMP.
  02 データ名F  PIC S9(4) COMP.

機能

入力データ（IJ）および出力データ（OJ）の取得先IDを変更します。

入力データ（IJ）の取得先ID変更

本関数発行以前に本トランザクションでUAP履歴情報取得要求した入力データ（IJ）に対して有効です。変更後の変更先IDに属するUAP履歴情報グループのバッファにバッファリングします。

出力データ（OJ）の取得先ID変更

本関数発行以降に本トランザクションでUAP履歴情報取得要求する出力データ（OJ）に対して有効です。出力データ（OJ）の取得先IDが，変更後の取得先IDに代わります。

UAPで値を設定する引数

データ名A

UAP履歴情報の取得先ID変更を示す要求コードを「VALUE 'UAPCHG△△'」と設定します。

データ名C

0を設定します。

データ名D

履歴情報種別を設定します。

　VALUE 'I'：入力データ（IJ）の取得先IDを変更するときに設定します。

　VALUE 'O'：出力データ（OJ）の取得先IDを変更するときに設定します。

データ名E

トランザクション関連定義trnaphputid定義コマンドで指定した変更前の取得先IDを設定します。

データ名Dに'O'が指定された場合，指定値を無視します。

データ名F

トランザクション関連定義trnaphputid定義コマンドで指定した変更後の取得先IDを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00901

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

発行不可のトランザクションです。

CBLEETRN('ROLLMARK')を発行済みです。

00950

UAP履歴情報取得機能は使用できません。

00952※1

リソースマネジャと未接続です。

00954※2

SQL実行時にエラーが発生したため，CBLEETRN('ROLLMARK')を呼び出しました。

00955※1

取得先IDに属するすべてのUAP履歴情報グループは，障害によって使用不可状態です。

00958※2

変更前の取得先IDに，入力データ（IJ）がありません。

変更前の取得先IDに属するUAP履歴情報グループで，途中書き込みが発生しているため，変更できません。

注※1

変更後の取得先ID関連だけチェックします。

注※2

データ名DにVALUE 'I'を指定した場合だけです。

注意事項

以前に取得した入力データ（IJ）のうち，変更前の取得先IDが一致する入力データ（IJ）だけ，取得先IDが変更されます。変更前の取得先IDが一致しない入力データ（IJ）は，変更されません。

入力データ（IJ）について，最大履歴情報長（eeaphgrphコマンドの-zオプション指定値）が変更前の取得先IDに属するUAP履歴情報グループより小さくなる場合，履歴情報のサイズを満たしていないときは，エラーとなります。

(6)　CBLEETRN('GETHNDL ')

名称

接続ハンドル取得

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'GETHNDL  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
  02 データ名D  PIC X(4).
  02 データ名E  ADDRESS.

機能

HiRDBを使用した環境でSQLを実行するために，TP1/EEが管理している接続ハンドルを取得します。

UAPで値を設定するデータ領域

データ名D

ユーザサービス用xa_open関数用文字列に指定した環境変数グループ識別子（先頭4文字）を設定します。

データ名C

0を設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

データ名E

接続ハンドルが格納されます。

ステータスコード

リターン値

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチ/データ連携支援以外から発行しているため，本機能は使用できません。

00901

引数に設定した値が間違っています。

00941

発行条件が不正です。

トランザクション関連定義trnstring定義コマンドが設定されていません。

00952

リソースマネジャと未接続です。

注意事項

TP1/EEは，HiRDBの複数接続機能を使用して，HiRDBサーバと接続します。本関数で取得した接続ハンドルを使用して，接続ハンドルの宣言「DECLARE CONNECTION HANDLE SET」を行ってください。

(7)　CBLEETRN('SETUJINF')

名称

データ連携支援引き継ぎ情報の設定

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'SETUJINF'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名C  PIC X(4).
  02 データ名D  PIC S9(9) COMP VALUE ZERO.

機能

データ連携支援機能へ引き継ぐユーザ情報（データ連携支援引き継ぎ情報）を設定します。

この情報は，データ連携支援機能の次のUOCに通知されます。

反映先指定UOC

編集UOC

反映UOC

この情報は，このAPIが正常終了したあとに同期点を取得した，全トランザクションのUAP履歴情報に引き継がれます。

この情報は，APIを発行したトランザクションがロールバックした場合でも有効となります。

この情報は，リラン回復対象ではありません。

UAPで値を設定するデータ領域

データ名A

データ連携支援機能へ引き継ぐユーザ情報の設定を示す要求コードを「VALUE 'SETUJINF'」と設定します。

データ名C

データ連携支援のUOCへのデータ連携支援引き継ぎ情報を設定します。

この情報は，履歴情報レコードエリアの履歴情報ヘッダのデータ連携支援引き継ぎ情報領域に格納されます。

データ名D

0を設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

リターン値

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，この機能は使用できません。

00901

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

00950

UAP履歴情報取得機能は使用できません。

注意事項

UAP履歴情報のデータ連携支援引き継ぎ情報は，データ連携支援機能だけで有効です。

(8)　CBLEETRN('UAPFPUT')

名称

UAP履歴情報の強制取得

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'UAPFPUT '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  ADDRESS.        /*履歴情報バッファ構造体アドレス */
  02 データ名N  PIC X(32).      /*UAP履歴情報グループ名         */
  02 データ名O  PIC X(32).      /*履歴情報表名                   */

01 一意名3.                     /*履歴情報バッファ構造体         */
  02 データ名E  ADDRESS.        /*次履歴情報バッファアドレス     */
  02 データ名F  ADDRESS.        /*履歴情報アドレス               */
  02 データ名G  PIC 9(9) COMP.  /*履歴情報全体サイズ             */
  02 FILLER     PIC 9(9) COMP.   /*TP1/EE使用領域                */
  02 FILLER     PIC 9(9) COMP.   /*TP1/EE使用領域                */
  02 FILLER     PIC X(4).        /*予備                           */

01 一意名4.                      /*履歴情報ヘッダ構造体          */
  02 データ名H  PIC X(4).        /*データ連携引き継ぎ情報        */
  02 データ名M  PIC X(16).       /*ユーザ任意情報                */
  02 データ名I  PIC S9(4) COMP.  /*取得先ID                      */
  02 データ名J  PIC X(1).        /*履歴情報種別                  */
  02 データ名K  PIC X(1).        /*履歴情報コード                */
  02 FILLER     PIC X(4).         /*予備                          */
  02 データ名L  PIC 9(9) COMP.    /*履歴情報サイズ                */

機能

指定したUAP履歴情報（履歴情報ヘッダ含む）をトランザクションのコミット時に取得先情報に指定した履歴情報表に取得します。

この関数は，-cオプションを指定してeeaphswapコマンドによりスワップして使用済みの状態となった履歴情報表だけを対象とします。

1トランザクション内で同じUAP履歴情報グループの異なる履歴情報表への取得はできません。

-tオプション，または-Tオプションを指定してeeaphlshコマンドを実行して強制書き込み可能数を確認することで，この関数が発行できるかどうかを確認できます。

UAPで値を設定するデータ領域

データ名A

UAP履歴情報を設定するバッファの割り当てを示す要求コードを「VALUE 'UAPFPUT△'」と設定します。

データ名C

0を設定します。

データ名D

履歴情報バッファ構造体の先頭アドレスを設定します。

データ名N

取得先のUAP履歴情報グループ名を26バイト以内の文字列で設定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

データ名O

取得先の履歴情報表名を26バイト以内の文字列で設定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

データ名E

ZEROを設定します。

データ名F

UAP履歴情報（履歴情報ヘッダ含む）を設定したアドレスを設定します。

データ名G

履歴情報ヘッダと履歴情報のサイズの合計値を設定します。履歴情報全体サイズの最大長は，マニュアル「TP1/Financial Service Platform 使用の手引」を参照してください。

データ名H

データ連携引き継ぎ情報を設定します。

データ名M

任意の情報を設定します。TP1/EEでは参照しません。

データ名I

トランザクション関連定義trnaphputid定義コマンドで指定した取得先IDを設定します。

データ名J

履歴情報種別を設定します。

VALUE 'U'：ユーザデータ（UJ）としてUAP履歴情報を取得するときに設定します。

データ名K

履歴情報コードとして任意の情報を設定します。TP1/EEでは参照しません。

データ名L

履歴情報（ユーザデータ）のサイズを設定します。TP1/EEでは参照しません。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

リターン値

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00901

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00941

発行条件が不正です。

TP1/FSPの環境下にありません。

発行不可のトランザクションです。

CBLEETRN('ROLLMARK')を発行済みです。

CBLEETRN('UAPPUT')を発行済み，または出力データ（OJ）を取得済みです。

強制取得可能な履歴情報表ではありません。

履歴情報表の空きが不足しています。

00950

UAP履歴情報取得機能は使用できません。

00952

リソースマネジャと未接続です。

00953

取得できるUAP履歴情報の最大数を超えています。

00954

SQL実行時にエラーが発生したため，CBLEETRN('ROLLMARK')を呼び出しました。

00955

UAP履歴情報グループは，障害によって使用不可状態です。

注意事項

この関数で取得できるUAP履歴情報の最大数は，eeaphswapコマンドの-cオプション指定値に依存します。

同じ履歴情報表名を設定して，複数スレッドから同時にこの関数を実行しないでください。実行した場合，UAP履歴情報の取得に失敗することがあります。

履歴情報全体サイズが指定可能な最大長を超えた場合，ステータスコードは00901になります。

データ名Hは，CBLEETRN('SETUJINF')で設定した情報では更新されないため，この関数で設定してください。この関数を1トランザクションで複数回発行したときは，最後に発行したときのデータ連携引き継ぎ情報が有効となります。

この関数の延長でSQLが実行されます。

1.3.5　メッセージログの出力（CBLEELOG）

(1)　CBLEELOG('PRINTU ')

名称

ユーザメッセージログの出力

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEELOG' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'PRINTU  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Y  PIC S9(9) COMP.
  02 データ名Z  PIC S9(9) COMP.
  02 データ名C  PIC X(12).
  02 データ名D  PIC X(3).
01 一意名2.
  02 データ名F  PIC 9(9) COMP.
  02 データ名G  PIC X(n).
01 一意名3.
  02 データ名H  PIC S9(9) COMP VALUE ZERO.

機能

データ名Gに指定した文字列に，TP1/EEで行ヘッダ，メッセージID，要求元プログラムIDを付けて，メッセージログファイル，標準出力，syslogに出力します。メッセージログファイルの行ヘッダは，プロセスID，メッセージ通番，サービス名称，中央処理通番，年月日，時刻です。標準出力，syslogの行ヘッダは定義で設定します。syslog出力は，データ名Zに設定した出力レベルが定義に指定した出力レベルと同じか高い場合です。データ名Zに出力レベルを設定しなかった場合の出力レベルは，1です。

メッセージテキストに復改文字「¥n」を含むメッセージログは，メッセージログファイル，syslogへの出力時，1行で出力されます。標準出力への出力時は，復改文字「¥n」はそのまま出力されます。

障害が起こってUAPからメッセージログが出力できない場合でも，CBLEELOG('PRINTU ')がステータスコード「00000」で正常に終了することがあります。そのためメッセージログが抜ける場合がありますが，メッセージログの抜けはメッセージログに付けるメッセージログ通番で確認できます。

1つのスレッドから複数回CBLEELOG('PRINTU ')を呼び出した場合は，メッセージログファイルへの出力順序は保証されます。ただし，複数のスレッドから別々にCBLEELOG('PRINTU ')を呼び出した場合は，呼び出した順にメッセージログファイルに出力されない場合があります。

エラーを検出した場合，TP1/EEはエラーの原因を示すメッセージログにCBLEELOG('PRINTU ')に指定したメッセージを付けて，標準エラー出力に出力します。

UAPで値を設定するデータ領域

データ名A

メッセージログの出力要求を示す要求コードを「VALUE 'PRINTU△△'」と設定します。

データ名Y

値

意味

0

メッセージを標準出力に出力しません。

1

メッセージを標準出力に出力します。

データ名Z

値

意味

0

なし。syslog出力レベルはデフォルトの1になります。

1

syslog出力レベルを1にします。

2

syslog出力レベルを2にします。

3

syslog出力レベルを3にします。

4

syslog出力レベルを4にします。

5

syslog出力レベルを5にします。

6

syslog出力レベルを6にします。

7

メッセージをsyslogに出力しません。

syslog出力レベルは，1が最も高く，6が最も低くなります。

データ名C

メッセージログごとに付けられる識別子（メッセージID）を設定します。1〜11バイトの文字列を指定します。最後は空白文字で終わらせて設定します。

TP1/EEや他製品と重複した識別子を指定しないでください。

データ名D

メッセージログを出力したUAPを識別する値（要求元プログラムID）を，ユーザ任意で設定します。英数字2文字で，最後は空白文字で終わらせて設定します。

データ名F

メッセージログファイルにメッセージログとして出力する文字列の長さを設定します。最大800バイト設定できます。

データ名G

メッセージログファイルにメッセージログとして出力する文字列を設定します。

データ名H

0を設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

01900

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

01907

メッセージログ機能内の排他設定に失敗しました。

01908

メッセージログ機能内の排他解除に失敗しました。

01914

メッセージの組み立てに失敗しました。

01915

メッセージの出力できる状態にありません。

TP1/FSPの環境下にありません。

01918

標準エラー出力に失敗しました。

01919

ログファイルへの出力に失敗しました。

01920

すべてのログファイル切り替えに失敗しました。

01916

syslog出力に失敗しました。

注意事項

ログ出力量が多い場合は，CBLEELOG('PRINTU ')のリターンが遅くなります。例えば，障害発生時にメッセージ出力量が非常に多くなると，トランザクション処理時間が延びてしまいます。

これは，スローダウンの要因になりますので，注意してください。

環境変数LANGにOS設定値と異なる言語種別を指定し，CBLEELOG('PRINTU ')でsyslogに非ASCII文字を含むメッセージを出力する場合，syslogに複数の文字コードが混在するおそれがあります。この場合は次の方法で回避してください。

・出力メッセージをASCII文字だけにする。

・データ名Zに7を指定する。

・拡張SYSLOGを使用し，log_hsyslog_cmodeオペランドにSJISを指定する（出力メッセージがシフトJISかつOSの言語設定がUTF-8の場合だけ）。

(2)　CBLEELOG('DCTMSG ')

名称

メッセージの出力抑止

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEELOG' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'DCTMSG  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
  02 データ名C  PIC X(10).

機能

データ名Cで指定したメッセージIDのメッセージの出力を抑止します。

抑止対象としたメッセージは，メッセージログファイル，標準出力（標準エラー出力），syslogへの出力を行いません。

UAPで値を設定するデータ領域

データ名A

メッセージログの出力要求を示す要求コードを「VALUE 'DCTMSG△△'」と設定します。

データ名Z

0を設定します。

データ名C

抑止対象のメッセージIDを設定します。「KFSBn1n2n3n4n5」の形式（9文字）で，最後は空白文字で終わらせて設定します。TP1/EEが出力するメッセージIDを設定します。

CBLEELOG('PRINTU ')で指定するメッセージは抑止対象にはなりません。また，システムで出力する一部のメッセージ，コマンドプロセスで出力するメッセージは抑止対象とはなりません。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

01900

データ名に設定した値が間違っています。

抑止対象にできないメッセージIDを指定しています。

要求コード（データ名A）が間違っている場合も含みます。

01915

発行条件が不正です。

TP1/FSPの環境下にありません。

メッセージ出力抑止機能が有効になっていません。

注意事項

メッセージの出力抑止状態は，システム再開始後引き継がれません。必要に応じてメッセージの抑止を再設定してください。

(3)　CBLEELOG('ACTMSG ')

名称

メッセージの出力抑止解除

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEELOG' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'ACTMSG  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
  02 データ名C  PIC X(10).

機能

データ名Cで指定したメッセージID，またはすべてのメッセージの出力抑止を解除します。

UAPで値を設定するデータ領域

データ名A

メッセージログの出力要求を示す要求コードを「VALUE 'ACTMSG△△'」と設定します。

データ名Z

0を設定します。

データ名C

抑止解除対象のメッセージIDを設定します。設定方法は「(2)　CBLEELOG('DCTMSG ')」を参照してください。

すべてのメッセージの出力抑止を解除する場合，メッセージIDを指定しないでください（先頭を空白文字にします）。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

01900

データ名に設定した値が間違っています。

抑止解除対象にできないメッセージIDを指定しています。

要求コード（データ名A）が間違っている場合も含みます。

01915

発行条件が不正です。

TP1/FSPの環境下にありません。

メッセージ出力抑止機能が有効になっていません。

1.3.6　メモリ管理（CBLEEMEM）

(1)　CBLEEMEM('USERDUMP')

名称

メモリ領域のダンプ出力

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMEM' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'USERDUMP'.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
  02 FILLER     PIC X(4).
  02 データ名C  ADDRESS.
  02 データ名D  PIC 9(18) COMP.
  02 データ名E  PIC X(1).

機能

指定されたユーザメモリ領域をファイルに出力する設定を行います。

指定されたユーザメモリ領域は，ユーザメモリダンプファイルに即時出力，またはスレッドダウン時にメモリDUMPファイルに出力します。

UAPで値を設定する引数

データ名A

メッセージログの出力要求を示す要求コードを「VALUE 'USERDUMP'」と設定します。

データ名Z

0を設定します。

データ名C

出力するメモリアドレスを設定します。

次の領域の範囲にあるアドレスを指定してください。領域の先頭アドレスである必要はありません。

ユーザSAT領域

ユーザIFA領域

CBLEEMEM('GETWK')で確保したワークセグメント領域

データ名EにVALUE 'C'を指定した場合は，指定不要です。

データ名D

出力するメモリ領域サイズを1バイト単位で指定します。1から17,179,869,184までの範囲で指定してください。

出力する領域がデータ名Cで指定した領域の末尾領域を超えないように指定してください。

データ名EにVALUE 'C'を指定した場合は，指定不要です。

データ名E

次の値を指定します。

VALUE 'I'：即時ファイル出力

　指定されたメモリ領域をユーザメモリダンプファイルに出力します。

VALUE 'D'：メモリDUMP出力対象領域の設定

　スレッドダウン時，メモリDUMPファイルに出力する領域を設定します。

　1スレッドにつき30か所まで設定できます。

VALUE 'C'：メモリDUMP出力対象領域のクリア

　VALUE 'D'で設定した出力領域をすべてクリアします。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

05101

引数に設定した値が間違っています。

05102

発行条件が不正です。

TP1/FSPの環境下にありません。

05109

無効なメモリ領域を設定しています。

05111

ファイル出力に失敗しました。

05112

メモリ領域の設定可能最大数を超過しました。

注意事項

出力時に指定されたメモリ領域が使用可能な領域であるかどうかのチェックは行いません。ファイル出力時に指定されたメモリ領域が返却済みのワークセグメントであっても，指定されたメモリ領域をファイルに出力します。

設定したメモリDUMP出力対象領域の設定は，システム再開始後引き継がれません。

データ名EにVALUE'I'を指定した場合は，環境変数にEEUSERDUMPDIRを指定してください。当該環境変数を指定しない場合，CBLEEMEM('USERDUMP')は即時出力処理を行わないでステータスコード00000でリターンします。

オフラインバッチプロセスでは，データ名EにVALUE'I'を指定してください。それ以外の値をデータ名Eに指定した場合，メモリDUMP出力対象領域の設定/クリア処理は行われますが，オフラインバッチプロセスはスレッドダウンしないため出力の契機はありません。

1.3.7　タイマトランザクション（CBLEETIM）

(1)　CBLEETIM('EXECAP-P')

名称

永続指定のタイマトランザクションの起動

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETIM' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'EXECAP-P'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(4).
  02 データ名D  PIC X(4).
  02 データ名E  PIC 9(9) COMP.
  02 FILLER      PICX(4).
  02 データ名F  PIC X(32).
  02 データ名G  PIC X(32).
  02 データ名H  PIC X(4).
01 一意名3.
  02 データ名I  PIC 9(9) COMP.
  02 データ名J  PIC X(n).

機能

UAPから，永続指定のトランザクションを起動します。すぐに起動することも，設定した時間経過後に起動することもできます。

UAPで値を設定する引数

データ名A

トランザクション起動を示す要求コードを「VALUE 'EXECAP-P'」と設定します。

データ名Z

0を設定します。

データ名C

タイマトランザクションの起動方式を設定します。

VALUE 'INST'：コミットとは無関係に，データ名Dに設定した条件になったら直ちにトランザクションを起動する場合に設定します。

VALUE 'COMT'：コミット後，データ名Dに設定した条件になったらトランザクションを起動する場合に設定します。コミット前には起動されません。

データ名D

タイマトランザクションの起動タイミングを設定します。

VALUE 'INTV'：経過時間指定のタイマ起動の場合に設定します。

　データ名Eに設定した時間だけ経過したあとに，トランザクションを起動します。データ名Cに'INST'を指定した場合は，このプログラムを呼び出してからの経過時間，データ名Cに'COMT'を指定した場合は，コミットからの経過時間です。

VALUE 'TIME'：時刻指定のタイマ起動の場合に設定します。

　データ名Eに設定した時刻に，トランザクションを起動します。

データ名E

データ名Dに設定した起動タイミングに応じて次のように設定します。

データ名Dに'INTV'を指定した場合（経過時間指定のタイマ起動）

指定した時間経過後にトランザクションを起動します。タイマトランザクションは100ミリ秒単位に起動できます。設定できる秒数の範囲は，1から3,600,000まで（100ミリ秒から100時間まで）です。データ名Cに'INST'を指定した場合は，本プログラムを呼び出してからの経過時間，データ名Cに'COMT'を指定した場合は，コミットからの経過時間です。

指定方法の詳細については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のCBLEETIM('EXECAP')を参照してください。

データ名Dに'TIME'を指定した場合（時刻指定のタイマ起動）

トランザクションを起動する時刻を設定します。0時0分0秒を基準にして，起動時刻を秒数で算出して設定します。

（時刻の設定例）

午後2時30分30秒に起動させる場合：

14×3,600＋30×60＋30 = 52,230

52,230をデータ名Eに設定します。

設定可能範囲は，0（0時0分0秒に開始）から86,399（23時59分59秒に開始）までです。

指定方法の詳細については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のCBLEETIM('EXECAP')を参照してください。

データ名F

タイマトランザクションを取り消す場合のキーとなるリクエスト識別子を設定します。取り消さない場合はデータ名Fすべての領域にLOW-VALUEを設定します。

データ名G

起動するトランザクションのサービス名を，31バイト以内のアスキー文字列で設定します。文字列の最後には空白を設定してください。この空白は文字列の長さに数えません。

データ名H

タイマトランザクションが起動時刻を迎えた時点で，そのときに登録されている処理キューの中で，優先的に起動するか，非優先的に起動するかを設定してください。

VALUE 'HI△△'：優先的に起動します。

VALUE 'LOW△'：非優先的に起動します。

トランザクションレベル方式の処理キュー制御機能を使用している場合，このデータの指定値は有効にならないで，タイマトランザクションを優先的に起動しません。優先的に起動したい場合は，トランザクションレベル名判定UOCでプライオリティのいちばん高いトランザクションレベル名を指定してください。

データ名I

起動するトランザクションに渡すデータの長さ（バイト長）を設定します。

渡せるデータの最大長はメモリ関連定義のtime_message_sizeの指定値，または65,535バイトタイマデータ表作成コマンド（eetimtblh）の-zオプションで指定した最大引き継ぎデータ長のどちらか小さい値までです。渡すデータがない場合は0を設定します。

データ名J

起動するトランザクションに渡す，データを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00501

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00502

データ名Gに設定したサービス名が間違っています。

00503

データ名Iに設定したデータ長が大き過ぎます。

00504

次の要因によって，資源不足で登録できません。

メモリ関連定義のtime_message_noの指定値を超えています。

メモリ関連定義のicb_noの指定値を超えています。

メモリ関連定義のpce_noの指定値を超えています。

00506

TP1/EEシステムが終了処理中のため，登録できません。

00507

指定したサービス名に対するエントリポインタがありません。

00508

指定した時刻が先行および後退許容時間範囲内にありません。

00509

発行条件が不正です。

00510

タイマ登録処理がタイムアウトしました。

00511

タイマデータ表へのタイマ登録処理が失敗しました。

00512

タイマ登録処理で内部通信エラーが起こりました。

注意事項

データ名Cに'COMT'を指定した場合，コミット前にトランザクションが異常終了したとき，またはロールバックしたときは，本関数の要求は無効になります。また，同一のトランザクション内でCBLEETRN('ROLLMARK')がすでに発行されている場合は，ステータスコード「00509」でエラーリターンします。

データ名Cに'INST'を設定した場合，トランザクションが異常終了したとき，またはロールバックしたときも，本プログラムの要求は有効になります。

データ名Cに'COMT'，データ名Dに'TIME'を設定した場合，先行/後退許容時間チェックは関数呼び出し時に行います。

関数呼び出し時点で先行/後退許容時間外の場合はエラーとし，コミット時には先行/後退許容時間のチェックは行いません。

コミット時に後退許容時間外となっていた場合はそのまま即時起動とします。

データ名Cに'COMT'を設定して本関数は発行したトランザクションではトランザクションの最適化を行いません。

永続タイマを監視するTP1/EEの監視間隔や通信時間が起動時間の誤差となります。

本関数で登録した永続タイマは，タイマ登録したTP1/EEとは別のTP1/EEでタイマ取り消しを行えます。このため，データ名Fは同一のタイマデータ表に登録するTP1/EE間で一意の値を設定することを推奨します。

(2)　CBLEETIM('CANCEL-P')

名称

永続指定のタイマトランザクションの起動取り消し

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETIM' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'CANCEL-P'.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(4).
  02 データ名D  PIC X(32).

機能

CBLEETIM('EXECAP-P')で登録したタイマトランザクションを，指定時刻または時間に達する前に取り消すことができます。

UAPで値を設定する引数

データ名A

トランザクション起動を示す要求コードを「VALUE 'CANCEL-P'」と設定します。

データ名Z

0を設定します。

データ名C

どの起動方式のタイマトランザクションを取り消すかを設定します。

VALUE 'INST'

　次のタイマトランザクションを，コミットと無関係に直ちに取り消す場合に設定します。

トランザクション起動タイミング（データ名C）に'INST'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクション

トランザクション起動タイミング（データ名C）に'COMT'を指定してCBLEETIM('EXECAP-P')で登録し，コミット後のタイマトランザクション

VALUE 'COMT'

トランザクション起動タイミング（データ名C）に'COMT'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクションを取り消す場合に設定します。ただし，コミット前の場合に限ります。

VALUE 'CMTC'

　次のタイマトランザクションを，コミット後に取り消す場合に設定します。

トランザクション起動タイミング（データ名C）に'INST'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクション

トランザクション起動タイミング（データ名C）に'COMT'を指定してCBLEETIM('EXECAP-P')で登録し，コミット後のタイマトランザクション

データ名D

取り消すタイマトランザクションを登録したCBLEETIM('EXECAP-P')呼び出し時のデータ名Fで設定したリクエスト識別子と同じものを設定します。同一のリクエスト識別子のタイマトランザクションが複数指定されている場合は，データ名Cで'INST'または'CMTC'を設定した時は起動時刻の最も早いものを，データ名Cで'COMT'を設定した時は最も早く登録したものを取り消します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00501

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00505

設定された要求識別子を持つタイマトランザクションは未登録，または起動中，またはすでに起動済みです。

00509

発行条件が不正です。

00510

タイマ取り消し処理がタイムアウトしました。

00511

タイマデータ表へのタイマ取り消し処理が失敗しました。

00512

タイマ取り消し処理で内部通信エラーが起こりました。

注意事項

トランザクション起動タイミング（データ名C）で'COMT'を設定したCBLEETIM('EXECAP-P')のタイマトランザクションは，コミット後は，取り消せません。コミット後に取り消したい場合は，データ名Cで'INST'または'CMTC'を設定して取り消してください。また，コミット前に取り消せるのは，本タイマトランザクションを登録したトランザクションからだけです。

すでに起動時刻に達しているタイマトランザクションの起動は，取り消しできません。

トランザクション起動タイミング（データ名C）で'CMTC'を設定した場合，対象のタイマトランザクションが同期点処理前に起動時刻に達しても，タイマトランザクションを起動しません。

トランザクション起動タイミング（データ名C）で'CMTC'を設定した場合，コミット前にトランザクションが異常終了したとき，またはロールバックしたときは，本関数の要求は無効になります。このとき，起動時刻に達している場合はタイマトランザクションを即時起動します。同一のトランザクション内でCBLEETRN('ROLLMARK')がすでに発行されている場合は，ステータスコード「00509」でエラーリターンします。

(3)　CBLEETIM('CHECK-P')

名称

永続指定のタイマトランザクションの登録確認

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETIM' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'CHECK-P '.
  02 データ名B  PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(4).
  02 データ名D  PIC X(32).

機能

CBLEETIM('EXECAP-P')で登録したタイマトランザクションが登録中となっているかどうかを確認します。

UAPで値を設定するデータ領域

データ名A

トランザクション起動を示す要求コードを「VALUE 'CHECK-P△'」と設定します。

データ名Z

0を設定します。

データ名C

どの起動方式のタイマトランザクションを確認するかを設定します。

VALUE 'INST'

次のタイマトランザクションの登録状況を確認する場合に設定します。

・トランザクション起動タイミング（データ名C）に'INST'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクション

・トランザクション起動タイミング（データ名C）に'COMT'を指定してCBLEETIM('EXECAP-P')で登録し，コミット後のタイマトランザクション

VALUE 'COMT'

トランザクション起動タイミング（データ名C）に'COMT'を指定してCBLEETIM('EXECAP-P')で登録したタイマトランザクションの登録状況を確認する場合に設定します。ただし，コミット前の場合に限ります。

データ名D

確認対象のタイマトランザクションを登録したCBLEETIM('EXECAP-P')呼び出し時のデータ名Fで設定したリクエスト識別子と同じものを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

設定された要求識別子を持つタイマトランザクションは登録されています。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00501

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00505

設定された要求識別子を持つタイマトランザクションは未登録，または起動中，またはすでに起動済みです。

00509

発行条件が不正です。

00511

タイマデータ表への登録確認処理が失敗しました。

1.3.8　リモートプロシジャコール（CBLEERPC）

(1)　CBLEERPC('GETBIZID')

名称

当該トランザクションの業務IDの参照

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEERPC' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'SETBIZID'.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(17).
  02 FILLER     PIC X(3).
  02 データ名D  PIC S9(9) COMP.

機能

現在のトランザクションの業務ID（オリジナル業務IDまたはカレント業務ID）を参照します。

CBLEERPC(‘SETBIZID’)関数を発行している場合は，CBLEERPC(‘SETBIZID’)関数で設定した業務IDを返します。

UAPで値を設定するデータ領域

データ名A

当該トランザクションの業務ID参照を示す要求コードを「VALUE 'GETBIZID'」と設定します。

データ名Z

取得する業務IDの種別を指定します。

0：引き継ぎ用の業務IDを取得します。ユーザ処理によって業務IDの引き継ぎを行う場合は，本オプションで取得した業務IDを使用してください。引き継ぎ用の業務IDとは，現在の業務IDに通番とノードIDを更新したものです。

1：自トランザクションの業務IDを取得します。

カレント業務IDを取得したい場合は，上記のどれかの値に「32」を加算することで取得できます。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

データ名C

当該トランザクションの業務IDが返されます。

データ名D

当該トランザクションの業務ID設定方法が返されます。

1：新規に業務IDを割り当てました。

2：既存の業務IDを引き継ぎました。

3：ユーザ指示によって既存の業務IDを引き継ぎました。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00301

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00338

発行条件が不正です。

TP1/FSPの環境下にありません。

(2)　CBLEERPC('SETBIZID')

名称

当該トランザクションの業務IDの設定

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEERPC' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'SETBIZID'.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名C  PIC X(17).

機能

現在のトランザクションの業務ID（オリジナル業務IDまたはカレント業務ID）を設定します。

本関数によるオリジナル業務IDの設定は同一トランザクション上で2回以上発行できません。オリジナル業務IDを変更すると，同時にカレント業務IDも変更されます。

カレント業務IDを設定する場合は同一トランザクション上で2回以上発行することができます。

UAPで値を設定するデータ領域

データ名A

当該トランザクションの業務ID設定を示す要求コードを「VALUE 'SETBIZID'」と設定します。

データ名C

当該トランザクションの業務IDを設定します。

データ名Z

設定する業務IDの種別を指定します。

0：オリジナル業務IDとカレント業務IDを設定します。

32：カレント業務IDだけを設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

00301

データ名に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

00338

発行条件が不正です。

TP1/FSPの環境下にありません。

00342

オリジナル業務IDを変更するCBLEERPC('SETBIZID')を同一トランザクション上で2回以上発行しました。

注意事項

設定した業務IDが正しいかどうかのチェックは行わないため，不正な値を指定した場合，業務IDによるトランザクションの紐づけができなくなります。

1.3.9　オンラインバッチ制御（CBLEEOBM）

(1)　CBLEEOBM('LOTEND')

名称

ノーマルトランザクションのロットの終了要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEOBM' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'LOTEND  '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.

機能

ロットの正常終了を要求します。ノーマルトランザクションを起動したロットを正常終了します。ほかのロットを正常終了することはできません。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると，ロットが正常終了します。

本関数を実行したサービス関数リターン後，トランザクションがロールバック決着した場合，またはスレッドダウンした場合はロットの終了要求は無効となります。

本関数は，イベント型OBMのノーマルトランザクションから実行できます。

UAPで値を設定するデータ領域

データ名A

ロットの終了要求を示すコード「VALUE 'LOTEND△△'」を設定します。

データ名C

0を設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

15601

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

15602

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

イベント型OBMのノーマルトランザクションではありません。

CBLEETRN('ROLLMARK')を発行済みです。

15605

同一トランザクションで次のどれかの関数を発行済みです。

CBLEEOBM('LOTEND')

CBLEEOBM('LOTSTOP')

CBLEEOBM('STOP')

(2)　CBLEEOBM('LOTSTOP')

名称

ノーマルトランザクションのロットの停止要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEOBM' USING 一意名1一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'LOTSTOP '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  PIC X(1).
  02 データ名E  PIC X(1).
  02 FILLER     PIC X(6).

機能

ロットの停止を要求します。本関数は，ノーマルトランザクションから実行できます。ノーマルトランザクションを起動したロットを停止します。ほかのロットを停止することはできません。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると，本関数で設定した停止要因でロットが停止します。

本関数を実行したサービス関数リターン後にトランザクションがロールバック決着した場合，またはスレッドダウンした場合はロットの停止要求は無効となります。

UAPで値を設定するデータ領域

データ名A

ロットの停止要求を示すコード「VALUE 'LOTSTOP△'」を設定します。

データ名C

0を設定します。

データ名D

ロットの停止要因を設定します。計画停止は，イベント型OBMの場合だけ設定できます。

VALUE 'F'：強制停止します。

VALUE 'P'：計画停止します。

データ名E

本関数を実行したノーマルトランザクションで処理していたバッチデータを処理済みとするか，未処理のままとするかを設定します。イベント型OBMの場合は，VALUE '△'を設定してください。VALUE 'C'を設定しても無視します。

VALUE 'C'：バッチデータを処理済みとします。

VALUE '△'：バッチデータを未処理のままとします。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

15601

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

15602

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

ノーマルトランザクションではありません。

停止要因に計画停止が設定されていますが，イベント型OBMではありません。

CBLEETRN('ROLLMARK')を発行済みです。

15605

同一トランザクションで次のどれかの関数を発行済みです。

CBLEEOBM('LOTEND')

CBLEEOBM('LOTSTOP')

CBLEEOBM('STOP')

(3)　CBLEEOBM('STOP')

名称

ノーマルトランザクションのOBMの停止要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEOBM' USING 一意名1一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'STOP    '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  PIC X(1).
  02 データ名E  PIC X(1).
  02 FILLER     PIC X(2).
  02 データ名F  PIC S9(9) COMP.

機能

OBMの停止を要求します。本関数は，ノーマルトランザクションから実行できます。ノーマルトランザクションを起動したOBMを停止します。

本関数を実行したサービス関数リターン後にトランザクションがコミット決着すると，本関数で設定した停止要因でOBMが停止します。

本関数を実行したサービス関数リターン後にトランザクションがロールバック決着した場合，またはスレッドダウンした場合はOBMの停止要求は無効となります。

UAPで値を設定するデータ領域

データ名A

OBM停止要求を示すコード「VALUE 'STOP△△△△'」を設定します。

データ名C

0を設定します。

データ名D

停止要因を設定します。計画停止は，イベント型OBMの場合だけ設定できます。

VALUE 'F'：強制停止します。

VALUE 'P'：計画停止します。

データ名E

本関数を実行したノーマルトランザクションで処理していたバッチデータを処理済みとするか，未処理のままとするかを設定します。イベント型OBMの場合は，VALUE '△'を設定してください。VALUE 'C'を設定しても無視します。

VALUE 'C'：バッチデータを処理済みとします。

VALUE '△'：バッチデータを未処理のままとします。

データ名F

任意の理由コードを設定します。本関数で設定した理由コードは，クローズトランザクション，終了/停止UOC，再開始UOCで参照できます。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

15601

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

15602

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

本関数を実行できるトランザクションではありません。

停止要因に計画停止が設定されていますが，イベント型OBMではありません。

CBLEETRN('ROLLMARK')を発行済みです。

15605

同一トランザクションで次のどれかの関数を発行済みです。

CBLEEOBM('LOTEND')

CBLEEOBM('LOTSTOP')

CBLEEOBM('STOP')

注意事項

複数のトランザクションでOBMの停止要求を実行した場合，最初にコミット決着したトランザクションで設定した停止要因，理由コードで停止します。

本関数を実行したトランザクションがコミット決着した場合でも，停止処理中に障害が発生した場合は，停止要因，理由コードは障害による停止要因，理由コードとなります。

(4)　CBLEEOBM('ANYSTOP')

名称

任意のOBMの停止要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEOBM' USING 一意名1一意名2

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'ANYSTOP '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  PIC X(9).
  02 データ名E  PIC X(1).
  02 FILLER     PIC X(2).
  02 データ名F  PIC S9(9) COMP.

機能

OBMの停止を要求します。実行中状態，初期化中状態，および再開始処理中状態のOBMに対して要求できます。

本関数が正常に終了すると，OBMを停止します。

本関数は，OBMのトランザクション以外のトランザクションからも実行できます。BCSのTP1/EEから実行する場合は，BCMとネゴシエーションが完了している必要があります。ネゴシエーションが完了していない場合に実行すると本関数はエラーリターンします。

OBMのノーマルトランザクションから該当OBMに対して停止要求を実行する場合は，CBLEEOBM('STOP')を使用することを推奨します。OBMのノーマルトランザクションから該当OBMに対して停止要求を実行した場合は，タイミングによっては，該当OBMが停止する前に本関数を実行したロットのノーマルトランザクションが何回か起動される場合があります。

OBMのオープントランザクションから該当OBMに対しての停止要求は，該当OBMのノーマルトランザクションが起動されることなくOBMが停止します。

UAPで値を設定するデータ領域

データ名A

OBM停止要求を示すコード「VALUE 'STOP△△△△'」を設定します。

データ名C

0を設定します。

データ名D

OBM名を8バイト以内のアスキー文字列で設定します。文字列の末尾には空白を付けてください。この空白は文字列の長さには数えません。

データ名E

停止要因を設定します。

VALUE 'F'：強制停止します。計画停止は，イベント型OBMの場合だけ設定できます。

VALUE 'P'：計画停止します。

データ名F

任意の理由コードを設定します。本関数で設定した理由コードは，クローズトランザクション，終了/停止UOC，再開始UOCで参照できます。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

15601

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

15602

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

本関数を実行できるトランザクションではありません。

停止要因に計画停止が設定されていますが，イベント型OBMではありません。

15603

OBMの状態が不正です。

実行中状態ではありません。

15604

タイミング不正です。

BCMとのネゴシエーションが完了していません。

テーブル排他の取得ができませんでした。

15608

指定したOBM名は定義されていません。

15609

BCMへの送信処理で障害が発生しました。

15610

BCMからの応答待ち時間切れ（タイムアウト）になりました。

注意事項

複数のトランザクションでOBMの停止要求を実行した場合，最初に本関数を実行したトランザクションで設定した停止要因，理由コードで停止します。

本関数を実行後のOBMの停止処理中に障害が発生した場合は，停止要因，理由コードは障害による停止要因，理由コードとなります。

ステータスコード15610でリターンした場合は，停止要求は受け付けられていることがあります。再実行するか，BCMのTP1/EEでeeobmstslsコマンドを実行して状態を確認してください。

複数のBCMと接続しているBCSで本関数を実行した場合，通常使用BCM,切替用BCMの順番で停止要求を送信します。どちらかが停止要求を受け付ければ，本関数は，EE_OKでリターンします。両方でエラーとなった場合は，通常使用BCMからの応答に合わせてリターン値を設定します。ただし，通常使用BCMとは通信できずに，切替用BCMと通信できた場合は，切替用BCMからの応答に合わせてリターン値を設定します。

(5)　CBLEEOBM('RECV')

名称

バッチデータの受信

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEOBM' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'RECV    '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
  02 データ名D  PIC S9(9) COMP.
  02 FILLER     PIC X(4).
  02 データ名E  ADDRESS.
01 一意名3.
  02 データ名F  PIC S9(9) COMP OCCURS 7.
  02 データ名G  PIC X(8) OCCURS 7.
  02 データ名H  PIC S9(9) COMP.

機能

ブロック送信機能を使用している場合に，ブロック内の後続レコードを受信します。データ型OBMのノーマルトランザクションで実行できます。

UAPで値を設定するデータ領域

データ名A

バッチデータの受信を示すコード「VALUE 'RECV△△△△'」を設定します。

データ名C

0を設定します。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

データ名D

受信したバッチデータの長さが返されます。ステータスコードが00000，または15606のときに参照できます。

データ名E

受信したバッチデータを設定したエリアのアドレスが返されます。ステータスコードが00000，または15606のときに参照できます。

データ名F

受信したバッチデータのキーの長さが返されます。ステータスコードが00000，または15606のときに参照できます。配列の4番目以降は今後の拡張用です。

データ名G

受信したバッチデータのキーが返されます。ステータスコードが00000，または15606のときに参照できます。配列の4番目以降は今後の拡張用です。

データ名H

受信したバッチデータの一連通番が返されます。ステータスコードが00000，または15606のときに参照できます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチプロセスから発行しているため，本機能は使用できません。

15601

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

15602

発行条件が不正です。

TP1/FSPの環境下にありません。

OBM機能を使用していません。

本関数を実行できるトランザクションではありません。

CBLEETRN('ROLLMARK')を発行済みです。

データ型OBMではありません。

15606

入力メッセージ引き渡しエリア（IMA）がオーバフローしました※。

15607

ブロックの全バッチデータを受信済みです。

注※

データ名Eにはデータ名Fが指すアドレスに格納できたバッチデータのサイズが返されます。

注意事項

本関数では，トランザクション起動時にサービスプログラムにバッチデータを設定した領域（入力パラメタ，入力パラメタ長）を再利用します。本関数実行後に，前のバッチデータを参照したい場合は，あらかじめ別の領域に複写してください。

1.3.10　SDBハンドラ制御（CBLEESDH）

(1)　CBLEESDH('INIT ')

名称

イニシャライズ

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESDH' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
    02 データ名A  PIC X(8) VALUE 'INIT    '.
    02 データ名B  PIC X(5).
    02 FILLER     PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
  01 一意名2.                            /*インタフェースエリア */
    02 データ名D.                        /*ヘッダ部 */
       /*インタフェースエリア構成情報部*/
       03 データ名D01  PIC X(4).         /*ヘッダ識別子 */
       03 データ名D02  PIC S9(9) COMP.   /*ヘッダ部サイズ */
       03 データ名D03  PIC X(1).         /*種別 */
       03 FILLER       PIC X(3).         /*予備 */
       03 データ名D04  PIC S9(9) COMP.  /*インタフェースエリア全体サイズ */
       03 データ名D05  ADDRESS.         /*自インタフェースエリアのテンプレートアドレス */
       03 データ名D06  PIC S9(9) COMP. /*エントリ部先頭ロケーション */
       03 データ名D07  PIC S9(9) COMP. /*エントリ部サイズ */
       03 データ名D08  PIC S9(9) COMP. /*エントリ部数 */
       03 FILLER       PIC X(4).        /*予備 */
       03 データ名D09  PIC S9(9) COMP.  /*キー報告エリア部ロケーション */
       03 データ名D10  PIC S9(9) COMP. /*キー報告エリア部サイズ */
       03 データ名D11  PIC S9(9) COMP. /*構成要素情報表示部ロケーション */
       03 データ名D12  PIC S9(9) COMP. /*構成要素情報表示部エントリサイズ */
       03 FILLER       PIC X(40).       /*予備 */
       03 データ名 D13  PIC S9(4) COMP. /*データベース名称サイズ */
       03 データ名 D14  PIC X(30).      /*データベース名称 */
       /*要求部*/
       03 データ名D15  PIC X(4).       /*機能コード */
       03 データ名D16  PIC X(1).       /*要求コード1 */
       03 データ名D17  PIC X(1).       /*要求コード2 */
       03 データ名D18  PIC X(1).       /*要求コード3 */
       03 データ名D19  PIC X(1).       /*要求コード4 */
       03 データ名D20  PIC X(1).       /*アクセスモード1 */
       03 データ名D21  PIC X(1).       /*アクセスモード2 */
       03 データ名D22  PIC X(1).       /*アクセスモード3 */
       03 データ名D23  PIC X(1).       /*アクセスモード4 */
       03 データ名D24  PIC X(1).       /*排他モード1 */
       03 データ名D25  PIC X(1).       /*排他モード2 */
       03 データ名D26  PIC X(1).       /*排他モード3 */
       03 データ名D27  PIC X(1).       /*排他モード4 */
       03 データ名D28  PIC X(1).       /*データエリア形式 */
       03 データ名D29  PIC X(1).       /*店番限定有無 */
       03 データ名D30  PIC X(1).       /*順アクセス内基点条件オプション */
       03 データ名D31  PIC X(1).       /*複数レコードの検索専用オプション */
       03 データ名D32  PIC X(1).       /*個別開始/終了一括要求オプション */
       03 データ名D33  PIC X(1).       /*個別開始実行要求オプション */
       03 データ名D34  PIC X(1).       /*オプションコード7 */
       03 データ名D35  PIC X(1).       /*オプションコード8 */
       03 FILLER       PIC X(8).       /*予備 */
       03 データ名D36  ADDRESS.        /*データベースアクセス用エントリリストアドレス */
       03 データ名D37  ADDRESS.        /*システム構成表示エリアアドレス */
       03 データ名D38  PIC S9(4) COMP. /*データベース名称サイズ指定 */
       03 データ名 D39  PIC X(30).      /*データベース名称指定 */
       03 データ名D40  ADDRESS.         /*データベースキー指定エリアアドレス */
       03 データ名D41  ADDRESS.        /* TP1/FSP領域 */
       03 FILLER       PIC X(4).        /*予備 */
       03 FILLER       PIC X(12).       /*予備 */
       03 データ名D42  ADDRESS.         /*RDエリア名称格納エリア */
       03 データ名D43  PIC S9(9) COMP.  /*RDエリア名称格納エリアサイズ */
       03 FILLER       PIC X(4).        /*予備 */
       03 データ名D44  PIC S9(4) COMP.  /*店番サイズ */
       03 データ名D45  PIC X(14).       /*店番 */
       03 FILLER       PIC X(240).       /*予備 */
       /*結果部*/
       03データ名D46  PIC X(1).         /*リターンコード */
       03 データ名D47  PIC X(1).         /*サブコード */
       03 FILLER       PIC X(2).         /*予備 */
       03データ名D48  PIC S9(9) COMP.   /*詳細コード */
       03データ名D49  PIC S9(9) COMP.   /*エラーコード1 */
       03データ名D50  PIC S9(9) COMP.   /*エラーコード2 */
       03 データ名D51  PIC X(5).        /*SDHステータスコード */
       03 FILLER       PIC X(1).         /*予備 */
       03 データ名D52  PIC X(1).         /*暗黙的ロールバック有無 */
       03 データ名D53  PIC X(1).         /*個別開始実行要求結果 */
       03 データ名D54  PIC S9(18) COMP.  /*SQLCODE */
       03 データ名D55  PIC X(32).        /*障害情報 */
       03 データ名D56  ADDRESS.          /*データベース名称リストアドレス */
       03 データ名D57  ADDRESS.          /*アクセス機能用インタフェースエリアアドレス */
       03 データ名D58  PIC S9(9) COMP.   /*エントリ部ロケーション */
       03 FILLER       PIC X(4).          /*予備 */
       03 データ名D59  ADDRESS.           /*レコード分割キー一覧アドレス */
       03 データ名D60  ADDRESS.          /*RDエリア分割キー一覧アドレス */
       03 FILLER       PIC X(152).        /*予備 */
       /*定義情報部*/
       03 データ名D61  PIC S9(9) COMP.    /*データベース番号 */
       03 データ名D62  PIC X(1).          /*種別 */
       03 FILLER       PIC X(3).           /*予備 */
       03 データ名D63  PIC X(1).          /*参照可否 */
       03 データ名D64  PIC X(1).          /*変更可否 */
       03 データ名D65  PIC X(1).          /*格納可否 */
       03 データ名D66  PIC X(1).          /*削除可否 */
       03 データ名D67  PIC X(1).          /*一括削除可否 */
       03 データ名D68  PIC X(1).          /*DB作成UTL追加可否 */
       03 データ名D69  PIC X(1).          /*フォーマットライト可否 */
       03 データ名D70  PIC X(1).          /*店群構成 */
       03 データ名D71  PIC X(1).          /*リクエストモード1 */
       03 データ名D72  PIC X(1).          /*リクエストモード2 */
       03 FILLER       PIC X(2).          /*予備 */
       03 データ名D73  PIC X(1).          /*階層ランダム/シーケンシャル */
       03 データ名D74  PIC X(1).          /*ユーザファイル通番可否 */
       03 FILLER       PIC X(2).          /*予備 */
       03 データ名D75  PIC S9(9) COMP.   /*レコード種別数 */
       03 FILLER       PIC X(4).          /*予備 */
       03 データ名D76  PIC S9(9) COMP.   /*レコード分割キー数 */
       03 データ名D77  PIC S9(4) COMP.   /*レコード分割キーのロケーション */
       03 データ名D78  PIC S9(4) COMP.   /*レコード分割キーのサイズ */
       03 データ名D79  PIC S9(9) COMP.   /* RDエリア分割キー数 */
       03 データ名D80  PIC S9(4) COMP.   /*RDエリア分割キーのロケーション */
       03 データ名D81  PIC S9(4) COMP.   /*RDエリア分割キーのサイズ */
       03 データ名D82  PIC S9(9) COMP.   /*最大階層レベル(FMB用) */
       03 データ名D83  PIC S9(9) COMP.   /* TP1/FSP領域 */
       03 FILLER       PIC X(8).         /*予備 */
       03 データ名D84  PIC S9(9) COMP.   /*全キー長(レベル2〜一連番号までの合計サイズ)*/
       03 データ名D85  PIC S9(9) COMP.   /* TP1/FSP領域 */
       03 FILLER       PIC X(8).         /*予備 */
       03 データ名D86  PIC S9(9) COMP.  /*レベル2キー構成要素情報 */
       03 データ名D87  PIC S9(9) COMP.  /*レベル2論理キー長 */
       03 データ名D88  PIC S9(9) COMP.  /*レベル2論理キー種類数 */
       03 FILLER       PIC S9(9) COMP.  /*予備 */
       03 データ名D89  PIC S9(9) COMP.  /*レベル3キー構成要素情報 */
       03 データ名D90  PIC S9(9) COMP.  /*レベル3論理キー長 */
       03 データ名D91  PIC S9(9) COMP.  /*レベル3論理キー種類数 */
       03 FILLER       PIC S9(9) COMP.  /*予備 */
       03 データ名D92  PIC S9(9) COMP.  /*レベル4キー構成要素情報 */
       03 データ名D93  PIC S9(9) COMP.  /*レベル4論理キー長 */
       03 データ名D94  PIC S9(9) COMP.  /*レベル4論理キー種類数 */
       03 FILLER       PIC S9(9) COMP.  /*予備 */
       03 データ名D95  PIC S9(9) COMP.  /*レベル5キー構成要素情報 */
       03 データ名D96  PIC S9(9) COMP.  /*レベル5論理キー長 */
       03 データ名D97  PIC S9(9) COMP.  /*レベル5論理キー種類数 */
       03 FILLER       PIC S9(9) COMP.  /*予備 */
       03 データ名D98  PIC S9(9) COMP.  /*レベル6キー構成要素情報 */
       03 データ名D99  PIC S9(9) COMP.  /*レベル6論理キー長 */
       03 データ名D100  PIC S9(9) COMP. /*レベル6論理キー種類数 */
       03 FILLER       PIC S9(9) COMP.   /*予備 */
       03 データ名D101  PIC S9(9) COMP. /*レベル7キー構成要素情報 */
       03 データ名D102  PIC S9(9) COMP. /*レベル7論理キー長 */
       03 データ名D103  PIC S9(9) COMP. /*レベル7論理キー種類数 */
       03 FILLER       PIC S9(9) COMP.   /*予備 */
       03 データ名D104  PIC S9(9) COMP.  /*一連番号構成要素情報  */
       03 データ名D105  PIC S9(9) COMP.  /*一連番号サイズ   */
       03 FILLER       PIC X(8).         /*予備 */
       03 データ名D106  ADDRESS.        /*レコード分割キー一覧アドレス */
       03 データ名D107  ADDRESS.        /*RDエリア分割キー一覧アドレス */
       03 FILLER       PIC X(48).       /*予備 */
       03 FILLER       PIC X(1024).     /*予備 */

  01 一意名3.                           /*データベース名称リスト */
    02 データ名E01    PIC S9(4) COMP.   /*エントリ数 */
    02 データ名E02    PIC S9(4) COMP.   /*エントリサイズ */
    02 FILLER          PIC X(4).         /*予備 */
    02 データ名E03     OCCURS n TIMES.  /*DB情報エリア */
      03 データ名E04  PIC S9(4) COMP.   /*DB名称長 */
      04 データ名E05  PIC X(30).        /*DB名称 */
      03 データ名E06  ADDRESS.          /*インタフェースエリアテンプレートアドレス */
      03 FILLER        PIC X(24).       /*予備 */

  01 一意名4.                          /*レコード分割キー一覧 */
    02 データ名F01    PIC S9(9) COMP.  /*キー数 */
    02 データ名F02    PIC S9(9) COMP.  /*キーサイズ */
    02 データ名F03    PIC S9(9) COMP.  /*キーロケーション */
    02 データ名F04    PIC S9(9) COMP.  /*エントリサイズ */
    02 データ名F05     OCCURS n TIMES. /*キーサイズ */
      03 データ名F06  PIC X(256).      /*レコード分割キー */
      03 データ名F07  PIC S9(9) COMP.  /*エントリロケーション */
      03 FILLER       PIC X(12).        /*予備 */

  01 一意名5.                          /*RDエリア分割キー一覧 */
    02 データ名G01    PIC S9(9) COMP.  /*キー数 */
    02 データ名G02    PIC S9(9) COMP.  /*キーサイズ */
    02 データ名G03    PIC S9(9) COMP.  /*キーロケーション */
    02 データ名G04    PIC S9(9) COMP.  /*エントリサイズ */
    02 データ名G05    PIC X(1).        /*分割種別 */
    02 FILLER         PIC X(7).        /*予備 */
    02 データ名G06     OCCURS n TIMES. /*キーサイズ    */
      03 データ名G07  PIC X(32).      /*RDエリア分割キー */
      03 データ名G08  PIC S9(4) COMP. /*RDエリア名称長 */
      03 データ名G09  PIC X(30).      /*RDエリア名称 */

機能

構造型データベースへアクセスするための情報を初期化または取得します。

スレッドイニシャライズ

インタフェースエリアイニシャライズ

データベースキー対応エントリ検索

RDエリア分割キー一覧取得

各項目はインタフェースエリア（ヘッダ部）の要求コード1指定値によって選択できます。

UAPは，インタフェースエリアイニシャライズを選択する場合は，確保済みのインタフェースエリアを一意名2に設定します。それ以外の場合は，インタフェースエリア（ヘッダ部だけ）を確保し，一意名2に設定します。

スレッドイニシャライズ

CBLEESDH('STRT ')やCBLEESDH('ACCS ')発行時に必要となるデータベース名を保持するデータベース名称リストおよびインタフェースエリアテンプレートを返却します。そのため，スレッドイニシャライズは必ず発行してください。

データベース名称リストおよびインタフェースエリアテンプレートは，全スレッドで共用します。データベース名称リストおよびインタフェースエリアテンプレートの内容は変更しないでください。変更した場合はTP1/FSPはプロセスダウンします。

インタフェースエリア，データベース名称リストとインタフェースエリアテンプレートの関係を次の図に示します。

図1‒23　スレッドイニシャライズ（共用）

インタフェースエリアイニシャライズ

指定されたインタフェースエリアのエントリ部を初期化します。

データベースキー対応エントリ検索

指定されたデータベースに定義されたレコード分割キーとレコード分割キーに対応するインタフェースエリアの各エントリへのロケーション一覧を返却します。

データベース名称と同時にDBKEYが指定された場合，レコード分割キー一覧に加え，DBKEYからレコード型を特定し，インタフェースエリア先頭からレコード型に対応するインタフェースエリアのエントリへのロケーションも返却します。

本機能は，FMB以外のデータベースに対して要求できます。

レコード分割キー一覧の内容は変更しないでください。変更した場合はTP1/FSPはプロセスダウンします。

表1‒38　データベースキー対応エントリ検索

項番

API

DB種別

FMB

DAM

MAM

TAM

SAM

1

データベースキー対応

エントリ検索

×

○

○

○

○

（凡例）

○：指定可

×：指定不可

図1‒24　データベースキー対応エントリ検索

RDエリア分割キー一覧取得

指定されたデータベースに定義されたRDエリア分割キーとRDエリア分割キーに対応するRDエリア名称一覧を返却します。

RDエリア分割キー一覧の内容は変更しないでください。変更した場合はTP1/FSPはプロセスダウンします。

UAPで値を設定するデータ領域

データ名A

イニシャライズを示すコード「VALUE 'INIT△△△△'」を設定します。

データ名C

0を設定します。

一意名2

確保したインタフェースエリア（ヘッダ部だけ）または初期化するインタフェースエリアを設定します。要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目については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の範囲の値を設定できます。

・その他の場合

　ZEROを設定します。

データベース名称指定

要求コード1の値によって設定する内容が異なります。

・要求コード1が'K'/'R'の場合

　データベース名称を設定した領域を設定します。

・その他の場合

　すべてX'00'を設定します。

データベースキー指定エリアアドレス

要求コード1の値によって設定する内容が異なります。

・要求コード1が'K'の場合

　データベースキー指定エリアを確保し，DBKEYを格納したあと，アドレスを設定します。設定されたデータベースにレコード分割キーが定義されていない場合など設定されたDBKEYからエントリを特定できない場合はエラーとなります。

　DBKEYを指定しない場合はZEROを設定します。

・その他の場合

　ZEROを設定します。

TP1/EEから値が返されるデータ領域

一意名2

インタフェースエリアの各項目に値が設定されています。

ステータスコードが'00000'または'04310'の場合だけ参照可能です。

次に記載のない項目についてはTP1/FSPは値を設定しません。

ヘッダ部−結果部

リターンコード，サブコード

リターンコードおよびサブコードを設定します。

詳細は「表1-11　リターンコードとサブコード」を参照してください。

詳細コード

TP1/FSPがトラブルシュートで使用する情報を設定します。

エラーコード1

TP1/FSPがトラブルシュートで使用する情報を設定します。

エラーコード2

TP1/FSPがトラブルシュートで使用する情報を設定します。

SDHステータスコード

SDHステータスコードを設定します。

「1.4　SDHステータスコード一覧」を参照してください。

データベース名称リストアドレス

要求コード1の値によって設定する内容が異なります。

エラー時は設定されている内容を変更しません。

・要求コード1が'S'の場合

　データベース名称リストのアドレスを設定します。

　データベース名称リスト内には，各データベースのDBの名称と名称長，対応するインタフェースエリアテンプレートアドレスが格納されています。DB名称は左詰めで設定し名称以外の部分には'△'を設定します。予備にはX'00'を設定します。

・その他の場合

　設定されている内容を変更しません。

図1‒25　データベース名称リスト

エントリ部ロケーション

要求コード1の値によって設定する内容が異なります。

エラー時は設定されている内容を変更しません。

・要求コード1が'K'の場合

　指定したDBKEYに対応するエントリへのロケーションを設定します。DBKEYが指定されていない場合はZEROを設定します。

・その他の場合

　設定されている内容を変更しません。

レコード分割キー一覧アドレス

要求コード1の値によって設定する内容が異なります。エラー時は設定されている内容を変更しません。

・要求コード1が'K'の場合

　レコード分割キー一覧のアドレスを設定します。

レコード分割キー一覧には，レコード分割キー数，レコード分割キーサイズ，DBKEYの先頭からレコード分割キーまでのロケーション（0〜），エントリサイズとレコード分割キーごとのエントリ部へのロケーションが格納されています。レコード分割キーがない場合は，キー数に0を設定します。

・その他の場合

　設定されている内容を変更しません。

図1‒26　レコード分割キー一覧

RDエリア分割キー一覧アドレス

要求コード1の値によって設定する内容が異なります。

エラー時は設定されている内容を変更しません。

・要求コード1が'R'の場合

　RDエリア分割キー一覧のアドレスを設定します。

　RDエリア分割キー一覧には，RDエリア分割キー数，RDエリア分割キーサイズ，DBKEYの先頭からRDエリア分割キーまでのロケーション（0〜），エントリサイズ，分割種別とRDエリア分割キーごとのRDエリア名称が格納されています。RDエリア分割キーがない場合は，キー数に0を設定します。

分割種別の値の意味を次の表に示します。キー数が0の場合やレコード分割キーかつRDエリア分割キー（TYPE K,M）の場合は'0'を設定します。分割種別の詳細については，マニュアル「HiRDB Version 9 構造型データベース機能」の「SDBデータベースの横分割」を参照してください。

表1‒39　分割種別

項番

分割種別

意味

説明

1

'1'

格納条件分割

SDB格納データベース定義文のWITHINで，格納条件を指定した場合

2

'2'

境界値分割

SDB格納データベース定義文のWITHINで，境界値を指定した場合

3

'0'

種別なし

−

（凡例）

−：該当しません

・その他の場合

　設定されている内容を変更しません。

図1‒27　RDエリア分割キー一覧

データ名B

ステータスコードを5桁の数字で返します。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

04301

引数に設定した値が間違っています。

要求コード（データ名A）の値が不正です。

インタフェースエリア（一意名2）が不正（NULL）です。

04302

発行条件が不正です。

TP1/FSPの環境下にありません。

SDBハンドラ機能が有効（sdh_use=Y）ではありません。

リソースマネジャが定義されていないか，リソースマネジャにHiRDBが定義されていません。

04310

構造型DBのアクセスに失敗しました。

詳細は「1.4　SDHステータスコード一覧」を参照してください。

(2)　CBLEESDH('STRT ')

名称

個別開始要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESDH' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
    02 データ名A  PIC X(8) VALUE 'STRT    '.
    02 データ名B  PIC X(5).
    02 FILLER     PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
  01 一意名2.                           /*インタフェースエリア */
    02 データ名D.                       /*ヘッダ部 */
    /*インタフェースエリア構成情報部*/
      03 データ名D01  PIC X(4).         /*ヘッダ識別子 */
      03 データ名D02  PIC S9(9) COMP.   /*ヘッダ部サイズ */
      03 データ名D03  PIC X(1).         /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D04  PIC S9(9) COMP.   /*インタフェースエリア全体サイズ */
      03 データ名D05  ADDRESS.          /*自インタフェースエリアのテンプレートアドレス */
      03 データ名D06  PIC S9(9) COMP.   /*エントリ部先頭ロケーション */
      03 データ名D07  PIC S9(9) COMP.   /*エントリ部サイズ */
      03 データ名D08  PIC S9(9) COMP.   /*エントリ部数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D09  PIC S9(9) COMP.   /*キー報告エリア部ロケーション */
      03 データ名D10  PIC S9(9) COMP.   /*キー報告エリア部サイズ */
      03 データ名D11  PIC S9(9) COMP.   /*構成要素情報表示部ロケーション */
      03 データ名D12  PIC S9(9) COMP.  /*構成要素情報表示部エントリサイズ */
      03 FILLER       PIC X(40).       /*予備 */
      03 データ名 D13  PIC S9(4) COMP. /*データベース名称サイズ */
      03 データ名 D14  PIC X(30).      /*データベース名称 */
      /*要求部*/
      03 データ名D15  PIC X(4).       /*機能コード */
      03 データ名D16  PIC X(1).       /*要求コード1 */
      03 データ名D17  PIC X(1).       /*要求コード2 */
      03 データ名D18  PIC X(1).       /*要求コード3 */
      03 データ名D19  PIC X(1).       /*要求コード4 */
      03 データ名D20  PIC X(1).       /*アクセスモード1 */
      03 データ名D21  PIC X(1).       /*アクセスモード2 */
      03 データ名D22  PIC X(1).       /*アクセスモード3 */
      03 データ名D23  PIC X(1).       /*アクセスモード4 */
      03 データ名D24  PIC X(1).       /*排他モード1 */
      03 データ名D25  PIC X(1).       /*排他モード2 */
      03 データ名D26  PIC X(1).       /*排他モード3 */
      03 データ名D27  PIC X(1).       /*排他モード4 */
      03 データ名D28  PIC X(1).       /*データエリア形式 */
      03 データ名D29  PIC X(1).       /*店番限定有無 */
      03 データ名D30  PIC X(1).       /*順アクセス内基点条件オプション */
      03 データ名D31  PIC X(1).       /*複数レコードの検索専用オプション */
      03 データ名D32  PIC X(1).       /*個別開始/終了一括要求オプション */
      03 データ名D33  PIC X(1).       /*個別開始実行要求オプション */
      03 データ名D34  PIC X(1).       /*オプションコード7 */
      03 データ名D35  PIC X(1).       /*オプションコード8 */
      03 FILLER       PIC X(8).       /*予備 */
      03 データ名D36  ADDRESS.       /*データベースアクセス用エントリリストアドレス */
      03 データ名D37  ADDRESS.       /*システム構成表示エリアアドレス */
      03 データ名D38  PIC S9(4) COMP. /*データベース名称サイズ指定 */
      03 データ名 D39  PIC X(30).    /*データベース名称指定 */
      03 データ名D40  ADDRESS.       /*データベースキー指定エリアアドレス */
      03 データ名D41  ADDRESS.       /* TP1/FSP領域 */
      03 FILLER       PIC X(4).       /*予備 */
      03 FILLER       PIC X(12).      /*予備 */
      03 データ名D42  ADDRESS.        /*RDエリア名称格納エリア */
      03 データ名D43  PIC S9(9) COMP. /*RDエリア名称格納エリアサイズ */
      03 FILLER       PIC X(4).       /*予備 */
      03 データ名D44  PIC S9(4) COMP. /*店番サイズ */
      03 データ名D45  PIC X(14).      /*店番 */
      03 FILLER       PIC X(240).     /*予備 */
      /*結果部*/
      03データ名D46  PIC X(1).       /*リターンコード */
      03 データ名D47  PIC X(1).       /*サブコード */
      03 FILLER       PIC X(2).       /*予備 */
      03データ名D48  PIC S9(9) COMP. /*詳細コード */
      03データ名D49  PIC S9(9) COMP. /*エラーコード1 */
      03データ名D50  PIC S9(9) COMP. /*エラーコード2 */
      03 データ名D51  PIC X(5).       /*SDHステータスコード */
      03 FILLER       PIC X(1).       /*予備 */
      03 データ名D52  PIC X(1).       /*暗黙的ロールバック有無 */
      03 データ名D53  PIC X(1).       /*個別開始実行要求結果 */
      03 データ名D54  PIC S9(18) COMP. /*SQLCODE */
      03 データ名D55  PIC X(32).       /*障害情報 */
      03 データ名D56  ADDRESS.         /*データベース名称リストアドレス */
      03 データ名D57  ADDRESS.         /*アクセス機能用インタフェースエリアアドレス */
      03 データ名D58  PIC S9(9) COMP.  /*エントリ部ロケーション */
      03 FILLER       PIC X(4).        /*予備 */
      03 データ名D59  ADDRESS.         /*レコード分割キー一覧アドレス */
      03 データ名D60  ADDRESS.         /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(152).      /*予備 */
      /*定義情報部*/
      03 データ名D61  PIC S9(9) COMP.  /*データベース番号 */
      03 データ名D62  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D63  PIC X(1).        /*参照可否 */
      03 データ名D64  PIC X(1).        /*変更可否 */
      03 データ名D65  PIC X(1).        /*格納可否 */
      03 データ名D66  PIC X(1).        /*削除可否 */
      03 データ名D67  PIC X(1).        /*一括削除可否 */
      03 データ名D68  PIC X(1).        /*DB作成UTL追加可否 */
      03 データ名D69  PIC X(1).        /*フォーマットライト可否 */
      03 データ名D70  PIC X(1).        /*店群構成 */
      03 データ名D71  PIC X(1).        /*リクエストモード1 */
      03 データ名D72  PIC X(1).        /*リクエストモード2 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名D73  PIC X(1).        /*階層ランダム/シーケンシャル */
      03 データ名D74  PIC X(1).        /*ユーザファイル通番可否 */
      03 FILLER       PIC X(2).        /*予備 */
      03 データ名D75  PIC S9(9) COMP.  /*レコード種別数 */
      03 FILLER       PIC X(4).        /*予備 */
      03 データ名D76  PIC S9(9) COMP. /*レコード分割キー数 */
      03 データ名D77  PIC S9(4) COMP. /*レコード分割キーのロケーション */
      03 データ名D78  PIC S9(4) COMP. /*レコード分割キーのサイズ */
      03 データ名D79  PIC S9(9) COMP. /*RDエリア分割キー数 */
      03 データ名D80  PIC S9(4) COMP. /*RDエリア分割キーのロケーション */
      03 データ名D81  PIC S9(4) COMP. /*RDエリア分割キーのサイズ */
      03 データ名D82  PIC S9(9) COMP. /*最大階層レベル(FMB用) */
      03 データ名D83  PIC S9(9) COMP. /* TP1/FSP領域 */
      03 FILLER       PIC X(8).        /*予備 */
      03 データ名D84  PIC S9(9) COMP.  /*全キー長(レベル2〜一連番号までの合計サイズ)*/
      03 データ名D85  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D86  PIC S9(9) COMP.  /*レベル2キー構成要素情報 */
      03 データ名D87  PIC S9(9) COMP.  /*レベル2論理キー長 */
      03 データ名D88  PIC S9(9) COMP.  /*レベル2論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D89  PIC S9(9) COMP.  /*レベル3キー構成要素情報 */
      03 データ名D90  PIC S9(9) COMP.  /*レベル3論理キー長 */
      03 データ名D91  PIC S9(9) COMP.  /*レベル3論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D92  PIC S9(9) COMP.  /*レベル4キー構成要素情報 */
      03 データ名D93  PIC S9(9) COMP.  /*レベル4論理キー長 */
      03 データ名D94  PIC S9(9) COMP.  /*レベル4論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D95  PIC S9(9) COMP.  /*レベル5キー構成要素情報 */
      03 データ名D96  PIC S9(9) COMP.  /*レベル5論理キー長 */
      03 データ名D97  PIC S9(9) COMP.  /*レベル5論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D98  PIC S9(9) COMP.  /*レベル6キー構成要素情報 */
      03 データ名D99  PIC S9(9) COMP.  /*レベル6論理キー長 */
      03 データ名D100  PIC S9(9) COMP. /*レベル6論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D101  PIC S9(9) COMP. /*レベル7キー構成要素情報 */
      03 データ名D102  PIC S9(9) COMP. /*レベル7論理キー長 */
      03 データ名D103  PIC S9(9) COMP. /*レベル7論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D104  PIC S9(9) COMP.  /*一連番号構成要素情報 */
      03 データ名D105  PIC S9(9) COMP.  /*一連番号サイズ */
      03 FILLER       PIC X(8).          /*予備 */
      03 データ名D106  ADDRESS.          /*レコード分割キー一覧アドレス */
      03 データ名D107  ADDRESS.          /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(48).          /*予備 */
      03 FILLER       PIC X(1024).        /*予備 */

  02 データ名E       OCCURS n TIMES.     /*エントリ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名E01  PIC X(4).          /*識別子 */
      03 データ名E02  PIC S9(9) COMP.    /*エントリ部サイズ */
      03 データ名E03  PIC X(1).          /*種別 */
      03 FILLER       PIC X(3).          /*予備 */
      03 データ名E04  PIC S9(9) COMP.    /*インタフェースエリア内のエントリ部ロケーション */
      03 データ名E05  PIC S9(9) COMP.     /*構成要素情報部ロケーション */
      03 データ名E06  PIC S9(9) COMP.    /*構成要素情報エントリ数 */
      03 FILLER       PIC X(72).          /*予備 */
      03 データ名E07  PIC S9(4) COMP.    /*レコード名称サイズ */
      03 データ名E08  PIC X(30).         /*レコード名称   */
      /*要求部*/
      03 データ名E09  PIC X(4).          /*要求コード */
      03 データ名E10  PIC X(1).          /*指示コード */
      03 データ名E11  PIC X(1).          /*検索コード */
      03 データ名E12  PIC X(1).          /*条件コード */
      03 FILLER        PIC X(1).          /*予備 */
      03 FILLER        PIC X(8).          /*予備 */
      03 データ名E13  PIC X(1).           /*ポインタオプション */
      03 データ名E14  PIC X(1).           /*一括オプション */
      03 データ名E15  PIC X(1).           /*ステータス報告オプション */
      03 データ名E16  PIC X(1).           /*ページ切り替え */
      03 データ名E17  PIC X(1).           /*PCTFREE有効化 */
      03 データ名E18  PIC X(1).           /*オプションコード6 */
      03 データ名E19  PIC X(1).           /*オプションコード7 */
      03 データ名E20  PIC X(1).           /* TP1/FSP領域 */
      03 FILLER       PIC X(40).           /*予備 */
      03 データ名E21  ADDRESS.             /*条件式格納エリアアドレス */
      03 データ名E22  ADDRESS.            /*構成要素指定エリアアドレス */
      03 データ名E23  ADDRESS.             /*データ格納エリアアドレス */
      03 データ名E24  PIC S9(9) COMP.      /*データ格納エリアサイズ */
      03 データ名E25  PIC S9(9) COMP.      /*事前割り当て要求ページ数 */
      03 FILLER       PIC X(56).           /*予備 */
      03 データ名E26  PIC X(4).            /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E27  PIC S9(9) COMP.     /*一連番号 */
      03 データ名E28  PIC X(16).          /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(80).          /*予備 */
      03 データ名E29  PIC X(256).         /*ユーザキー/論理キー格納エリア */
      /*結果部*/
      03データ名E30  PIC X(1).            /*リターンコード */
      03 データ名E31  PIC X(1).            /*サブコード */
      03 FILLER       PIC X(2).             /*予備 */
      03データ名E32  PIC S9(9) COMP.       /*詳細コード */
      03データ名E33  PIC S9(9) COMP.       /*エラーコード1 */
      03データ名E34  PIC S9(9) COMP.       /*エラーコード2 */
      03 データ名E35  PIC S9(18) COMP.     /*SQLCODE */
      03 FILLER       PIC X(8).             /*予備 */
      03 データ名E36  PIC X(32).           /*障害情報 */
      03 データ名E37  PIC S9(9) COMP.      /*レコードサイズ */
      03 データ名E38  PIC S9(9) COMP.      /*エントリ部ロケーション */
      03 FILLER       PIC X(4).             /*予備 */
      03 データ名E39  PIC S9(9) COMP.      /*事前割り当て済みページ数 */
      03 データ名E40  PIC X(4).             /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E41  PIC S9(9) COMP.       /*一連番号 */
      03 データ名E42  PIC X(16).            /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(24).            /*予備 */
      03 データ名E43  PIC X(24).            /*BES，RDエリアに関する情報 */
      03 FILLER       PIC X(40).            /*予備 */
      03 データ名E44   PIC X(1).            /*二次インデクス使用フラグ */
      03 データ名E45   PIC X(1).            /*ステータス */
      03 データ名E46   PIC S9(4) COMP.      /* TP1/FSP領域 */
      03 データ名E47   PIC S9(9) COMP.      /* TP1/FSP領域 */
      03 FILLER       PIC X(56).             /*予備 */
      /*定義情報部*/
      03 データ名E48  PIC S9(9) COMP.       /*レコード番号 */
      03 データ名E49  PIC X(1).             /*種別 */
      03 FILLER       PIC X(3).             /*予備 */
      03 データ名E50  PIC X(1).             /*検索可否 */
      03 データ名E51  PIC X(1).             /*変更可否 */
      03 データ名E52  PIC X(1).             /*格納可否 */
      03 データ名E53  PIC X(1).             /*削除可否 */
      03 データ名E54  PIC X(1).             /*一括削除可否 */
      03 データ名E55  PIC X(1).             /*構成要素指示可否 */
      03 FILLER       PIC X(1).              /*予備 */
      03 データ名E56  PIC X(1).             /*店群構成 */
      03 データ名E57  PIC X(1).             /*オカレンス属性 */
      03 データ名E58  PIC X(1).             /*子レコード有無 */
      03 データ名E59  PIC X(1).             /*ユーザポインタ有無 */
      03 データ名E60  PIC X(1).             /*ユーザキー有無 */
      03 FILLER       PIC X(4).              /*予備 */
      03 データ名E61  PIC X(1).              /*リクエストモード1 */
      03 データ名E62  PIC X(1).              /*リクエストモード2 */
      03 FILLER       PIC X(2).              /*予備 */
      03 データ名E63  PIC X(1).              /*階層ランダム/シーケンシャル */
      03 データ名E64  PIC X(1).              /*ユーザファイル通番取得可否 */
      03 FILLE        PIC X(2).              /*予備 */
      03 データ名E65  PIC S9(9) COMP.        /*自身のレコード識別コード長 */
      03 データ名E66  PIC X(4).              /*自身のレコード識別コード */
      03 データ名E67  PIC S9(9) COMP.        /*レコード型番号 */
      03 データ名E68  PIC S9(9) COMP.        /*親のレコード型番号 */
      03 データ名E69  PIC S9(9) COMP.        /*レコードレベル番号 */
      03 FILLER       PIC S9(9) COMP.         /*予備 */
      03 データ名E70  PIC S9(9) COMP.        /*ユーザデータサイズ */
      03 データ名E71  PIC S9(9) COMP.        /*ユーザファイル通番部サイズ */
      03 データ名E72  PIC S9(9) COMP.        /*公開構成要素数 */
      03 データ名E73  PIC S9(9) COMP.        /*一連番号最小値 */
      03 データ名E74  PIC S9(9) COMP.        /*一連番号最大値 */
      03 FILLER       PIC X(52).              /*予備 */
      03 FILLER       PIC X(1024).            /*予備 */

    02 データ名F.                            /*キー報告エリア部 */
      03 データ名F01  PIC S9(4) COMP.        /*K1 */
      03 データ名F02  PIC S9(4) COMP.        /*K2 */
      03 データ名F03  PIC S9(4) COMP.        /*K3 */
      03 データ名F04  PIC S9(4) COMP.        /*K4 */
      03 データ名F05  PIC S9(4) COMP.        /*K5 */
      03 データ名F06  PIC S9(4) COMP.        /*K6 */
      03 データ名F07  PIC S9(4) COMP.        /*K7 */
      03 データ名F08  PIC S9(4) COMP.        /*K8 */
      03 データ名F09  PIC S9(4) COMP.        /*K9 */
      03 データ名F10  PIC S9(4) COMP.        /*K10 */
      03 データ名F11  PIC S9(4) COMP.        /*K11 */
      03 データ名F12  PIC S9(4) COMP.        /*K12 */
      03 データ名F13  PIC S9(4) COMP.        /*K13 */
      03 データ名F14  PIC S9(4) COMP.        /*K14 */
      03 データ名F15  PIC S9(4) COMP.        /*K15 */
      03 FILLER       PIC X(2).               /*予備 */
      03 データ名F16  PIC X(n).              /*キー部 */

    02 データ名G       OCCURS n TIMES.       /*構成要素情報部 */
      03 データ名G01  PIC X(4).              /*識別記号 */
      03 データ名G02  PIC S9(9) COMP.        /*構成要素番号 */
      03 データ名G03  PIC S9(4) COMP.        /*構成要素名称サイズ */
      03 データ名G04  PIC X(30).             /*構成要素名称 */
      03 データ名G05  PIC X(1).              /*データ属性 */
      03 データ名G06  PIC X(1).              /*構成要素属性 */
      03 データ名G07  PIC X(1).              /*構成要素属性 */
      03 FILLER        PIC X(1).              /*予備 */
      03 データ名G08  PIC S9(9) COMP.        /*ロケーション */
      03 データ名G09  PIC S9(9) COMP.        /*構成要素サイズ */
      03 データ名G10  PIC X(2).              /*ユーザ情報 */
      03 FILLER        PIC X(10).             /*予備 */

機能

インタフェースエリアに指定された構造型データベースへのアクセスを開始します。データベースにアクセスするCBLEESDH('ACCS ')，CBLEESDH('CLAR ')およびCBLEESDH('REFS ')は，個別開始した当該インタフェースエリアを指定する必要があります。当該インタフェースエリアは，CBLEESDH('FNSH ')を発行します，またはトランザクション終了まで使用できます。

UAPは，インタフェースエリアにアクセスするデータベース名およびアクセス方法などのオプションを設定し発行してください。

UAPは，CBLEESDH('INIT ')のスレッドイニシャライズで取得したインタフェースエリアテンプレートをコピーして新規インタフェースエリアを作成し，アクセス方法/オプションなどを設定後，CBLEESDH('STRT ')を発行してください。インタフェースエリアテンプレートのサイズは，インタフェースエリアテンプレート内のインタフェースエリア全体サイズに格納されています。

インタフェースエリアの確保方法を図1-28に示します。

CBLEESDH('STRT ')は，アクセスするデータベースの数だけ発行する必要があります。なお，1トランザクション内で同じデータベース中の複数レコードに平行してアクセスする場合は，同一データベースに対して複数回CBLEESDH('STRT ')を発行することも可能です。発行例を図1-29に示します。ただし，CBLEESDH('ACCS ')，かつ，個別開始/終了一括要求オプションに'Y'を指定する場合，またはCBLEESDH('ACCS ')/CBLEESDH('CLAR ')/CBLEESDH('REFS ')，かつ，個別開始実行要求オプションに'Y'を指定する場合は，個別開始を行う必要はありませんので，CBLEESDH('STRT ')の発行は不要です。

CBLEESDH('ACCS ')で格納，変更，削除を行う場合，またはCBLEESDH('CLAR ')を発行する場合は，インタフェースエリアヘッダ部のアクセスモード1を'U'に設定して，CBLEESDH('STRT ')を発行してください。

CBLEESDH('ACCS ')で複数レコードの検索を行う場合は，複数レコードの検索専用オプションに'D'または'S'を設定して，CBLEESDH('STRT ')を発行してください。ただし，複数レコードの検索はFMBでだけ指定できます。AFMで指定した場合はエラーとなります。

複数レコードの検索専用オプションに'D'または'S'を設定して，CBLEESDH('STRT ')を発行した場合は，CBLEESDH('ACCS ')で複数レコードの検索以外を指定することはできません。指定した場合はエラーとなります。

図1‒28　インタフェースエリアの確保方法

図1‒29　CBLEESDH('STRT ')発行例

UAPで値を設定するデータ領域

データ名A

個別開始要求を示すコード「VALUE 'STRT△△△△'」を設定します。

データ名C

0を設定します。

一意名2

インタフェースエリアを設定します。

要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目については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‒40　アクセスモード1と排他モード1の組み合わせ

排他モード1

アクセスモード1

R

U

E

○

○

S

○

×

O

○

○

N

○

×

（凡例）

○：指定可

×：指定不可

TAMデータベースに対する個別開始では，本オプションに'S'を指定した場合，SDBデータベース定義のTAMMODE句の指定によってデータページ（ページまたはサブページ）に対して排他を掛けないレコード検索（FTCH）要求ができます。この場合は，排他モード2で指定した値は無効となります。

排他モード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'の場合

　ZEROを設定します。

システム構成表示エリアアドレス

ZEROを設定します。

データベース名称サイズ指定

ZEROを設定します。

データベース名称指定

すべてX'00'を設定します。

データベースキー指定エリアアドレス

ZEROを設定します。

旧キー報告エリアアドレス

ZEROを設定します。

RDエリア名称格納エリア

店群順アクセスまたはDAM順アクセスを行う場合，検索範囲となるRDエリア名称を格納したアドレスを設定します。

RDエリア名称を複数設定する場合は，「,」で区切ってください。

（例）

　RDarea1,RDarea2

指定されたRDエリア名称の中に，RDエリア名称長が1〜30バイトでないRDエリア名称が存在した場合は，エラーとなります。個別開始するSDBに定義されていないRDエリア名称が含まれていた場合，そのRDエリア名称は無視します。すべてのRDエリア名称を無視した場合は，RDエリア名称が指定されていないものとして扱います。

設定しない場合はZEROを設定します。

MAM/TAM/SAMの場合は設定値を無視します。

RDエリア名称格納エリアサイズ

RDエリア名称格納エリアの長さを設定します（単位：バイト）。

設定しない場合はZEROを設定します。

MAM/TAM/SAMの場合は設定値を無視します。

表1‒41　RDエリア名称格納エリアサイズ

項番

項目

DB種別

FMB

DAM

MAM

TAM

SAM

1

RDエリア名称格納エリアサイズ

○

○

×

×

×

（凡例）

○：指定可

×：指定値を無視する

店番サイズ

ZEROを設定します。

店番

すべてX'00'を設定します。

TP1/EEから値が返されるデータ領域

暗黙的ロールバック有無

HiRDBでの暗黙的ロールバック有無を設定します。HiRDBへの要求前にエラー（引数エラー，ee_trn_rollback_mark関数発行済みなど）となった場合は，'N'が設定されます。

'Y'：暗黙的ロールバックが発生している

'N'：暗黙的ロールバックが発生していない

TP1/EEから値が返される引数

一意名2

インタフェースエリアの各項目に値が設定されています。

ステータスコードが'00000'または'04310'の場合だけ参照可能です。

次に記載のない項目については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が指定したインタフェースエリアの先頭アドレスを設定します。

データ名B

ステータスコードを5桁の数字で返します。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

04301

引数に設定した値が間違っています。

要求コード（データ名A）の値が不正です。

インタフェースエリア（一意名2）が不正（NULL）です。

04302

発行条件が不正です。

TP1/FSPの環境下にありません。

SDBハンドラ機能が有効（sdh_use=Y）ではありません。

リソースマネジャが定義されていないか，リソースマネジャにHiRDBが定義されていません。

04310

構造型DBのアクセスに失敗しました。

詳細は「1.4　SDHステータスコード一覧」を参照してください。

(3)　CBLEESDH('ACCS ')

名称

データベースアクセス要求（検索/変更/格納/削除/複数レコードの検索）

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESDH' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
    02 データ名A  PIC X(8) VALUE 'ACCS    '.
    02 データ名B  PIC X(5).
    02 FILLER     PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
  01 一意名2.                              /*インタフェースエリア */
    02 データ名D.                          /*ヘッダ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名D01  PIC X(4).            /*ヘッダ識別子 */
      03 データ名D02  PIC S9(9) COMP.      /*ヘッダ部サイズ */
      03 データ名D03  PIC X(1).            /*種別 */
      03 FILLER       PIC X(3).            /*予備 */
      03 データ名D04  PIC S9(9) COMP.      /*インタフェースエリア全体サイズ */
      03 データ名D05  ADDRESS.             /*自インタフェースエリアのテンプレートアドレス */
      03 データ名D06  PIC S9(9) COMP.      /*エントリ部先頭ロケーション */
      03 データ名D07  PIC S9(9) COMP.      /*エントリ部サイズ */
      03 データ名D08  PIC S9(9) COMP.      /*エントリ部数 */
      03 FILLER       PIC X(4).             /*予備 */
      03 データ名D09  PIC S9(9) COMP.      /*キー報告エリア部ロケーション */
      03 データ名D10  PIC S9(9) COMP.      /*キー報告エリア部サイズ */
      03 データ名D11  PIC S9(9) COMP.      /*構成要素情報表示部ロケーション */
      03 データ名D12  PIC S9(9) COMP.      /*構成要素情報表示部エントリサイズ */
      03 FILLER       PIC X(40).           /*予備 */
      03 データ名 D13  PIC S9(4) COMP.     /*データベース名称サイズ */
      03 データ名 D14  PIC X(30).          /*データベース名称 */
      /*要求部*/
      03 データ名D15  PIC X(4).           /*機能コード */
      03 データ名D16  PIC X(1).           /*要求コード1 */
      03 データ名D17  PIC X(1).           /*要求コード2 */
      03 データ名D18  PIC X(1).           /*要求コード3 */
      03 データ名D19  PIC X(1).           /*要求コード4 */
      03 データ名D20  PIC X(1).           /*アクセスモード1 */
      03 データ名D21  PIC X(1).           /*アクセスモード2 */
      03 データ名D22  PIC X(1).           /*アクセスモード3 */
      03 データ名D23  PIC X(1).           /*アクセスモード4 */
      03 データ名D24  PIC X(1).           /*排他モード1 */
      03 データ名D25  PIC X(1).           /*排他モード2 */
      03 データ名D26  PIC X(1).           /*排他モード3 */
      03 データ名D27  PIC X(1).           /*排他モード4 */
      03 データ名D28  PIC X(1).           /*データエリア形式 */
      03 データ名D29  PIC X(1).           /*店番限定有無 */
      03 データ名D30  PIC X(1).           /*順アクセス内基点条件オプション */
      03 データ名D31  PIC X(1).          /*複数レコードの検索専用オプション */
      03 データ名D32  PIC X(1).          /*個別開始/終了一括要求オプション */
      03 データ名D33  PIC X(1).          /*個別開始実行要求オプション */
      03 データ名D34  PIC X(1).          /*オプションコード7 */
      03 データ名D35  PIC X(1).          /*オプションコード8 */
      03 FILLER       PIC X(8).           /*予備 */
      03 データ名D36  ADDRESS.            /*データベースアクセス用エントリリストアドレス */
      03 データ名D37  ADDRESS.           /*システム構成表示エリアアドレス */
      03 データ名D38  PIC S9(4) COMP.     /*データベース名称サイズ指定  */
      03 データ名 D39  PIC X(30).         /*データベース名称指定 */
      03 データ名D40  ADDRESS.           /*データベースキー指定エリアアドレス */
      03 データ名D41  ADDRESS.           /* TP1/FSP領域 */
      03 FILLER       PIC X(4).           /*予備 */
      03 FILLER       PIC X(12).          /*予備 */
      03 データ名D42  ADDRESS.           /*RDエリア名称格納エリア */
      03 データ名D43  PIC S9(9) COMP.     /*RDエリア名称格納エリアサイズ */
      03 FILLER       PIC X(4).           /*予備 */
      03 データ名D44  PIC S9(4) COMP.     /*店番サイズ */
      03 データ名D45  PIC X(14).          /*店番 */
      03 FILLER       PIC X(240).         /*予備 */
      /*結果部*/
      03データ名D46  PIC X(1).           /*リターンコード */
      03 データ名D47  PIC X(1).           /*サブコード */
      03 FILLER       PIC X(2).           /*予備 */
      03データ名D48  PIC S9(9) COMP.     /*詳細コード   */
      03データ名D49  PIC S9(9) COMP.     /*エラーコード1 */
      03データ名D50  PIC S9(9) COMP.     /*エラーコード2 */
      03 データ名D51  PIC X(5).          /*SDHステータスコード */
      03 FILLER       PIC X(1).           /*予備 */
      03 データ名D52  PIC X(1).           /*暗黙的ロールバック有無 */
      03 データ名D53  PIC X(1).          /*個別開始実行要求結果 */
      03 データ名D54  PIC S9(18) COMP.   /*SQLCODE */
      03 データ名D55  PIC X(32).         /*障害情報 */
      03 データ名D56  ADDRESS.           /*データベース名称リストアドレス */
      03 データ名D57  ADDRESS.           /*アクセス機能用インタフェースエリアアドレス */
      03 データ名D58  PIC S9(9) COMP.    /*エントリ部ロケーション */
      03 FILLER       PIC X(4).           /*予備 */
      03 データ名D59  ADDRESS.           /*レコード分割キー一覧アドレス */
      03 データ名D60  ADDRESS.           /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(152).        /*予備 */
      /*定義情報部*/
      03 データ名D61  PIC S9(9) COMP.    /*データベース番号 */
      03 データ名D62  PIC X(1).          /*種別 */
      03 FILLER       PIC X(3).           /*予備 */
      03 データ名D63  PIC X(1).          /*参照可否 */
      03 データ名D64  PIC X(1).          /*変更可否 */
      03 データ名D65  PIC X(1).          /*格納可否 */
      03 データ名D66  PIC X(1).          /*削除可否 */
      03 データ名D67  PIC X(1).          /*一括削除可否 */
      03 データ名D68  PIC X(1).          /*DB作成UTL追加可否 */
      03 データ名D69  PIC X(1).          /*フォーマットライト可否 */
      03 データ名D70  PIC X(1).          /*店群構成 */
      03 データ名D71  PIC X(1).          /*リクエストモード1 */
      03 データ名D72  PIC X(1).          /*リクエストモード2 */
      03 FILLER       PIC X(2).           /*予備 */
      03 データ名D73  PIC X(1).          /*階層ランダム/シーケンシャル */
      03 データ名D74  PIC X(1).          /*ユーザファイル通番可否 */
      03 FILLER       PIC X(2).           /*予備 */
      03 データ名D75  PIC S9(9) COMP.    /*レコード種別数 */
      03 FILLER       PIC X(4).           /*予備 */
      03 データ名D76  PIC S9(9) COMP.    /*レコード分割キー数 */
      03 データ名D77  PIC S9(4) COMP.    /*レコード分割キーのロケーション */
      03 データ名D78  PIC S9(4) COMP.    /*レコード分割キーのサイズ */
      03 データ名D79  PIC S9(9) COMP.    /* RDエリア分割キー数 */
      03 データ名D80  PIC S9(4) COMP.    /*RDエリア分割キーのロケーション */
      03 データ名D81  PIC S9(4) COMP.    /*RDエリア分割キーのサイズ */
      03 データ名D82  PIC S9(9) COMP.    /*最大階層レベル(FMB用) */
      03 データ名D83  PIC S9(9) COMP.    /* TP1/FSP領域 */
      03 FILLER       PIC X(8).           /*予備 */
      03 データ名D84  PIC S9(9) COMP.    /*全キー長(レベル2〜一連番号までの合計サイズ)*/
      03 データ名D85  PIC S9(9) COMP.    /* TP1/FSP領域 */
      03 FILLER       PIC X(8).           /*予備 */
      03 データ名D86  PIC S9(9) COMP.    /*レベル2キー構成要素情報 */
      03 データ名D87  PIC S9(9) COMP.    /*レベル2論理キー長 */
      03 データ名D88  PIC S9(9) COMP.    /*レベル2論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.     /*予備 */
      03 データ名D89  PIC S9(9) COMP.    /*レベル3キー構成要素情報 */
      03 データ名D90  PIC S9(9) COMP.    /*レベル3論理キー長 */
      03 データ名D91  PIC S9(9) COMP.    /*レベル3論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.    /*予備 */
      03 データ名D92  PIC S9(9) COMP.   /*レベル4キー構成要素情報 */
      03 データ名D93  PIC S9(9) COMP.   /*レベル4論理キー長 */
      03 データ名D94  PIC S9(9) COMP.   /*レベル4論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.    /*予備 */
      03 データ名D95  PIC S9(9) COMP.   /*レベル5キー構成要素情報 */
      03 データ名D96  PIC S9(9) COMP.   /*レベル5論理キー長 */
      03 データ名D97  PIC S9(9) COMP.   /*レベル5論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.    /*予備 */
      03 データ名D98  PIC S9(9) COMP.   /*レベル6キー構成要素情報 */
      03 データ名D99  PIC S9(9) COMP.   /*レベル6論理キー長 */
      03 データ名D100  PIC S9(9) COMP.   /*レベル6論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.    /*予備 */
      03 データ名D101  PIC S9(9) COMP.   /*レベル7キー構成要素情報 */
      03 データ名D102  PIC S9(9) COMP.   /*レベル7論理キー長 */
      03 データ名D103  PIC S9(9) COMP.   /*レベル7論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.    /*予備 */
      03 データ名D103  PIC S9(9) COMP.   /*一連番号構成要素情報 */
      03 データ名D105  PIC S9(9) COMP.   /*一連番号サイズ */
      03 FILLER       PIC X(8).           /*予備 */
      03 データ名D106  ADDRESS.          /*レコード分割キー一覧アドレス */
      03 データ名D107  ADDRESS.          /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(48).          /*予備 */
      03 FILLER       PIC X(1024).        /*予備 */

    02 データ名E       OCCURS n TIMES.   /*エントリ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名E01  PIC X(4).          /*識別子 */
      03 データ名E02  PIC S9(9) COMP.    /*エントリ部サイズ */
      03 データ名E03  PIC X(1).          /*種別 */
      03 FILLER       PIC X(3).           /*予備 */
      03 データ名E04  PIC S9(9) COMP.    /*インタフェースエリア内のエントリ部ロケーション */
      03 データ名E05  PIC S9(9) COMP.     /*構成要素情報部ロケーション */
      03 データ名E06  PIC S9(9) COMP.    /*構成要素情報エントリ数 */
      03 FILLER       PIC X(72).         /*予備 */
      03 データ名E07  PIC S9(4) COMP.   /*レコード名称サイズ */
      03 データ名E08  PIC X(30).        /*レコード名称 */
      /*要求部*/
      03 データ名E09  PIC X(4).         /*要求コード */
      03 データ名E10  PIC X(1).         /*指示コード */
      03 データ名E11  PIC X(1).         /*検索コード */
      03 データ名E12  PIC X(1).         /*条件コード */
      03 FILLER        PIC X(1).        /*予備 */
      03 FILLER        PIC X(8).        /*予備 */
      03 データ名E13  PIC X(1).         /*ポインタオプション */
      03 データ名E14  PIC X(1).         /*一括オプション */
      03 データ名E15  PIC X(1).         /*ステータス報告オプション*/
      03 データ名E16  PIC X(1).         /*ページ切り替え */
      03 データ名E17  PIC X(1).         /*PCTFREE有効化 */
      03 データ名E18  PIC X(1).         /*二次インデクス使用抑止オプション */
      03 データ名E19  PIC X(1).         /*オプションコード7 */
      03 データ名E20  PIC X(1).         /* TP1/FSP領域 */
      03 FILLER       PIC X(40).        /*予備    */
      03 データ名E21  ADDRESS.         /*条件式格納エリアアドレス */
      03 データ名E22  ADDRESS.         /*構成要素指定エリアアドレス */
      03 データ名E23  ADDRESS.         /*データ格納エリアアドレス */
      03 データ名E24  PIC S9(9) COMP.  /*データ格納エリアサイズ */
      03 データ名E25  PIC S9(9) COMP.      /*事前割り当て要求ページ数 */
      03 FILLER       PIC X(56).       /*予備 */
      03 データ名E26  PIC X(4).        /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E27  PIC S9(9) COMP.  /*一連番号 */
      03 データ名E28  PIC X(16).       /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(80).        /*予備 */
      03 データ名E29  PIC X(256).      /*ユーザキー/論理キー格納エリア */
      /*結果部*/
      03データ名E30  PIC X(1).        /*リターンコード */
      03 データ名E31  PIC X(1).       /*サブコード */
      03 FILLER       PIC X(2).        /*予備 */
      03データ名E32  PIC S9(9) COMP.  /*詳細コード */
      03データ名E33  PIC S9(9) COMP.  /*エラーコード1 */
      03データ名E34  PIC S9(9) COMP.  /*エラーコード2  */
      03 データ名E35  PIC S9(18) COMP. /*SQLCODE */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名E36  PIC X(32).       /*障害情報 */
      03 データ名E37  PIC S9(9) COMP.  /*レコードサイズ */
      03 データ名E38  PIC S9(9) COMP.  /*エントリ部ロケーション */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名E39  PIC S9(9) COMP.      /*事前割り当て済みページ数 */
      03 データ名E40  PIC X(4).         /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E41  PIC S9(9) COMP.  /*一連番号 */
      03 データ名E42  PIC X(16).       /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(24).        /*予備 */
      03 データ名E43  PIC X(24).       /*BES，RDエリアに関する情報 */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名E44   PIC X(1).       /*二次インデクス使用フラグ */
      03 データ名E45   PIC X(1).       /*ステータス */
      03 データ名E46   PIC S9(4) COMP.  /* TP1/FSP領域 */
      03 データ名E47   PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(56).         /*予備 */
      /*定義情報部*/
      03 データ名E48  PIC S9(9) COMP.   /*レコード番号 */
      03 データ名E49  PIC X(1).         /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名E50  PIC X(1).        /*検索可否 */
      03 データ名E51  PIC X(1).        /*変更可否 */
      03 データ名E52  PIC X(1).        /*格納可否 */
      03 データ名E53  PIC X(1).        /*削除可否 */
      03 データ名E54  PIC X(1).        /*一括削除可否 */
      03 データ名E55  PIC X(1).        /*構成要素指示可否 */
      03 FILLER       PIC X(1).         /*予備 */
      03 データ名E56  PIC X(1).        /*店群構成 */
      03 データ名E57  PIC X(1).        /*オカレンス属性 */
      03 データ名E58  PIC X(1).        /*子レコード有無 */
      03 データ名E59  PIC X(1).        /*ユーザポインタ有無 */
      03 データ名E60  PIC X(1).        /*ユーザキー有無 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名E61  PIC X(1).        /*リクエストモード1 */
      03 データ名E62  PIC X(1).        /*リクエストモード2 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名E63  PIC X(1).        /*階層ランダム/シーケンシャル */
      03 データ名E64  PIC X(1).        /*ユーザファイル通番取得可否 */
      03 FILLER       PIC X(2).        /*予備 */
      03 データ名E65  PIC S9(9) COMP.  /*自身のレコード識別コード長 */
      03 データ名E66  PIC X(4).        /*自身のレコード識別コード */
      03 データ名E67  PIC S9(9) COMP.  /*レコード型番号 */
      03 データ名E68  PIC S9(9) COMP.  /*親のレコード型番号 */
      03 データ名E69  PIC S9(9) COMP.  /*レコードレベル番号 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名E70  PIC S9(9) COMP.  /*ユーザデータサイズ */
      03 データ名E71  PIC S9(9) COMP.  /*ユーザファイル通番部サイズ */
      03 データ名E72  PIC S9(9) COMP.  /*公開構成要素数 */
      03 データ名E73  PIC S9(9) COMP.  /*一連番号最小値 */
      03 データ名E74  PIC S9(9) COMP.  /*一連番号最大値 */
      03 FILLER       PIC X(52).        /*予備 */
      03 FILLER       PIC X(1024).      /*予備 */

    02 データ名F.                       /*キー報告エリア部 */
      03 データ名F01  PIC S9(4) COMP.   /*K1 */
      03 データ名F02  PIC S9(4) COMP.   /*K2 */
      03 データ名F03  PIC S9(4) COMP.   /*K3 */
      03 データ名F04  PIC S9(4) COMP.   /*K4 */
      03 データ名F05  PIC S9(4) COMP.   /*K5 */
      03 データ名F06  PIC S9(4) COMP.   /*K6 */
      03 データ名F07  PIC S9(4) COMP.   /*K7 */
      03 データ名F08  PIC S9(4) COMP.   /*K8 */
      03 データ名F09  PIC S9(4) COMP.   /*K9 */
      03 データ名F10  PIC S9(4) COMP.   /*K10 */
      03 データ名F11  PIC S9(4) COMP.   /*K11 */
      03 データ名F12  PIC S9(4) COMP.   /*K12 */
      03 データ名F13  PIC S9(4) COMP.   /*K13 */
      03 データ名F14  PIC S9(4) COMP.   /*K14 */
      03 データ名F15  PIC S9(4) COMP.   /*K15 */
      03 FILLER       PIC X(2).          /*予備 */
      03 データ名F16  PIC X(n).         /*キー部 */

    02 データ名G       OCCURS n TIMES.  /*構成要素情報部 */
      03 データ名G01  PIC X(4).         /*識別記号 */
      03 データ名G02  PIC S9(9) COMP.   /*構成要素番号 */
      03 データ名G03  PIC S9(4) COMP.   /*構成要素名称サイズ */
      03 データ名G04  PIC X(30).        /*構成要素名称 */
      03 データ名G05  PIC X(1).         /*データ属性 */
      03 データ名G06  PIC X(1).         /*構成要素属性 */
      03 データ名G07  PIC X(1).         /*構成要素属性 */
      03 FILLER        PIC X(1).         /*予備 */
      03 データ名G08  PIC S9(9) COMP.   /*ロケーション */
      03 データ名G09  PIC S9(9) COMP.   /*構成要素サイズ */
      03 データ名G10  PIC X(2).         /*ユーザ情報 */
      03 FILLER        PIC X(10).        /*予備 */

01 一意名3.                             /*データベースアクセス用エントリリスト */
  02 データ名H01     PIC S9(4) COMP.   /*エントリ数*/
  02 データ名H02     PIC X(1).         /*アドレス種別 */
  02 FILLER           PIC X(5).        /*予備 */
  02 データ名H03     ADDRESS OCCURS n TIMES./*エントリアドレス */

機能

インタフェースエリアに指定されたデータベースの単一レコードまたは複数レコードに対してアクセス（検索/変更/格納/削除/複数レコードの検索）します。

レコードにアクセスする場合は，各レコードに対応したインタフェースエリア（エントリ部）のエントリに要求を指定することでアクセスできます。一度の呼び出しで複数レコードに対してアクセスすることも可能です。ただし，同一要求（変更＋変更など）だけ可能です。異なる要求（変更＋格納など）を行った場合はエラーとなります。レコードとインタフェースエリアのエントリの対応を次の図に示します。

UAPは，CBLEESDH('STRT ')に指定したインタフェースエリアを一意名2に設定します。また，格納，変更，および削除を行う場合は，CBLEESDH('STRT ')発行時にインタフェースエリア（ヘッダ部）のアクセスモード1を'U'に設定したインタフェースエリアを用いてください。

検索を行う場合，かつ，個別開始/終了一括要求オプションに'Y'を指定する場合は，CBLEESDH('STRT ')の記述を参照し，インタフェースエリアをift_ptに指定してください。この場合，CBLEESDH('STRT ')発行済みのインタフェースエリアを指定した場合はエラーとなります。

個別開始実行要求オプションに'Y'を指定する場合は，CBLEESDH('STRT ')の記述を参照し，インタフェースエリアを一意名2に指定してください。すでにCBLEESDH('STRT ')発行済みだった場合，個別開始実行要求オプションは無視します。

図1‒30　レコードとインタフェースエリアのエントリの対応

それぞれのアクセスに関する注意点を次に示します。

特定のデータベースでだけサポートしている機能を，未サポートのほかのデータベースに要求した場合はエラーになります。

検索

要求されたレコードを検索します。検索では，条件に合致した最初のレコードを返します。検索に条件を付与する場合，条件式格納エリアを確保し条件を設定することで有効となります。また，特定の構成要素にアクセスする場合は構成要素指定エリアを確保し，対象となる構成要素名称または番号を設定してください。

FMBデータベースの子レコードを検索する場合は，親レコードが検索されている，または同時に検索要求している必要があります。

変更

検索済みのレコードを変更します。検索済みであれば，複数エントリを選択できます。変更データは，データ格納エリアに設定します。USERポインタだけ変更する場合はデータ格納エリアにZEROを設定します。

なお，ユーザキーは変更はできません。

格納

指定されたデータを格納します。格納データは，データ格納エリアに設定します。

FMBデータベースの場合，格納する個所の親レコードが検索済みまたは格納済みである必要があります。

ユーザキーが定義されているMAM/TAMデータベースに格納する場合，格納するユーザキーはLASTポインタが示すレコードのユーザキーより大きな値を設定します。LASTポインタが示すレコードのユーザキーより小さい場合や同じ場合はエラーとなります。

削除

検索済みのレコードを削除します。検索済みであれば，複数エントリを選択できます。

FMBデータベースの場合，指定レコードおよび指定レコードの子レコードを削除する方法と，最下位レコードをすべて削除する方法があります。最下位レコードをすべて削除する場合は，最下位レコードのどれかのレコードを検索して行う必要があります。

USERポインタの示すレコードの削除時は，USERポインタは解除されます。

複数レコードの検索

要求されたレコードを検索します。複数レコードの検索では，条件に合致したルートレコード以下のすべてのレコードを返します。検索に条件を付与する場合，条件式格納エリアを確保し条件を設定することで有効となります。

なお，複数レコードの検索が行えるのは，FMBデータベースの場合だけです。また，個別開始を行う場合に専用オプションを指定する必要があり，DBアクセス時のインタフェースエリアエントリ部は，ルートエントリに設定します。

DAM/MAM/TAM/SAMデータベースに対して，レコードを特定しないでアクセスすることをデータベース名称指定アクセスといいます。データベース名称指定アクセスを行う場合は，先頭エントリ（DB対応エントリ）に要求コードを設定します。データベース名称指定アクセスは，検索，変更，および格納の場合に行うことができます。検索後に変更する場合は，検索および変更の両方の要求でDB対応エントリを使用してください。

FMBデータベースの場合は，データベース名称指定アクセスはできません。そのため，DB対応エントリに指定した場合はエラーになります。

UAPで値を設定するデータ領域

データ名A

データベースアクセス（検索/変更/格納/削除）を示すコード「VALUE 'ACCS△△△△'」を設定します。

データ名C

0を設定します。

一意名2

インタフェースエリアを設定します。

要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

ヘッダ部−要求部

機能コード

データベースアクセス要求を示す機能コードを設定します。

'ACCS'：データベースアクセス要求

要求コード1

インタフェースエリアの確保方法を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の要求コード1の記載内容を参照し，値を設定してください。

要求コード2，要求コード3，要求コード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の要求コード2，要求コード3，要求コード4の記載内容を参照し，値を設定してください。

アクセスモード1

アクセスモードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のアクセスモード1の記載内容を参照し，値を設定してください。

アクセスモード2，アクセスモード3，アクセスモード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のアクセスモード2，アクセスモード3，アクセスモード4の記載内容を参照し，値を設定してください。

排他モード1

排他モードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード1の記載内容を参照し，値を設定してください。

排他モード2

排他の解放タイミングを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード2の記載内容を参照し，値を設定してください。

排他モード3

排他競合時の処置を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード3の記載内容を参照し，値を設定してください。

排他モード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード4の記載内容を参照し，値を設定してください。

データエリア形式

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のデータエリア形式の記載内容を参照し，値を設定してください。

店番限定有無

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の店番限定有無の記載内容を参照し，値を設定してください。

順アクセス内基点条件オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の順アクセス内基点条件オプションの記載内容を参照し，値を設定してください。

複数レコードの検索専用オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の複数レコードの検索専用オプションの記載内容を参照し，値を設定してください。

個別開始/終了一括要求オプション

レコードの検索要求の処理の中で個別開始と個別終了を一括で行うかどうかを指定します。

要求コードに'FTCH'を指定している場合

'Y'：レコードの検索要求の処理の中で個別開始と個別終了を実行します

'N'：指示なし

'△'：指示なし

要求コードが'FTCH'以外の場合

'△'を指定してください。

'△'：指示なし

個別開始実行要求オプション

DBアクセスの処理の中で個別開始をするかどうかを指定します。すでに個別開始済みの場合，このオプション指定値は無視します。このオプション，および，個別開始／終了一括要求オプションの両方に'Y'を指定した場合はエラーとなります。

'Y'：DBアクセスの処理の中で個別開始を実行する

'N'：指示なし

'△'：指示なし

オプションコード7，オプションコード8

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のオプションコード7，オプションコード8の記載内容を参照し，値を設定してください。

データベースアクセス用エントリリスト

アクセスするエントリのアドレス一覧を格納したデータベースアクセス用エントリリストアドレスを設定します。

エントリ数には，エントリアドレスを格納する領域の数を設定し，アドレス種別には'A'を設定します。1つのエントリアドレスは一度だけ設定可能です。複数回設定した場合はエラーになります。エントリアドレスにはZEROを設定可能です。ZEROの場合はスキップして次のエントリアドレスを処理します。ただし，エントリアドレスすべてがZEROの場合はエラーとなります。

設定しない場合，TP1/FSPはインタフェースエリア内の全エントリをサーチし，要求コードが設定されているエントリを処理します。予備にはすべてX'00'を設定します。

エントリリストの詳細を次の図に示します。

図1‒31　データベースアクセス用エントリリスト

システム構成表示エリアアドレス

ZEROを設定します。

データベース名称サイズ指定

ZEROを設定します。

データベース名称指定

すべてX'00'を設定します。

データベースキー指定エリアアドレス

ZEROを設定します。

旧キー報告エリアアドレス

ZEROを設定します。

RDエリア名称格納エリア

ZEROを設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のRDエリア名称格納エリアの記載内容を参照し，値を設定してください。

RDエリア名称格納エリアサイズ

ZEROを設定します。ただし，個別開始/終了一括要求オプションに'Y'を指定している場合，または個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のRDエリア名称格納エリアサイズの記載内容を参照し，値を設定してください。

店番サイズ

ZEROを設定します。

店番

すべてX'00'を設定します。

エントリ部−要求部

表1‒42　インタフェースエリアエントリ部

項番

項目内容

検索

変更

格納

削除

複数レコードの検索

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

事前割り当て要求ページ数

×

×

○

×

×

（凡例）

◎：設定必須

○：指定可能（指定しない場合は，指示なしの値を指定すること）

×：'△'またはZEROを指定

□：検索要求時に指定した値をそのまま変更すること

注※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‒43　指示コードと検索コードの組み合わせ

項番

指示コード

DB種別と検索コード

FMB

DAM

MAM

TAM

SAM

ルート

子

'N'

'P'

'N'

'P'

'N'

'P'

'N'

'P'

'N'

'P'

'N'

'P'

1

'F'

○

×

○

×

○

×

○

×

○

×

○

×

2

'L'

×

×

×

○

×

×

×

○

×

×

×

×

3

'N'

○

×

○

×

○

×

○

×

×

×

○

×

4

'U'

×

×

○

○

×

×

×

×

×

×

×

×

5

'P'

×

×

×

○

×

×

×

○

×

×

×

×

（凡例）

○：指定可

×：指定不可

条件コード

検索条件の設定方法を設定します。

'K'：条件キーとして，DBKEYを指定します。このコードを指定した場合，条件式は指定できません。

'C'：条件式を指定します。このコードを指定した場合，必ず条件式を指定してください。

'U'：条件キーとして，ユーザキーを指定します。このコードを指定した場合，条件式は指定できません。

'S'：条件キーとして，一連番号を指定します。このコードを指定した場合，条件式は指定できません。

'R'：ダイレクトアクセス情報を指定します。FMBデータベースの子レコードに指示できます。FMBデータベースのルートレコード，DAM/MAM/SAM/TAMデータベースには指示できません。このコードを指定した場合，条件式は指定できません。また，指示コード，検索コードは無効となります。

'N'：条件を指定しません。

表1‒44　条件コードの指定可否

項番

項目

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'を指定してください。

'Y'：取得します。

ページ切り替え

'△'を設定します。

PCTFREE有効化

'△'を設定します。

二次インデクス使用抑止オプション

二次インデクスの使用を抑止するかどうかを設定します。

'Y'：二次インデクスが使用可能な場合でもポインタ検索を行います（DB種別や指示コードによって使用可否が異なります。使用不可の場合はDBアクセスがエラーとなります。詳細はマニュアル「HiRDB Version 9 構造型データベース機能」の「二次インデクス」の「子レコード検索時の二次インデクスの使用有無」を参照してください）。

'N'：指示なし（二次インデクスが使用可能であれば使用して検索を行います）

'△'：指示なし（二次インデクスが使用可能であれば使用して検索を行います）

オプションコード7

'△'を設定します。

条件式格納エリアアドレス

条件式を指定する（条件コードが'C'）場合は，条件式格納エリアを確保し条件を設定後，そのアドレスを設定します。条件式格納エリアの詳細を次の図に示します。条件コードが'C'以外の場合，設定値を無視します。

設定しない場合は，ZEROを設定します。

図1‒32　条件式格納エリア

表1‒45　条件式格納エリア内容

項番

分類

説明

1

識別記号

*FDN：構成要素名称を指定します。

2

構成要素名称

キーの条件を指定する場合は，'DBKEY△△△'を指定します。※1 ※2

キーの条件は2個まで指定可能です。

キーの条件を2個指定する場合は範囲指定（例：3＜＝X＜＝7）となるように指定してください。

3

キー以外の条件の場合は，SDBデータベース定義で定義した構成要素名称を指定します。※1 ※3指定する構成要素名称が8バイト未満である場合は，残りを'△'で埋めてください。

キー以外の条件に指定する構成要素名称には，基本項目の構成要素だけ指定可能です。集団項目の構成要素は指定できません。また，存在しない構成要素名称を指定した場合はエラーになります。

キー以外の条件は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'を設定します。

設定しない場合は，ZEROを設定します。

表1‒46　構成要素指定エリアアドレスの指定可否

項番

項目

DB種別

FMB

DAM

MAM

TAM

SAM

ルート

子

1

構成要素指定エリアアドレス※

×

×

○

○

○

×

（凡例）

○：指定可

×：指定不可

注※

DB対応エントリを使用かつ条件コード'N'または条件コード'C'の場合には指定できません。

図1‒33　構成要素名称指定と構成要素番号指定

データ格納エリアアドレス

検索したデータを格納するエリアのアドレスを設定します。データ格納エリアのサイズは，データ格納エリアサイズに設定します。検索データの格納が不要の場合は，ZEROを設定します。ただし，構成要素アクセスする場合は，必ずデータ格納エリアを設定してください。

データ格納エリアサイズ

データ格納エリアの長さを設定します（単位：バイト）。検索データサイズより設定値が小さい場合はエラーとなります。

検索データの格納が不要の場合は，ZEROを設定します。ただし，構成要素アクセスする場合は，必ずデータ格納エリアを設定してください。

一連番号

条件式を用いないで一連番号を直接指定する（条件コードが'S'または'D'）場合に検索要求する一連番号を設定します。1〜nの値を設定します。条件コードが'S'または'D'以外の場合，設定値を無視します。

ダイレクトアクセス情報

すでに検索済みのレコードを再度検索する（条件コードが'R'）場合に，前回の検索時に報告したダイレクトアクセス情報を設定します。条件コードが'R'以外の場合，設定値を無視します。

キー格納エリア

条件式を用いないでDBKEYまたはユーザキーを直接指定する（条件コードが'K'または'U'）場合に検索要求するキーを格納します。条件コードが'K'または'U'以外の場合，設定値を無視します。

変更

対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

要求コード

変更要求を示す要求コードを設定します。

'MODF'：変更します。

指示コード

検索の基点を設定します。

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定します。

検索コード

検索の方向を設定します。

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定します。

条件コード

変更データの位置づけ方法（位置づけるための検索方法）を設定します。

検索済みのレコードを変更する場合は，'N'を設定します。

'N'：条件を指定しません。検索要求で位置づけたレコードを変更します。

ポインタオプション

USERポインタを操作する場合に設定します。

本機能は，FMBデータベースの子レコードに対して有効となります。SDBデータベース定義でFMBの子レコードにUSERポインタの定義がない場合は設定値を無視します。

DAM/MAM/TAM/SAMデータベースとFMBデータベースのルートレコードの場合は'N'を設定します。

'U'：ほかのレコードに設定されているUSERポインタを解消して，当該レコードにUSERポインタを設定します。

'C'：当該レコードに設定されているUSERポインタを解消します。

'N'：USERポインタを変更しません。

表1‒47　ポインタオプションの指定可否

項番

項目

DB種別

FMB

DAM

MAM

TAM

SAM

ルート

子

1

ポインタオプション

U

×

○

×

×

×

×

2

C

×

○

×

×

×

×

3

N

○

○

○

○

○

○

（凡例）

○：指定可

×：指定不可

一括オプション

'S'：単一レコードの変更であることを指示します。

'△'：指示なし（単一レコードの変更であることを指示します）

ステータス報告オプション

ステータスおよびダイレクトアクセス情報，一連番号の取得有無を設定します。

'N'を設定します。

ページ切り替え

'△'を設定します。

PCTFREE有効化

'△'を設定します。

二次インデクス使用抑止オプション

'△'を設定します。

オプションコード7

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定します。

条件式格納エリアアドレス

ZEROを設定します。

構成要素指定エリアアドレス

ZEROを設定します。ZEROは直前の検索時にアクセスした構成要素を変更するという意味です。

データ格納エリアアドレス

変更データを格納したエリアのアドレスを設定します。

データ格納エリアのサイズは，データ格納エリアサイズに設定します。

SDBデータベース定義でFMBの子レコードにUSERポインタを定義し，USERポインタの操作だけを行う場合は，ZEROを設定します。FMBの子レコードにUSERポインタの定義がない場合やUSERポインタを変更しない場合にZEROを設定するとエラーになります。

データ格納エリアサイズ

データ格納エリアの長さを設定します（単位：バイト）。

変更データサイズより設定値が小さい場合エラーとなります。変更データサイズより設定値が大きい場合は，後部を無視します。

SDBデータベース定義でFMBの子レコードにUSERポインタを定義し，USERポインタの操作だけを行う場合は，ZEROを設定します。FMBの子レコードにUSERポインタの定義がない場合やUSERポインタを変更しない場合にZEROを設定するとエラーになります。

事前割り当て要求ページ数

ZEROを指定します。

一連番号

ZEROを設定します。

ダイレクトアクセス情報

すべてX'00'を設定します。

キー格納エリア

すべてX'00'を設定します。

格納

対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

要求コード

格納要求を示す要求コードを設定します。

'STOR'：格納します。

指示コード

格納位置を設定します。

'△'：指示なし（SDBデータベース定義に基づいて格納位置を決定する）

検索コード

格納位置を決定するために内部的な検索が発生する場合に，内部的な検索の方向を設定します。キーとは，ユーザキーを持つ場合はユーザキー，持たない場合は一連番号です。

'N'：キーの昇順に検索します。

'P'：キーの降順に検索します。

'△'：指示なし

条件コード

格納条件の設定方法を指示します。

'K'：条件キーとして，データベースキー（一連番号を含まない部分）を指定します。SDBデータベース定義で一連番号だけを定義したデータベースに要求する場合は，キー格納エリアへの設定は不要です。

'N'：条件を指定しません。

条件を指定しない格納の成否は，SDBデータベース定義のキー構成に依存します。

表1‒48　条件コードの指定可否

項番

項目

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‒49　ポインタオプションの指定可否

項番

項目

DB種別

FMB

DAM

MAM

TAM

SAM

ルート

子

1

ポインタオプション

U

×

○

×

×

×

×

2

N

○

○

○

○

○

○

（凡例）

○：指定可

×：指定不可

一括オプション

'△'または'S'を設定します。

'S'：単一レコードの格納であることを指示します。

'△'：指示なし（単一レコードの格納であることを指示します）

ステータス報告オプション

ステータスおよびダイレクトアクセス情報，一連番号の取得有無を設定します。

'Y'を指定してください。

'Y'：取得します。

ページ切り替え

レコード格納時にページの切り替えをする場合に設定します。

レコードに対するアクセス時の排他をページ単位で分散させたい場合は，'C'/'O'を設定してください。それ以外では'N'/'△'を設定します。

適用基準を次の表に示します。

　'C'：レコード格納時にページを切り替え，空きページを確保します。確保したページに対するほかのレコードの格納は可能です。

　'O'：レコード格納時にページを切り替え，空きページを確保します。確保したページは格納レコードで占有し，ほかのレコードを格納しません。

　'N'：ページの切り替えは行いません。

　'△'：指示なし（ページの切り替えは行いません）

表1‒50　ページ切り替えの適用基準

項番

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‒51　PCTFREEの適用基準

項番

DB種別

適用基準

1

FMB

ルートレコード格納ページの排他によって，配下の子レコードのアクセスをシリアライズするため，'Y'指定は効果がありません。

2

DAM/

MAM/

TAM/

SAM

一連番号なし

各レコードは1件だけであるため，'Y'指定は効果がありません。

3

一連番号あり

ページ内に格納するレコード件数に上限を付け，ページ排他の影響範囲を局所化したい場合には，PCTFREEを有効化してください。

二次インデクス使用抑止オプション

'△'を設定します。

オプションコード7

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定するか，または，'△'を設定します。

'△'：指示なし

条件式格納エリアアドレス

ZEROを設定します。

構成要素指定エリアアドレス

ZEROを設定します。

データ格納エリアアドレス

格納するデータを格納するエリアのアドレスを設定します。

データ格納エリアのサイズは，データ格納エリアサイズに設定します。

データ格納エリアサイズ

データ格納エリアの長さを設定します（単位：バイト）。

格納データサイズより設定値が小さい場合はエラーになります。格納データサイズより設定値が大きい場合は，後部を無視します。

事前割り当て要求ページ数

事前ページ割り当て機能を使用する場合，割り当てページ数を1〜2,147,483,647の範囲で指定します。事前ページ割り当て機能を使用しない場合，ZEROを指定してください。

一連番号

ZEROを設定します。

ダイレクトアクセス情報

すべてX'00'を設定します。

キー格納エリア

DBKEYを直接指定する（条件コードが'K'）場合に格納要求するDBKEY（一連番号を含まない部分）を格納します。SDBデータベース定義で一連番号だけ定義したデータベースに要求する場合は，キー格納エリアへの設定は不要です。条件コードが'K'以外の場合，設定値を無視します。

削除

対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

要求コード

削除要求を示す要求コードを設定します。

'ERAS'：削除します。

指示コード

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定します。

検索コード

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定します。

条件コード

'N'：条件を指定しません。検索要求で位置づけたレコードを削除します。

ポインタオプション

'△'を設定します。

一括オプション

FMBデータベースの最下位レコードを一括削除する場合に設定します。最下位レコードでない場合はエラーとなります。

FMBで一括削除を行う場合，最下位レコードのどれかのレコードを検索しておいてください。

DAM/MAM/TAM/SAMの場合は，'S'または'△'を設定します。

'O'：一括削除であることを指示します。

'S'：単一レコードの削除であることを指示します。

'△'：単一レコードの削除であることを指示します。

ステータス報告オプション

ステータスおよびダイレクトアクセス情報，一連番号の取得有無を設定します。

'N'を設定します。

ページ切り替え

'△'を設定します。

PCTFREE有効化

'△'を設定します。

二次インデクス使用抑止オプション

'△'を設定します。

オプションコード7

CBLEESDH('ACCS ')の検索要求時に設定した値をそのまま設定します。

条件式格納エリアアドレス

ZEROを設定します。

構成要素指定エリアアドレス

ZEROを設定します。

データ格納エリアアドレス

ZEROを設定します。

データ格納エリアサイズ

ZEROを設定します。

事前割り当て要求ページ数

ZEROを指定します。

一連番号

ZEROを設定します。

ダイレクトアクセス情報

すべてX'00'を設定します。

キー格納エリア

すべてX'00'を設定します。

複数レコードの検索

ルートレコードのエントリに次の値を設定します。指定可能な値以外を指定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

要求コード

複数レコードの検索要求を示す要求コードを設定します。

'FTCA'：複数レコードを検索します。

指示コード

検索の基点を設定します。

'F'：検索範囲の最小キーのルートレコードから検索を開始します。条件式を指定していない場合は，すべてのレコードが検索対象となります。

'N'：前回検索したレコードの次のレコードから検索を開始します。検索範囲は，'F'で指定した内容を引き継ぐため，条件式を指定しても無視します。

'S'：前回の検索したルートレコード下のレコードの検索状態に関係なく，次のルートレコードから検索を開始します。検索範囲は，'F'で指定した内容を引き継ぐため，条件式を指定しても無視します。

表1‒52　指示コードの指定可否

項番

状態※

次要求

指示コード

動作

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‒34　条件式格納エリア

表1‒53　条件式格納エリア内容

項番

分類

説明

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を設定します。

データ格納エリアアドレス

検索したデータを格納するエリアのアドレスを設定します。データ格納エリアのサイズは，データ格納エリアサイズに設定します。

複数レコードの検索では，指定されたサイズに入りきる分だけ格納します。

データ格納エリアサイズ

データ格納エリアの長さを設定します（単位：バイト）。検索データサイズより設定値が小さい場合はエラーとなります。

事前割り当て要求ページ数

ZEROを指定します。

一連番号

0を設定します。

ダイレクトアクセス情報

すべてX'00'を設定します。

キー格納エリア

条件式を用いないでDBKEYを直接設定する場合（条件コードが'K'の場合），検索要求するキーを設定します。条件コードが'K'以外の場合，設定値を無視します。

TP1/EEから値が返されるデータ領域

一意名2

インタフェースエリアの各項目に値が設定されています。

ステータスコードが'00000'または'04310'の場合だけ参照可能です。

次に記載のない項目については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‒54　検索時のSDHステータスコードとリターンコード情報

項番

SDHステータスコード

内容

各エントリ部の結果

キー報告エリア

一連番号

ダイレクトアクセス情報

ステータス

レコードサイズ

エントリ部ロケーション

二次インデクス使用フラグ

1

00000

正常終了

○

○

'N'以外

○

○※1

○

○

2

00100

レコードが見つからない※2

○

○

'N'以外

○

○※1

○

○

3

×

×

'N'

×

×

×

4

10072

データの終わりを検出

×

×

'N'

×

×

×

○

5

上記以外

異常

×

×

×

×

×

×

×

（凡例）

○：参照可

×：参照不可

注※1

DB対応エントリだけ参照できます。

注※2

上段が検索成功したエントリ，下段が検索失敗した（レコードが見つからない）エントリです。

表1‒55　変更時のSDHステータスコードとリターンコード情報

項番

SDHステータスコード

内容

各エントリ部の結果

キー報告エリア

一連番号

ダイレクトアクセス情報

ステータス

レコードサイズ

エントリ部ロケーション

二次インデクス使用フラグ

1

00000

正常終了

×

×

×

×

×

×

×

2

上記以外

異常

×

×

×

×

×

×

×

（凡例）

×：参照不可

表1‒56　格納時のSDHステータスコードとリターンコード情報

項番

SDHステータスコード

内容

各エントリ部の結果

キー報告エリア

一連番号

ダイレクトアクセス情報

ステータス

レコードサイズ

エントリ部ロケーション

二次インデクス使用フラグ

1

00000

正常終了

○

○

○

×

○※

○

○

2

上記以外

異常

×

×

×

×

×

×

×

（凡例）

○：参照可

×：参照不可

注※

DB対応エントリだけ参照できます。

表1‒57　削除時のSDHステータスコードとリターンコード情報

項番

SDHステータスコード

内容

各エントリ部の結果

キー報告エリア

一連番号

ダイレクトアクセス情報

ステータス

レコードサイズ

エントリ部ロケーション

二次インデクス使用フラグ

1

00000

正常終了

×

×

×

×

×

×

×

2

上記以外

異常

×

×

×

×

×

×

×

（凡例）

×：参照不可

表1‒58　複数レコードの検索時の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‒35　エントリ部ロケーション

・その他の場合

　設定されている内容を変更しません。

事前割り当て済みページ数

要求コードの値によって設定する内容が異なります。

・要求コードが'FTCH'/'FTCA'の場合

正常終了した場合，事前割り当て済みのページ数を設定します。異常終了，または検索レコードが事前ページ割り当て数の取得対象でない場合は，ZEROを設定します。

・要求コードが'STOR'/'MODF/'ERAS'の場合

ZEROを設定します。

一連番号

ステータス報告オプションの値によって設定する内容が異なります。

・ステータス報告オプションが'Y'の場合

　一連番号を設定します。

・ステータス報告オプションが'N'の場合

　設定されている内容を変更しません。

ダイレクトアクセス情報

ステータス報告オプションの値によって設定する内容が異なります。

・ステータス報告オプションが'Y'の場合

　ダイレクトアクセス情報を設定します。

・ステータス報告オプションが'N'の場合

　設定されている内容を変更しません。

二次インデクス使用フラグ

要求コードの値によって設定する内容が異なります。

・要求コードが'FTCH'/'STOR'の場合

　'0'：二次インデクスを使用していません。

　'1'：一連番号用の二次インデクスを使用しました。

　'2'：ユーザキー用の二次インデクスを使用しました。

・要求コードが'MODF'/'ERAS'/'FTCA'の場合

　設定されている内容を変更しません。

ステータス

ステータス報告オプションの値によって設定する内容が異なります。

・ステータス報告オプションが'Y'の場合

　検索したレコードに応じてステータスを設定します。ステータスを次の表に示します。

・ステータス報告オプションが'N'の場合

　設定されている内容を変更しません。

表1‒59　ステータス

項番

値

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‒36　キー報告エリア

データ格納エリア部

要求コードが'FTCA'の場合にデータ格納エリアに設定する内容を次の図に示します。

図1‒37　データ格納エリア

各エントリの設定内容を次の表に示します（項番(1)〜(14)は上記図の(1)〜(14)にそれぞれ対応しています）。(3)以降はレコード数分存在します（レコード長が異なるため，単純な繰り返し構造ではありません）。

表1‒60　データ格納エリアの設定内容

項番

フィールド

長さ

内容

(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)

レコード実現値（データベースキー，ユーザデータ）

データ名B

ステータスコードを5桁の数字で返します。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

04301

引数に設定した値が間違っています。

要求コード（データ名A）の値が不正です。

インタフェースエリア（一意名2）が不正（NULL）です。

04302

発行条件が不正です。

TP1/FSPの環境下にありません。

SDBハンドラ機能が有効（sdh_use=Y）ではありません。

リソースマネジャが定義されていないか，リソースマネジャにHiRDBが定義されていません。

04310

構造型DBのアクセスに失敗しました。

詳細は「1.4　SDHステータスコード一覧」を参照してください。

(4)　CBLEESDH('CLAR ')

名称

データベースアクセス（一括削除（一連番号初期化））

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESDH' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
    02 データ名A  PIC X(8) VALUE 'CLAR    '.
    02 データ名B  PIC X(5).
    02 FILLER     PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
  01 一意名2.                          /*インタフェースエリア */
    02 データ名D.                      /*ヘッダ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名D01  PIC X(4).        /*ヘッダ識別子 */
      03 データ名D02  PIC S9(9) COMP.  /*ヘッダ部サイズ */
      03 データ名D03  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D04  PIC S9(9) COMP.  /*インタフェースエリア全体サイズ */
      03 データ名D05  ADDRESS.         /*自インタフェースエリアのテンプレートアドレス */
      03 データ名D06  PIC S9(9) COMP.  /*エントリ部先頭ロケーション */
      03 データ名D07  PIC S9(9) COMP.  /*エントリ部サイズ */
      03 データ名D08  PIC S9(9) COMP.  /*エントリ部数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D09  PIC S9(9) COMP.   /*キー報告エリア部ロケーション */
      03 データ名D10  PIC S9(9) COMP.   /*キー報告エリア部サイズ*/
      03 データ名D11  PIC S9(9) COMP.   /*構成要素情報表示部ロケーション */
      03 データ名D12  PIC S9(9) COMP.   /*構成要素情報表示部エントリサイズ */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名 D13  PIC S9(4) COMP.  /*データベース名称サイズ */
      03 データ名 D14  PIC X(30).       /*データベース名称 */
      /*要求部*/
      03 データ名D15  PIC X(4).         /*機能コード */
      03 データ名D16  PIC X(1).         /*要求コード1 */
      03 データ名D17  PIC X(1).         /*要求コード2 */
      03 データ名D18  PIC X(1).         /*要求コード3 */
      03 データ名D19  PIC X(1).         /*要求コード4 */
      03 データ名D20  PIC X(1).         /*アクセスモード1 */
      03 データ名D21  PIC X(1).         /*アクセスモード2 */
      03 データ名D22  PIC X(1).         /*アクセスモード3 */
      03 データ名D23  PIC X(1).         /*アクセスモード4 */
      03 データ名D24  PIC X(1).         /*排他モード1 */
      03 データ名D25  PIC X(1).         /*排他モード2 */
      03 データ名D26  PIC X(1).         /*排他モード3 */
      03 データ名D27  PIC X(1).         /*排他モード4 */
      03 データ名D28  PIC X(1).         /*データエリア形式 */
      03 データ名D29  PIC X(1).         /*店番限定有無 */
      03 データ名D30  PIC X(1).         /*順アクセス内基点条件オプション */
      03 データ名D31  PIC X(1).        /*複数レコードの検索専用オプション */
      03 データ名D32  PIC X(1).        /*個別開始/終了一括要求オプション */
      03 データ名D33  PIC X(1).        /*個別開始実行要求オプション */
      03 データ名D34  PIC X(1).        /*オプションコード7 */
      03 データ名D35  PIC X(1).        /*オプションコード8 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D36  ADDRESS.          /*データベースアクセス用エントリリストアドレス */
      03 データ名D37  ADDRESS.         /*システム構成表示エリアアドレス */
      03 データ名D38  PIC S9(4) COMP.  /*データベース名称サイズ指定 */
      03 データ名 D39  PIC X(30).       /*データベース名称指定 */
      03 データ名D40  ADDRESS.          /*データベースキー指定エリアアドレス */
      03 データ名D41  ADDRESS.          /* TP1/FSP領域 */
      03 FILLER       PIC X(4).          /*予備 */
      03 FILLER       PIC X(12).         /*予備 */
      03 データ名D42  ADDRESS.           /*RDエリア名称格納エリア */
      03 データ名D43  PIC S9(9) COMP.    /*RDエリア名称格納エリアサイズ */
      03 FILLER       PIC X(4).          /*予備 */
      03 データ名D44  PIC S9(4) COMP.   /*店番サイズ */
      03 データ名D45  PIC X(14).        /*店番 */
      03 FILLER       PIC X(240).        /*予備 */
      /*結果部*/
      03データ名D46  PIC X(1).          /*リターンコード */
      03 データ名D47  PIC X(1).          /*サブコード */
      03 FILLER       PIC X(2).          /*予備 */
      03データ名D48  PIC S9(9) COMP.    /*詳細コード */
      03データ名D49  PIC S9(9) COMP.    /*エラーコード1 */
      03データ名D50  PIC S9(9) COMP.    /*エラーコード2 */
      03 データ名D51  PIC X(5).         /*SDHステータスコード */
      03 FILLER       PIC X(1).          /*予備 */
      03 データ名D52  PIC X(1).       /*暗黙的ロールバック有無 */
      03 データ名D53  PIC X(1).       /*個別開始実行要求結果 */
      03 データ名D54  PIC S9(18) COMP.  /*SQLCODE */
      03 データ名D55  PIC X(32).        /*障害情報 */
      03 データ名D56  ADDRESS.          /*データベース名称リストアドレス */
      03 データ名D57  ADDRESS.          /*アクセス機能用インタフェースエリアアドレス */
      03 データ名D58  PIC S9(9) COMP.   /*エントリ部ロケーション */
      03 FILLER       PIC X(4).          /*予備 */
      03 データ名D59  ADDRESS.          /*レコード分割キー一覧アドレス */
      03 データ名D60  ADDRESS.          /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(152).        /*予備 */
      /*定義情報部*/
      03 データ名D61  PIC S9(9) COMP.   /*データベース番号 */
      03 データ名D62  PIC X(1).         /*種別 */
      03 FILLER       PIC X(3).          /*予備 */
      03 データ名D63  PIC X(1).         /*参照可否 */
      03 データ名D64  PIC X(1).         /*変更可否 */
      03 データ名D65  PIC X(1).         /*格納可否 */
      03 データ名D66  PIC X(1).         /*削除可否 */
      03 データ名D67  PIC X(1).         /*一括削除可否 */
      03 データ名D68  PIC X(1).         /*DB作成UTL追加可否 */
      03 データ名D69  PIC X(1).         /*フォーマットライト可否 */
      03 データ名D70  PIC X(1).         /*店群構成 */
      03 データ名D71  PIC X(1).         /*リクエストモード1 */
      03 データ名D72  PIC X(1).         /*リクエストモード2 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名D73  PIC X(1).         /*階層ランダム/シーケンシャル */
      03 データ名D74  PIC X(1).         /*ユーザファイル通番可否 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名D75  PIC S9(9) COMP.   /*レコード種別数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D76  PIC S9(9) COMP.   /*レコード分割キー数 */
      03 データ名D77  PIC S9(4) COMP.   /*レコード分割キーのロケーション */
      03 データ名D78  PIC S9(4) COMP.   /*レコード分割キーのサイズ */
      03 データ名D79  PIC S9(9) COMP.   /* RDエリア分割キー数 */
      03 データ名D80  PIC S9(4) COMP.   /*RDエリア分割キーのロケーション */
      03 データ名D81  PIC S9(4) COMP.  /*RDエリア分割キーのサイズ */
      03 データ名D82  PIC S9(9) COMP.  /*最大階層レベル(FMB用) */
      03 データ名D83  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D84  PIC S9(9) COMP.   /*全キー長(レベル2〜一連番号までの合計サイズ)*/
      03 データ名D85  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D86  PIC S9(9) COMP.  /*レベル2キー構成要素情報 */
      03 データ名D87  PIC S9(9) COMP.  /*レベル2論理キー長 */
      03 データ名D88  PIC S9(9) COMP.  /*レベル2論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D89  PIC S9(9) COMP.  /*レベル3キー構成要素情報 */
      03 データ名D90  PIC S9(9) COMP.  /*レベル3論理キー長 */
      03 データ名D91  PIC S9(9) COMP.  /*レベル3論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D92  PIC S9(9) COMP.  /*レベル4キー構成要素情報 */
      03 データ名D93  PIC S9(9) COMP.  /*レベル4論理キー長 */
      03 データ名D94  PIC S9(9) COMP.  /*レベル4論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D95  PIC S9(9) COMP.  /*レベル5キー構成要素情報 */
      03 データ名D96  PIC S9(9) COMP.  /*レベル5論理キー長 */
      03 データ名D97  PIC S9(9) COMP.  /*レベル5論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D98  PIC S9(9) COMP.  /*レベル6キー構成要素情報 */
      03 データ名D99  PIC S9(9) COMP.  /*レベル6論理キー長 */
      03 データ名D100  PIC S9(9) COMP. /*レベル6論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D101  PIC S9(9) COMP. /*レベル7キー構成要素情報 */
      03 データ名D102  PIC S9(9) COMP. /*レベル7論理キー長 */
      03 データ名D103  PIC S9(9) COMP. /*レベル7論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D104  PIC S9(9) COMP.  /*一連番号構成要素情報 */
      03 データ名D105  PIC S9(9) COMP.  /*一連番号サイズ */
      03 FILLER       PIC X(8).          /*予備 */
      03 データ名D106  ADDRESS.         /*レコード分割キー一覧アドレス */
      03 データ名D107  ADDRESS.         /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(48).         /*予備 */
      03 FILLER       PIC X(1024).       /*予備 */

    02 データ名E       OCCURS n TIMES.  /*エントリ部    */
      /*インタフェースエリア構成情報部*/
      03 データ名E01  PIC X(4).         /*識別子 */
      03 データ名E02  PIC S9(9) COMP.   /*エントリ部サイズ */
      03 データ名E03  PIC X(1).         /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名E04  PIC S9(9) COMP.   /*インタフェースエリア内のエントリ部ロケーション */
      03 データ名E05  PIC S9(9) COMP.  /*構成要素情報部ロケーション */
      03 データ名E06  PIC S9(9) COMP.  /*構成要素情報エントリ数 */
      03 FILLER       PIC X(72).        /*予備 */
      03 データ名E07  PIC S9(4) COMP.  /*レコード名称サイズ */
      03 データ名E08  PIC X(30).       /*レコード名称 */
      /*要求部*/
      03 データ名E09  PIC X(4).        /*要求コード */
      03 データ名E10  PIC X(1).        /*指示コード */
      03 データ名E11  PIC X(1).        /*検索コード */
      03 データ名E12  PIC X(1).        /*条件コード */
      03 FILLER        PIC X(1).        /*予備 */
      03 FILLER        PIC X(8).        /*予備 */
      03 データ名E13  PIC X(1).        /*ポインタオプション */
      03 データ名E14  PIC X(1).        /*一括オプション */
      03 データ名E15  PIC X(1).        /*ステータス報告オプション */
      03 データ名E16  PIC X(1).        /*ページ切り替え */
      03 データ名E17  PIC X(1).        /*PCTFREE有効化 */
      03 データ名E18  PIC X(1).        /*複数レコードの検索専用オプション */
      03 データ名E19  PIC X(1).        /*オプションコード7 */
      03 データ名E20  PIC X(1).        /*TP1/FSP領域 */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名E21  ADDRESS.         /*条件式格納エリアアドレス */
      03 データ名E22  ADDRESS.         /*構成要素指定エリアアドレス */
      03 データ名E23  ADDRESS.         /*データ格納エリアアドレス */
      03 データ名E24  PIC S9(9) COMP.  /*データ格納エリアサイズ */
      03 データ名E25  PIC S9(9) COMP.  /*事前割り当て要求ページ数 */
      03 FILLER       PIC X(56).        /*予備 */
      03 データ名E26  PIC X(4).         /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E27  PIC S9(9) COMP.  /*一連番号 */
      03 データ名E28  PIC X(16).       /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(80).        /*予備 */
      03 データ名E29  PIC X(256).      /*ユーザキー/論理キー格納エリア */
      /*結果部*/
      03 データ名E30  PIC X(1).        /*リターンコード */
      03 データ名E31  PIC X(1).        /*サブコード */
      03 FILLER       PIC X(2).        /*予備 */
      03 データ名E32  PIC S9(9) COMP.  /*詳細コード */
      03 データ名E33  PIC S9(9) COMP.  /*エラーコード1 */
      03 データ名E34  PIC S9(9) COMP.  /*エラーコード2 */
      03 データ名E35  PIC S9(18) COMP. /*SQLCODE */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名E36  PIC X(32).        /*障害情報 */
      03 データ名E37  PIC S9(9) COMP.  /*レコードサイズ */
      03 データ名E38  PIC S9(9) COMP.  /*エントリ部ロケーション */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名E39  PIC S9(9) COMP.  /*事前割り当て済みページ数 */
      03 データ名E40  PIC X(4).         /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E41  PIC S9(9) COMP.  /*一連番号 */
      03 データ名E42  PIC X(16).       /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(24).        /*予備 */
      03 データ名E43  PIC X(24).       /*BES，RDエリアに関する情報 */
      03 FILLER       PIC X(41).        /*予備 */
      03 データ名E44   PIC X(1).       /*二次インデクス使用フラグ */
      03 データ名E45   PIC X(1).       /*ステータス */
      03 データ名E46   PIC S9(4) COMP.  /* TP1/FSP領域 */
      03 データ名E47   PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(56).         /*予備 */
      /*定義情報部*/
      03 データ名E48  PIC S9(9) COMP.  /*レコード番号 */
      03 データ名E49  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).        /*予備 */
      03 データ名E50  PIC X(1).       /*検索可否 */
      03 データ名E51  PIC X(1).       /*変更可否 */
      03 データ名E52  PIC X(1).       /*格納可否 */
      03 データ名E53  PIC X(1).       /*削除可否 */
      03 データ名E54  PIC X(1).       /*一括削除可否 */
      03 データ名E55  PIC X(1).       /*構成要素指示可否 */
      03 FILLER       PIC X(1).        /*予備 */
      03 データ名E56  PIC X(1).        /*店群構成 */
      03 データ名E57  PIC X(1).        /*オカレンス属性 */
      03 データ名E58  PIC X(1).        /*子レコード有無 */
      03 データ名E59  PIC X(1).        /*ユーザポインタ有無 */
      03 データ名E60  PIC X(1).        /*ユーザキー有無 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名E61  PIC X(1).        /*リクエストモード1 */
      03 データ名E62  PIC X(1).        /*リクエストモード2 */
      03 FILLER       PIC X(2).        /*予備 */
      03 データ名E63  PIC X(1).       /*階層ランダム/シーケンシャル */
      03 データ名E64  PIC X(1).       /*ユーザファイル通番取得可否 */
      03 FILLER       PIC X(2).        /*予備 */
      03 データ名E65  PIC S9(9) COMP.  /*自身のレコード識別コード長 */
      03 データ名E66  PIC X(4).        /*自身のレコード識別コード */
      03 データ名E67  PIC S9(9) COMP.  /*レコード型番号 */
      03 データ名E68  PIC S9(9) COMP.  /*親のレコード型番号 */
      03 データ名E69  PIC S9(9) COMP.  /*レコードレベル番号 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名E70  PIC S9(9) COMP.  /*ユーザデータサイズ */
      03 データ名E71  PIC S9(9) COMP.  /*ユーザファイル通番部サイズ */
      03 データ名E72  PIC S9(9) COMP.  /*公開構成要素数 */
      03 データ名E73  PIC S9(9) COMP.  /*一連番号最小値 */
      03 データ名E74  PIC S9(9) COMP.  /*一連番号最大値 */
      03 FILLER       PIC X(52).        /*予備 */
      03 FILLER       PIC X(1024).      /*予備 */

    02 データ名F.                       /*キー報告エリア部 */
      03 データ名F01  PIC S9(4) COMP.   /*K1 */
      03 データ名F02  PIC S9(4) COMP.   /*K2 */
      03 データ名F03  PIC S9(4) COMP.   /*K3 */
      03 データ名F04  PIC S9(4) COMP.   /*K4 */
      03 データ名F05  PIC S9(4) COMP.   /*K5 */
      03 データ名F06  PIC S9(4) COMP.   /*K6 */
      03 データ名F07  PIC S9(4) COMP.   /*K7 */
      03 データ名F08  PIC S9(4) COMP.   /*K8 */
      03 データ名F09  PIC S9(4) COMP.   /*K9 */
      03 データ名F10  PIC S9(4) COMP.   /*K10 */
      03 データ名F11  PIC S9(4) COMP.   /*K11 */
      03 データ名F12  PIC S9(4) COMP.   /*K12 */
      03 データ名F13  PIC S9(4) COMP.   /*K13 */
      03 データ名F14  PIC S9(4) COMP.   /*K14 */
      03 データ名F15  PIC S9(4) COMP.   /*K15 */
      03 FILLER       PIC X(2).          /*予備 */
      03 データ名F16  PIC X(n).         /*キー部 */

    02 データ名G       OCCURS n TIMES.  /*構成要素情報部 */
      03 データ名G01  PIC X(4).         /*識別記号 */
      03 データ名G02  PIC S9(9) COMP.   /*構成要素番号 */
      03 データ名G03  PIC S9(4) COMP.   /*構成要素名称サイズ */
      03 データ名G04  PIC X(30).        /*構成要素名称 */
      03 データ名G05  PIC X(1).         /*データ属性 */
      03 データ名G06  PIC X(1).         /*構成要素属性 */
      03 データ名G07  PIC X(1).         /*構成要素属性 */
      03 FILLER        PIC X(1).         /*予備 */
      03 データ名G08  PIC S9(9) COMP.    /*ロケーション */
      03 データ名G09  PIC S9(9) COMP.    /*構成要素サイズ */
      03 データ名G10  PIC X(2).          /*ユーザ情報 */
      03 FILLER        PIC X(10).         /*予備 */

機能

インタフェースエリアに指定されたデータベースに対して，要求されたDBKEYに対応したレコードを削除します。一括削除では，検索しないで削除することが可能です。DBKEYはDB対応エントリに設定します。

UAPは，CBLEESDH('STRT ')発行時にインタフェースエリア（ヘッダ部）のアクセスモード1を'U'に設定したインタフェースエリアを一意名2に設定します。

個別開始実行要求オプションに'Y'を指定する場合は，CBLEESDH('STRT ')の記述を参照し，インタフェースエリアを一意名2に指定してください。すでにCBLEESDH('STRT ')発行済みだった場合，個別開始実行要求オプションは無視します。

表1‒61　一括削除

項番

API

DB種別

FMB

DAM

MAM

TAM

SAM

ルート

子

1

一括削除

×

×

○

○

○

○

（凡例）

○：指定可

×：指定不可

UAPで値を設定するデータ領域

データ名A

データベースアクセス（一括削除）を示すコード「VALUE 'CLAR△△△△'」を設定します。

データ名C

0を設定します。

一意名2

インタフェースエリアを設定します。

要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

ヘッダ部−要求部

機能コード

データベースアクセス（一括削除）を示す機能コードを設定します。

'CLAR'：一括削除

要求コード1

インタフェースエリアの確保方法を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の要求コード1の記載内容を参照し，値を設定してください。

要求コード2，要求コード3，要求コード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の要求コード2，要求コード3，要求コード4の記載内容を参照し，値を設定してください。

アクセスモード1

アクセスモードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のアクセスモード1の記載内容を参照し，値を設定してください。

アクセスモード2，アクセスモード3，アクセスモード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のアクセスモード2，アクセスモード3，アクセスモード4の記載内容を参照し，値を設定してください。

排他モード1

排他モードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード1の記載内容を参照し，値を設定してください。

排他モード2

排他の解放タイミングを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード2の記載内容を参照し，値を設定してください。

排他モード3

排他競合時の処置を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード3の記載内容を参照し，値を設定してください。

排他モード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード4の記載内容を参照し，値を設定してください。

データエリア形式

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のデータエリア形式の記載内容を参照し，値を設定してください。

店番限定有無

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の店番限定有無の記載内容を参照し，値を設定してください。

順アクセス内基点条件オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の順アクセス内基点条件オプションの記載内容を参照し，値を設定してください。

複数レコードの検索専用オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の複数レコードの検索専用オプションの記載内容を参照し，値を設定してください。

個別開始/終了一括要求オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま指定します。

個別開始実行要求オプション

一括削除の処理の中で個別開始をするかどうかを指定します。すでに個別開始済みの場合，このオプション指定値は無視します。

'Y'：一括削除の処理の中で個別開始を実行する

'N'：指示なし

'△'：指示なし

オプションコード7，オプションコード8

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のオプションコード7，オプションコード8の記載内容を参照し，値を設定してください。

データベースアクセス用エントリリスト

ZEROを設定します。

システム構成表示エリアアドレス

ZEROを設定します。

データベース名称サイズ指定

ZEROを設定します。

データベース名称指定

すべてX'00'を設定します。

データベースキー指定エリアアドレス

ZEROを設定します。

旧キー報告エリアアドレス

ZEROを設定します。

RDエリア名称格納エリア

ZEROを設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のRDエリア名称格納エリアの記載内容を参照し，値を設定してください。

RDエリア名称格納エリアサイズ

ZEROを設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のRDエリア名称格納エリアサイズの記載内容を参照し，値を設定してください。

店番サイズ

ZEROを設定します。

店番

すべてX'00'を設定します。

エントリ部−要求部

対象となるレコードのエントリに次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

要求コード

データベースアクセス（一括削除）を示す機能コードを設定します。

'CLAR'：一括削除

指示コード

'△'を設定します。

検索コード

'△'を設定します。

条件コード

一括削除要求するDBKEYの設定方法を設定します。

'K'：条件キーとして，DBKEY（一連番号を含まない部分）を指定します。SDBデータベース定義で一連番号だけ定義したデータベースに要求する場合は，キー格納エリアへの格納は不要です。

'N'：条件を指定しません。SDBデータベース定義で一連番号以外のキーが定義されているデータベースには指定できません。

表1‒62　条件コードの指定可否

項番

項目

DB種別

FMB

DAM

MAM

TAM

SAM

ルート

子

1

条件コード

K

×

×

○

○

○

○

2

N

×

×

○

○

○

○

（凡例）

○：指定可

×：指定不可

ポインタオプション

'△'を設定します。

一括オプション

'△'を設定します。

ステータス報告オプション

ステータスおよびダイレクトアクセス情報，一連番号の取得有無を設定します。

'N'を設定します。

ページ切り替え

'△'を設定します。

PCTFREE有効化

'△'を設定します。

二次インデクス使用抑止オプション

'△'を設定します。

オプションコード7

'△'を設定します。

条件式格納エリアアドレス

ZEROを設定します。

構成要素指定エリアアドレス

ZEROを設定します。

データ格納エリアアドレス

ZEROを設定します。

データ格納エリアサイズ

ZEROを設定します。

一連番号

ZEROを設定します。

ダイレクトアクセス情報

すべてX'00'を設定します。

キー格納エリア

一括削除要求するDBKEYを指定する（条件コードが'K'）場合，DBKEY（一連番号を含まない部分）を格納します。SDBデータベース定義で一連番号だけを定義したデータベースに要求する場合は，キー格納エリアへの設定は不要です。条件コードが'K'以外の場合，設定値を無視します。

TP1/EEから値が返されるデータ領域

一意名2

インタフェースエリアの各項目に値が設定されています。

ステータスコードが'00000'または'04310'の場合だけ参照可能です。

次に記載のない項目については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'：暗黙的ロールバックが発生していない

個別開始実行要求結果

個別開始実行要求オプションに'Y'を指定している場合，個別開始実行結果を設定します。APIの正常リターン時は必ず'Y'となり，APIの異常リターン時はHiRDBの状態によって'Y'または'N'のどちらかとなります。

'Y'：個別開始が成功した，またはすでに個別開始済み

'N'：個別開始が失敗した

なお，HiRDBへの要求前にエラー（引数エラー，ee_trn_rollback_mark関数発行済みなど）となった場合，または個別開始実行要求オプションに'Y'を指定していない場合はX'00'を設定します。

SQLCODE

SQLCODEを設定します。

障害情報

TP1/FSPがトラブルシュートで使用する情報を設定します。

エントリ部−要求部

要求コード

処理済みを示す要求コードを設定します。

'NNNN'：処理済み

エントリ部−結果部

リターンコード，サブコード

リターンコードおよびサブコードを設定します。SDHステータスコードが'00000'の場合に参照できます。

詳細は「表1-11　リターンコードとサブコード」を参照してください。

詳細コード

TP1/FSPがトラブルシュートで使用する情報を設定します。

エラーコード1

TP1/FSPがトラブルシュートで使用する情報を設定します。

エラーコード2

TP1/FSPがトラブルシュートで使用する情報を設定します。

SQLCODE

SQLCODEを設定します。SDHステータスコードが'00000'の場合に参照できます。

障害情報

TP1/FSPがトラブルシュートで使用する情報を設定します。

データ名B

ステータスコードを5桁の数字で返します。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

04301

引数に設定した値が間違っています。

要求コード（データ名A）の値が不正です。

インタフェースエリア（一意名2）が不正（NULL）です。

04302

発行条件が不正です。

TP1/FSPの環境下にありません。

SDBハンドラ機能が有効（sdh_use=Y）ではありません。

リソースマネジャが定義されていないか，リソースマネジャにHiRDBが定義されていません。

04310

構造型DBのアクセスに失敗しました。

詳細は「1.4　SDHステータスコード一覧」を参照してください。

(5)　CBLEESDH('REFS ')

名称

システム構成表示（容量）

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESDH' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
    02 データ名A  PIC X(8) VALUE 'REFS    '.
    02 データ名B  PIC X(5).
    02 FILLER     PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
  01 一意名2.                          /*インタフェースエリア */
    02 データ名D.                      /*ヘッダ部 */
    /*インタフェースエリア構成情報部*/
      03 データ名D01  PIC X(4).        /*ヘッダ識別子 */
      03 データ名D02  PIC S9(9) COMP.  /*ヘッダ部サイズ */
      03 データ名D03  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D04  PIC S9(9) COMP.  /*インタフェースエリア全体サイズ  */
      03 データ名D05  ADDRESS.         /*自インタフェースエリアのテンプレートアドレス */
      03 データ名D06  PIC S9(9) COMP.  /*エントリ部先頭ロケーション */
      03 データ名D07  PIC S9(9) COMP.  /*エントリ部サイズ */
      03 データ名D08  PIC S9(9) COMP.  /*エントリ部数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D09  PIC S9(9) COMP.  /*キー報告エリア部ロケーション */
      03 データ名D10  PIC S9(9) COMP.  /*キー報告エリア部サイズ */
      03 データ名D11  PIC S9(9) COMP.  /*構成要素情報表示部ロケーション */
      03 データ名D12  PIC S9(9) COMP.  /*構成要素情報表示部エントリサイズ */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名 D13  PIC S9(4) COMP.  /*データベース名称サイズ */
      03 データ名 D14  PIC X(30).       /*データベース名称 */
      /*要求部*/
      03 データ名D15  PIC X(4).        /*機能コード */
      03 データ名D16  PIC X(1).        /*要求コード1 */
      03 データ名D17  PIC X(1).        /*要求コード2 */
      03 データ名D18  PIC X(1).        /*要求コード3 */
      03 データ名D19  PIC X(1).        /*要求コード4 */
      03 データ名D20  PIC X(1).        /*アクセスモード1 */
      03 データ名D21  PIC X(1).        /*アクセスモード2 */
      03 データ名D22  PIC X(1).        /*アクセスモード3 */
      03 データ名D23  PIC X(1).        /*アクセスモード4 */
      03 データ名D24  PIC X(1).        /*排他モード1 */
      03 データ名D25  PIC X(1).        /*排他モード2 */
      03 データ名D26  PIC X(1).        /*排他モード3 */
      03 データ名D27  PIC X(1).        /*排他モード4 */
      03 データ名D28  PIC X(1).        /*データエリア形式 */
      03 データ名D29  PIC X(1).        /*店番限定有無 */
      03 データ名D30  PIC X(1).        /*順アクセス内基点条件オプション */
      03 データ名D31  PIC X(1).        /*複数レコードの検索専用オプション */
      03 データ名D32  PIC X(1).        /*個別開始/終了一括要求オプション */
      03 データ名D33  PIC X(1).        /*個別開始実行要求オプション */
      03 データ名D34  PIC X(1).        /*オプションコード7 */
      03 データ名D35  PIC X(1).        /*オプションコード8 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D36  ADDRESS.          /*データベースアクセス用エントリリストアドレス */
      03 データ名D37  ADDRESS.         /*システム構成表示エリアアドレス */
      03 データ名D38  PIC S9(4) COMP.  /*データベース名称サイズ指定 */
      03 データ名 D39  PIC X(30).      /*データベース名称指定 */
      03 データ名D40  ADDRESS.         /*データベースキー指定エリアアドレス */
      03 データ名D41  ADDRESS.         /* TP1/FSP領域 */
      03 FILLER       PIC X(4).         /*予備 */
      03 FILLER       PIC X(12).        /*予備 */
      03 データ名D42  ADDRESS.         /*RDエリア名称格納エリア */
      03 データ名D43  PIC S9(9) COMP.   /*RDエリア名称格納エリアサイズ */
      03 FILLER       PIC X(4).        /*予備 */
      03 データ名D44  PIC S9(4) COMP.  /*店番サイズ */
      03 データ名D45  PIC X(14).       /*店番 */
      03 FILLER       PIC X(240).       /*予備 */
      /*結果部*/
      03 データ名D46  PIC X(1).         /*リターンコード */
      03 データ名D47  PIC X(1).         /*サブコード */
      03 FILLER       PIC X(2).          /*予備 */
      03データ名D48  PIC S9(9) COMP.    /*詳細コード */
      03データ名D49  PIC S9(9) COMP.    /*エラーコード1 */
      03データ名D50  PIC S9(9) COMP.    /*エラーコード2 */
      03 データ名D51  PIC X(5).         /*SDHステータスコード */
      03 FILLER       PIC X(1).          /*予備 */
      03 データ名D52  PIC X(1).          /*暗黙的ロールバック有無 */
      03 データ名D53  PIC X(1).          /*個別開始実行要求結果 */
      03 データ名D54  PIC S9(18) COMP.  /*SQLCODE */
      03 データ名D55  PIC X(32).        /*障害情報 */
      03 データ名D56  ADDRESS.          /*データベース名称リストアドレス */
      03 データ名D57  ADDRESS.          /*アクセス機能用インタフェースエリアアドレス */
      03 データ名D58  PIC S9(9) COMP.  /*エントリ部ロケーション */
      03 FILLER       PIC X(4).         /*予備    */
      03 データ名D59  ADDRESS.         /*レコード分割キー一覧アドレス */
      03 データ名D60  ADDRESS.         /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(152).      /*予備 */
      /*定義情報部*/
      03 データ名D61  PIC S9(9) COMP.  /*データベース番号 */
      03 データ名D62  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D63  PIC X(1).        /*参照可否 */
      03 データ名D64  PIC X(1).        /*変更可否 */
      03 データ名D65  PIC X(1).        /*格納可否 */
      03 データ名D66  PIC X(1).        /*削除可否 */
      03 データ名D67  PIC X(1).        /*一括削除可否 */
      03 データ名D68  PIC X(1).        /*DB作成UTL追加可否 */
      03 データ名D69  PIC X(1).        /*フォーマットライト可否 */
      03 データ名D70  PIC X(1).        /*店群構成 */
      03 データ名D71  PIC X(1).        /*リクエストモード1 */
      03 データ名D72  PIC X(1).        /*リクエストモード2 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名D73  PIC X(1).        /*階層ランダム/シーケンシャル */
      03 データ名D74  PIC X(1).        /*ユーザファイル通番可否 */
      03 FILLER       PIC X(2).        /*予備 */
      03 データ名D75  PIC S9(9) COMP.  /*レコード種別数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D76  PIC S9(9) COMP.  /*レコード分割キー数 */
      03 データ名D77  PIC S9(4) COMP.  /*レコード分割キーのロケーション */
      03 データ名D78  PIC S9(4) COMP.  /*レコード分割キーのサイズ */
      03 データ名D79  PIC S9(9) COMP.  /* RDエリア分割キー数 */
      03 データ名D80  PIC S9(4) COMP.  /*RDエリア分割キーのロケーション */
      03 データ名D81  PIC S9(4) COMP.  /*RDエリア分割キーのサイズ */
      03 データ名D82  PIC S9(9) COMP.  /*最大階層レベル(FMB用) */
      03 データ名D83  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D84  PIC S9(9) COMP.  /*全キー長(レベル2〜一連番号までの合計サイズ)*/
      03 データ名D85  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D86  PIC S9(9) COMP.  /*レベル2キー構成要素情報 */
      03 データ名D87  PIC S9(9) COMP.  /*レベル2論理キー長 */
      03 データ名D88  PIC S9(9) COMP.  /*レベル2論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D89  PIC S9(9) COMP.  /*レベル3キー構成要素情報 */
      03 データ名D90  PIC S9(9) COMP.  /*レベル3論理キー長 */
      03 データ名D91  PIC S9(9) COMP.  /*レベル3論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D92  PIC S9(9) COMP.  /*レベル4キー構成要素情報 */
      03 データ名D93  PIC S9(9) COMP.  /*レベル4論理キー長 */
      03 データ名D94  PIC S9(9) COMP.  /*レベル4論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D95  PIC S9(9) COMP.  /*レベル5キー構成要素情報 */
      03 データ名D96  PIC S9(9) COMP.  /*レベル5論理キー長 */
      03 データ名D97  PIC S9(9) COMP.  /*レベル5論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D98  PIC S9(9) COMP.  /*レベル6キー構成要素情報 */
      03 データ名D99  PIC S9(9) COMP.  /*レベル6論理キー長 */
      03 データ名D100  PIC S9(9) COMP. /*レベル6論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名D101  PIC S9(9) COMP. /*レベル7キー構成要素情報 */
      03 データ名D102  PIC S9(9) COMP. /*レベル7論理キー長 */
      03 データ名D103  PIC S9(9) COMP. /*レベル7論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D104  PIC S9(9) COMP.  /*一連番号構成要素情報 */
      03 データ名D105  PIC S9(9) COMP.  /*一連番号サイズ */
      03 FILLER       PIC X(8).          /*予備 */
      03 データ名D106  ADDRESS.         /*レコード分割キー一覧アドレス */
      03 データ名D107  ADDRESS.         /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(48).        /*予備 */
      03 FILLER       PIC X(1024).      /*予備 */

    02 データ名E       OCCURS n TIMES.  /*エントリ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名E01  PIC X(4).         /*識別子 */
      03 データ名E02  PIC S9(9) COMP.   /*エントリ部サイズ */
      03 データ名E03  PIC X(1).         /*種別 */
      03 FILLER       PIC X(3).          /*予備 */
      03 データ名E04  PIC S9(9) COMP.    /*インタフェースエリア内のエントリ部ロケーション */
      03 データ名E05  PIC S9(9) COMP.    /*構成要素情報部ロケーション */
      03 データ名E06  PIC S9(9) COMP.    /*構成要素情報エントリ数 */
      03 FILLER       PIC X(72).         /*予備 */
      03 データ名E07  PIC S9(4) COMP.   /*レコード名称サイズ */
      03 データ名E08  PIC X(30).        /*レコード名称 */
      /*要求部*/
      03 データ名E09  PIC X(4).         /*要求コード */
      03 データ名E10  PIC X(1).         /*指示コード */
      03 データ名E11  PIC X(1).         /*検索コード */
      03 データ名E12  PIC X(1).         /*条件コード */
      03 FILLER       PIC X(1).         /*予備 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名E13  PIC X(1).        /*ポインタオプション */
      03 データ名E14  PIC X(1).        /*一括オプション */
      03 データ名E15  PIC X(1).        /*ステータス報告オプション */
      03 データ名E16  PIC X(1).        /*ページ切り替え */
      03 データ名E17  PIC X(1).        /*PCTFREE有効化 */
      03 データ名E18  PIC X(1).        /*二次インデクス使用抑止オプション */
      03 データ名E19  PIC X(1).        /*オプションコード7 */
      03 データ名E20  PIC X(1).        /*TP1/FSP領域 */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名E21  ADDRESS.         /*条件式格納エリアアドレス */
      03 データ名E22  ADDRESS.         /*構成要素指定エリアアドレス */
      03 データ名E23  ADDRESS.         /*データ格納エリアアドレス */
      03 データ名E24  PIC S9(9) COMP.  /*データ格納エリアサイズ */
      03 データ名E25  PIC S9(9) COMP.  /*事前割り当て要求ページ数 */
      03 FILLER       PIC X(56).        /*予備 */
      03 データ名E26  PIC X(4).         /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E27  PIC S9(9) COMP.  /*一連番号 */
      03 データ名E28  PIC X(16).       /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(80).        /*予備 */
      03 データ名E29  PIC X(256).      /*ユーザキー/論理キー格納エリア */
      /*結果部*/
      03データ名E30  PIC X(1).         /*リターンコード */
      03 データ名E31  PIC X(1).         /*サブコード */
      03 FILLER       PIC X(2).         /*予備 */
      03データ名E32  PIC S9(9) COMP.   /*詳細コード */
      03データ名E33  PIC S9(9) COMP.   /*エラーコード1 */
      03データ名E34  PIC S9(9) COMP.   /*エラーコード2 */
      03 データ名E35  PIC S9(18) COMP.  /*SQLCODE */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名E36  PIC X(32).        /*障害情報 */
      03 データ名E37  PIC S9(9) COMP.   /*レコードサイズ */
      03 データ名E38  PIC S9(9) COMP.   /*エントリ部ロケーション */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名E39  PIC S9(9) COMP.  /*事前割り当て済みページ数 */
      03 データ名E40  PIC X(4).         /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E41  PIC S9(9) COMP.  /*一連番号 */
      03 データ名E42  PIC X(16).       /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(24).        /*予備 */
      03 データ名E43  PIC X(24).       /*BES，RDエリアに関する情報 */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名E44   PIC X(1).       /*二次インデクス使用フラグ */
      03 データ名E45   PIC X(1).       /*ステータス */
      03 データ名E46   PIC S9(4) COMP. /* TP1/FSP領域 */
      03 データ名E47   PIC S9(9) COMP. /* TP1/FSP領域 */
      03 FILLER       PIC X(56).        /*予備 */
      /*定義情報部*/
      03 データ名E48  PIC S9(9) COMP.  /*レコード番号 */
      03 データ名E49  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名E50  PIC X(1).        /*検索可否 */
      03 データ名E51  PIC X(1).        /*変更可否 */
      03 データ名E52  PIC X(1).        /*格納可否 */
      03 データ名E53  PIC X(1).        /*削除可否 */
      03 データ名E54  PIC X(1).        /*一括削除可否 */
      03 データ名E55  PIC X(1).        /*構成要素指示可否*/
      03 FILLER       PIC X(1).         /*予備 */
      03 データ名E56  PIC X(1).        /*店群構成 */
      03 データ名E57  PIC X(1).        /*オカレンス属性 */
      03 データ名E58  PIC X(1).        /*子レコード有無 */
      03 データ名E59  PIC X(1).        /*ユーザポインタ有無 */
      03 データ名E60  PIC X(1).        /*ユーザキー有無 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名E61  PIC X(1).        /*リクエストモード1 */
      03 データ名E62  PIC X(1).        /*リクエストモード2 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名E63  PIC X(1).         /*階層ランダム/シーケンシャル */
      03 データ名E64  PIC X(1).        /*ユーザファイル通番取得可否 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名E65  PIC S9(9) COMP.  /*自身のレコード識別コード長 */
      03 データ名E66  PIC X(4).        /*自身のレコード識別コード */
      03 データ名E67  PIC S9(9) COMP.  /*レコード型番号 */
      03 データ名E68  PIC S9(9) COMP.  /*親のレコード型番号 */
      03 データ名E69  PIC S9(9) COMP.  /*レコードレベル番号 */
      03 FILLER       PIC S9(9) COMP.  /*予備 */
      03 データ名E70  PIC S9(9) COMP.  /*ユーザデータサイズ */
      03 データ名E71  PIC S9(9) COMP.  /*ユーザファイル通番部サイズ */
      03 データ名E72  PIC S9(9) COMP.  /*公開構成要素数 */
      03 データ名E73  PIC S9(9) COMP.  /*一連番号最小値 */
      03 データ名E74  PIC S9(9) COMP.  /*一連番号最大値 */
      03 FILLER       PIC X(52).        /*予備 */
      03 FILLER       PIC X(1024).      /*予備 */

    02 データ名F.                      /*キー報告エリア部   */
      03 データ名F01  PIC S9(4) COMP.  /*K1 */
      03 データ名F02  PIC S9(4) COMP.  /*K2 */
      03 データ名F03  PIC S9(4) COMP.  /*K3 */
      03 データ名F04  PIC S9(4) COMP.  /*K4 */
      03 データ名F05  PIC S9(4) COMP.  /*K5 */
      03 データ名F06  PIC S9(4) COMP.  /*K6 */
      03 データ名F07  PIC S9(4) COMP.  /*K7 */
      03 データ名F08  PIC S9(4) COMP.  /*K8 */
      03 データ名F09  PIC S9(4) COMP.  /*K9 */
      03 データ名F10  PIC S9(4) COMP.  /*K10 */
      03 データ名F11  PIC S9(4) COMP.  /*K11 */
      03 データ名F12  PIC S9(4) COMP.  /*K12 */
      03 データ名F13  PIC S9(4) COMP.  /*K13 */
      03 データ名F14  PIC S9(4) COMP.  /*K14 */
      03 データ名F15  PIC S9(4) COMP.  /*K15 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名F16  PIC X(n).        /*キー部 */

    02 データ名G       OCCURS n TIMES. /*構成要素情報部 */
      03 データ名G01  PIC X(4).        /*識別記号 */
      03 データ名G02  PIC S9(9) COMP.  /*構成要素番号 */
      03 データ名G03  PIC S9(4) COMP.  /*構成要素名称サイズ */
      03 データ名G04  PIC X(30).       /*構成要素名称 */
      03 データ名G05  PIC X(1).        /*データ属性 */
      03 データ名G06  PIC X(1).        /*構成要素属性 */
      03 データ名G07  PIC X(1).        /*構成要素属性 */
      03 FILLER        PIC X(1).        /*予備 */
      03 データ名G08  PIC S9(9) COMP.  /*ロケーション */
      03 データ名G09  PIC S9(9) COMP.  /*構成要素サイズ */
      03 データ名G10  PIC X(2).        /*ユーザ情報 */
      03 FILLER        PIC X(10).      /*予備 */

  01 一意名3.                           /*キーの容量表示 */
    02 データ名H01     PIC S9(9) COMP.  /*エントリ数 */
    02 FILLER          PIC X(4).         /*予備 */
    02 データ名H02     OCCURS n TIMES.  /*キーのエントリ */
      03 データ名H03  PIC X(256).       /*キー(一連番号を除く) */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名H04  PIC S9(9) COMP.  /*割り当て済み一連番号 */

機能

インタフェースエリアに指定されたデータベースの各種システム構成を取得します。取得できる項目を次に示します。

キーの容量情報（割り当て済み一連番号）

キーの容量情報を要求した場合は，指定されたDBKEYに対する割り当て済み一連番号を返却します。キーの容量情報はCBLEESDH('STRT ')発行直後に要求してください。CBLEESDH('ACCS ')およびCBLEESDH('CLAR ')後に要求するとエラーになります。

UAPは，CBLEESDH('STRT ')に指定したインタフェースエリアを一意名2に設定します。

個別開始実行要求オプションに'Y'を指定する場合は，CBLEESDH('STRT ')の記述を参照し，インタフェースエリアを一意名2に指定してください。すでにCBLEESDH('STRT ')発行済みだった場合，個別開始実行要求オプションは無視します。

表1‒63　システム構成表示

項番

項目

DB種別

FMB

DAM

MAM

TAM

SAM

ルート

子

1

キーの容量情報

×

×

○

○

○

○

（凡例）

○：指定可

×：指定不可

図1‒38　割り当て済み一連番号の例

UAPで値を設定するデータ領域

データ名A

構成表示を示すコード「VALUE 'REFS△△△△'」を設定します。

データ名C

0を設定します。

一意名2

インタフェースエリアを設定します。

要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

ヘッダ部−要求部

機能コード

構成表示を示す機能コードを設定します。

'REFS'：構成表示

要求コード1

インタフェースエリアの確保方法を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の要求コード1の記載内容を参照し，値を設定してください。

要求コード2，要求コード3，要求コード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の要求コード2，要求コード3，要求コード4の記載内容を参照し，値を設定してください。

アクセスモード1

アクセスモードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のアクセスモード1の記載内容を参照し，値を設定してください。

アクセスモード2，アクセスモード3，アクセスモード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のアクセスモード2，アクセスモード3，アクセスモード4の記載内容を参照し，値を設定してください。

排他モード1

排他モードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード1の記載内容を参照し，値を設定してください。

排他モード2

排他の解放タイミングを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード2の記載内容を参照し，値を設定してください。

排他モード3

排他競合時の処置を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード3の記載内容を参照し，値を設定してください。

排他モード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の排他モード4の記載内容を参照し，値を設定してください。

データエリア形式

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のデータエリア形式の記載内容を参照し，値を設定してください。

店番限定有無

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の店番限定有無の記載内容を参照し，値を設定してください。

順アクセス内基点条件オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の順アクセス内基点条件オプションの記載内容を参照し，値を設定してください。

複数レコードの検索専用オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')の複数レコードの検索専用オプションの記載内容を参照し，値を設定してください。

個別開始/終了一括要求オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま指定します。

個別開始実行要求オプション

システム構成表示の処理の中で個別開始をするかどうかを指定します。すでに個別開始済みの場合，本オプション指定値は無視します。

'Y'：システム構成表示の処理の中で個別開始を実行する

'N'：指示なし

'△'：指示なし

オプションコード7，オプションコード8

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のオプションコード7，オプションコード8の記載内容を参照し，値を設定してください。

データベースアクセス用エントリリスト

ZEROを設定します。

システム構成表示エリアアドレス

エントリ部の要求コードに設定する値によって異なります。

・'LCAP'（キーの容量情報）を指定する場合

　システム構成表示エリアを確保したあと，アドレスを設定します。

　システム構成表示エリアには，容量を取得したいDBKEY（一連番号を除く）とキーのエントリ数を設定します。エントリ数には1以上の値を設定します。DBKEYが一連番号だけのSDBに対して要求した場合，キー値の設定内容は無視し，割り当て済み一連番号を設定します。

図1‒39　システム構成表示エリア（キーの容量情報）

データベース名称サイズ指定

ZEROを設定します。

データベース名称指定

すべてX'00'を設定します。

データベースキー指定エリアアドレス

ZEROを設定します。

旧キー報告エリアアドレス

ZEROを設定します。

RDエリア名称格納エリア

ZEROを設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のRDエリア名称格納エリアの記載内容を参照し，値を設定してください。

RDエリア名称格納エリアサイズ

ZEROを設定します。ただし，個別開始実行要求オプションに'Y'を指定している場合は，CBLEESDH('STRT ')のRDエリア名称格納エリアサイズの記載内容を参照し，値を設定してください。

店番サイズ

ZEROを設定します。

店番

すべてX'00'を設定します。

エントリ部−要求部

エントリ部の先頭エントリ（DB対応エントリ）に次の値を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

要求コード

システム構成表示を示す要求コードを設定します。

'LCAP'：キーの容量情報

TP1/EEから値が返されるデータ領域

一意名2

インタフェースエリアの各項目に値が設定されています。

ステータスコードが'00000'または'04310'の場合だけ参照可能です。

次に記載のない項目については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'：処理済み

データ名B

ステータスコードを5桁の数字で返します。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

04301

引数に設定した値が間違っています。

要求コード（データ名A）の値が不正です。

インタフェースエリア（一意名2）が不正（NULL）です。

04302

発行条件が不正です。

TP1/FSPの環境下にありません。

SDBハンドラ機能が有効（sdh_use=Y）ではありません。

リソースマネジャが定義されていないか，リソースマネジャにHiRDBが定義されていません。

04310

構造型DBのアクセスに失敗しました。

詳細は「1.4　SDHステータスコード一覧」を参照してください。

(6)　CBLEESDH('FNSH ')

名称

個別終了要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEESDH' USING 一意名1 一意名2

DATA DIVISIONの指定
01 一意名1.
    02 データ名A  PIC X(8) VALUE 'FNSH    '.
    02 データ名B  PIC X(5).
    02 FILLER     PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
  01 一意名2.                           /*インタフェースエリア */
    02 データ名D.                       /*ヘッダ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名D01  PIC X(4).         /*ヘッダ識別子 */
      03 データ名D02  PIC S9(9) COMP.   /*ヘッダ部サイズ */
      03 データ名D03  PIC X(1).         /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D04  PIC S9(9) COMP.  /*インタフェースエリア全体サイズ */
      03 データ名D05  ADDRESS.         /*自インタフェースエリアのテンプレートアドレス */
      03 データ名D06  PIC S9(9) COMP.  /*エントリ部先頭ロケーション */
      03 データ名D07  PIC S9(9) COMP.  /*エントリ部サイズ */
      03 データ名D08  PIC S9(9) COMP.  /*エントリ部数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D09  PIC S9(9) COMP.  /*キー報告エリア部ロケーション */
      03 データ名D10  PIC S9(9) COMP.  /*キー報告エリア部サイズ */
      03 データ名D11  PIC S9(9) COMP.  /*構成要素情報表示部ロケーション */
      03 データ名D12  PIC S9(9) COMP.  /*構成要素情報表示部エントリサイズ */
      03 FILLER       PIC X(40).        /*予備 */
      03 データ名 D13  PIC S9(4) COMP.  /*データベース名称サイズ */
      03 データ名 D14  PIC X(30).       /*データベース名称 */
      /*要求部*/
      03 データ名D15  PIC X(4).        /*機能コード */
      03 データ名D16  PIC X(1).        /*要求コード1 */
      03 データ名D17  PIC X(1).        /*要求コード2 */
      03 データ名D18  PIC X(1).        /*要求コード3 */
      03 データ名D19  PIC X(1).        /*要求コード4 */
      03 データ名D20  PIC X(1).        /*アクセスモード1 */
      03 データ名D21  PIC X(1).        /*アクセスモード2 */
      03 データ名D22  PIC X(1).        /*アクセスモード3 */
      03 データ名D23  PIC X(1).        /*アクセスモード4 */
      03 データ名D24  PIC X(1).        /*排他モード1 */
      03 データ名D25  PIC X(1).        /*排他モード2 */
      03 データ名D26  PIC X(1).        /*排他モード3 */
      03 データ名D27  PIC X(1).        /*排他モード4 */
      03 データ名D28  PIC X(1).        /*データエリア形式 */
      03 データ名D29  PIC X(1).        /*店番限定有無 */
      03 データ名D30  PIC X(1).        /*順アクセス内基点条件オプション */
      03 データ名D31  PIC X(1).        /*複数レコードの検索専用オプション */
      03 データ名D32  PIC X(1).        /*個別開始/終了一括要求オプション */
      03 データ名D33  PIC X(1).       /*個別開始実行要求オプション */
      03 データ名D34  PIC X(1).       /*オプションコード7 */
      03 データ名D35  PIC X(1).       /*オプションコード8 */
      03 FILLER       PIC X(8).        /*予備 */
      03 データ名D36  ADDRESS.        /*データベースアクセス用エントリリストアドレス */
      03 データ名D37  ADDRESS.        /*システム構成表示エリアアドレス */
      03 データ名D38  PIC S9(4) COMP.  /*データベース名称サイズ指定 */
      03 データ名 D39  PIC X(30).      /*データベース名称指定 */
      03 データ名D40  ADDRESS.         /*データベースキー指定エリアアドレス */
      03 データ名D41  ADDRESS.         /* TP1/FSP領域 */
      03 FILLER       PIC X(4).         /*予備 */
      03 FILLER       PIC X(12).        /*予備 */
      03 データ名D42  ADDRESS.         /*RDエリア名称格納エリア */
      03 データ名D43  PIC S9(9) COMP.    /*RDエリア名称格納エリアサイズ */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D44  PIC S9(4) COMP.  /*店番サイズ */
      03 データ名D45  PIC X(14).       /*店番 */
      03 FILLER       PIC X(240).       /*予備 */
      /*結果部*/
      03データ名D46  PIC X(1).         /*リターンコード */
      03 データ名D47  PIC X(1).         /*サブコード */
      03 FILLER       PIC X(2).         /*予備 */
      03データ名D48  PIC S9(9) COMP.   /*詳細コード */
      03データ名D49  PIC S9(9) COMP.   /*エラーコード1 */
      03データ名D50  PIC S9(9) COMP.   /*エラーコード2 */
      03 データ名D51  PIC X(5).        /*SDHステータスコード */
      03 FILLER       PIC X(1).         /*予備 */
      03 データ名D52  PIC X(1).        /*暗黙的ロールバック有無 */
      03 データ名D53  PIC X(1).        /*個別開始実行要求結果 */
      03 データ名D54  PIC S9(18) COMP.  /*SQLCODE */
      03 データ名D55  PIC X(32).        /*障害情報 */
      03 データ名D56  ADDRESS.          /*データベース名称リストアドレス */
      03 データ名D57  ADDRESS.         /*アクセス機能用インタフェースエリアアドレス */
      03 データ名D58  PIC S9(9) COMP.  /*エントリ部ロケーション */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D59  ADDRESS.         /*レコード分割キー一覧アドレス */
      03 データ名D60  ADDRESS.         /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(152).      /*予備 */
      /*定義情報部*/
      03 データ名D61  PIC S9(9) COMP.  /*データベース番号 */
      03 データ名D62  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名D63  PIC X(1).        /*参照可否 */
      03 データ名D64  PIC X(1).        /*変更可否 */
      03 データ名D65  PIC X(1).        /*格納可否 */
      03 データ名D66  PIC X(1).        /*削除可否 */
      03 データ名D67  PIC X(1).        /*一括削除可否 */
      03 データ名D68  PIC X(1).        /*DB作成UTL追加可否 */
      03 データ名D69  PIC X(1).        /*フォーマットライト可否 */
      03 データ名D70  PIC X(1).        /*店群構成 */
      03 データ名D71  PIC X(1).        /*リクエストモード1 */
      03 データ名D72  PIC X(1).        /*リクエストモード2 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名D73  PIC X(1).         /*階層ランダム/シーケンシャル */
      03 データ名D74  PIC X(1).         /*ユーザファイル通番可否 */
      03 FILLER       PIC X(2).         /*予備 */
      03 データ名D75  PIC S9(9) COMP.  /*レコード種別数 */
      03 FILLER       PIC X(4).         /*予備 */
      03 データ名D76  PIC S9(9) COMP.  /*レコード分割キー数 */
      03 データ名D77  PIC S9(4) COMP.  /*レコード分割キーのロケーション */
      03 データ名D78  PIC S9(4) COMP.  /*レコード分割キーのサイズ */
      03 データ名D79  PIC S9(9) COMP.  /* RDエリア分割キー数 */
      03 データ名D80  PIC S9(4) COMP.  /*RDエリア分割キーのロケーション */
      03 データ名D81  PIC S9(4) COMP.  /*RDエリア分割キーのサイズ */
      03 データ名D82  PIC S9(9) COMP.  /*最大階層レベル(FMB用) */
      03 データ名D83  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D84  PIC S9(9) COMP.  /*全キー長(レベル2〜一連番号までの合計サイズ)*/
      03 データ名D85  PIC S9(9) COMP.  /* TP1/FSP領域 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D86  PIC S9(9) COMP.  /*レベル2キー構成要素情報 */
      03 データ名D87  PIC S9(9) COMP.  /*レベル2論理キー長 */
      03 データ名D88  PIC S9(9) COMP.  /*レベル2論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D89  PIC S9(9) COMP.  /*レベル3キー構成要素情報 */
      03 データ名D90  PIC S9(9) COMP.  /*レベル3論理キー長 */
      03 データ名D91  PIC S9(9) COMP.  /*レベル3論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D92  PIC S9(9) COMP.  /*レベル4キー構成要素情報 */
      03 データ名D93  PIC S9(9) COMP.  /*レベル4論理キー長 */
      03 データ名D94  PIC S9(9) COMP.  /*レベル4論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D95  PIC S9(9) COMP.  /*レベル5キー構成要素情報 */
      03 データ名D96  PIC S9(9) COMP.  /*レベル5論理キー長 */
      03 データ名D97  PIC S9(9) COMP.  /*レベル5論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D98  PIC S9(9) COMP.  /*レベル6キー構成要素情報 */
      03 データ名D99  PIC S9(9) COMP.  /*レベル6論理キー長 */
      03 データ名D100  PIC S9(9) COMP. /*レベル6論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D101  PIC S9(9) COMP. /*レベル7キー構成要素情報 */
      03 データ名D102  PIC S9(9) COMP. /*レベル7論理キー長 */
      03 データ名D103  PIC S9(9) COMP. /*レベル7論理キー種類数 */
      03 FILLER       PIC S9(9) COMP.   /*予備 */
      03 データ名D104  PIC S9(9) COMP. /*一連番号構成要素情報 */
      03 データ名D105  PIC S9(9) COMP. /*一連番号サイズ */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名D106  ADDRESS.        /*レコード分割キー一覧アドレス */
      03 データ名D107  ADDRESS.        /*RDエリア分割キー一覧アドレス */
      03 FILLER       PIC X(48).       /*予備 */
      03 FILLER       PIC X(1024).     /*予備 */

    02 データ名E       OCCURS n TIMES. /*エントリ部 */
      /*インタフェースエリア構成情報部*/
      03 データ名E01  PIC X(4).        /*識別子 */
      03 データ名E02  PIC S9(9) COMP.  /*エントリ部サイズ */
      03 データ名E03  PIC X(1).        /*種別 */
      03 FILLER       PIC X(3).         /*予備 */
      03 データ名E04  PIC S9(9) COMP.  /*インタフェースエリア内のエントリ部ロケーション */
      03 データ名E05  PIC S9(9) COMP.  /*構成要素情報部ロケーション */
      03 データ名E06  PIC S9(9) COMP.  /*構成要素情報エントリ数 */
      03 FILLER       PIC X(72).        /*予備 */
      03 データ名E07  PIC S9(4) COMP.  /*レコード名称サイズ */
      03 データ名E08  PIC X(30).       /*レコード名称 */
      /*要求部*/
      03 データ名E09  PIC X(4).        /*要求コード */
      03 データ名E10  PIC X(1).        /*指示コード */
      03 データ名E11  PIC X(1).        /*検索コード */
      03 データ名E12  PIC X(1).        /*条件コード */
      03 FILLER       PIC X(1).         /*予備 */
      03 FILLER       PIC X(8).         /*予備 */
      03 データ名E13  PIC X(1).         /*ポインタオプション */
      03 データ名E14  PIC X(1).         /*一括オプション */
      03 データ名E15  PIC X(1).         /*ステータス報告オプション */
      03 データ名E16  PIC X(1).         /*ページ切り替え */
      03 データ名E17  PIC X(1).         /*PCTFREE有効化 */
      03 データ名E18  PIC X(1).         /*二次インデクス使用抑止オプション */
      03 データ名E19  PIC X(1).         /*オプションコード7 */
      03 データ名E20  PIC X(1).         /*TP1/FSP領域 */
      03 FILLER       PIC X(40).         /*予備 */
      03 データ名E21  ADDRESS.          /*条件式格納エリアアドレス */
      03 データ名E22  ADDRESS.          /*構成要素指定エリアアドレス */
      03 データ名E23  ADDRESS.          /*データ格納エリアアドレス */
      03 データ名E24  PIC S9(9) COMP.   /*データ格納エリアサイズ */
      03 データ名E25  PIC S9(9) COMP.  /*事前割り当て要求ページ数*/
      03 FILLER       PIC X(56).         /*予備 */
      03 データ名E26  PIC X(4).          /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E27  PIC S9(9) COMP.    /*一連番号 */
      03 データ名E28  PIC X(16).         /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(80).          /*予備 */
      03 データ名E29  PIC X(256).        /*ユーザキー/論理キー格納エリア */
      /*結果部*/
      03 データ名E30  PIC X(1).          /*リターンコード */
      03 データ名E31  PIC X(1).          /*サブコード */
      03 FILLER       PIC X(2).          /*予備 */
      03 データ名E32  PIC S9(9) COMP.    /*詳細コード */
      03 データ名E33  PIC S9(9) COMP.    /*エラーコード1 */
      03 データ名E34  PIC S9(9) COMP.    /*エラーコード2 */
      03 データ名E35  PIC S9(18) COMP.   /*SQLCODE */
      03 FILLER       PIC X(8).           /*予備 */
      03 データ名E36  PIC X(32).          /*障害情報 */
      03 データ名E37  PIC S9(9) COMP.     /*レコードサイズ */
      03 データ名E38  PIC S9(9) COMP.     /*エントリ部ロケーション */
      03 FILLER       PIC X(4).            /*予備 */
      03 データ名E39  PIC S9(9) COMP.      /* 事前割り当て済みページ数 */
      03 データ名E40  PIC X(4).           /*レベル2論理キー(TAM(DAM)用) */
      03 データ名E41  PIC S9(9) COMP.    /*一連番号 */
      03 データ名E42  PIC X(16).         /*ダイレクトアクセス情報 */
      03 FILLER       PIC X(24).          /*予備 */
      03 データ名E43  PIC X(24).         /*BES，RDエリアに関する情報 */
      03 FILLER       PIC X(40).          /*予備 */
      03 データ名E44   PIC X(1).         /*二次インデクス使用フラグ */
      03 データ名E45   PIC X(1).         /*ステータス */
      03 データ名E46   PIC S9(4) COMP.   /* TP1/FSP領域 */
      03 データ名E47   PIC S9(9) COMP.   /* TP1/FSP領域 */
      03 FILLER       PIC X(56).         /*予備 */
      /*定義情報部*/
      03 データ名E48  PIC S9(9) COMP.    /*レコード番号 */
      03 データ名E49  PIC X(1).          /*種別 */
      03 FILLER       PIC X(3).           /*予備 */
      03 データ名E50  PIC X(1).          /*検索可否 */
      03 データ名E51  PIC X(1).          /*変更可否 */
      03 データ名E52  PIC X(1).          /*格納可否 */
      03 データ名E53  PIC X(1).          /*削除可否 */
      03 データ名E54  PIC X(1).          /*一括削除可否 */
      03 データ名E55  PIC X(1).          /*構成要素指示可否 */
      03 FILLER       PIC X(1).           /*予備 */
      03 データ名E56  PIC X(1).          /*店群構成 */
      03 データ名E57  PIC X(1).          /*オカレンス属性 */
      03 データ名E58  PIC X(1).          /*子レコード有無 */
      03 データ名E59  PIC X(1).          /*ユーザポインタ有無 */
      03 データ名E60  PIC X(1).          /*ユーザキー有無 */
      03 FILLER       PIC X(4).           /*予備 */
      03 データ名E61  PIC X(1).          /*リクエストモード1 */
      03 データ名E62  PIC X(1).          /*リクエストモード2 */
      03 FILLER       PIC X(2).           /*予備 */
      03 データ名E63  PIC X(1).          /*階層ランダム/シーケンシャル */
      03 データ名E64  PIC X(1).          /*ユーザファイル通番取得可否 */
      03 FILLER       PIC X(2).          /*予備 */
      03 データ名E65  PIC S9(9) COMP.    /*自身のレコード識別コード長 */
      03 データ名E66  PIC X(4).          /*自身のレコード識別コード */
      03 データ名E67  PIC S9(9) COMP.    /*レコード型番号 */
      03 データ名E68  PIC S9(9) COMP.    /*親のレコード型番号 */
      03 データ名E69  PIC S9(9) COMP.    /*レコードレベル番号 */
      03 FILLER       PIC S9(9) COMP.     /*予備 */
      03 データ名E70  PIC S9(9) COMP.    /*ユーザデータサイズ */
      03 データ名E71  PIC S9(9) COMP.    /*ユーザファイル通番部サイズ */
      03 データ名E72  PIC S9(9) COMP.    /*公開構成要素数 */
      03 データ名E73  PIC S9(9) COMP.    /*一連番号最小値 */
      03 データ名E74  PIC S9(9) COMP.    /*一連番号最大値 */
      03 FILLER       PIC X(52).          /*予備 */
      03 FILLER       PIC X(1024).        /*予備 */

    02 データ名F.                        /*キー報告エリア部 */
      03 データ名F01  PIC S9(4) COMP.    /*K1 */
      03 データ名F02  PIC S9(4) COMP.    /*K2 */
      03 データ名F03  PIC S9(4) COMP.    /*K3 */
      03 データ名F04  PIC S9(4) COMP.    /*K4 */
      03 データ名F05  PIC S9(4) COMP.    /*K5 */
      03 データ名F06  PIC S9(4) COMP.    /*K6 */
      03 データ名F07  PIC S9(4) COMP.    /*K7 */
      03 データ名F08  PIC S9(4) COMP.    /*K8 */
      03 データ名F09  PIC S9(4) COMP.    /*K9 */
      03 データ名F10  PIC S9(4) COMP.    /*K10 */
      03 データ名F11  PIC S9(4) COMP.    /*K11 */
      03 データ名F12  PIC S9(4) COMP.    /*K12 */
      03 データ名F13  PIC S9(4) COMP.    /*K13 */
      03 データ名F14  PIC S9(4) COMP.    /*K14 */
      03 データ名F15  PIC S9(4) COMP.    /*K15 */
      03 FILLER       PIC X(2).           /*予備 */
      03 データ名F16  PIC X(n).          /*キー部 */

    02 データ名G       OCCURS n TIMES.  /*構成要素情報部 */
      03 データ名G01  PIC X(4).         /*識別記号 */
      03 データ名G02  PIC S9(9) COMP.   /*構成要素番号 */
      03 データ名G03  PIC S9(4) COMP.   /*構成要素名称サイズ */
      03 データ名G04  PIC X(30).        /*構成要素名称 */
      03 データ名G05  PIC X(1).         /*データ属性 */
      03 データ名G06  PIC X(1).         /*構成要素属性 */
      03 データ名G07  PIC X(1).         /*構成要素属性 */
      03 FILLER        PIC X(1).         /*予備 */
      03 データ名G08  PIC S9(9) COMP.   /*ロケーション */
      03 データ名G09  PIC S9(9) COMP.   /*構成要素サイズ */
      03 データ名G10  PIC X(2).         /*ユーザ情報 */
      03 FILLER        PIC X(10).       /*予備 */

機能

インタフェースエリアに指定された構造型データベースへのアクセスを終了します。

UAPは，CBLEESDH('STRT ')に指定したインタフェースエリアを一意名2に設定します。

UAPで値を設定するデータ領域

データ名A

個別終了要求を示すコード「VALUE 'FNSH△△△△'」を設定します。

データ名C

0を設定します。

一意名2

インタフェースエリアを設定します。

要求時に次の項目を設定します。設定可能な値以外を設定した場合はエラーとなります。

次に記載のない項目についてはTP1/FSPは参照しません。

ヘッダ部−要求部

機能コード

個別終了要求する機能コードを設定します。

'FNSH'：個別終了要求

要求コード1

インタフェースエリアの確保方法を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

要求コード2

トランザクション実行中に，当該インタフェースエリアを使用してレコードの格納/変更/削除/一括削除を1回以上要求し，かつ成功している状態で，CBLEESDH('FNSH ')を発行した場合のリターン値を選択します。

'C'：CBLEESDH('FNSH ')をエラーリターン（SDHステータスコード20000）させます。

'△'：指示なし

表1‒64　関数リターン値選択

項番

要求コード2

当該インタフェースエリアでレコードに対して行った要求

参照だけ（格納/変更/削除/一括削除を要求していない）

または何も行っていない

格納/変更/削除/一括削除を1回以上要求し，かつ成功している

1

'C'

成功

エラー

2

'△'

成功

成功

要求コード3，要求コード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

アクセスモード1

アクセスモードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

アクセスモード2，アクセスモード3，アクセスモード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

排他モード1

排他モードを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

排他モード2

排他の解放タイミングを設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

排他モード3

排他競合時の処置を設定します。

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

排他モード4

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

データエリア形式

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

店番限定有無

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

順アクセス内基点条件オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

複数レコードの検索専用オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

個別開始/終了一括要求オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま指定します。

個別開始実行要求オプション

CBLEESDH('STRT ')発行時に設定した値をそのまま指定してください。

オプションコード7，オプションコード8

CBLEESDH('STRT ')発行時に設定した値をそのまま設定します。

データベースアクセス用エントリリストアドレス

ZEROを設定します。

システム構成表示エリアアドレス

ZEROを設定します。

データベース名称サイズ指定

ZEROを設定します。

データベース名称指定

すべてX'00'を設定します。

データベースキー指定エリアアドレス

ZEROを設定します。

旧キー報告エリアアドレス

ZEROを設定します。

RDエリア名称格納エリア

ZEROを設定します。

RDエリア名称格納エリアサイズ

ZEROを設定します。

店番サイズ

ZEROを設定します。

店番

すべてX'00'を設定します。

TP1/EEから値が返されるデータ領域

一意名2

インタフェースエリアの各項目に値が設定されています。

ステータスコードが'00000'または'04310'の場合だけ参照可能です。

次に記載のない項目については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がトラブルシュートで使用する情報を設定します。

データ名B

ステータスコードを5桁の数字で返します。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

04301

引数に設定した値が間違っています。

要求コード（データ名A）の値が不正です。

インタフェースエリア（一意名2）が不正（NULL）です。

04302

発行条件が不正です。

TP1/FSPの環境下にありません。

SDBハンドラ機能が有効（sdh_use=Y）ではありません。

リソースマネジャが定義されていないか，リソースマネジャにHiRDBが定義されていません。

04310

構造型DBのアクセスに失敗しました。

詳細は「1.4　SDHステータスコード一覧」を参照してください。

1.4　SDHステータスコード一覧

表1‒65　SDHステータスコード一覧

SDHステータスコード

処理結果

意味

API

リ

タ

ー

ン

コ

ー

ド

サ

ブ

コ

ード

I

N

I

T

S

T

R

T

ACCS

C

L

A

R

R

E

F

S

F

N

S

H

正常

異常

F

T

C

H

M

O

D

F

S

T

O

R

E

R

A

S

F

T

C

A

00000

○

−

正常終了。

○

○

○

○

○

○

○

○

○

○

0

0

00100

○

−

レコードが見つかりません。

−

−

○

−

−

−

○

−

−

−

D

1

01110

−

○

デッドロックが発生しました。

資源がほかのトランザクションで占有されており，排他待ち時間を超過しました。

HiRDBで排他制御の領域が不足しました。

無排他モードの参照系SDBデータベースアクセスで，更新系SDBデータベースアクセスとの競合が発生しました。

−

○

○

○

○

○

○

○

○

○

A

1

01810

−

○

レコードは，すでに存在します。

−

−

−

−

○

−

−

−

−

−

1

D

01910

−

○

リソースマネジャと未接続です。

HiRDBのRDエリアがクローズしているか，RDエリアが閉塞状態です。

−

−

○

○

○

○

○

○

○

○

B

1

10070

○

−

データエリアが満杯になりました。

−

−

−

−

−

−

○

−

−

−

D

3

10072

○

−

データの終わりを検出しました。

−

−

○

−

−

−

○

−

−

−

D

2

11102

−

○

メモリが不足しました。

TP1/EEのワークメモリが不足しました。

HiRDBのグローバルバッファ面数が不足しました。

HiRDBサーバのメモリが不足しました。

−

○

○

○

○

○

○

○

○

○

C

1

11104

−

○

入出力エラーが発生しました。

HiRDBとのインタフェースでエラーが発生しました。

−

○

○

○

○

○

○

○

○

○

2

1

11108

−

○

RDエリアの容量が不足しました。

一連番号最大値を超えて格納しようとしました。

−

−

−

−

○

−

−

−

−

−

C

2

11171

−

○

店群順アクセス/DAM順アクセス用のRDエリア名称が指定されていません。かつ，基点条件ありとなる条件式の指定もありません。

SDBデータベース定義で，RDエリア分割キーの構成要素よりも前に構成要素を定義し，その構成要素についてKEYDEFを定義していない，またはKEYDEFに2個以上のDATAを定義したSDBに対して，店群順アクセス/DAM順アクセスを要求しています。

−

−

○

−

−

−

○

−

−

−

1

F

11172

−

○

データ格納エリアに指定されたサイズは，対象レコードのユーザデータサイズ未満です。

複数レコードの検索で，データ格納エリアに指定されたサイズが，指定可能な範囲に入っていません。

−

−

○

○

○

−

○

−

−

−

1

6

11173

−

○

内部矛盾が発生しました。

−

○

○

○

○

○

○

○

○

○

1

L

11175

−

○

FMBに対して指定されたRDエリア分割キーが不正です。

−

−

○

−

○

−

○

−

−

−

1

B

11176

−

○

FMBに対して論理キーが不正です。

−

−

○

−

○

−

○

−

−

−

1

B

11177

−

○

DAM/TAM/MAM/SAMに対して指定された論理キーが不正です。

−

−

○

−

○

−

○

○

○

−

1

B

11201

−

○

アクセスモードが参照モードのまま，変更・格納・削除・一括削除を要求しました。

−

−

−

○

○

○

−

○

−

−

1

8

11210

−

○

条件式または格納/変更データに指定した値が不正です。

PACKED属性の構成要素に対して不正な形式の値を指定しました。

−

−

○

○

○

−

○

−

−

−

1

9

11272

−

○

インタフェースエリア指定値不正です。

アクセスモードと排他モードの組み合わせが不正です。

検索コードが不正です。

条件コードが不正です。

DB種別に指定できない値を指定しました。

要求数が0です。

複数エントリで異なる要求を指示しています。

エントリリスト指定で複数か所からが同一インタフェースエリアエントリを示しています。

SDB未サポート機能を要求しています。

個別開始時に指定した値と異なる値を設定して要求しました。

条件が指定されていないため，対象レコードおよびキーを特定できませんでした。

RDエリア名称格納エリアが指定されていません。

RDエリア名称長が不正です。

DAM/MAM/TAM/SAMの場合，複数エントリ同時に要求しました。

構成要素指定の検索後に，削除処理を要求しました。

複数レコードの検索でキー以外の条件を指定しました。

FMB以外に対して，複数レコードの検索専用オプションの'D'または'S'を指定しました。

二次インデクス使用抑止オプション指定値と，DB種別や指示コードなどの組み合わせが不正です。

○

○

○

○

○

○

○

○

○

○

1

1

11275

−

○

インタフェースエリアのデータベース名称が不正です。

○

−

−

−

−

−

−

−

−

−

1

7

11276

−

○

条件式または指定したキーが不正です。

条件式に指定した構成要素名称，論理式，比較記号が正しくありません。

キーの比較記号に'NE'が指定されました。

構成要素名称が存在しません。

終了記号の位置が不正です。

条件式の数が不正です。

集団項目の構成要素を指定しました。

キー以外の条件にユーザデータ以外の構成要素を指定しました。

システム構成表示（キーの容量）が不正です。

エントリ数不正です。

−

−

○

−

○

−

○

○

○

−

1

2

11277

−

○

次の条件は範囲指定ではありません。

キーの条件式

ユーザキーの条件式

−

−

○

−

−

−

○

−

−

−

1

5

11278

−

○

要求発行順序不正です。

検索しないで変更や削除を要求しました。

個別開始しないでDBアクセスを要求しました。

システム構成情報表示が個別開始直後以外に要求されました。

ロールバック指示が発行されている状態で，要求しました。

DB対応エントリで検索したあと，レコード対応エントリで変更しようとしました。またはその逆を行いました。

個別開始時の複数レコードの検索専用オプション設定値と，DBアクセス時の要求種別の組み合わせが不正です。

−

○

○

○

○

○

○

○

○

○

1

3

11279

−

○

構成要素指定アクセスに指定された値が正しくありません。

構成要素数が0です。

構成要素番号が昇順になっていません。

構成要素名称および番号が存在しません。

同一の構成要素を指定しています。

集団項目の構成要素を指定しました。

指定できない構成要素名称および構成要素番号を指定しました。

−

−

−

−

○

−

−

−

−

−

1

E

11282

−

○

ユーザキーを更新しました。

−

−

−

○

−

−

−

−

−

−

1

C

11287

−

○

親レコードを検索または追加していません。

−

−

○

−

○

−

−

−

−

−

1

H

11290

−

○

構成要素指定アクセスに指定された値が正しくありません。

構成要素数が0です。

構成要素番号が昇順になっていません。

構成要素名称および番号が存在しません。

同一の構成要素を指定しています。

集団項目の構成要素を指定しました。

指定できない構成要素名称および構成要素番号を指定しました。

−

−

○

−

−

−

−

−

−

−

1

4

11292

−

○

同じレコードに対してアクセス要求が重複しています。

同一トランザクション内で，データベース種別がFMBのデータベースの同じルートレコードのレコードにアクセスしようとしました。

同一トランザクション内で，データベース種別がFMB以外のデータベースの同じレコード型のレコードをアクセスしようとしました。

−

−

○

○

○

○

○

○

○

−

1

3

11971

−

○

HiRDBサーバとの通信でエラーが発生しました。

HiRDBサーバが停止またはダウンしました。

タイマ監視時間を超過しました。

予期しないエラーが発生しました。

−

○

○

○

○

○

○

○

○

○

B

3

20000

○

−

更新系DMLを行った状態で個別終了をエラーにするオプションを設定したためエラーとなりました。

−

−

−

−

−

−

−

−

−

○

E

1

（凡例）

○：設定する

−：対象外

1.5　オフラインバッチ用インタフェース

1.5.1　オフラインバッチ用UAP

(1)　UAPの作成

UAPはTP1/EEと同様の手順で作成します。

ただし，UAP実行形式ファイルの作成は不要です。実行形式ファイルは，オフラインバッチ起動コマンドとして製品が提供します。

(a)　UAPのコーディング

UAPのコーディングは，TP1/EEと同様の規則で行います。

オフラインバッチ用のUAP内で使用できるAPI関数は，TP1/EEとは異なります。詳細は「1.5.2　オフラインバッチ用ライブラリ関数」を参照してください。

(2)　オフラインバッチの実行

オフラインバッチ起動コマンドを実行します。起動コマンドは，ユーザサービス関数の完了または何らかの異常が発生するまで終了しません。

起動コマンドのオプション引数では，ユーザサービス関数の引数に設定されるパラメタを指定可能です。詳細はマニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引」を参照してください。

1.5.2　オフラインバッチ用ライブラリ関数

オフラインバッチで使用できるTP1/EEライブラリ関数とTP1/FSPライブラリ関数の一覧を次に示します。TP1/EEライブラリ関数の説明については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

表1‒66　オフラインバッチ提供関数

項番

機能

C言語ライブラリ

COBOL-UAP作成用プログラム

備考

1

オフラインバッチ終了コード設定

ee_bpp_setrc

CBLEEBPP('SETRC ')

オフラインバッチ専用API

2

オフラインバッチの終了

ee_bpp_term

CBLEEBPP('TERM ')

オフラインバッチ専用API

3

接続ハンドルの取得

ee_trn_gethandle

CBLEETRN('GETHNDL ')

−

4

SDBハンドラ：イニシャライズ

ee_sdh_init

CBLEESDH('INIT ')

−

5

SDBハンドラ：個別開始

ee_sdh_strt

CBLEESDH('STRT ')

−

6

SDBハンドラ：DBアクセス（検索/変更/格納/削除）

ee_sdh_accs

CBLEESDH('ACCS ')

−

7

SDBハンドラ：DBアクセス（一括削除）

ee_sdh_clar

CBLEESDH('CLAR ')

−

8

SDBハンドラ：システム構成表示

ee_sdh_refs

CBLEESDH('REFS ')

−

9

SDBハンドラ：個別終了

ee_sdh_fnsh

CBLEESDH('FNSH ')

−

10

メッセージログの出力

ee_logprint

CBLEELOG('PRINT ')

−

11

現在時刻取得機能

ee_thd_gettime

CBLEETHD('GETTIME ')

−

12

ワークセグメントの割り当て

ee_mem_getwkseg

CBLEEMEM('GETWK ')

−

13

使用済みワークセグメントの返還

ee_mem_rlswkseg

CBLEEMEM('RLSWK ')

−

14

ユーザ固有のトレース取得

ee_trb_utrace_put

CBLEETRB('UTPUT ')

−

15

ユーザメッセージログの出力

ee_logprint_user

CBLEELOG('PRINTU ')

−

16

メッセージの出力抑止

ee_log_dctmsg

CBLEELOG('DCTMSG ')

−

17

メッセージの出力抑止解除

ee_log_actmsg

CBLEELOG('ACTMSG ')

−

18

メモリ領域のダンプ出力

ee_mem_userdump

CBLEEMEM('USERDUMP')

−

（凡例）

−：該当しません

各ライブラリ関数の説明については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」もあわせて参照してください。ここでは，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」との差分についてだけ説明します。

(1)　ee_bpp_setrc（オフラインバッチ制御（ee_bpp_〜）（C言語））

名称

オフラインバッチ終了コード設定

形式

ANSI C，C++の形式

#include <eebpp.h>
int  ee_bpp_setrc(EEULONG exitcode);

機能

eebpprunコマンド正常終了時の終了コードを設定します。

本APIを複数回発行した場合は，最後に設定した値が適用されます。

eebpprunコマンドが本APIで設定した終了コードを返すのは，次の場合です。

UAPサービスがリターンして終了

ee_bpp_term()関数をEEBPP_NORM指定で発行して終了

UAPで値を設定する引数

exitcode

終了コードの値を設定します。0〜127の範囲で指定してください。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチ以外から発行しているため，本機能は使用できません。

EEBPPER_ARGUMENT

引数に設定した値が間違っています。

(2)　ee_bpp_term（オフラインバッチ制御（ee_bpp_〜）（C言語））

名称

オフラインバッチの終了

形式

ANSI C，C++の形式

#include <eebpp.h>
int  ee_bpp_term(EEULONG mode);

機能

eebpprunコマンドを終了します。

本関数はエラー発生時以外はリターンしません。

UAPで値を設定する引数

mode

EEBPP_NORM：プロセスを強制終了します。プロセス終了の際に，coreファイルおよびCOBOL異常終了時要約リストは出力しません。

EEBPP_ABRT：プロセスを強制終了します。プロセス終了の際に，coreファイルとCOBOL異常終了時要約リスト（COBOLプログラムがある場合）を出力します。また，このときのeebpprunコマンドの終了コードはee_bpp_setrc()関数で設定した値にはなりません。

リターン値

リターン値

意味

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，本機能は使用できません。

EECOMER_CNDBPP

オフラインバッチ以外から発行しているため，本機能は使用できません。

EEBPPER_ARGUMENT

引数に設定した値が間違っています。

(3)　CBLEEBPP('SETRC ')（オフラインバッチ制御（COBOL言語））

名称

オフラインバッチ終了コード設定

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEBPP' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC  X(8) VALUE 'SETRC   '.
  02 データ名B  PIC  X(5).
  02 FILLER     PIC  X(3).
  02 データ名C  PIC  S9(9) COMP.

機能

eebpprunコマンド正常終了時の終了コードを設定します。

本APIを複数回発行した場合は，最後に設定した値が適用されます。

eebpprunコマンドが本APIで設定した終了コードを返すのは，次の場合です。

UAPサービスがリターンして終了

CBLEEBPP('TERM ')関数をデータ名Cに1指定で発行して終了

UAPで値を設定するデータ領域

データ名A

オフラインバッチの終了コード設定要求を示すコード「VALUE 'SETRC '」を設定します。

データ名C

終了コードの値を設定します。0〜127の範囲で指定してください。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

リターン値

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチ以外から発行しているため，本機能は使用できません。

15701

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

(4)　CBLEEBPP('TERM ')（オフラインバッチ制御（COBOL言語））

名称

オフラインバッチの終了

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEBPP' USING 一意名1

DATA DIVISIONの指定
01 一意名1.
  02 データ名A  PIC  X(8) VALUE 'TERM    '.
  02 データ名B  PIC  X(5).
  02 FILLER     PIC  X(3).
  02 データ名C  PIC  S9(9) COMP.

機能

eebpprunコマンドを終了します。

本関数はエラー発生時以外はリターンしません。

UAPで値を設定するデータ領域

データ名A

オフラインバッチの終了要求を示すコード「VALUE 'TERM '」を設定します。

データ名C

終了モードを設定します。

1：プロセスを強制終了します。プロセス終了の際に，coreファイルおよびCOBOL異常終了時要約リストは出力しません。

2：プロセスを強制終了します。プロセス終了の際に，coreファイルとCOBOL異常終了時要約リストを出力します。また，このときのeebpprunコマンドの終了コードはCBLEEBPP('SETRC ')関数で設定した値にはなりません。

TP1/EEから値が返されるデータ領域

データ名B

ステータスコードが，5桁の数字で返されます。

ステータスコード

リターン値

意味

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，本機能は使用できません。

00005

オフラインバッチ以外から発行しているため，本機能は使用できません。

15701

引数に設定した値が間違っています。

要求コード（データ名A）が間違っている場合も含みます。

1.6　データ抽出用インタフェース

1.6.1　データ抽出ユティリティ用UAP

UAPの作成手順を次の図に示します。

図1‒40　UAPの作成手順

(1)　UAPのコーディング

UAPのコーディングには，C言語またはCOBOL言語を使用できます。

UAPをコーディングしてソースファイルを作成するとき，データ抽出ユティリティのライブラリ関数のほかにも，OSの標準の機能やデータベース言語（SQL）を使用できます。

ただし，UAPでは，TP1/EE，TP1/XTC，TP1/MCP，TP1/FSP（データ抽出ユティリティは除く）のライブラリ関数を使用することはできません。これらが提供する機能を使用した場合の動作は保証しないので注意してください。

また，データ抽出ユティリティのライブラリ関数は，TP1/EEなどのデータ抽出ユティリティ以外のUAPで使用することはできません。データ抽出ユティリティのライブラリ関数を，データ抽出ユティリティ以外のUAPで使用した場合の動作は保証しないので注意してください。

(a)　C言語でコーディングする場合

C言語を使う場合

ANSI Cの形式に従ってコーディングします。データ抽出ユティリティの機能を使うときは，データ抽出ユティリティのAPI関数を呼び出します。

データ抽出ユティリティの関数の使い方

OSで標準的に提供する関数と同様，関数を呼び出すときには，引数を設定します。

関数が正常に実行されたかどうかは，戻ってくる値（リターン値）で判断できます。

(b)　COBOL言語でコーディングする場合

COBOL言語を使うときは，COBOL2002の形式でコーディングします。

データ抽出ユティリティの機能を使うときは，データ抽出ユティリティのCOBOL-UAP作成用プログラムを使います。COBOL-UAP作成用プログラムを，COBOL言語のCALL文で呼び出して，UAPの処理からデータ抽出ユティリティに制御を移します。

CALL文の実行結果は，戻ってくる数（ステータスコード）で判断できます。

(c)　コーディング規約

コーディングするときは，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」のコーディング規約に従ってください。SQLのコーディングの規約については，該当するリファレンスマニュアルを参照してください。

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」で示されているコーディング規約以外に，データ抽出ユティリティとして定めているコーディング規約を次に示します。

UAPでメイン関数を作成してください。COBOL言語でコーディングする場合，メイン関数はEXIT PROGRAMではなくSTOP RUNで終了してください。

UAPをマルチスレッドで動作させないでください。

(2)　UAPオブジェクトファイルの作成

ソースファイルをコンパイルして，UAPオブジェクトファイルを作成します。Cコンパイラのプリプロセッサオプションに-Dee_TP1EETRNIOARKSを指定してください。

(3)　UAP実行形式ファイルの作成

UAPオブジェクトファイルと次のライブラリをリンケージして，UAP実行形式ファイルを作成します。リンケージオプションについては，データ抽出ユティリティのサンプルmakeファイル（makefile_ioa）を参照してください。

データ抽出ユティリティのライブラリ

libee_offmsg.soと次のライブラリを指定します。

libeeioahir.so

COBOL2002のライブラリ

COBOL2002言語でUAPを作成する場合に指定します。

DBMSクライアントのライブラリ

UAPがDBMSにアクセスする場合，アクセスするDBMSのクライアントのライブラリを指定します。ただし，データ抽出ユティリティがアクセスするDBMSのクライアントのライブラリは指定しないでください。例えば，データ抽出ユティリティのライブラリにlibeeioahir.soを指定した場合，HiRDBクライアントのライブラリを指定しないでください。

その他のライブラリ

UAPでデータ抽出ユティリティ以外のライブラリ関数を使用している場合，必要に応じて指定します。

(4)　UAPの環境設定

UAPを実行する環境に次の環境変数を設定します。

DCDIR

TP1/EEのインストールディレクトリを指定します。

LD_LIBRARY_PATH

次のパスをすべて指定します。

TP1/EEのライブラリのインストールディレクトリ

COBOL2002のライブラリのインストールディレクトリ

（COBOL2002のライブラリを使用する場合）

DBMSクライアントのライブラリのインストールディレクトリ

その他のライブラリのインストールディレクトリ

（その他のライブラリを使用する場合）

HiRDBのクライアント環境定義

接続するHiRDBの指定に環境変数グループファイルを使用しない場合に設定します。詳細は「1.6.2(7)　制御情報ファイル」を参照してください。

PDSWAITTIMEとPDSWATCHTIMEに0，またはPDKALVLに2を設定してください。環境変数グループファイルを使用する場合は，環境変数グループファイルのPDSWAITTIMEとPDSWATCHTIMEに0，またはPDKALVLに2を設定してください。

取得用履歴情報表を抽出対象とする場合，PDLCKWAITTIMEは，オンライン側のHiRDBのクライアント環境定義のPDLCKWAITTIMEより小さい値を設定してください。半分以下の値を設定することを推奨します。

HiRDBのクライアント環境定義については，マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

必要に応じてUAPを実行する環境に次の環境変数を設定します。

EETRNIOALOGDIR=メッセージログファイル出力ディレクトリ名　〜〈980文字以内のパス名〉《.》

メッセージログファイルを出力するディレクトリのパス名を指定します。

環境変数を設定しない場合は，データ抽出ユティリティを使用したUAPを実行したカレントパスにメッセージログファイルを出力します。

EETRNIOALOGCMODE=｛SJIS｜NONE｝

syslog出力時に拡張SYSLOGの文字コード変換機能を使用するかどうかを指定します。

環境変数CBLSYSLOGにYESを指定したときは，環境変数EETRNIOALOGCMODEにSJISを指定してください。

拡張SYSLOGの使用時にログサービスがsyslogファイルへの出力に失敗した場合は，syslogへは出力しません。

SJIS：

拡張SYSLOGの文字コード変換機能を使用し，シフトJISからUTF-8に変換します。

NONE：

拡張SYSLOGの文字コード変換機能を使用しません。

拡張SYSLOGをインストールしていれば，拡張SYSLOGを使用します。

拡張SYSLOGをインストールしていなければ，KFSB51913-Wを出力し，

拡張SYSLOGを使用しないで，syslog出力します。

(5)　UAPの実行

UAP実行形式ファイルを実行します。

1.6.2　データ抽出ユティリティ用ライブラリ関数

データ抽出ユティリティで使用できるライブラリ関数一覧を次の表に示します。

また，データ抽出ユティリティの実行には，データ抽出ユティリティを実行するための制御情報を規定したファイル（制御情報ファイル）が必要となります。制御情報ファイルについては，「1.6.2(7)　制御情報ファイル」を参照してください。

表1‒67　データ抽出ユティリティで使用できるライブラリ関数一覧

項番

機能

C言語ライブラリ

COBOL-UAP作成用プログラム

1

INIT要求

ee_trn_ioa_init

CBLEETRN('IOAINIT ')

2

GET要求

ee_trn_ioa_get

CBLEETRN('IOAGET ')

3

TERM要求

ee_trn_ioa_term

CBLEETRN('IOATERM ')

APIの発行手順

各要求の発行可否と発行順序を次の表に示します。

最初の要求ではINIT要求だけ行うことができます。最初の要求でGET要求またはTERM要求を行うとエラーリターンします。

INIT要求後では，GET要求またはTERM要求を行うことができます。一度でもINIT要求が正常終了した場合，再度INIT要求を行うとエラーリターンします。

GET要求後では，GET要求またはTERM要求を行うことができます。前回のGET要求でEOFを入力した場合，INIT要求を行うことができます。しかし，前回のGET要求でEOFを入力しなかった場合，INIT要求を行うとエラーリターンします。

TERM要求後では，INIT要求またはTERM要求を行うことができます。GET要求を行うとエラーリターンします。

要求がエラーリターンしたあとは，要求を発行しないでください。エラーの要因を取り除いてUAPを再起動してください。

表1‒68　各要求の発行可否

項番

前回の要求

今回の要求

INIT要求

GET要求

TERM要求

1

最初の要求

○

×

×

2

INIT要求

×

○

○

3

GET要求

△

（EOF入力時だけ）

○

○

4

TERM要求

○

×

○

（凡例）

○：可

△：条件つきで可

×：不可

C-UAP作成用プログラムの文法

データ抽出ユティリティのライブラリ関数の説明形式は，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」の「関数の説明形式」を参照してください。ただし，「TP1/EE」は「データ抽出ユティリティ」に読み替えてください。

COBOL-UAP作成用プログラムの文法

データ抽出ユティリティのUAPをCOBOL言語で作成するときの説明形式は，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」の「COBOL-UAP作成用プログラムの説明形式」を参照してください。ただし，「TP1/EE」は「データ抽出ユティリティ」に読み替えてください

(1)　ee_trn_ioa_init（トランザクション制御（ee_trn_〜）（C言語））

名称

INIT要求

形式

ANSI Cの形式

#include <eetrn_ioa.h>
int ee_trn_ioa_init(EETRN_IOA_IPARAM *ioa_iparam_pt, EELONG flags);

typedef struct ee_trn_ioa_iparam_t{  /*INITパラメタ構造体   */
   char             return_code;     /*処理結果のメインリターンコード */
   char             sub_code;        /*処理結果のサブリターンコード */
   char             yobi1[6];        /*予備 */
   char             ctrl_file[EETRN_IOA_CTLFILE_SZ];
                                     /*制御情報ファイル名 */
   char             uapfnm[EETRN_IOA_UAPFNM_SZ];
                                     /*UAP履歴情報グループ名 */
   char             yobi2[5];        /*予備 */
   long             sql_code;        /*SQLCODE */
   EELONG           err_inf_len;     /*障害情報長 */
   char             err_inf[EETRN_IOA_ERRINF_SZ];
                                     /*障害情報 */
   char             yobi3[12];       /*予備 */
   EETRN_IOA_FORC   *forc_pt;        /*FORCパラメタ構造体アドレス */
   EETRN_IOA_JSQ    *jsq_pt;         /*JSQパラメタ構造体アドレス */
   EETRN_IOA_KIND   *kind_pt;        /*KINDパラメタ構造体アドレス */
   EETRN_IOA_PJCK   *pjck_pt;        /*PJCKパラメタ構造体アドレス */
   EETRN_IOA_RANG   *rang_pt;        /*RANGパラメタ構造体アドレス */
   char             yobi4[8];        /*予備 */
   EETRN_IOA_UJST   *ujst_pt;        /*UJSTパラメタ構造体アドレス */
   char             yobi5[16];       /*予備 */
   void             *system1;        /*TP1/FSP使用領域1 */
   void             *system2;        /*TP1/FSP使用領域2 */
   void             *system3;        /*TP1/FSP使用領域3 */
   void             *system4;        /*TP1/FSP使用領域4 */
   void             *system5;        /*TP1/FSP使用領域5 */
   void             *system6;        /*TP1/FSP使用領域6 */
   void             *system7;        /*TP1/FSP使用領域7 */
   void             *system8;        /*TP1/FSP使用領域8 */
   void             *system9;        /*TP1/FSP使用領域9 */
   void             *system10;       /*TP1/FSP使用領域10 */
   char             yobi6[256];      /*予備 */
} EETRN_IOA_IPARAM;

typedef struct ee_trn_ioa_forc_t{    /*FORCパラメタ構造体 */
   char             req_code;        /*要求コード */
   char             yobi[71];        /*予備 */
} EETRN_IOA_FORC;

typedef struct ee_trn_ioa_jsq_t{     /*JSQパラメタ構造体 */
   EELONG           start_jsq;       /*開始世代番号 */
   EELONG           end_jsq;         /*終了世代番号 */
   char             yobi[64];        /*予備 */
} EETRN_IOA_JSQ;

typedef struct ee_trn_ioa_kind_t{    /*KINDパラメタ構造体 */
   EELONG           kind_entry_num;  /*履歴情報種別のエントリ数 */
   char             kind[EETRN_IOA_KIND_SZ];
                                     /*履歴情報種別 */
   char             yobi[70];        /*予備 */
} EETRN_IOA_KIND;

typedef struct ee_trn_ioa_pjck_t{    /*PJCKパラメタ構造体 */
   char             req_code;        /*要求コード */
   char             yobi[71];        /*予備 */
} EETRN_IOA_PJCK;

typedef struct ee_trn_ioa_rang_t{    /*RANGパラメタ構造体 */
   EELONG64         start_block_no;  /*開始累積データ通番 */
   EELONG64         end_block_no;    /*終了累積データ通番 */
   char             yobi[88];        /*予備 */
} EETRN_IOA_RANG;

typedef struct ee_trn_ioa_ujst_t{    /*UJSTパラメタ構造体 */
   char             req_code;        /*要求コード */
   char             status_code;     /*状態コード */
   char             yobi[70];        /*予備 */
} EETRN_IOA_UJST;

機能

機能の説明は，「1.6.2(4)　CBLEETRN('IOAINIT ')（トランザクション制御（COBOL言語））」を参照してください。

UAPで値を設定する引数

引数の説明は，「1.6.2(4)　CBLEETRN('IOAINIT ')（トランザクション制御（COBOL言語））」を参照してください。ここでは差異について示します。

ioa_iparam_pt

CBLEETRN('IOAINIT ')の一意名_IPARAMを参照してください。

制御情報ファイル名

データ抽出ユティリティを実行するための制御情報を規定したファイルのパス名を，1から1,023バイト以内で設定します。文字列の最後には，ヌル文字を設定してください。このヌル文字は文字列の長さに数えません。制御情報ファイル名は必ず設定します。

制御情報ファイルに規定した情報を使用して入力を行います。制御情報ファイルの詳細は，「1.6.2(7)　制御情報ファイル」を参照してください。

UAP履歴情報グループ名

空白をヌル文字に読み替えてください。

FORCパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・要求コード

　強制実行要求を次のどちらかで設定します。

　EETRN_IOA_YES：強制実行します。

　EETRN_IOA_NO：強制実行しません。

JSQパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・開始世代番号

　差異なし。

・終了世代番号

　差異なし。

KINDパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・履歴情報種別のエントリ数

　差異なし。

・履歴情報種別

　履歴情報種別のエントリ数に0を設定した場合，設定値は無視されます。履歴情報種別のエントリ数に1以上を設定した場合，入力対象とする履歴情報種別を次の2文字で設定します。文字列の最後には，ヌル文字を設定する必要はありません。複数の履歴情報種別を設定する場合は図1-42のように先頭から順に設定します。図1-43のように同じ履歴情報種別を設定することはできません。

　　EETRN_IOA_KIND_UJ：ユーザデータ（UJ）

　　EETRN_IOA_KIND_IJ：入力データ（IJ）

　　EETRN_IOA_KIND_OJ：出力データ（OJ）

PJCKパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・要求コード

　現用の履歴情報表を入力するかどうかの要求を次のどちらかで設定します。

　EETRN_IOA_YES：現用の履歴情報表を入力しません。

　EETRN_IOA_USE：現用の履歴情報表を入力します。

RANGパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・開始累積データ通番

　差異なし。

・終了累積データ通番

　差異なし。

UJSTパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・要求コード

　現用有無の取得を行う要求を次のどちらかで設定します。

　　EETRN_IOA_YES：現用有無の取得を行います。

　　EETRN_IOA_NO：現用有無の取得を行いません。

TP1/FSP使用領域1〜10

ZEROをNULLに読み替えてください。

flags

EENOFLAGSを設定します。

データ抽出ユティリティから値が返される引数

引数の説明は，「1.6.2(4)　CBLEETRN('IOAINIT ')（トランザクション制御（COBOL言語））」を参照してください。ここでは差異について示します。

ioa_iparam_pt

CBLEETRN('IOAINIT ')の一意名_IPARAMを参照してください。

リターンコード，サブリターンコード

差異なし。

SQLCODE

差異なし。

障害情報長

差異なし。

障害情報

差異なし。

UJSTパラメタ構造体アドレス

入力対象が取得用履歴情報表で要求コードにEETRN_IOA_YESを設定している場合は，UJSTパラメタ構造体に次の情報を設定します。情報はリターン値がEE_OKのときだけ設定します。

・状態コード

　現用の履歴情報表の有無を示す状態コードを設定します。設定する状態コードを次に示します。

　　EETRN_IOA_NONE：現用の履歴情報表が入力対象に含まれません。

　　EETRN_IOA_ONLINE：現用の履歴情報表が入力対象に含まれます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

EETRNER_MEMORY_SHORT

メモリが不足しました。

EETRNER_SQL_ERROR

SQL実行時にエラーが発生しました。

EETRNER_INVALID

内部関数でエラーが発生しました。

指定例

RANGパラメタを使用する場合のINIT要求の指定例を次に示します。

/*変数の宣言*/
  EETRN_IOA_IPARAM   iparamt;
  EETRN_IOA_RANG     irangt;
  int                rtncode;

  /*初期化*/
  memset(&iparamt, 0, sizeof(EETRN_IOA_IPARAM));
  memset(&irangt, 0, sizeof(EETRN_IOA_RANG));

  /*設定*/
  strncpy(iparamt.ctrl_file,
      "/opt/OpenTP1/examples/tp1ee/conf/eetrnioa_smpl.conf",
      EETRN_IOA_CTLFILE_SZ - 1);       /*制御情報ファイル名*/
  strncpy(iparamt.uapfnm, "IOA", EETRN_IOA_UAPFNM_SZ - 1);
                                       /*UAP履歴情報グループ名*/
  iparamt.rang_pt = &irangt;           /*RANGパラメタ構造体アドレス*/
  irangt.start_block_no   = 2;         /*開始累積データ通番*/
  irangt.end_block_no  = 10;           /*終了累積データ通番*/

  /*INIT要求*/
  rtncode = ee_trn_ioa_init(&iparamt, EENOFLAGS);

注意事項

注意事項の説明は，「1.6.2(4)　CBLEETRN('IOAINIT ')（トランザクション制御（COBOL言語））」を参照してください。

(2)　ee_trn_ioa_get（トランザクション制御（ee_trn_〜）（C言語））

名称

GET要求

形式

ANSI Cの形式

#include <eetrn_ioa.h>
int ee_trn_ioa_get(EETRN_IOA_GPARAM *ioa_gparam_pt, EELONG flags);

typedef struct ee_trn_ioa_gparam_t{  /*GETパラメタ構造体   */
   char            return_code;      /*処理結果のメインリターンコード */
   char            sub_code;         /*処理結果のサブリターンコード */
   char            yobi1[6];         /*予備 */
   long            sql_code;         /*SQLCODE */
   EELONG          err_inf_len;      /*障害情報長 */
   char            err_inf[EETRN_IOA_ERRINF_SZ];
                                     /*障害情報 */
   char            yobi2[4];         /*予備 */
   EETRN_IOA_RTN   *rtn_pt;          /*RTNパラメタ構造体アドレス */
   EETRN_IOA_SET   *set_pt;          /*SETパラメタ構造体アドレス */
   EETRN_IOA_USER  *user_pt;         /*USERパラメタ構造体アドレス */
   void            *system1;         /*TP1/FSP使用領域1 */
   char            yobi3[248];       /*予備 */
} EETRN_IOA_GPARAM;

typedef struct ee_trn_ioa_rtn_t{     /*RTNパラメタ構造体 */
   EELONG64        block_no;         /*累積データ通番 */
   EELONG          jsq;              /*世代番号 */
   EELONG          root_jsq;         /*ルート世代番号 */
   EEULONG         run_id;           /*ランID */
   EEULONG         proc_no;          /*中央処理通番 */
   char            node_id[EETRN_IOA_NODEID_SZ];
                                     /*ノード識別子 */
   EELONG          service_name_len; /*サービス名長 */
   char            service_name[EETRN_IOA_SVNAME_SZ];
                                     /*サービス名 */
   char            date[EETRN_IOA_DATE_SZ];
                                     /*取得年月日 */
   char            time[EETRN_IOA_TIME_SZ];
                                     /*取得時刻 */
   char            yobi1[2];         /*予備 */
   EELONG          order;            /*取得順序 */
   char            yobi2[68];        /*予備 */
} EETRN_IOA_RTN;

typedef struct ee_trn_ioa_set_t{     /*SETパラメタ構造体 */
   EELONG          data_area_len;    /*UAP履歴情報格納エリア長 */
   EELONG          data_len;         /*UAP履歴情報長 */
   char            *data_area_pt;    /*UAP履歴情報格納エリアアドレス */
   char            yobi[64];         /*予備 */
} EETRN_IOA_SET;

typedef struct ee_trn_ioa_user_t{    /*USERパラメタ構造体 */
   EELONG          data_area_len;    /*ユーザプログラム引き継ぎ情報 */
                                     /*格納エリア長 */
   EELONG          data_len;         /*ユーザプログラム引き継ぎ情報長 */
   char            *data_area_pt;    /*ユーザプログラム引き継ぎ情報 */
                                     /*格納エリアアドレス */
   char            yobi[64];         /*予備 */
} EETRN_IOA_USER;

機能

機能の説明は，「1.6.2(5)　CBLEETRN('IOAGET ')（トランザクション制御（COBOL言語））」を参照してください。

UAPで値を設定する引数

引数の説明は，「1.6.2(5)　CBLEETRN('IOAGET ')（トランザクション制御（COBOL言語））」を参照してください。ここでは差異について示します。

ioa_gparam_pt

CBLEETRN('IOAGET ')の一意名_GPARAMを参照してください。

RTNパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

SETパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・UAP履歴情報格納エリアアドレス

　差異なし。

・UAP履歴情報格納エリア長

　差異なし。

USERパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

・ユーザプログラム引き継ぎ情報格納エリアアドレス

　差異なし。

・ユーザプログラム引き継ぎ情報格納エリア長

　差異なし。

TP1/FSP使用領域1

ZEROをNULLに読み替えてください。

flags

EENOFLAGSを設定します。

データ抽出ユティリティから値が返される引数

引数の説明は，「1.6.2(5)　CBLEETRN('IOAGET ')（トランザクション制御（COBOL言語））」を参照してください。ここでは差異について示します。

ioa_gparam_pt

CBLEETRN('IOAGET ')の一意名_GPARAMを参照してください。

リターンコード，サブリターンコード

差異なし。

SQLCODE

差異なし。

障害情報長

差異なし。

障害情報

差異なし。

RTNパラメタ構造体アドレス

RTNパラメタ構造体に次の情報を設定します。情報はリターン値がEE_OK，かつメインリターンコードが'N'のときだけ設定します。

・累積データ通番

　差異なし。

・世代番号

　差異なし。

・ルート世代番号

　差異なし。

・ランID

　差異なし。

・中央処理通番

　差異なし。

・ノード識別子

　差異なし。

・サービス名長

　差異なし。

・サービス名

　差異なし。

・取得年月日

　差異なし。

・取得時刻

　差異なし。

・取得順序

　差異なし。

SETパラメタ構造体アドレス

情報はリターン値がEE_OK，かつメインリターンコードが'N'のときだけ設定します。

・UAP履歴情報長

　差異なし。

・UAP履歴情報格納エリアアドレス

　差異なし。

USERパラメタ構造体アドレス

情報はリターン値がEE_OKのときだけ設定します。

・ユーザプログラム引き継ぎ情報長

　差異なし。

・ユーザプログラム引き継ぎ情報格納エリアアドレス

　差異なし。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

EETRNER_MEMORY_SHORT

メモリが不足しました。

EETRNER_SQL_ERROR

SQL実行時にエラーが発生しました。

EETRNER_OVERFLOW

ユーザプログラム引き継ぎ情報またはUAP履歴情報の格納エリアが小さい，またはPJ引き継ぎ情報の引き継ぎ履歴情報数が少ないです。

EETRNER_INVALID

内部関数でエラーが発生しました。

指定例

SETパラメタを使用する場合のGET要求の指定例を次に示します。

/*変数の宣言*/
EETRN_IOA_GPARAM   gparamt;
EETRN_IOA_SET      gsett;
char               sdata[256];
int                rtncode;

/*初期化*/
memset(&gparamt, 0, sizeof(EETRN_IOA_GPARAM));
memset(&gsett, 0, sizeof(EETRN_IOA_SET));
memset(sdata, 0, sizeof(sdata));

/*設定*/
gparamt.set_pt = &gsett;              /*SETパラメタ構造体アドレス*/
gsett.data_area_len = sizeof(sdata);  /*UAP履歴情報格納エリア長*/
gsett.data_area_pt = sdata;           /*UAP履歴情報格納エリアアドレス*/

/*GET要求*/
rtncode = ee_trn_ioa_get(&gparamt, EENOFLAGS);

注意事項

注意事項の説明は，「1.6.2(5)　CBLEETRN('IOAGET ')（トランザクション制御（COBOL言語））」を参照してください。

(3)　ee_trn_ioa_term（トランザクション制御（ee_trn_〜）（C言語））

名称

TERM要求

形式

ANSI Cの形式

#include <eetrn_ioa.h>
int ee_trn_ioa_term(EETRN_IOA_TPARAM *ioa_tparam_pt, EELONG flags);

typedef struct ee_trn_ioa_tparam_t{  /*TERMパラメタ構造体 */
   char             return_code;     /*処理結果のメインリターンコード */
   char             sub_code;        /*処理結果のサブリターンコード */
   char             yobi1[6];        /*予備 */
   long             sql_code;        /*SQLCODE */
   EELONG           err_inf_len;     /*障害情報長 */
   char             err_inf[EETRN_IOA_ERRINF_SZ];
                                     /*障害情報 */
   char             yobi2[4];        /*予備 */
   EETRN_IOA_USER   *user_pt;        /*USERパラメタ構造体アドレス */
   char   yobi3[256];                /*予備 */
} EETRN_IOA_TPARAM;

typedef struct ee_trn_ioa_user_t{    /*USERパラメタ構造体   */
   構造体の内容はee_trn_ioa_get()参照
} EETRN_IOA_USER;

機能

機能の説明は，「1.6.2(6)　CBLEETRN('IOATERM ')（トランザクション制御（COBOL言語））」を参照してください。

UAPで値を設定する引数

引数の説明は，「1.6.2(6)　CBLEETRN('IOATERM ')（トランザクション制御（COBOL言語））」を参照してください。ここでは差異について示します。

ioa_tparam_pt

CBLEETRN('IOATERM ')の一意名_TPARAMを参照してください。

USERパラメタ構造体アドレス

ZEROをNULLに読み替えてください。

ユーザプログラム引き継ぎ情報格納エリア長

差異なし。

ユーザプログラム引き継ぎ情報長

差異なし。

ユーザプログラム引き継ぎ情報格納エリア

差異なし。

flags

EENOFLAGSを設定します。

データ抽出ユティリティから値が返される引数

引数の説明は，「1.6.2(6)　CBLEETRN('IOATERM ')（トランザクション制御（COBOL言語））」を参照してください。ここでは差異について示します。

ioa_tparam_pt

CBLEETRN('IOATERM ')の一意名_TPARAMを参照してください。

リターンコード，サブリターンコード

差異なし。

SQLCODE

差異なし。

障害情報長

差異なし。

障害情報

差異なし。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EETRNER_ARGUMENT

引数に設定した値が間違っています。

EETRNER_CONDITION

発行条件が不正です。

EETRNER_MEMORY_SHORT

メモリが不足しました。

EETRNER_SQL_ERROR

SQL実行時にエラーが発生しました。

EETRNER_OVERFLOW

PJ引き継ぎ情報の引き継ぎ履歴情報数が少ないです。

EETRNER_INVALID

内部関数でエラーが発生しました。

指定例

USERパラメタを使用する場合のTERM要求の指定例を次に示します。

/*変数の宣言*/
EETRN_IOA_TPARAM   tparamt;
EETRN_IOA_USER     tusert;
char               udata[256];
int                rtncode;

/*初期化*/
memset(&tparamt, 0, sizeof(EETRN_IOA_TPARAM));
memset(&tusert, 0, sizeof(EETRN_IOA_USER));
memset(udata, 0, sizeof(udata));

/*設定*/
tparamt.user_pt = &tusert;            /*USERパラメタ構造体アドレス*/
tusert.data_area_len = sizeof(udata); /*引き継ぎ情報格納エリア長*/
tusert.data_len = strlen("ABCDE");    /*引き継ぎ情報長*/
tusert.data_area_pt = udata;           /*引き継ぎ情報格納エリアアドレス*/
memcpy(udata, "ABCDE", strlen("ABCDE")); /*引き継ぎ情報*/

/*TERM要求*/
rtncode = ee_trn_ioa_term(&tparamt, EENOFLAGS);

注意事項

注意事項の説明は，「1.6.2(6)　CBLEETRN('IOATERM ')（トランザクション制御（COBOL言語））」を参照してください。

(4)　CBLEETRN('IOAINIT ')（トランザクション制御（COBOL言語））

名称

INIT要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1 一意名_IPARAM

DATA DIVISIONの指定
01 一意名1.
  02 データ名A   PIC X(8) VALUE 'IOAINIT '.
  02 データ名B   PIC X(5).
  02 FILLER      PIC X(3).
  02 データ名C   PIC S9(9) COMP VALUE ZERO.

01 一意名_IPARAM.                            /*INITパラメタ構造体 */
  02 データ名_RETURN_CODE   PIC X(1).        /*メインリターンコード */
  02 データ名_SUB_CODE      PIC X(1).        /*サブリターンコード */
  02 FILLER                 PIC X(6).        /*予備 */
  02 データ名_CNTL_FILE     PIC X(1024).     /*制御情報ファイル名 */
  02 データ名_UAPFNM        PIC X(27).       /*UAP履歴情報グループ名 */
  02 FILLER                 PIC X(5).        /*予備 */
  02 データ名_SQL_CODE      PIC S9(18) COMP. /*SQLCODE */
  02 データ名_ERR_INF_LEN   PIC S9(9) COMP.  /*障害情報長 */
  02 データ名_ERR_INF       PIC X(64).       /*障害情報 */
  02 FILLER                 PIC X(12).       /*予備 */
  02 データ名_FORC_PT   ADDRESS.         /*FORCパラメタ構造体アドレス */
  02 データ名_JSQ_PT    ADDRESS.         /*JSQパラメタ構造体アドレス */
  02 データ名_KIND_PT   ADDRESS.         /*KINDパラメタ構造体アドレス */
  02 データ名_PJCK_PT   ADDRESS.         /*PJCKパラメタ構造体アドレス */
  02 データ名_RANG_PT   ADDRESS.         /*RANGパラメタ構造体アドレス */
  02 FILLER   PIC X(8).                 /*予備 */
  02 データ名_UJST_PT   ADDRESS.        /*UJSTパラメタ構造体アドレス */
  02 FILLER   PIC X(16).                /*予備 */
  02 データ名_SYSTEM1   ADDRESS.        /*TP1/FSP使用領域1 */
  02 データ名_SYSTEM2   ADDRESS.        /*TP1/FSP使用領域2 */
  02 データ名_SYSTEM3   ADDRESS.        /*TP1/FSP使用領域3 */
  02 データ名_SYSTEM4   ADDRESS.        /*TP1/FSP使用領域4 */
  02 データ名_SYSTEM5   ADDRESS.        /*TP1/FSP使用領域5 */
  02 データ名_SYSTEM6   ADDRESS.        /*TP1/FSP使用領域6 */
  02 データ名_SYSTEM7   ADDRESS.        /*TP1/FSP使用領域7 */
  02 データ名_SYSTEM8   ADDRESS.        /*TP1/FSP使用領域8 */
  02 データ名_SYSTEM9   ADDRESS.        /*TP1/FSP使用領域9 */
  02 データ名_SYSTEM10  ADDRESS.        /*TP1/FSP使用領域10 */
  02 FILLER   PIC X(256).               /*予備 */

01 一意名_FORC.                         /*FORCパラメタ構造体 */
  02 データ名_REQ_CODE   PIC X(1).      /*要求コード */
  02 FILLER              PIC X(71).     /*予備 */

01 一意名_JSQ.                              /*JSQパラメタ構造体 */
  02 データ名_START_JSQ   PIC S9(9) COMP.   /*開始世代番号 */
  02 データ名_END_JSQ     PIC S9(9) COMP.   /*終了世代番号 */
  02 FILLER               PIC X(64).        /*予備 */

01 一意名_KIND.                               /*KINDパラメタ構造体 */
  02 データ名_KIND_ENTRY_NUM   PIC S9(9) COMP. /*履歴情報種別のエントリ数 */
  02 データ名_KIND             PIC X(6).      /*履歴情報種別 */
  02 FILLER                    PIC X(70).     /*予備 */

01 一意名_PJCK.                               /*PJCKパラメタ構造体 */
  02 データ名_REQ_CODE   PIC X(1).            /*要求コード */
  02 FILLER              PIC X(71).           /*予備 */

01 一意名_RANG.                                  /*RANGパラメタ構造体 */
  02 データ名_START_BLOCK_NO   PIC S9(18) COMP.  /*開始累積データ通番 */
  02 データ名_END_BLOCK_NO     PIC S9(18) COMP.  /*終了累積データ通番 */
  02 FILLER                    PIC X(88).        /*予備 */

01 一意名_UJST.                          /*UJSTパラメタ構造体 */
  02 データ名_REQ_CODE      PIC X(1).    /*要求コード */
  02 データ名_STATUS_CODE   PIC X(1).    /*状態コード */
  02 FILLER                 PIC X(70).   /*予備 */

機能

INIT要求を行います。

本関数の発行可否は，「1.6.2　データ抽出ユティリティ用ライブラリ関数」の「APIの発行手順」を参照してください。

INIT要求には，次のパラメタを設定できます。各パラメタは省略できます。

FORCパラメタ：強制実行指定

JSQパラメタ：世代番号による検索範囲の指定

KINDパラメタ：履歴情報種別の指定

PJCKパラメタ：現用の取得用履歴情報表の入力可否要求指定

RANGパラメタ：累積データ通番による検索範囲の指定

UJSTパラメタ：現用有無の取得要求指定

図1‒41　INITパラメタのフォーマット

UAPで値を設定するデータ領域

データ名A

INIT要求を示す要求コードを「VALUE 'IOAINIT△'」と設定します。

データ名C

0を設定します。

一意名_IPARAM

INIT要求を規定したINITパラメタ構造体のアドレスを設定します。

制御情報ファイル名

データ抽出ユティリティを実行するための制御情報を規定したファイルのパス名を，1から1,023バイト以内で設定します。文字列の最後には，空白を設定してください。この空白は文字列の長さに数えません。ファイルのパス名に空白を含むパス名は指定できません。制御情報ファイル名は必ず設定してください。

制御情報ファイルに規定した情報を使用して入力を行います。制御情報ファイルの詳細は，「1.6.2(7)　制御情報ファイル」を参照してください。

UAP履歴情報グループ名

入力元のUAP履歴情報グループ名を，1から26バイト以内の英大識別子で設定します。文字列の最後には，空白を設定します。この空白は文字列の長さに数えません。UAP履歴情報グループ名は必ず設定してください。

FORCパラメタ構造体アドレス

FORCパラメタを規定したFORCパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，強制実行を行うことができます。

本パラメタの設定を省略すると，強制実行を行いません。

・要求コード

　強制実行要求を次のどちらかで設定します。

　　'Y'：強制実行します。

　　'N'：強制実行しません。

JSQパラメタ構造体アドレス

JSQパラメタを規定したJSQパラメタ構造体のアドレスを設定します。本パラメタでは開始世代番号と終了世代番号を設定できます。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，開始世代番号から終了世代番号までのUAP履歴情報を入力します。開始世代番号と終了世代番号の設定有無による検索範囲を次の表に示します。

本パラメタの設定を省略すると，開始世代番号と終了世代番号の両方を省略した場合と同様の検索範囲でUAP履歴情報を入力します。

表1‒69　開始世代番号と終了世代番号の設定有無による検索範囲

項番

開始世代番号

設定有無

終了世代番号

設定有無

開始と終了の大小関係

検索範囲

1

○

○

G1≦G2

G1≦G≦G2

2

G1＞G2

エラー

3

○

×

−

G1≦G≦0x7FFFFFFF

4

×

○

GX≦G2

GX≦G≦G2

5

GX＞G2

エラー

6

×

×

−

GX≦G≦0x7FFFFFFF

（凡例）

○：設定あり

×：設定なし

−：該当しません

G1：開始世代番号設定値

G2：終了世代番号設定値

G：検索範囲

GX：制御ファイルのTABLE文※のUAPTBLを省略した場合：

　検索対象のルート世代番号と一致する履歴情報表の中で最小の世代番号

制御ファイルのTABLE文※のUAPTBLを指定した場合：

　検索対象のルート世代番号と一致するUAPTBLに指定した履歴情報表の中で最小の世代番号

注※

　制御ファイルのTABLE文については，「1.6.2(7)(d)　TABLE文」を参照してください。

開始世代番号

検索を開始する世代番号を0x00000001(1)から0x7FFFFFFF(2147483647)までの範囲で設定します。開始世代番号を省略する場合，0xFFFFFFFF(-1)を設定します。

終了世代番号

検索を終了する世代番号を0x00000001(1)から0x7FFFFFFF(2147483647)までの範囲で設定します。終了世代番号を省略する場合，0xFFFFFFFF(-1)を設定します。

KINDパラメタ構造体アドレス

KINDパラメタを規定したKINDパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，設定した履歴情報種別のUAP履歴情報だけを入力します。

本パラメタの設定を省略すると，すべての履歴情報種別のUAP履歴情報を入力します。

履歴情報種別のエントリ数

履歴情報種別のエントリ数を0から3までの範囲で設定します。すべての履歴情報種別を入力対象としたい場合，0を設定します。

履歴情報種別

履歴情報種別のエントリ数に0を設定した場合，設定値は無視されます。履歴情報種別のエントリ数に1以上を設定した場合，入力対象とする履歴情報種別を次の2文字で設定します。文字列の最後には，空白を設定する必要はありません。複数の履歴情報種別を設定する場合は図1-42のように先頭から順に設定します。図1-43のように同じ履歴情報種別を設定することはできません。

'UJ'：ユーザデータ（UJ）

'IJ'：入力データ（IJ）

'OJ'：出力データ（OJ）

図1‒42　履歴情報種別の設定例

図1‒43　履歴情報種別の間違った設定

PJCKパラメタ構造体アドレス

PJCKパラメタを規定したPJCKパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，現用の履歴情報表を入力対象にするかどうかを指定できます。現用の履歴情報表を入力対象にしない場合，現用の履歴情報表に対してGET要求を実行すると，終端（メインリターンコード'F'，サブリターンコード'V'）を入力します。

本パラメタの設定を省略すると，PJCKパラメタの要求コードに'Y'を設定した場合と同様に動作します。

入力対象がリロード用履歴情報表の場合，本パラメタの指定値に関係なく，指定したすべてのリロード用履歴情報表が入力対象となります。

・要求コード

　現用の履歴情報表を入力するかどうかの要求を次のどちらかで設定します。

　　'Y'：現用の履歴情報表を入力対象にしません。

　　'U'：現用の履歴情報表を入力対象にします。

RANGパラメタ構造体アドレス

RANGパラメタを規定したRANGパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。本パラメタでは開始累積データ通番と終了累積データ通番を設定できます。

本パラメタを設定すると，開始累積データ通番から終了累積通番までの範囲に合致するUAP履歴情報を入力します。また，開始累積データ通番と終了累積データ通番の設定有無による検索範囲を次の表に示します。

本パラメタの設定を省略すると，開始累積データ通番，終了累積データ通番のすべてを省略した場合と同様の検索範囲でUAP履歴情報を入力します。

表1‒70　開始累積データ通番と終了累積データ通番の設定有無による検索範囲

項番

開始累積データ通番

設定有無

終了累積データ通番

設定有無

開始と終了

の大小関係

検索範囲

1

○

○

S1≦S2

S1≦S≦S2

2

S1＞S2

エラー

3

○

×

−

S1≦S≦0x700000000098967F

4

×

○

SX≦S2

SX≦S≦S2

5

SX＞S2

エラー

6

×

×

−

SX≦S

（凡例）

○：設定あり

×：設定なし

−：該当しません

S1：開始累積データ通番設定値

S2：終了累積データ通番設定値

S ：検索範囲

SX：検索対象のルート世代番号での開始世代番号※の履歴情報表の最小累積データ通番

注※

　開始世代番号の決定については，「表1-69　開始世代番号と終了世代番号の設定有無による検索範囲」を参照してください。

開始累積データ通番

検索を開始する累積データ通番を0x0000000000000001(1)から0x700000000098967F(8070450532257928831)までの範囲で設定します。開始累積データ通番を省略する場合，0xFFFFFFFFFFFFFFFF(-1)を設定します。

終了累積データ通番

検索を終了する累積データ通番を0x0000000000000001(1)から0x700000000098967F(8070450532257928831)までの範囲で設定します。終了累積データ通番を省略する場合，0xFFFFFFFFFFFFFFFF(-1)を設定します。

UJSTパラメタ構造体アドレス

UJSTパラメタを規定したUJSTパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，最初に入力する履歴情報表が現用であるかどうかを本パラメタの状態コードに取得できます。現用有無の取得は，INIT要求時に行うため，そのあとのGET要求やTERM要求時に現用の有無が変化しても状態コードの値は変わりません。

本パラメタの設定を省略，または入力対象がリロード用履歴情報表の場合，現用有無の取得を行いません。

・要求コード

　現用有無の取得を行う要求を次のどちらかで設定します。

　　'Y'：現用有無の取得を行います。

　　'N'：現用有無の取得を行いません。

TP1/FSP使用領域1〜10

ZEROを設定します。

データ抽出ユティリティから値が返されるデータ領域

一意名_IPARAM

メインリターンコード，サブリターンコード

処理結果はメインリターンコードとサブリターンコードに通知します。INIT要求の処理結果コードを次の表に示します。

ステータスコード00901，リターン値EETRNER_ARGUMENTの場合，エラーの内容によっては，メインリターンコードとサブリターンコードは設定されません。

表1‒71　INIT要求の処理結果コード

項番

リターンコード

サブリターンコード

意味

ステータスコード

リターン値

1

'N'

'△'

正常に終了しました。

00000

EE_OK

2

'B'

'△'

処理中に，次の要求が来ました。

00941

EETRNER_CONDITION

3

'D'

'E'

処理対象の履歴情報表を決定できませんでした※1。

00941

EETRNER_CONDITION

4

'J'

指定された世代番号の履歴情報表が存在しません。または，開始世代番号を決定できませんでした※2。

PJ管理表に退避した世代番号と連続性のある履歴情報表が存在しません。

00941

EETRNER_CONDITION

5

'E'

'△'

予期しないパラメタを指定しました。またはパラメタのフォーマットが不正です。INIT要求の発行順序に誤りがあります。

00941

EETRNER_CONDITION

6

'E'

内部関数でエラーが発生しました。

00957

EETRNER_INVALID

7

'O'

'G'

UAP履歴情報のバッファリングに失敗しました。

00951

EETRNER_MEMORY_SHORT

8

'1'

UAP履歴情報グループ配下にUAP履歴情報がありません。または，指定された履歴情報表がUAP履歴情報グループ配下にありません。

最新のルート世代が決定できませんでした※3。

00941

EETRNER_CONDITION

9

'2'

指定されたルート世代，または最新のルート世代のUAP履歴情報がありません。PJ管理表に退避したルート世代のUAP履歴情報がありません。

00941

EETRNER_CONDITION

10

'P'

'A'

UAP履歴情報グループ名の指定に誤りがあります。

00901

EETRNER_ARGUMENT

11

'E'

環境変数EETRNIOALOGCMODEの指定に誤りがあります。

00901

EETRNER_ARGUMENT

12

'G'

RANGパラメタの指定に誤りがあります※4。

00901

EETRNER_ARGUMENT

13

'J'

JSQパラメタの指定に誤りがあります※4。

00901

EETRNER_ARGUMENT

14

'K'

KINDパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

15

'L'

BLKNパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

16

'M'

TBLTYPEパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

17

'N'

PJIDパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

18

'P'

PJCKパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

19

'Q'

FORCパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

20

'S'

SRVパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

21

'W'

UJSTパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

22

'Z'

制御情報ファイル名の指定に誤りがあります。

00901

EETRNER_ARGUMENT

23

'2'

RJSQパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

24

'6'

環境変数グループ名に誤りがあります。

00901

EETRNER_ARGUMENT

25

'7'

INTVパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

26

'8'

環境変数EETRNIOALOGDIRの指定に誤りがあります。

00901

EETRNER_ARGUMENT

27

'△'

システム使用領域に不当な値を設定しました。または，制御情報ファイル解析中に次のエラーが発生しました。

制御情報ファイルのアクセス失敗

制御情報ファイルに構文不正

領域確保失敗

00901

EETRNER_ARGUMENT

28

'T'

'G'

作業領域の確保に失敗しました。

00951

EETRNER_MEMORY_SHORT

29

'L'

履歴情報表名の指定に誤りがあります。

00901

EETRNER_ARGUMENT

30

'C'

'△'

データベースへのアクセスに失敗しました※5。

00954

EETRNER_SQL_ERROR

31

'L'

'I'

TP1/FSPが正しくインストールされていません。

00941

EETRNER_CONDITION

32

'S'

拡張SYSLOGライブラリルーチンのローディングに失敗しました。

00941

EETRNER_CONDITION

33

'U'

オンライン環境下（TP1/EEのUAP）からは，この機能は使用できません。

00941

EETRNER_CONDITION

34

'W'

'E'

PJ突き合わせ表が存在しません。または，

PJ突き合わせ表の構造不正を検知しました。

00954

EETRNER_SQL_ERROR

35

'G'

PJ突き合わせ表を使用するための作業領域の確保に失敗しました。

00951

EETRNER_MEMORY_SHORT

36

'I'

PJ突き合わせ表のアクセスエラーを検知しました。

00954

EETRNER_SQL_ERROR

37

'L'

UAP履歴情報グループの最大履歴情報長とPJ引き継ぎ情報の最大履歴情報長が不一致です。

00941

EETRNER_CONDITION

38

'A'

'E'

PJ管理表が存在しません。または，PJ管理表の構造不正を検知しました。

00954

EETRNER_SQL_ERROR

39

'I'

PJ管理表のアクセスエラーを検知しました。

00954

EETRNER_SQL_ERROR

（凡例）

△：1文字の空白

注※1

次の原因が考えられます。

・RANGパラメタで指定した開始累積データ通番を履歴情報表から検出できません。

・PJCKパラメタに'Y'指定時，処理を開始しようとする世代番号の履歴情報表は，オンラインで現用として使用中です。

・履歴情報表にUAP履歴情報がないため，開始累積データ通番を決定できませんでした。

・PJ管理表に退避した再開情報は，すでに終了世代番号の履歴情報表の最終UAP履歴情報まで読み込み済みであるため，処理を再開できません。

・PJ管理表に退避した再開情報は，すでに終了累積データ通番のUAP履歴情報まで読み込み済みであるため，処理を再開できません。

・PJ管理表に退避した累積データ通番と連続性のあるUAP履歴情報がありません。

注※2

次の原因が考えられます。

・ルート世代番号の全履歴情報表の世代番号が，JSQパラメタで指定した終了世代番号を超えています。

・ルート世代番号の全履歴情報表の世代番号が0または不正です。

注※3

次の原因が考えられます。

・割り当てた全履歴情報表のルート世代番号が不正です。

注※4

次のようなラップを考慮した検索条件を設定することはできません。

設定する必要がある場合は，INIT要求の注意事項を参照してください。

・JSQパラメタの場合，開始世代番号＞終了世代番号と設定しました。

・RANGパラメタの場合，開始累積データ通番＞終了累積データ通番と設定しました。

注※5

次の原因が考えられます。

・グループ管理表，または履歴情報表の構造が不正です。

・SQLエラーを検知しました。

・指定されたグループ管理表，または履歴情報表が存在しません。

SQLCODE

表へのアクセスに失敗した場合，そのときのSQLCODEを設定します。

障害情報長

障害情報の長さを0から63までの範囲で設定します。障害情報がない場合，0を設定します。

障害情報

表へのアクセスに失敗した場合，そのときの障害情報を設定します。

表名

障害情報の最後にはヌル文字（0x00）を設定します。

障害情報長が0のとき，障害情報を設定しないため，参照しないでください。

UJSTパラメタ構造体アドレス

入力対象が取得用履歴情報表で要求コードに'Y'を設定している場合は，UJSTパラメタ構造体に次の情報を設定します。情報はステータスコードが00000のときだけ設定します。

状態コード

現用の履歴情報表の有無を示す状態コードを設定します。設定する状態コードを次に示します。

'N' ：現用の履歴情報表が入力対象に含まれません。

'O' ：現用の履歴情報表が入力対象に含まれます。

ステータスコード

データ名B

ステータスコードが，5桁の数字で返されます。

リターン値

意味

00000

正常に終了しました。

00901

引数に設定した値が間違っています。

00941

発行条件が不正です。

00951

メモリが不足しました。

00954

SQL実行時にエラーが発生しました。

00957

内部関数でエラーが発生しました。

指定例

RANGパラメタを使用する場合のINIT要求の指定例を次に示します。

      *   サンプルヘッダ取り込み
       COPY EETRNIOA.

      *   初期化
       INITIALIZE EETRN-IOAINIT_IPARAM
                  EETRN-IOAINIT_RANG.

      *   設定
      **   制御情報ファイル名
       MOVE '/opt/OpenTP1/examples/tp1ee/conf/eetrnioa_smpl.conf' TO
            EETRN-IOAINIT_CNTL_FILE.
      **   UAP履歴情報グループ名
       MOVE 'IOA' TO EETRN-IOAINIT_UAPFNM.
      **    RANGパラメタ構造体アドレス
       COMPUTE EETRN-IOAINIT_RANG_PT = FUNCTION ADDR(EETRN-IOAINIT_RANG).
      **   開始累積データ通番
       MOVE 2 TO EETRN-IOAINIT_START_BLOCK_NO.
      **   終了累積データ通番
       MOVE 10 TO EETRN-IOAINIT_END_BLOCK_NO.

      *   INIT要求
       CALL 'CBLEETRN' USING EETRN-IOAINIT-ARG EETRN-IOAINIT_IPARAM.

注意事項

検索範囲が終端（EOF，EOR，EOT）を超えていた場合，検索範囲に関係なく入力は終了します。

検索範囲に指定できる次の値はラップするおそれがあります。

・世代番号（最小値0x00000001，最大値0x7FFFFFFF）

・累積データ通番（最小値0x0000000000000001，最大値0x700000000098967F）

しかし，検索開始値と検索終了値が最大値をまたがるようなラップを考慮した検索範囲を指定することはできません。ラップを考慮した検索をしたい場合は，検索開始値〜最大値，最小値〜検索終了値の2回に分けてデータ抽出ユティリティを実行する必要があります。

例えば，世代番号の0x7FFFFFEFから0x00000010までを検索したい場合は，次のように2回に分けてデータ抽出ユティリティを実行する必要があります。開始世代番号0x7FFFFFEF，終了世代番号0x00000010のように指定することはできません。

　1回目：開始世代番号0x7FFFFFEF，終了世代番号0x7FFFFFFF（最大値）

　2回目：開始世代番号0x00000001（最小値），終了世代番号0x00000010

各パラメタ構造体の予備はゼロクリアしてください。

PJ引き継ぎ情報の再開情報を使用する条件と，再開情報を使用するときのINIT要求での各パラメタの変更可否について次の図に示します。PJ引き継ぎ情報の再開情報を使用する条件については表1-72に，再開情報を使用するときのINIT要求での各パラメタの変更可否については表1-73に示します。

図1‒44　再開情報を使用する条件と再開時のパラメタ変更可否の関係

表1‒72　再開情報の使用条件

項番

パラメタ

PJ引き継ぎ情報の再開情報

再開情報の使用

PJID

FORC

1

指定なし

−

−

使用しない

2

指定あり

'Y'

−

使用しない

3

'N'

なし

使用しない

4

あり

使用する

（凡例）

−：該当しません

表1‒73　再開情報を使用するときのINIT要求での各パラメタの変更可否

項番

パラメタ

変更可否

1

INIT要求

制御情報ファイル名

○

2

UAP履歴情報グループ名

×

3

FORCパラメタ

（現用状態の履歴情報表を読み込むかどうか）

×

4

JSQパラメタ

開始世代番号

×

5

終了世代番号

×

6

KINDパラメタ

×

7

PJCKパラメタ

×

8

RANGパラメタ

開始累積データ通番

×

9

終了累積データ通番

×

10

UJSTパラメタ

○

11

制御情報ファイル

PJIDパラメタ

○

12

CNCTHDLパラメタ

○

13

BLKNパラメタ

○

14

INTVパラメタ

○

15

RJSQパラメタ

×

16

TBLTYPEパラメタ

○

17

UAPTBLパラメタ

○

（凡例）

○：変更可能

×：変更不可（INIT要求の指定値は無視する）

(5)　CBLEETRN('IOAGET ')（トランザクション制御（COBOL言語））

名称

GET要求

形式

PROCEDURE DIVISIONの指定
CALL 'CBLEETRN' USING 一意名1 一意名_GPARAM

DATA DIVISIONの指定
01 一意名1.
  02 データ名A   PIC X(8) VALUE 'IOAGET  '.
  02 データ名B   PIC X(5).
  02 FILLER       PIC X(3).
  02 データ名C   PIC S9(9) COMP VALUE ZERO.

01 一意名_GPARAM.   /*GETパラメタ構造体 */
  02 データ名_RETURN_CODE   PIC X(1).          /*メインリターンコード */
  02 データ名_SUB_CODE      PIC X(1).          /*サブリターンコード */
  02 FILLER                 PIC X(6).          /*予備 */
  02 データ名_SQL_CODE      PIC S9(18) COMP.   /*SQLCODE */
  02 データ名_ERR_INF_LEN   PIC S9(9) COMP.    /*障害情報長 */
  02 データ名_ERR_INF       PIC X(64).  /*障害情報 */
  02 FILLER                 PIC X(4).   /*予備 */
  02 データ名_RTN_PT        ADDRESS.    /*RTNパラメタ構造体アドレス */
  02 データ名_SET_PT        ADDRESS.    /*SETパラメタ構造体アドレス */
  02 データ名_USER_PT       ADDRESS.    /*USERパラメタ構造体アドレス */
  02 データ名_SYSTEM1       ADDRESS.    /*TP1/FSP使用領域1   */
  02 FILLER                 PIC X(248). /*予備 */

01 一意名_RTN.                                   /*RTNパラメタ構造体 */
  02 データ名_BLOCK_NO           PIC S9(18) COMP.  /*累積データ通番 */
  02 データ名_JSQ                PIC S9(9) COMP.   /*世代番号 */
  02 データ名_ROOT_JSQ           PIC S9(9) COMP.   /*ルート世代番号 */
  02 データ名_RUN_ID             PIC 9(9) COMP-X.  /*ランID */
  02 データ名_PROC_NO            PIC 9(9) COMP-X.  /*中央処理通番 */
  02 データ名_NODE_ID            PIC X(4).         /*ノード識別子 */
  02 データ名_SERVICE_NAME_LEN   PIC S9(9) COMP.   /*サービス名長 */
  02 データ名_SERVICE_NAME       PIC X(32).        /*サービス名 */
  02 データ名_DATE               PIC X(8).         /*取得年月日 */
  02 データ名_TIME               PIC X(6).         /*取得時刻 */
  02 FILLER                      PIC X(2).         /*予備 */
  02 データ名_ORDER              PIC S9(9) COMP.   /*取得順序 */
  02 FILLER                      PIC X(68).        /*予備 */

01 一意名_SET.   /*SETパラメタ構造体   */
  02 データ名_DATA_AREA_LEN  PIC S9(9) COMP. /*UAP履歴情報格納エリア長 */
  02 データ名_DATA_LEN       PIC S9(9) COMP. /*UAP履歴情報長 */
  02 データ名_DATA_AREA_PT   ADDRESS.        /*UAP履歴情報格納エリア */
                                             /*アドレス */
  02 FILLER                  PIC X(64).      /*予備 */

01 一意名_USER.                            /*USERパラメタ構造体 */
  02 データ名_DATA_AREA_LEN  PIC S9(9) COMP. /*ユーザプログラム引き継ぎ */
                                           /*情報格納エリア長 */
  02 データ名_DATA_LEN       PIC S9(9) COMP. /*ユーザプログラム引き継ぎ */
                                           /*情報長 */
  02 データ名_DATA_AREA_PT  ADDRESS.      /*ユーザプログラム引き継ぎ */
                                          /*情報格納エリアアドレス */
  02 FILLER                 PIC X(64).    /*予備 */

機能

GET要求を行います。

本関数の発行可否は，「1.6.2　データ抽出ユティリティ用ライブラリ関数」の「APIの発行手順」を参照してください。

GET要求には，次のパラメタを設定できます。各パラメタは省略できます。

RTNパラメタ：UAP履歴情報の関連情報取得要求指定

SETパラメタ：UAP履歴情報の取得要求指定

USERパラメタ：ユーザプログラム引き継ぎ情報の取得要求指定

図1‒45　GETパラメタのフォーマット

UAPで値を設定するデータ領域

データ名A

GET要求を示す要求コードを「VALUE 'IOAGET△△'」と設定します。

データ名C

0を設定します。

一意名_GPARAM

GET要求を規定したGETパラメタ構造体のアドレスを設定します。

RTNパラメタ構造体アドレス

RTNパラメタを規定したRTNパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，次に示すUAP履歴情報の関連情報をRTNパラメタ構造体に取得できます。

・累積データ通番

・世代番号

・ルート世代番号

・ランID

・中央処理通番

・ノード識別子

・サービス名

・取得年月日

・取得時刻

・取得順序

本パラメタの設定を省略すると，UAP履歴情報の関連情報は取得しません。

SETパラメタ構造体アドレス

SETパラメタを規定したSETパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，UAP履歴情報をSETパラメタ構造体に取得できます。ただし，設定したUAP履歴情報格納エリア長よりも大きなUAP履歴情報が現れた場合，設定されたエリア長分のUAP履歴情報を設定し，エラーリターンします。

本パラメタの設定を省略すると，UAP履歴情報は取得しません。

UAP履歴情報格納エリアアドレス

入力したUAP履歴情報を格納するエリアのアドレスを設定します。UAP履歴情報の設定形式を次の図に示します。

UAP履歴情報格納エリア長

UAP履歴情報を格納するエリア長を41以上の値で設定します。

図1‒46　UAP履歴情報の設定形式

USERパラメタ構造体アドレス

USERパラメタを規定したUSERパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，TERM要求で退避したユーザプログラム引き継ぎ情報をUSERパラメタ構造体に取得できます。ただし，ユーザプログラム引き継ぎ情報格納エリア長よりも退避したユーザプログラム引き継ぎ情報長が大きい場合，設定したエリア長分だけユーザプログラム引き継ぎ情報を設定し，エラーリターンします。

本パラメタの設定を省略すると，ユーザプログラム引き継ぎ情報は取得しません。

ユーザプログラム引き継ぎ情報格納エリアアドレス

取得するユーザプログラム引き継ぎ情報を格納するエリアのアドレスを設定します。ユーザプログラム引き継ぎ情報の設定形式を次の図に示します。

ユーザプログラム引き継ぎ情報格納エリア長

ユーザプログラム引き継ぎ情報の格納エリア長を1以上の値で設定します。

図1‒47　ユーザプログラム引き継ぎ情報の設定形式

TP1/FSP使用領域1

ZEROを設定します。

データ抽出ユティリティから値が返されるデータ領域

一意名_GPARAM

メインリターンコード，サブリターンコード

処理結果はメインリターンコードとサブリターンコードに通知します。GET要求の処理結果コードを次の表に示します。

ステータスコード00901，リターン値EETRNER_ARGUMENTの場合，エラーの内容によっては，メインリターンコードとサブリターンコードは設定されません。

表1‒74　GET要求の処理結果コード

項番

メインリターンコード

サブリターンコード

意味

ステータスコード

リターン値

1

'N'

'D'

PJなしのUAP履歴情報で，該当するトランザクション（中央処理通番）に後続するUAP履歴情報があります。

00000

EE_OK

2

'E'

PJなしのUAP履歴情報で，該当するトランザクション（中央処理通番）に後続するUAP履歴情報がありません。

00000

EE_OK

3

'J'

PJありのUAP履歴情報で，該当するトランザクション（中央処理通番）に後続するUAP履歴情報がありません。

00000

EE_OK

4

'P'

PJありのUAP履歴情報で，該当するトランザクション（中央処理通番）に後続するUAP履歴情報があります。

00000

EE_OK

5

'B'

'△'

処理中に，次の要求が来ました。

00941

EETRNER_CONDITION

6

'E'

'△'

予期しないパラメタを指定しました。またはパラメタのフォーマットが不正です。GET要求の発行順序に誤りがあります。

00941

EETRNER_CONDITION

7

'E'

内部関数でエラーが発生しました。

00957

EETRNER_INVALID

8

'F'

'△'

EOFを入力しました。

00000

EE_OK

9

'E'

検索範囲指定で，最終のUAP履歴情報の処理を終了しました（EOR）。

00000

EE_OK

10

'V'

最終の世代番号に対する処理を終了しました（EOT）。

PJCKパラメタの要求コードに'U'設定時，GET要求したときの入力対象が現用の履歴情報表でした。

00000

EE_OK

11

'G'

'△'

作業領域の確保に失敗しました。

00951

EETRNER_MEMORY_SHORT

12

'P'

'I'

SETパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

13

'W'

USERパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

14

'△'

システム使用領域に不当な値を設定しました。

00901

EETRNER_ARGUMENT

15

'I'

'P'

UAP履歴情報の格納エリアがUAP履歴情報より小さいです。

00956

EETRNER_OVERFLOW

16

'C'

'△'

データベースへのアクセスに失敗しました※。

00954

EETRNER_SQL_ERROR

17

'W'

'E'

PJ突き合わせ表が存在しません。または，

PJ突き合わせ表の構造不正を検知しました。

00954

EETRNER_SQL_ERROR

18

'G'

PJ突き合わせ表を使用するための作業領域の確保に失敗しました。

00951

EETRNER_MEMORY_SHORT

19

'I'

PJ突き合わせ表のアクセスエラーを検知しました。

00954

EETRNER_SQL_ERROR

20

'P'

ユーザプログラム引き継ぎ情報の格納エリアが退避したユーザプログラム引き継ぎ情報より小さいです。

00956

EETRNER_OVERFLOW

21

'X'

PJ引き継ぎ情報の引き継ぎ履歴情報数が少ないです。

00956

EETRNER_OVERFLOW

22

'A'

'E'

PJ管理表が存在しません。または，PJ管理表の構造不正を検知しました。

00954

EETRNER_SQL_ERROR

23

'I'

PJ管理表のアクセスエラーを検知しました。

00954

EETRNER_SQL_ERROR

（凡例）

△：1文字の空白

注※

次の原因が考えられます。

・グループ管理表，または履歴情報表の構造が不正です。

・SQLエラーを検知しました。

・指定されたグループ管理表，または履歴情報表が存在しません。

SQLCODE

表へのアクセスに失敗した場合，そのときのSQLCODEを設定します。

障害情報長

障害情報の長さを0から63までの範囲で設定します。障害情報がない場合，0を設定します。

障害情報

表へのアクセスに失敗した場合，そのときの障害情報を設定します。

・表名

障害情報の最後にはヌル文字（0x00）を設定します。

障害情報長が0のとき，障害情報を設定しないため，参照しないでください。

RTNパラメタ構造体アドレス

RTNパラメタ構造体に次の情報を設定します。情報はステータスコードが00000，かつメインリターンコードが'N'のときだけ設定します。

UAP履歴情報が複数の行に分割されていた場合，先頭の行の情報を設定します。例えば，累積データ通番が1の行と2の行にUAP履歴情報が分割されていた場合，累積データ通番には，1を設定します。

累積データ通番

入力したUAP履歴情報の累積データ通番を設定します。

世代番号

入力したUAP履歴情報を格納していた履歴情報表の世代番号を設定します。

ルート世代番号

入力したUAP履歴情報を取得したときのルート世代番号を設定します。

ランID

入力したUAP履歴情報を取得したTP1/EEのランIDを設定します。

中央処理通番

入力したUAP履歴情報を取得したトランザクションの中央処理通番を設定します。

ノード識別子

入力したUAP履歴情報を取得したTP1/EEのノード識別子を4バイトのアスキー文字列で設定します。文字列の最後にヌル文字（0x00）を設定しません。

サービス名長

サービス名の長さを0から31までの範囲で設定します。サービス名がない（TP1/EEのエラートランザクションから取得したUAP履歴情報など）場合，0を設定します。

サービス名

入力したUAP履歴情報を取得したTP1/EEのサービス名を1から31バイト以内のアスキー文字列で設定します。文字列の最後にはヌル文字（0x00）を設定します。

サービス名長が0のとき，サービス名を設定しないため，参照しないでください。

取得年月日

入力したUAP履歴情報の取得年月日をYYYYMMDDの8バイトのアスキー文字列で設定します。

YYYY：年（西暦）（0001≦YYYY≦9999）

MM：月（01≦MM≦12）

DD：日（01≦DD≦該当年月の最終日）

取得時刻

入力したUAP履歴情報の取得時刻をhhmmssの6バイトのアスキー文字列で設定します。

hh：時（00≦hh≦23）

mm：分（00≦mm≦59）

ss：秒（00≦ss≦59）※

注※

HiRDBのシステム共通定義pd_leap_secondオペランドでうるう秒を指定できるようにした場合，ssの範囲は（00≦ss≦61）です。

取得順序

UAP履歴情報の取得順序を1から32,767までの範囲で設定します。

SETパラメタ構造体アドレス

SETパラメタ構造体に次の情報を設定します。情報はステータスコードが00000，かつメインリターンコードが'N'のときだけ設定します。

UAP履歴情報長

入力したUAP履歴情報のサイズを41から9,437,184の範囲で設定します。

UAP履歴情報格納エリアアドレス

設定されたアドレスにUAP履歴情報を設定します。UAP履歴情報の格納形式を次の図に示します。

図1‒48　UAP履歴情報の格納形式

USERパラメタ構造体アドレス

USERパラメタ構造体に次の情報を設定します。情報はステータスコードが00000のときだけ設定します。

ユーザプログラム引き継ぎ情報長

取得するユーザプログラム引き継ぎ情報長を0から4,000までの範囲で設定します。制御情報ファイルのPJIDパラメタを省略，またはユーザプログラム引き継ぎ情報が退避されていない場合，0を設定します。

ユーザプログラム引き継ぎ情報格納エリアアドレス

設定されたアドレスにユーザプログラム引き継ぎ情報を設定します。ユーザプログラム引き継ぎ情報の格納形式を次の図に示します。

図1‒49　ユーザプログラム引き継ぎ情報の格納形式

ステータスコード

データ名B

ステータスコードが，5桁の数字で返されます。

リターン値

意味

00000

正常に終了しました。

00901

引数に設定した値が間違っています。

00941

発行条件が不正です。

00951

メモリが不足しました。

00954

SQL実行時にエラーが発生しました。

00956

ユーザプログラム引き継ぎ情報またはUAP履歴情報の格納エリアが小さい，またはPJ引き継ぎ情報の引き継ぎ履歴情報数が少ないです。

00957

内部関数でエラーが発生しました。

指定例

SETパラメタを使用する場合のGET要求の指定例を次に示します。

      *   ヘッダ取り込み
       COPY EETRNIOA.

      *   初期化
       INITIALIZE EETRN-IOAGET_GPARAM
                  EETRN-IOAGET_SET.

      *   設定
      **   SETパラメタ構造体アドレス
       COMPUTE EETRN-IOAGET_SET_PT = FUNCTION ADDR(EETRN-IOAGET_SET).
      **   UAP履歴情報格納エリア長
       MOVE 256 TO EETRN-IOAGET-S_DATA_AREA_LEN.
      **   UAP履歴情報格納エリアアドレス
       COMPUTE EETRN-IOAGET-S_DATA_AREA_PT = FUNCTION ADDR(SET-DATA).

     *   GET要求
       CALL 'CBLEETRN' USING EETRN-IOAGET-ARG EETRN-IOAGET_GPARAM.

注意事項

各パラメタ構造体の予備はゼロクリアしてください。

複数行に分割されたUAP履歴情報の一部が入力対象外に存在する場合，分割されたUAP履歴情報をGET要求で入力することはできません。例えば，累積データ通番が1の行と2の行にUAP履歴情報が分割されているとき，RANGパラメタの開始累積データ通番と終了累積データ通番に1を設定すると，分割されたUAP履歴情報を入力することはできません。

(6)　CBLEETRN('IOATERM ')（トランザクション制御（COBOL言語））

名称

TERM要求

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEETRN' USING 一意名1 一意名_TPARAM

DATA DIVISIONの指定
01 一意名1.
  02 データ名A              PIC X(8) VALUE 'IOATERM '.
  02 データ名B              PIC X(5).
  02 FILLER                  PIC X(3).
  02 データ名C              PIC S9(9) COMP VALUE ZERO.

01 一意名_TPARAM.                              /*TERMパラメタ構造体 */
  02 データ名_RETURN_CODE    PIC X(1).         /*メインリターンコード */
  02 データ名_SUB_CODE       PIC X(1).         /*サブリターンコード */
  02 FILLER                  PIC X(6).         /*予備 */
  02 データ名_SQL_CODE       PIC S9(18) COMP.  /*SQLCODE */
  02 データ名_ERR_INF_LEN    PIC S9(9) COMP.   /*障害情報長 */
  02 データ名_ERR_INF        PIC X(64).        /*障害情報 */
  02 FILLER                  PIC X(4).         /*予備 */
  02 データ名_USER_PT        ADDRESS.   /*USERパラメタ構造体アドレス */
  02 FILLER                  PIC X(256).       /*予備 */

01 一意名_USER   /*USERパラメタ構造体 */
構造体の内容はCBLEETRN('IOAGET  ')参照

機能

TERM要求を行います。

本関数の発行可否は，「1.6.2　データ抽出ユティリティ用ライブラリ関数」の「APIの発行手順」を参照してください。

TERM要求には，次のパラメタを設定できます。

USERパラメタ：ユーザプログラム引き継ぎ情報の退避要求指定

図1‒50　TERMパラメタのフォーマット

UAPで値を設定するデータ領域

データ名A

TERM要求を示す要求コードを「VALUE 'IOATERM△'」と設定します。

データ名C

0を設定します。

一意名_TPARAM

TERM要求を規定したTERMパラメタ構造体のアドレスを設定します。

USERパラメタ構造体アドレス

USERパラメタを規定したUSERパラメタ構造体のアドレスを設定します。本パラメタを省略する場合は，ZEROを設定します。

本パラメタを設定すると，設定したユーザプログラム引き継ぎ情報をPJ管理表に退避できます。ただし，次のどれかの場合は退避しません。

GET要求でEOFを入力後

制御情報ファイルのPJIDパラメタを省略

本パラメタの設定を省略すると，ユーザプログラム引き継ぎ情報をPJ管理表に退避しません。

UAP履歴情報の入力を中断したい場合は，本パラメタを必ず設定してください。本パラメタを省略すると中断にはなりません。

直前のGET要求でメインリターンコード'N'，かつサブリターンコード'D'，'E'，または'P'のときは，USERパラメタを設定しないでください。

ユーザプログラム引き継ぎ情報格納エリア長

ユーザプログラム引き継ぎ情報の格納エリア長を1から4,000までの範囲で設定します。

ユーザプログラム引き継ぎ情報長

退避するユーザプログラム引き継ぎ情報長を1から4,000までの範囲で設定します。先頭からユーザプログラム引き継ぎ情報長分退避します。ただし，ユーザプログラム引き継ぎ情報格納エリア長≧退避するユーザプログラム引き継ぎ情報長となるように設定してください。

ユーザプログラム引き継ぎ情報格納エリア

ユーザプログラム引き継ぎ情報を格納したエリアアドレスを設定します。退避するユーザプログラム引き継ぎ情報の格納形式を次の図に示します。

図1‒51　退避するユーザプログラム引き継ぎ情報の格納形式

データ抽出ユティリティから値が返されるデータ領域

一意名_TPARAM

メインリターンコード，サブリターンコード

処理結果はメインリターンコードとサブリターンコードに通知します。TERM要求の処理結果コードを次の表に示します。

ステータスコード00901，リターン値EETRNER_ARGUMENTの場合，エラーの内容によっては，メインリターンコードとサブリターンコードは設定されません。

表1‒75　TERM要求の処理結果コード

項番

メインリターンコード

サブリターンコード

意味

ステータスコード

リターン値

1

'N'

'△'

正常に終了しました。

00000

EE_OK

2

'B'

'△'

処理中に，次の要求が来ました。

00941

EETRNER_CONDITION

3

'E'

'△'

予期しないパラメタを指定しました。またはパラメタのフォーマットが不正です。TERM要求の発行順序に誤りがあります。

00941

EETRNER_CONDITION

4

'E'

内部関数でエラーが発生しました。

00957

EETRNER_INVALID

5

'P'

'W'

USERパラメタの指定に誤りがあります。

00901

EETRNER_ARGUMENT

6

'C'

'△'

データベースへのアクセスに失敗しました※。

00954

EETRNER_SQL_ERROR

7

'W'

'E'

PJ突き合わせ表が存在しません。または，

PJ突き合わせ表の構造不正を検知しました。

00954

EETRNER_SQL_ERROR

8

'G'

PJ突き合わせ表を使用するための作業領域の確保に失敗しました。

00951

EETRNER_MEMORY_SHORT

9

'I'

PJ突き合わせ表のアクセスエラーを検知しました。

00954

EETRNER_SQL_ERROR

10

'X'

PJ引き継ぎ情報の引き継ぎ履歴情報数が少ないです。

00956

EETRNER_OVERFLOW

11

'A'

'E'

PJ管理表が存在しません。または，PJ管理表の構造不正を検知しました。

00954

EETRNER_SQL_ERROR

12

'I'

PJ管理表のアクセスエラーを検知しました。

00954

EETRNER_SQL_ERROR

（凡例）

△：1文字の空白

注※

次の原因が考えられます。

・グループ管理表，または履歴情報表の構造が不正です。

・SQLエラーを検知しました。

・指定されたグループ管理表，または履歴情報表が存在しません。

SQLCODE

表へのアクセスに失敗した場合，そのときのSQLCODEを設定します。

障害情報長

障害情報の長さを0から63までの範囲で設定します。障害情報がない場合，0を設定します。

障害情報

表へのアクセスに失敗した場合，そのときの障害情報を設定します。

表名

障害情報の最後にはヌル文字（0x00）を設定します。

障害情報長が0のとき，障害情報を設定しないため，参照しないでください。

ステータスコード

データ名B

ステータスコードが，5桁の数字で返されます。

リターン値

意味

00000

正常に終了しました。

00901

引数に設定した値が間違っています。

00941

発行条件が不正です。

00951

メモリが不足しました。

00954

SQL実行時にエラーが発生しました。

00956

PJ引き継ぎ情報の引き継ぎ履歴情報数が少ないです。

00957

内部関数でエラーが発生しました。

指定例

USERパラメタを使用する場合のTERM要求の指定例を次に示します。

      *   ヘッダ取り込み
       COPY EETRNIOA.

      *   初期化
       INITIALIZE EETRN-IOATERM_TPARAM
                  EETRN-IOATERM_USER USER-DATA.

      *   設定
      **   USERパラメタ構造体アドレス
       COMPUTE EETRN-IOATERM_USER_PT = FUNCTION ADDR(EETRN-IOATERM_USER).
      **   引き継ぎ情報格納エリア長
       MOVE 256 TO EETRN-IOATERM-U_DATA_AREA_LEN.
      **   引き継ぎ情報長
       MOVE 5 TO EETRN-IOATERM-U_DATA_LEN.
      **   引き継ぎ情報格納エリアアドレス
       COMPUTE EETRN-IOATERM-U_DATA_AREA_PT = FUNCTION ADDR(USER-DATA).
      **   引き継ぎ情報
       MOVE 'ABCDE' TO USER-DATA.

      *   TERM要求
       CALL 'CBLEETRN' USING EETRN-IOATERM-ARG EETRN-IOATERM_TPARAM.

注意事項

各パラメタ構造体の予備はゼロクリアしてください。

(7)　制御情報ファイル

データ抽出ユティリティを実行するための制御情報を規定します。

(a)　ファイルの記述形式

ファイルの記述形式については，マニュアル「TP1/Financial Service Platform 使用の手引」を参照してください。

(b)　制御文の文法

制御情報ファイルから，コメントや継続行を評価したあとの，制御文の文法を次に示します。

制御情報ファイル ::= 行  行*

行 ::= 制御文 | 空行

制御文 ::= 空白文字*  制御文識別子  スペース  パラメタ群

空白文字 ::= ' ' | '¥t'

制御文識別子 ::= "CONTROL" | "TABLE"

スペース ::= 空白文字  空白文字*

パラメタ群 ::= パラメタ  区切り文字つきパラメタ*

パラメタ ::= 空白文字*  パラメタ識別子  空白文字*  '='  空白文字*  パラメタ値※

パラメタ識別子 ::= "PJID" | "CNCTHDL" | "BLKN" | "INTV"
| "RJSQ" | "TBLTYPE" | "UAPTBL"

区切り文字つきパラメタ ::= 空白文字*  ','  空白文字*  パラメタ

空行 ::= 空白文字*

注※

パラメタ値は，各パラメタ識別子ごとにフォーマットが異なります。各パラメタの説明で，「指定する文字列をシングルクォートやダブルクォートで囲むことができる」と記述しているものだけ，シングルクォートやダブルクォートを使うことができます。

(c)　CONTROL文

データ抽出ユティリティの実行環境と入力するUAP履歴情報の検索条件を指定します。この制御文は省略不可です。この制御文は2つ以上指定できません。各パラメタは複数指定できません。

CONTROL [PJID=PJ引き継ぎ情報名]
        [,CNCTHDL=環境変数グループ名]
        [,BLKN=一括読み込みブロック数]
        [,INTV=読み込み実行間隔]
        [,RJSQ=ルート世代番号]
        [,TBLTYPE=｛ONLINE｜RELOAD｝]

PJID=PJ引き継ぎ情報名　〜〈1〜26文字の英大識別子〉

eeaphpjtblhコマンドの-pオプションで指定したPJ引き継ぎ情報名を指定します。

本パラメタを指定すると，次の機能を使用できます。

本パラメタの指定を省略すると，次の機能を使用できません。

テストやトラブルシュートを目的とする場合以外は，本パラメタを指定します。

再開情報の引き継ぎ

UAP履歴情報の引き継ぎ

UAP履歴情報入力の中断

データ抽出ユティリティの強制実行

ユーザプログラム情報の引き継ぎ

CNCTHDL=環境変数グループ名　〜〈シングルクォートで囲んだ255文字以内のパス名〉

接続するHiRDBの環境変数（クライアント環境定義）を記述したファイル名を絶対パス名で指定します。HiRDBの環境変数を記述したファイルについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の環境変数のグループ登録を参照してください。

環境変数グループ名を指定すると，ファイルに記述された環境変数を使用しHiRDBへの接続を行います。

環境変数グループ名の指定を省略すると，設定されているHiRDBの環境変数を使用してHiRDBに接続します。

BLKN=一括読み込みブロック数　〈符号なし整数〉((1〜256))《32》

履歴情報表から一括して読み込む行数を指定します。

INTV=読み込み実行間隔　〈符号なし整数〉((0〜100))《0》（単位：ミリ秒）

GET要求での履歴情報表からの読み込みの実行間隔を指定します。

オンライン性能に対する影響を軽減したいときには読み込み実行間隔に大きな値を指定します。

RJSQ=ルート世代番号　〈8桁の16進数〉((00000001〜7FFFFFFF))《最新のルート世代番号》

入力したい履歴情報表のルート世代番号を指定します。

本パラメタの指定を省略すると，入力対象が取得用履歴情報表の場合，最新のルート世代のUAP履歴情報を入力します※。入力対象がリロード用の履歴情報表の場合，いちばん大きいルート世代のUAP履歴情報を入力します。

注※

TABLE文のUAPTBLを指定した場合，UAPTBL内に最新のルート世代と一致する履歴情報表がない場合は，メインリターンコード'O'，サブリターンコード'2'でエラーリターンします。

TBLTYPE=｛ONLINE｜RELOAD｝

入力対象とする履歴情報表のタイプを次のどちらかで指定します。

また，本パラメタの指定値は，データ抽出ユティリティの実行ごとにパラメタ値が有効となります。

ONLINE：取得用履歴情報表を入力します。

RELOAD：リロード用履歴情報表を入力します。

(d)　TABLE文

データ抽出ユティリティで使用する表について指定します。

この制御文は省略不可であり，2つ以上指定できません。

TABLE [UAPTBL=履歴情報表名]
      [,UAPTBL=履歴情報表名]
              ：

UAPTBL=履歴情報表名　〈1〜26文字の英大識別子〉

入力対象となる履歴情報表名（取得用履歴情報表作成コマンド（eeaphtblh）の-tオプションに指定した履歴情報表名，またはリロード用履歴情報表作成コマンド（eeaphrtblh）で作成した履歴情報表の表名）を指定します。

入力対象がリロード用履歴情報表の場合，必ず指定します。

入力対象が取得用履歴情報表の場合，省略可能です。指定を省略するとINIT要求で指定したUAP履歴情報グループに存在する全履歴情報表の中で検索条件が一致する履歴情報表を入力対象とします。

1,000個まで指定できます。

1.7　全銀RCプロトコル接続機能インタフェース

1.7.1　制御ミドル関数のインタフェース概要

TP1/FSPはMCPから通信イベント・受信イベントの通知を受け取ると，制御ミドル関数をコールしイベント情報を引数で通知します。引数で通知する情報はTP1/EEのSPPサービスプログラムの引数をそのまま同じ形で通知します。

(1)　通信イベントサービス

MCPの後処理トランザクション起動時に常に制御ミドル関数をコールします。

(2)　受信サービス

情報メッセージおよび送達管理メッセージを受信した場合に制御ミドル関数をコールします。

制御メッセージ受信時にはコールしません。

(3)　タイマサービス

情報メッセージに対する送達管理メッセージ受信待ちタイマ（t3）のタイムアウト発生時に制御ミドル関数をコールします。制御メッセージ送信間隔タイマ（t2）のタイムアウト発生時にはコールしません。

PROCEDURE DIVISIONの指定
CALL 'CBL*****' USING 一意名1一意名2一意名3一意名4一意名5一意名6
DATA DIVISIONの指定
01一意名1.
  02 データ名A  PIC X(n).
01一意名2.
  02 データ名B  PIC S9(9) COMP.
01一意名3.
  02 データ名C  PIC X(n).
01 一意名4.
  02 データ名D  PIC S9(9) COMP.
01 一意名5.
  02 データ名E  PIC 9(9) COMP.       /*情報長                        */
  02 データ名F  PIC 9(9) COMP.       /*サービスグループ名長          */
  02 データ名G  PIC X(32).           /*サービスグループ名            */
  02 データ名H  PIC 9(9) COMP.       /*サービス名長                  */
  02 データ名I  PIC X(32).           /*サービス名                    */
  02 データ名J  PIC X(2).            /*トランザクション種別          */
  02 データ名K  PIC X(1).            /*自動閉塞有無                  */
  02 データ名L  PIC X(1).            /*コミット有無                  */
  02 データ名M  PIC 9(9) COMP.       /*処理スレッド通番              */
  02 データ名N  PIC 9(9) COMP.       /*エラー要因コード              */
  02 データ名O  PIC 9(9) COMP.       /*ユーザIFAエリアサイズ        */
  02 FILLER     PIC X(4).             /*予備                         */
  02 データ名P  ADDRESS.             /*ユーザIFAエリアポインタ      */
  02 データ名Q  PIC 9(9) COMP.       /*ユーザSATエリアサイズ        */
  02 FILLER     PIC X(4).             /*予備                         */
  02 データ名R  ADDRESS.             /*ユーザSATエリアポインタ      */
  02 データ名S  PIC X(1).            /*応答要否                      */
  02 データ名T  PIC X(1).            /*メッセージ状態                */
  02 データ名U  PIC X(1).            /*プロセス起動要因              */
  02 データ名V  PIC X(1).            /*前回プロセス終了要因          */
  02 データ名W  PIC X(1).            /*プロセス終了要因              */
  02 データ名X  PIC X(1).            /*スレッドダウン種別            */
  02 データ名Y  PIC X(1).            /*異常発生トランザクション種別  */
  02 データ名Z  PIC X(1).            /*拡張トランザクション種別      */
  02 データ名AA  PIC 9(9) COMP.        /*リソースマネジャ数            */
  02 データ名AB  PIC S9(9) COMP.     /*リソースマネジャ接続状態      */
  02 データ名AC  PIC 9(9) COMP.      /*送信サービスグループ名長      */
  02 データ名AD  PIC X(32).          /*送信サービスグループ名        */
  02 データ名AE  PIC 9(9) COMP.      /*送信サービス名長              */
  02 データ名AF  PIC X(32).          /*送信サービス名                */
  02 データ名AG  PIC 9(9) COMP.      /*異常発生処理スレッド通番      */
  02データ名AS  PIC 9(9) COMP.       /*トランザクションレベル名長    */
  02 データ名AH  ADDRESS.            /*拡張トランザクションインタフェース情報*/
  02 データ名AI  ADDRESS.            /*XTC拡張トランザクションインタフェース情報*/
  02 データ名AJ  ADDRESS.            /*MCP拡張トランザクションインタフェース情報*/
  02 データ名AK  PIC X(1).           /*メッセージ種別                */
  02 データ名AL  PIC X(1).           /*エラートランザクション要因    */
  02データ名AO  PIC X(1).            /*トランザクション起動要因      */
  02 データ名AP  PIC 9(9) COMP.      /*サーバ再起動回数              */
  02 データ名AM  PIC 9(18) COMP.     /*ユーザIFAエリアサイズ（拡張）*/
  02 データ名AN  PIC 9(18) COMP.     /*ユーザSATエリアサイズ（拡張）*/
  02 データ名AQ  PIC X(14).          /*トランザクション起動時刻      */
  02 データ名AR  PIC X(5).           /*ノード識別子                  */
  02 FILLER      PIC X(1).            /*予備                          */
  02 データ名AT  PIC X(32).          /*トランザクションレベル名      */
  02 FILLER      PIC X(4).           /*予備                           */
01 一意名6.
  02 データ名BA  PIC X(1).           /* TP1/FSP呼び出し元処理種別    */
  02 FILLER      PIC X(3).           /* 予備                          */
  02 データ名 BB PIC S9(9) COMP.    /* 論理端末名サイズ（TIMEOUT用）  */
  02 データ名BC  PIC X(9).           /* 論理端末名（TIMEOUT用）      */
  02 データ名BD  PIC X(2).           /* LCN番号（TIMEOUT用）         */
  02 データ名BE   PIC X(1).          /* 送達管理メッセージ送信フラグ  */

ここでは，データ領域の設定のうち，TP1/EEと異なる部分について説明します。そのほかのデータ領域情報については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

TP1/FSPから値が返されるデータ領域

データ名A〜D

データ名AMのイベント通知元情報が「0：受信サービス」「1：通信イベントサービス」の場合に参照可能です。データ名AMのイベント通知元情報が「2：タイマサービス」の場合は参照しないでください。TP1/FSP（全銀RC）のサービスが受け取った引数情報をそのまま制御ミドルへ通知します。

データ名E〜AT

「1.7.7　トランザクションインタフェース情報」を参照してください。

TP1/FSP（全銀RC）特有情報

データ名BA

イベント通知元情報として次の数値を設定します。

X'00'：受信サービス

X'01'：通信イベントサービス

X'02'：タイマサービス

データ名BB

データ名AMのイベント通知元情報が「2：タイマサービス」であった場合にだけ参照可能です。送達管理待ちタイムアウトとなった論理端末名サイズを設定します。

データ名BC

データ名AMのイベント通知元情報が「2：タイマサービス」であった場合にだけ参照可能です。送達管理待ちタイムアウトとなった論理端末名を設定します。

データ名BD

データ名AMのイベント通知元情報が「2：タイマサービス」であった場合にだけ参照可能です。送達管理待ちタイムアウトとなったLCN番号をキャラクタ情報で設定します。

LCN番号が12の場合：'12'

データ名BE

データ名AMのイベント通知元情報が「0：受信サービス」であった場合にだけ参照可能です。

送達管理メッセージの送信要否の情報として次の数値を設定します。

X'00'：送達管理メッセージの送信不要（eemcpcn定義-zオプションrspmodeオペランドにautoを指定したコネクション）

X'01'：送達管理メッセージの送信要（eemcpcn定義-zオプションrspmodeオペランドにmanualを指定したコネクション）

1.7.2　制御ミドル関数で発行できるライブラリ

(1)　通信イベントサービス

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」およびマニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引」でトランザクション種別RLのトランザクションで使用できるAPI関数を参照してください。

(2)　受信サービス

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」およびマニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引」でトランザクション種別MNのトランザクションで使用できるAPI関数を参照してください。

(3)　タイマサービス

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」およびマニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引」でトランザクション種別TZのトランザクションで使用できるAPI関数を参照してください。

1.7.3　ライブラリ関数で指定するサービス名の注意事項

ee_zrcから始まるサービス名はTP1/FSP（全銀RC）で内部作成し処理に使用します。そのため，ee_zrcから始まるサービス名をライブラリ関数に指定しないでください。

1.7.4　TP1/FSP（全銀RC）関数の概要

業務UAPサービスの処理で送信要求やERRTRNSが発生した場合に，各種TP1/FSP（全銀RC）関数をコールしてください。各関数で必要な内部処理を実施します。

1.7.5　TP1/FSP（全銀RC）関数のコールタイミングについて

製品略称

API名

トランザクション種別

TP1/EE

MCP

TP1/FSP

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

RL

UT

CU

JI

BS

TZ

TP1/FSP

全銀RC

ee_zrc_snd_message

×

×

△

×

×

×

×

×

×

○

△

×

○

×

×

×

ee_zrc_snd_response

×

×

△

×

×

△

×

×

×

×

×

×

×

×

×

×

ee_zrc_errtrns

×

×

×

×

×

×

×

○

×

×

×

×

×

×

×

×

（凡例）

○：発行可

△：一部発行可（詳細は，各コマンドの説明を参照）

×：発行可能なトランザクションではないため発行不可

発行不可のタイミングで関数を発行するとエラーとなり，APIはリターン値に「EEZRCER_CONDITION」または「EEZRCER_ALREADY」を設定してリターンします。

(1)　送信関数（ee_zrc_snd_message）

一部発行可のトランザクション種別について，次の表に示します。

トランザクション種別

内容

発行可否

MN

ee_zrcから始まるTP1/FSP（全銀RC）のサービス

×

上記以外

○

RL

ee_zrcから始まるTP1/FSP（全銀RC）のサービス

×

上記以外

○

（凡例）

○：発行可

×：発行不可

発行不可のタイミングで関数を発行するとエラーとなり，APIはリターン値に「EEZRCER_CONDITION」を設定してリターンします。

機能

全銀RCセンタへ情報メッセージを送信します。

形式

ANSI C，C++の形式

#include <eezrc.h>
int  ee_zrc_snd_message(char *termnam, char *senddata, int sdataleng, char *lcn, int mcp_rtn);

UAPで値を設定する引数

termnam

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろにはヌル文字を付けてください。

senddata

送信するセグメントの内容を設定した領域を設定します。

sdataleng

送信するセグメントの長さを設定します。設定できる値は65〜1,564になります

（サブレイヤヘッダ16バイト，業務プロトコルヘッダ48バイト，テキスト長最大1,500バイト）。

図1‒52　送信するセグメントの長さ

サブレイヤヘッダと業務プロトコルヘッダについてはTP1/FSP（全銀RC）が電文を作成します。MCP使用領域，サブレイヤヘッダ，業務プロトコルヘッダ，テキスト部の全体の領域を確保し，テキスト部に情報をセットして関数をコールしてください。

lcn

送信する電文のLCN番号をキャラクタ形式2バイトで設定します。

TP1/FSP（全銀RC）で値を設定する引数

mcp_rtn

リターン値がEEZRCER_MCPSENDの場合，エラーとなったee_mcp_send関数のリターン値を設定します。

ee_zrc_snd_message関数のリターン値

リターン値

意味

EEZRC_OK

正常に終了しました。

EEZRCER_MCPSEND

ee_mcp_send関数でエラーが発生しました（mcp_rtn引数を参照可能）。

EEZRCER_TERM_HOLD

termnamに設定した論理端末名が閉塞中です。

EEZRCER_CON_CLOSE

termnamに設定した論理端末名に該当するTCPコネクションが切断中です。

EEZRCER_ARGUMENT

senddataに設定した値が間違っています。

EEZRCER_LCN_WAIT

lcnに設定したLCN番号は送達管理待ち状態です。

EEZRCER_MESSAGE_TOO_BIG

sdatalengにプロトコル最大長を超える値を設定しています。

EEZRCER_MESSAGE_TOO_SHORT

sdatalengに64以下の値を設定しています。

EEZRCER_LE_NAME

termnamに設定した値が間違っています。

EEZRCER_MCPRTN

mcp_rtnに設定した値が間違っています。

EEZRCER_TP1_FUNCTION

OpenTP1内部関数でエラー発生しました。

EEZRCER_ZRC_NOT_DEFINED

全銀RCプロトコルが定義されていません。

EEZRCER_TIMER

タイマ監視の設定でエラーが発生しました。

EEZRCER_LCN

lcnに設定した値が間違っています。

EEZRCER_CONDITION

発行条件が不正です。

ee_trn_rollback_mark関数が発行済みです。

このAPI関数を呼び出せるトランザクションではありません。

(2)　送達管理電文送信関数

一部発行可のトランザクション種別について，次の表に示します。

トランザクション種別

内容

発行可否

MN

制御ミドル関数データ領域の送達管理メッセージ送信フラグ（データ名BE）がX'01'

○

上記以外

×

E3

全銀RCサービス拡張トランザクションインタフェース情報の送達管理メッセージ送信フラグがX'01'※1

○

上記以外

×

（凡例）

○：発行可

×：発行不可

発行不可のタイミングで関数を発行するとエラーとなり，APIはリターン値に「EEZRCER_CONDITION」または「EEZRCER_ALREADY」を設定してリターンします。※2

注※1

送達管理メッセージがすでに送信済みの場合，送達管理メッセージ送信フラグはX'00'となります。

注※2

ee_trn_retry_rollback関数発行前に送達管理電文送信関数を発行し，ee_trn_retry_rollback関数発行後に再度，送達管理電文送信関数を発行した場合，APIはリターン値に「EEZRCER_ALREADY」を設定してリターンします。

機能

全銀RCセンタへ送達管理メッセージを送信します。

形式

ANSI C，C++の形式

#include <eezrc.h>
int  ee_zrc_snd_response(char rsp_type, EELONG flags);

UAPで値を設定する引数

rsp_type

送信する送達管理メッセージの応答種別を次の形式で指定します。

EEZRC_SNDACK：ACKの送達管理メッセージを送信する場合に指定します。

EEZRC_SNDNAK：NAKの送達管理メッセージを送信する場合に指定します。

flags

EENOFLAGSを設定します。

ee_zrc_snd_response関数のリターン値

リターン値

意味

EEZRC_OK

正常に終了しました。

EEZRCER_MCPSEND

MCP電文送信関数でエラーが発生しました。

本エラー時はコネクションを解放します。

EEZRCER_TERM_HOLD

論理端末が閉塞中です。

EEZRCER_CON_CLOSE

TCPコネクションが確立状態ではありません。

EEZRCER_TP1_FUNCTION

OpenTP1内部関数でエラー発生しました。

EEZRCER_ZRC_NOT_DEFINED

全銀RCプロトコルが定義されていません。

EEZRCER_CONDITION

発行条件が不正です。

このAPI関数を呼び出せるトランザクションではありません。

情報メッセージではないメッセージに対してこの関数を発行しました。

eemcpcn定義-zオプションrspmodeオペランドがautoのコネクションで本関数を実行しました。

EEZRCER_ALREADY

送達管理メッセージは送信済みです。

EEZRCER_ARGUMENT

引数に設定した値が間違っています。

(3)　ERRTRNS関数（ee_zrc_errtrns）

業務UAPサービスのERRTRNSサービスでERRTRNSの起動を確認した場合，全銀RCの電文送信に関するERRTRNSであった場合に本関数をコールしてください。

機能

TP1/FSP（全銀RC）にERRTRNSの発生を通知します。TP1/FSP（全銀RC）では送信に失敗したメッセージの送達管理待ちタイマのキャンセル処理を実施します。

形式

ANSI C，C++の形式

void  ee_zrc_errtrns (char *in， EEULONG *in_len， char *out， EEULONG *out_len，
EERPC_INTERFACE_TBL *trninf);

UAPで値を設定する引数

in

in_len

out

out_len

trninf

業務UAPサービスが受信したERRTRNSの引数情報をそのままセットしてください。

1.7.6　エラートランザクションインタフェース

TP1/FSP（全銀RC）としてのエラートランザクション定義要否と，エラートランザクションでのTP1/FSP（全銀RC）として必要な業務UAP処理を次の表に示します。

表1‒76　TP1/FSP（全銀RC）としてのエラートランザクション定義要否エラートランザクションでの必要な業務UAP処理

項番

エラートランザクション種別

名称

発生原因

定義要否

エラートランザクションでTP1/FSP（全銀RC）として必要な業務UAP処理

1

不正サービス名検出通知

ERRTRN1

受信したメッセージに設定されたサービス名は定義されていません。

△

ユーザ任意です（定義不正）。

2

サービス閉塞通知

ERRTRN2

サービス閉塞中のためトランザクションを起動できません。

△

ユーザ任意です。

業務エラートランザクションスレッドでイベント通知を受信した際には論理端末を閉塞し障害の要因を取り除いてください。

3

UAP異常終了通知

ERRTRN3

UAPが，メッセージを受信したあとに異常終了しました。

ユーザ任意です。

業務エラートランザクションスレッドでイベント通知を受信した際には論理端末を閉塞し障害の要因を取り除いてください。

eemcpcn定義-zオプションrspmodeオペランドにmanualを指定した場合は，送達管理メッセージ送信フラグを参照し，必要ならば送達管理電文送信関数を呼び出してください。ERRTRN3を終了時に送達管理メッセージが未送信の場合は，当該コネクションを解放します。

4

タイマトランザクション起動破棄通知

ERRTRN4

システム終了，または該当サービスが閉塞中のため，タイマトランザクションの起動を破棄しました。

△

ユーザ任意です。

5

コミット決着失敗通知

ERRTRNR

UAPリターン後のトランザクション同期点処理で，コミット決着できませんでした。

△

ユーザ任意です。

6

送信障害通知

ERRTRNS

メッセージを送信する途中で通信プロトコル障害が発生しました。

○

定義必須です（TP1/FSP（全銀RC）定義）。

業務UAPサービスでERRTRNSを受け取った場合は，ERRTRNS通知関数でTP1/FSPに通知してください。TP1/FSPでタイマキャンセル処理を実施します。

ERRTRNSの情報からエラー原因を調査し対策してください。

（凡例）

○：定義必須です

△：定義有無はユーザ任意です

(1)　C言語インタフェース

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」との差分についてだけ説明します（下線付き太字は既存との差異を示します）。

形式

#include <eerpcsrv.h>
#include <eezrc.h>
void  関数名(char *in, EEULONG *in_len, char *out, EEULONG *out_len,
             EERPC_INTERFACE_TBL *trninf)
{
サービスの処理
}

EERPC_INTERFACE_TBL構造体の形式を示します。
<64ビット>
EERPC_INTERFACE_TBL {
        ：
  EEULONG    abn_thread_no;
  EEULONG    trnlevel_len;
  union {
    TRNINF_SERVICE_EX  *trninf_service_ex;
    TRNINF_DBQ_EX*trninf_dbq_ex;
    TRNINF_DBQ_OBS_EX  * trninf_dbq_obs_ex;
    TRNINF_OBM_EX  * trninf_obm_ex;
    TRNINF_TIM_EX  * trninf_tim_ex;
    void           * trninf_zrc_ex;
  } ex_inf;
  void       *xtc_pt;
  void       *mcp_pt;
        ：
}

サービス関数に渡される引数情報

トランザクション種別が「E3」,「ER」でかつ，メッセージ種別（msg_type）がEERPC_MSGTYPE_ZRCの場合の，引数の参照可否を次の表に示します。

表1‒77　引数の参照可否

項番

引数

トランザクション種別

E3

ER

1

入力パラメタ

×

×

2

入力パラメタ長

×

×

3

サービス関数の応答

×

×

4

応答の長さ

×

×

5

トランザクションインタフェース情報

○

○

（凡例）

○：参照できます。

×：参照できません。

E3：ERRTRN3

ER：ERRTRNR

TP1/EEから値が渡される引数

trninf

トランザクションインタフェース情報が渡されます。本情報は，参照だけ可能です。

内容については，「1.7.7　トランザクションインタフェース情報」を参照してください。

(2)　COBOL言語インタフェース

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」との差分についてだけ説明します。

形式

形式に変更はありません。

サービス関数の引数情報

「1.7.6(1)　C言語インタフェース」の「サービス関数に渡される引数情報」を参照してください。

1.7.7　トランザクションインタフェース情報

トランザクションインタフェース情報の内容について示します。

(1)　C言語インタフェース

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」との差分についてだけ説明します。

トランザクション種別が「TZ」，「E3」，「ER」でかつ，メッセージ種別（msg_type）がEERPC_MSGTYPE_ZRCの場合の，引数の参照可否を次の表に示します。

表1‒78　トランザクションインタフェース情報の参照可否

項番

引数情報

参照可否

TZ

TZでエラーとなった場合のE3

TZでエラーとなった場合のER

MNでエラーとなった場合のE3

1

情報長

○

○

○

○

2

サービスグループ名長

○

○

○

○

3

サービスグループ名

○

○

○

○

4

サービス名長

×

×

×

○

5

サービス名

×

×

×

○

6

トランザクション種別

○

○

○

○

7

自動閉塞有無

×

○

×

○

8

コミット有無

×

○

○

○

9

処理スレッド通番

○

○

○

○

10

エラー要因コード

×

○

〇

○

11

ユーザIFAエリアサイズ

○

○

○

○

12

ユーザIFAエリアポインタ

○

○

○

○

13

ユーザSATエリアサイズ

○

○

○

○

14

ユーザSATエリアポインタ

○

○

○

○

15

応答要否

×

×

○

×

16

メッセージ状態

○

○

○

○

17

プロセス起動要因

×

×

×

×

18

前回プロセス終了要因

×

×

×

×

19

プロセス終了要因

×

×

×

×

20

スレッドダウン種別

×

○

×

○

21

異常発生トランザクション種別

×

○

○

○

22

拡張トランザクション種別

○

○

○

○

23

リソースマネジャ数

○

○

○

○

24

リソースマネジャ接続状態

○

○

〇

○

25

送信サービスグループ名長

×

×

×

×

26

送信サービスグループ名

×

×

×

×

27

送信サービス名長

×

×

×

×

28

送信サービス名

×

×

×

×

29

異常発生処理スレッド通番

×

○

〇

○

30

拡張トランザクションインタフェース情報

△

△

△

△

31

TP1/EE/XTC拡張トランザクション情報

×

×

×

×

32

TP1/EE/MCP拡張トランザクション情報

※

※

※

※

33

メッセージ種別

○

○

○

○

34

エラートラン要因

×

×

×

×

35

ユーザIFAエリアサイズ（拡張）

○

○

○

○

36

ユーザSATエリアサイズ（拡張）

○

○

○

○

37

トランザクション起動要因

×

×

×

×

38

リソースマネジャ連携有無

○

○

○

○

39

サーバ再起動回数

×

×

×

×

40

トランザクション起動時刻

○

○

○

○

41

送信元のノード識別子

×

○

○

○

42

トランザクションレベル名長

×

×

×

×

43

トランザクションレベル名

×

×

×

×

（凡例）

○：参照できます。

△：拡張トランザクション種別がNULL以外の場合は参照できます。

×：参照できません。

TZ：全銀RCタイマトランザクション

E3：ERRTRN3

ER：ERRTRNR

注※

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引」を参照してください。

(a)　全銀RCタイマトランザクションのトランザクション情報詳細

全銀RCタイマトランザクション，および全銀RCタイマトランザクションでエラーとなった場合のERRTRN3とERRTRNRで参照可能なトランザクションインタフェース情報を次に示します。次に説明がないトランザクション情報については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option　プログラム作成の手引」を参照してください。

異常発生トランザクション種別

異常発生したトランザクション（要求元トランザクション）の種別を設定します。

EERPC_UAPABN_TZ：全銀RCタイマトランザクション（X'10'）

メッセージ種別

トランザクション起動契機となった入力メッセージの種別が設定されます。

( )はCOBOLで参照する場合の値です。

EERPC_MSGTYPE_ZRC：全銀RCサービス（X'31'）

拡張トランザクション種別

拡張トランザクション種別を設定します。拡張トランザクション種別が次の場合，拡張トランザクションインタフェース情報が設定されます。

EERPC_TRN_EX_ZRC：全銀RCサービス拡張トランザクションインタフェース情報（'Z'）

拡張トランザクションインタフェース情報

拡張トランザクション種別がEERPC_TRN_EX_ZRCの場合，全銀RCサービス拡張トランザクションインタフェース情報が設定されます。

TRNINF_ZRC_EX{
  EEULONG  trn_len;          情報長
  char     yobi_0[4];        予備
  char     call_kind;        TP1/FSP呼び出し元処理種別
  char     yobi_1[3];        予備
  EELONG   le_name_len;      論理端末名サイズ（タイムアウト用）
  char     le_name[9];       論理端末名（タイムアウト用）
  char     lcn_number[2];    LCN番号（タイムアウト用）
  char     rsp_flag;         送達管理メッセージ送信フラグ
  char     yobi_2[172];      予備
}

trn_len

拡張トランザクションインタフェース情報の長さが設定されます（単位：バイト）。

図1‒53　拡張トランザクションインタフェース情報の長さ

call_kind

イベント通知元情報として次の数値を設定します。

EEZRC_CALLKIND_TZ：タイマサービス（X'02'）

le_name_len

送達管理待ちタイムアウトとなった論理端末名サイズを設定します。

le_name

送達管理待ちタイムアウトとなった論理端末名を設定します。

lcn_number

送達管理待ちタイムアウトとなったLCN番号をキャラクタ情報で設定します。

LCN番号が12の場合：'12'

rsp_flag

送達管理メッセージを送信する必要があるかを示します。

call_kindがEEZRC_CALLKIND_TZの場合は設定しません。

(b)　サービストランザクション（制御ミドル）でのトランザクション情報詳細

eemcpcn定義-zオプションrspmodeオペランドにmanualを指定したコネクションで，情報メッセージ受信時にサービストランザクション（制御ミドル）でエラーとなった場合のERRTRN3で参照可能なトランザクションインタフェース情報を次に示します。次に説明がないトランザクション情報については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option　プログラム作成の手引」を参照してください。

拡張トランザクション種別

拡張トランザクション種別を設定します。拡張トランザクション種別が次の場合，拡張トランザクションインタフェース情報が設定されます。

EERPC_TRN_EX_ZRC：全銀RCサービス拡張トランザクションインタフェース情報（'Z'）

拡張トランザクションインタフェース情報

全銀RCサービス拡張トランザクションインタフェース情報TRNINF_ZRC_EXが設定されます。

trn_len

拡張トランザクションインタフェース情報の長さが設定されます（単位：バイト）。

call_kind

イベント通知元情報として次の数値を設定します。

EEZRC_CALLKIND_MN：受信サービス（X'01'）

le_name_len

call_kindがEEZRC_CALLKIND_MNの場合は設定しません。

le_name

call_kindがEEZRC_CALLKIND_MNの場合は設定しません。

lcn_number

call_kindがEEZRC_CALLKIND_MNの場合は設定しません。

rsp_flag

送達管理メッセージを送信する必要があるかを示します。

EEZRC_REPLY_NONE：送達管理メッセージは送信済み，または送信不要です（X'00'）。

EEZRC_REPLY：送達管理メッセージは未送信です（X'01'）。

(2)　COBOL言語インタフェース

マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」との差分についてだけ説明します。

拡張トランザクションインタフェース情報

拡張トランザクション種別が'Z'の場合，全銀RCサービス拡張トランザクションインタフェース情報が設定されます。

01 一意名1.
02 データ名C1    PIC 9(9) COMP.       情報長
02 FILLER        PIC X(4).            予備
02 データ名C2    PIC X(1).            TP1/FSP呼び出し元処理種別
02 FILLER        PIC X(3).            予備
02 データ名C3    PIC S9(9) COMP.      論理端末名サイズ（タイムアウト用）
02 データ名C4    PIC X(9).            論理端末名（タイムアウト用）
02 データ名C5    PIC X(2).            LCN番号（タイムアウト用）
02 データ名C6    PIC X(1).            送達管理メッセージ送信フラグ
02 FILLER        PIC X(172).          予備

それぞれの値については，「1.7.7(1)　C言語インタフェース」を参照してください。

1.8　UAP履歴情報取得機能が提供する共通のデータ領域

1.8.1　C言語インタフェース

UAP履歴情報取得機能が提供する共通のデータ領域を次に示します。

(1)　UAP履歴情報のフォーマット

図1‒54　UAP履歴情報のフォーマット

(2)　履歴情報共通インデクス

形式

#include <eetrn.h>
typedef ee_trn_uap_com_index_t {       /* 履歴情報共通インデクス */
    EELONG comx_rec_len;               /* レコード長             */
    unsigned char comx_rec_id;         /* レコードID             */
    unsigned char comx_rec_sub_id;     /* レコードサブID         */
    unsigned short comx_putid;         /* 取得先ID               */
    char comx_ee_inf1[14];             /* TP1/EE情報             */
    unsigned short comx_ee_inf2;       /* TP1/EE情報             */
    char comx_biz_id[12];              /* 業務ID                 */
    EELONG comx_uap_len;               /* 履歴情報サイズ         */
} EETRN_UAP_COMINDEX;

内容

表1‒79　履歴情報共通インデクスの内容

項番

取得項目

設定する値

1

レコード長

当該レコードのレコード長

履歴情報共通インデクスと履歴情報の合計サイズ

2

レコードID

当該レコードの種別

EETRN_UAP_TYPE_UJ：ユーザデータ（UJ）

EETRN_UAP_TYPE_IJ：入力データ（IJ）

EETRN_UAP_TYPE_OJ：出力データ（OJ）

3

レコードサブID

当該レコードの詳細コード

「表1-80　レコードサブIDの内容」を参照してください。

4

取得先ID

取得先ID

5

TP1/EE情報

TP1/EEが使用する情報

6

TP1/EE情報

TP1/EEが使用する情報

7

業務ID

業務ID

8

履歴情報サイズ

履歴情報のサイズ

表1‒80　レコードサブIDの内容

項番

レコードID

レコードサブID

内容

1

EETRN_UAP_TYPE_UJ

EETRN_UAP_SUB_UJ

ユーザデータ（UJ）

2

EETRN_UAP_TYPE_IJ

EETRN_UAP_SUB_IJ

入力データ（IJ）

3

EETRN_UAP_TYPE_OJ

EETRN_UAP_SUB_OJ

出力データ（OJ）

(3)　履歴情報ヘッダ

形式

#include <eetrn.h>
typedef struct ee_trn_uap_header_t{    /* 履歴情報ヘッダ        */
    char uap_info[4];                  /* データ連携支援引き継ぎ情報*/
    char uap_header[16];               /* ユーザ任意情報            */
    unsigned short uap_putid;          /* 取得先ID              */
    unsigned char uap_type;            /* 履歴情報種別           */
    unsigned char uap_code;            /* 履歴情報コード         */
    char dummy[4];                     /* 予備                   */
    EEULONG uap_size;                  /* 履歴情報サイズ         */
} EEUAPHEADER;

内容

表1‒81　履歴情報ヘッダの内容

項番

取得項目

設定する値

1

データ連携支援引き継ぎ情報

「1.2.5(7)　ee_trn_set_uj_info」を参照してください。

2

ユーザ任意情報

「1.2.5(3)　ee_trn_uap_put」を参照してください。

3

取得先ID

4

履歴情報種別

5

履歴情報コード

6

履歴情報サイズ

(4)　OJヘッダ

形式

#include <eetrn.h>
typedef struct ee_trn_oj_header_t{     /* OJヘッダ             */
    char comm_type;                    /* 通信種別              */
    char prot_type;                    /* プロトコル種別        */
    char msg_type;                     /* 電文種別              */
    char api_type;                     /* API種別               */
    EELONG output_id;                  /* 出力番号              */
    char service_group[32];            /* 宛先サービスグループ名*/
    char service_name[32];             /* 宛先サービス名         */
    char term_name[9];                 /* 論理端末名            */
    char dummy[7];                     /* 予備                  */
    EEULONG proc_orgno;                /* オリジナル中央処理通番*/
    EELONG uap_size;                   /*送信データサイズ       */
} EETRN_OJ_HEADER;

内容

表1‒82　OJヘッダの内容

項番

取得項目

設定する値

1

通信種別

通信種別を設定

EETRN_OJ_CTYPE_RPC：リモートプロシジャコール（RPC）

EETRN_OJ_CTYPE_RAP：リモートAPI機能（RAP）

EETRN_OJ_CTYPE_MCP：MCP

2

プロトコル種別

プロトコル種別を設定

EETRN_OJ_PTYPE_TCP：TCP/IP

EETRN_OJ_PTYPE_UDP：UDP/IP

3

電文種別

電文種別＋送信タイミングを設定

EETRN_OJ_MTYPE_SEND：要求電文（即時送信）

EETRN_OJ_MTYPE_CMT：要求電文（コミット送信）

EETRN_OJ_MTYPE_OWN：要求電文（自プロセス送信）

EETRN_OJ_MTYPE_REP：応答電文（通常）

EETRN_OJ_MTYPE_TRNREP：応答電文（別トランザクションによる送信）

EETRN_OJ_MTYPE_ERRREP：応答電文（ERRTRNRまたはERRTRN3による送信）

EETRN_OJ_MTYPE_RAPREQ：代理実行要求電文

EETRN_OJ_MTYPE_RAPREP：代理実行応答電文

EETRN_OJ_MTYPE_NSYNCONE：非同期一方送信

EETRN_OJ_MTYPE_SYNCONE：同期一方送信

EETRN_OJ_MTYPE_SENDRECV：同期送受信

4

API種別※1

API種別を設定

EETRN_OJ_API_CALL：ee_rpc_call()

EETRN_OJ_API_CALLTO：ee_rpc_call_to()

EETRN_OJ_API_CMTSEND：ee_rpc_cmtsend()

EETRN_OJ_API_CMTSENDTO：ee_rpc_cmtsend_to()

EETRN_OJ_API_REP：ee_rpc_reply_send()

EETRN_OJ_API_NONE：なし

EETRN_OJ_API_MCP：ee_mcp_send()

EETRN_OJ_API_MCPSYNC：ee_mcp_sendsync()

EETRN_OJ_API_MCPSENDRECV：ee_mcp_sendrecv()

EETRN_OJ_API_ZRCSEND：ee_zrc_snd_message()

5

出力番号

トランザクション内でOJ取得要求を行った出力番号

6

宛先サービスグループ名※2

（¥0終端あり）

宛先サービスグループ名

7

宛先サービス名※2

（¥0終端あり）

宛先サービス名

8

論理端末名※3

（¥0終端あり）

出力先の論理端末名

9

オリジナル中央処理通番※4

別トランザクションで応答送信を行った場合の，応答送信を抑止したトランザクションの中央処理通番。上記以外の場合は，0を設定。

10

送信データサイズ

実際に送信したデータ長

注※1

応答電文の場合は，EETRN_OJ_API_REPかEETRN_OJ_API_NONEを設定します。

注※2

通信種別がEETRN_OJ_CTYPE_RPCかEETRN_OJ_CTYPE_RAPの場合だけ参照可能です。

注※3

通信種別がEETRN_OJ_CTYPE_MCPの場合だけ参照可能です。

注※4

電文種別がEETRN_OJ_MTYPE_TRNREPの場合だけ参照可能です。

1.8.2　COBOL言語インタフェース

UAP履歴情報取得機能が提供する共通のデータ領域を次に示します。

(1)　UAP履歴情報のフォーマット

図1‒55　UAP履歴情報のフォーマット

(2)　履歴情報共通インデクス

形式

01  一意名 I.
  02  データ名I01    PIC S9(9) COMP.    /* レコード長        */
  02  データ名I02    PIC X(1).          /* レコードID        */
  02  データ名I03    PIC X(1).          /* レコードサブID    */
  02  データ名I04    PIC S9(4) COMP.    /* 取得先ID          */
  02  データ名I05    PIC X14.           /* TP1/EE情報        */
  02  データ名I06    PIC S9(4) COMP.    /* TP1/EE情報        */
  02  データ名I07    PIC X12.           /* 業務ID            */
  02  データ名I08    PIC S9(9) COMP.    /* 履歴情報サイズ     */

内容

表1‒83　履歴情報共通インデクスの内容

項番

取得項目

設定する値

1

レコード長

当該レコードのレコード長

履歴情報共通インデクスと履歴情報の合計サイズ

2

レコードID

当該レコードの種別

'U'：ユーザデータ（UJ）

'I'：入力データ（IJ）

'O'：出力データ（OJ）

3

レコードサブID

当該レコードの詳細コード

「表1-84　レコードサブIDの内容」を参照してください。

4

取得先ID

取得先ID

5

TP1/EE情報

TP1/EEが使用する情報

6

TP1/EE情報

TP1/EEが使用する情報

7

業務ID

業務ID

8

履歴情報サイズ

履歴情報のサイズ

表1‒84　レコードサブIDの内容

項番

レコードID

レコードサブID

内容

1

U

0x00

ユーザデータ（UJ）

2

I

I

入力データ（IJ）

3

O

0x00

出力データ（OJ）

(3)　履歴情報ヘッダ

形式

01  一意名 U.
  02  データ名U01    PIC X(4).          /* データ連携支援引き継ぎ情報 */
  02  データ名U06    PIC X(16).         /* ユーザ任意情報     */
  02  データ名U02    PIC S9(4) COMP.    /* 取得先ID          */
  02  データ名U03    PIC X(1).          /* 履歴情報種別      */
  02  データ名U04    PIC X(1).          /* 履歴情報コード    */
  02  FILLER         PIC X(4).          /* 予備               */
  02  データ名U05    PIC 9(9) COMP.     /* 履歴情報サイズ     */

内容

表1‒85　履歴情報ヘッダの内容

項番

取得項目

設定する値

1

データ連携支援引き継ぎ情報

「1.3.4(7)　CBLEETRN('SETUJINF')」を参照してください。

2

ユーザ任意情報

「1.3.4(3)　CBLEETRN('UAPPUT' )」を参照してください。

3

取得先ID

4

履歴情報種別

5

履歴情報コード

6

履歴情報サイズ

(4)　OJヘッダ

形式

01  一意名 O.
  02  データ名O01    PIC X(1).          /* 通信種別               */
  02  データ名O02    PIC X(1).          /* プロトコル種別         */
  02  データ名O03    PIC X(1).          /* 電文種別               */
  02  データ名O04    PIC X(1).          /* API種別                */
  02  データ名O05    PIC S9(9) COMP.    /* 出力番号               */
  02  データ名O06    PIC X(32).         /* 宛先サービスグループ名 */
  02  データ名O07    PIC X(32).         /* 宛先サービス名         */
  02  データ名O08    PIC X(9).          /* 論理端末名             */
  02  FILLER         PIC X(7).          /* 予備                   */
  02  データ名O09    PIC 9(9) COMP-X.   /* オリジナル中央処理通番 */
  02  データ名O0A    PIC S9(9) COMP.    /* 送信データサイズ       */

内容

表1‒86　OJヘッダの内容

項番

取得項目

設定する値

1

通信種別

通信種別を設定

'R'：リモートプロシジャコール（RPC）

'A'：リモートAPI機能（RAP）

'M'：MCP

2

プロトコル種別

プロトコル種別を設定

'T'：TCP/IP

'U'：UDP/IP

3

電文種別

電文種別＋送信タイミングを設定

'0'：要求電文（即時送信）

'1'：要求電文（コミット送信）

'2'：要求電文（自プロセス送信）

'3'：応答電文（通常）

'4'：応答電文（別トランザクションによる送信）

'5'：応答電文（ERRTRNRまたはERRTRN3による送信）

'6'：代理実行要求電文

'7'：代理実行応答電文

'8'：非同期一方送信

'9'：同期一方送信

4

API種別※1

API種別を設定

'0'：CBLEERPC('CALL ')

'1'：CBLEERPC('CALLTO ')

'2'：CBLEERPC('CMTSND ')

'3'：CBLEERPC('CMTSNDTO')

'5'：なし

'4'：CBLEERPC('R-SEND ')

'6'：CBLEEMCP('SEND ')

'7'：CBLEEMCP('SENDSYNC')

'8'：CBLEEMCP('SENDRECV')

'9'：ee_zrc_snd_message()

5

出力番号

トランザクション内でOJ取得要求を行った出力番号

6

宛先サービスグループ名※2

（¥0終端あり）

宛先サービスグループ名

7

宛先サービス名※2

（¥0終端あり）

宛先サービス名

8

論理端末名※3

（¥0終端あり）

出力先の論理端末名

9

オリジナル中央処理通番※4

別トランザクションで応答送信を行った場合の，応答送信を抑止したトランザクションの中央処理通番。上記以外の場合は，0を設定。

10

送信データサイズ

実際に送信したデータ長

注※1

応答電文の場合は，'4'か'5'を設定します。

注※2

通信種別が'R'か'A'の場合だけ参照可能です。

注※3

通信種別が'M'の場合だけ参照可能です。

注※4

電文種別が'4'の場合だけ参照可能です。

2　TP1/FSPのオンラインで使用するUOCの概要

この章では，TP1/FSPのオンラインで使用するUOCの概要について説明します。

2.1　TP1/FSPのオンラインで使用するUOCの一覧

TP1/FSPのオンラインで使用するUOCは，作成できる言語やUOCのエントリポインタの指定先がそれぞれ異なります。

各UOCの作成できる言語，および指定する定義パラメタを次の表に示します。

UOC名

言語インタフェース

定義パラメタ

C言語

COBOL言語

uoc_func

bcmuocfunc

bcsuocfunc

トランザクションレベル名判定UOC

○

×

○

×

×

OBMのトランザクションレベル名判定UOC

○

×

×

○

○

ユーザタイマ参照UOC

○

×

○

×

×

OBM開始/再開始UOC

○

○

×

○

×

OBM終了/停止UOC

○

○

×

○

×

OBMサービス名決定UOC

○

×

×

×

○

OBMスキップデータUOC

○

○

×

×

○

リトライロールバック前処理UOC

○

○

○

×

×

OJ編集UOC

○

×

○

×

×

（凡例）

○：作成または指定できる

×：作成または指定できない

3　TP1/FSPのオンラインで使用するUOC（C言語インタフェース）

この章では，TP1/FSPのオンラインで使用するUOC（C言語インタフェース）について説明します。

3.1　トランザクションレベル名判定UOC/OBMのトランザクションレベル名判定UOC（C言語）

3.1.1　機能

トランザクションレベル名判定UOC/OBMのトランザクションレベル名判定UOCは，処理キュー登録時のトランザクションレベル名を判定するUOCです。

uoc_func（トランザクションレベル名判定UOC）を呼び出すとき，次に示す所定のパラメタをparmに設定します。

3.1.2　形式

ANSI C,C++の形式

#include <eescd_uoc.h>
int uoc_func(struct eescd_uoc_parm *parm);

3.1.3　パラメタの内容

(1)　eescd_uoc_parmの内容

typedef struct eescd_uoc_parm {
  char            *usat;                 /* ユーザSATエリアポインタ     */
  EEULONG64       usat_len;              /* ユーザSATエリアサイズ       */
  char            service_name[32];      /* サービス名                   */
  char            trnlevel_name[32];     /* トランザクションレベル名     */
  struct eescd_uoc_msg
                  *msg;                  /* メッセージ管理エリアポインタ */
  EEULONG         msglen;                /* 受信メッセージサイズ         */
  char            req1;                  /* トランザクション種別1        */
  char            req2;                  /* トランザクション種別2        */
　char            obm_name[9];           /* OBM名称                      */
  char            reserve[57];           /* 予備                         */
}EESCDUOCPARM;

(2)　eescd_uoc_msgの内容

typedef struct eescd_uoc_msg {
  struct eescd_uoc_msg
                  *next;           /* 次メッセージ管理エリアポインタ */
  char            *msg;            /* 受信メッセージポインタ         */
  EEULONG         msg_len;         /* 受信メッセージサイズ           */
  char            reserve[12];     /* 予備                           */
} EESCDUOCMSG;

3.1.4　TP1/EEが値を設定する項目

(1)　eescd_uoc_parm

usat

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_len

ユーザSATエリアのサイズが設定されます（単位：バイト）。

service_name

サービス名が設定されます（¥0終端あり）。

msg

受信メッセージまたはバッチデータを管理するエリア（eescd_uoc_msg）のポインタが設定されます。受信メッセージまたはバッチデータがない場合はNULLが設定されます。

設定される値を次に示します。

項番

項目

トランザクションレベル名判定UOC

OBMのトランザクションレベル名判定UOC

イベント型OBM

データ型OBM

1

msg

メッセージデータ先頭アドレス

NULL

バッチデータ先頭アドレス

msglen

受信メッセージまたはバッチデータの全体サイズが設定されます。

受信メッセージまたはバッチデータがない場合は0が設定されます。

設定される値を次に示します。

項番

項目

トランザクションレベル名判定UOC

OBMのトランザクションレベル名判定UOC

イベント型OBM

データ型OBM

1

msg_len

メッセージデータ長

0

バッチデータ長

req1

トランザクション種別を示す次の情報が設定されます。

トランザクションレベル名判定UOCの場合はEESCD_REQ1_SERVICEが設定されます。

OBMのトランザクションレベル名判定UOCの場合はEESCD_REQ1_OBMSRVが設定されます。

設定値

意味

EESCD_REQ1_SERVICE

サービストランザクション

EESCD_REQ1_OBMSRV

OBMサービストランザクション

req2

req1がEESCD_REQ1_SERVICEの場合は，サービストランザクション種別を示す次の情報が設定されます。

設定値

意味

EESCD_REQ2_RPCRCV

ユーザトランザクション（TCP/IP）

EESCD_REQ2_RPCUDPRCV

ユーザトランザクション（UDP）

EESCD_REQ2_USERTM

ユーザタイマトランザクション

EESCD_REQ2_RAPRCV

RAPトランザクション

EESCD_REQ2_MCPTCPRCV

MCPトランザクション（TCP/IP）

EESCD_REQ2_MCPUDPRCV

MCPトランザクション（UDP）

EESCD_REQ2_MYUSERCMD

ユーザコマンドトランザクション（自ノード）

EESCD_REQ2_OTHERUSERCMD

ユーザコマンドトランザクション（他ノード）

req1がEESCD_REQ1_OBMSRVの場合は，OBMサービストランザクション種別を示す次の情報が設定されます。

設定値

意味

EESCD_REQ2_OBMOPN

OBMオープントランザクション

EESCD_REQ2_OBMNMLEVT

OBMノーマルトランザクション（イベント型）

EESCD_REQ2_OBMNMLDAT

OBMノーマルトランザクション（データ型）

EESCD_REQ2_OBMCLS

OBMクローズトランザクション

obm_name

req1がEESCD_REQ1_OBMSRVの場合は，OBM名が設定されます（¥0終端あり）。

req1がEESCD_REQ1_OBMSRV以外の場合は，すべて¥0が設定されます。

(2)　eescd_uoc_msg

next

フラグメントメッセージの場合，次のメッセージを管理するエリアのポインタが設定されます。

単一メッセージまたはフラグメントメッセージの最終メッセージの場合，NULLが設定されます。

msg

メッセージエリアのポインタが格納されます。

msg_len

メッセージエリアのサイズが格納されます。

3.1.5　ユーザが値を設定する項目

trnlevel_name

トランザクションレベル名を設定します。終端には¥0を設定してください。

3.1.6　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値

意味

EESCD_UOC_OK

正常リターン

EESCD_UOC_NG

エラーリターン

(1)　EESCD_UOC_OKの場合

設定されたトランザクションレベルで処理キュー登録をします。

指定したトランザクションレベル名が存在しない場合は，エラーメッセージを出力しERRTRN1を起動します。ただし，トランザクション種別がOBMサービストランザクションの場合，ERRTRN1は起動しないで，OBMを停止します。

(2)　リターン値が上記以外の場合

エラーメッセージを出力しERRTRN1を起動します。ただし，トランザクション種別がOBMサービストランザクションの場合，ERRTRN1は起動しないで，OBMを停止します。

3.1.7　発行可能なライブラリ関数

トランザクションレベル名判定UOCで発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）※

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

注※

トランザクションレベル名判定UOCからTASK属性のセグメント要求を行った場合，トランザクションレベル名判定UOCのリターン前に使用済みワークセグメントの返還関数で必ず解放してください。解放漏れがあった場合，メモリリークします。

3.1.8　メッセージ管理エリア

eescd_uoc_msgで管理するメッセージ管理エリアを次の図に示します。

受信メッセージの各領域はUOC内で変更できません。

図3‒1　メッセージ管理エリア

3.1.9　注意事項

OBMのトランザクションレベル名判定UOCを使用する場合は，設定するトランザクションレベル名がオンライン業務に影響を与えないよう注意してください。OBMのトランザクションレベル名をオンライン業務のトランザクションレベル名と同じか，より優先度の高いトランザクションレベルにすると，オンライン業務の引き出し待ち時間が増加するおそれがあります。

3.2　ユーザタイマ参照UOC（C言語）

3.2.1　機能

ユーザタイマ参照UOCは，永続指定のタイマトランザクションが起動時刻に達したときに，タイマトランザクション起動前にタイマ情報を参照するためのUOCです。

uoc_func（ユーザタイマ参照UOC）を呼び出すとき，次に示す所定のパラメタをparmに設定します。

3.2.2　形式

ANSI C, C++の形式

#include <eetim_uoc.h>
int uoc_func(struct eetim_uoc_parm *parm);

3.2.3　パラメタの内容

(1)　eetim_uoc_parmの内容

typedef struct eetim_uoc_parm {
  char        *usat;              /* ユーザSATエリアポインタ  */
  EEULONG64   usat_len;           /* ユーザSATエリアサイズ    */
  char        service_name[32];   /* サービス名                */
  char        reqid[32];          /* リクエスト識別子          */
  char        *data;              /* データポインタ            */
  EEULONG     datalen;            /* データサイズ              */
  EEULONG     real_datalen;       /* 登録時のデータサイズ      */
  char        start_time[18];     /* 起動時刻                  */
  char        priority;           /* 優先度                    */
  char        timer_id[16];       /* タイマID                 */
  char        node_id[4];         /* ノードID                 */
  char        reserve[25];        /* 予備                      */
}EETIMUOCPARM;

3.2.4　TP1/EEが値を設定する項目

(1)　eetim_uoc_parm

usat

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_len

ユーザSATエリアのサイズが設定されます（単位：バイト）。

service_name

サービス名が設定されます（¥0終端あり）。

reqid

リクエスト識別子が設定されます。

data

タイマトランザクションに渡すデータのポインタが設定されます。データがない場合はNULLを設定します。

datalen

タイマトランザクションに渡すデータのサイズが設定されます。

real_datalen

タイマ登録時のデータのサイズが設定されます。

start_time

タイマ登録時に算出したタイマトランザクションの起動予定時刻を，「YYYYMMDDhhmmssXXX」の文字列形式で設定します（¥0終端あり）。YYYYMMDDは年月日，hhmmssは時分秒，XXXはミリ秒を意味します。

priority

タイマトランザクションの優先度として，次の値が設定されます。

EETIM_HI

優先的に起動します。

EETIM_LOW

優先的に起動しないで，登録した順序で起動します。

timer_id

TP1/EEシステム内で一意のバイト列が設定されます。

node_id

自TP1/EEのノードIDが設定されます（¥0終端なし）。

3.2.5　ユーザが値を設定する項目

(1)　eetim_uoc_parm

reqid

タイマトランザクションのトランザクションインタフェース情報に設定するリクエスト識別子を変更したい場合に指定します。

3.2.6　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値

意味

EETIM_UOC_OK

正常リターン

EETIM_UOC_RETRY

タイマ起動リトライ要求

EETIM_UOC_NG

エラーリターン

(1)　EETIM_UOC_OKの場合

タイマトランザクションを起動します。

(2)　EETIM_UOC_RETRYの場合

タイマトランザクションの起動を中断し，次のタイマ監視タイミングでタイマ起動処理をリトライします。

(3)　リターン値が上記以外の場合

タイマトランザクションを起動しないで破棄します。

3.2.7　発行可能なライブラリ関数

ユーザタイマ参照UOCで発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

3.3　OBM開始/再開始UOC（C言語）

3.3.1　機能

OBM実行環境の確認や，実行に必要なリソースを確保するためのUOCです。OBM開始時は，ロット構成の確認だけでなく，並べ替えや一部の定義を変更できます。

3.3.2　形式

ANSI C, C++の形式

#include <eeobm_uoc.h>
EELONG own_obst(
    struct eeobm_start_parm *parm,
    struct eeobm_start_lot  *in_lot,
    struct eeobm_start_out  *out,
    struct eeobm_start_lot  *w_lot
);

3.3.3　パラメタの内容

(1)　eeobm_start_parmの内容

typedef struct eeobm_start_parm {
  char       *usat_pt;              /* ユーザSATアドレス                */
  EEULONG64  usat_large_size;       /* ユーザSATサイズ                  */
  EELONG     lot_name_len[4];       /* ロット名長                        */
  char       lot_name[4][9];        /* ロット名                          */
  EELONG     data_table_name_len;   /* バッチデータを格納した表名長      */
  char       data_table_name[29];   /* バッチデータを格納した表名        */
  char       filler1[3];            /* 予備                              */
  EETRNID2   trnid;                 /* バッチデータを格納したRMの       */
                                    /* トランザクション識別情報          */
  char       type;                  /* バッチの形式                      */
  char       req;                   /* 要求種別                          */
  char       status;                /* OBM状態                           */
  char       filler2[5];            /* 予備                               */
  EELONG     reason_code;           /* 停止，終了理由コード               */
  EELONG     user_code;             /* ユーザが設定した停止，終了         */
                                    /* 理由コード                         */
  char       *header_pt;            /* ヘッダデータアドレス               */
  EELONG     header_len;            /* ヘッダデータ長                     */
  EELONG     lot_no;                /* ロット数                           */
  EELONG     lotid_restart;         /* ユーザが任意に設定ロットID         */
                                    /* (ロット名指定の再開始をした場合)   */
  EELONG     key_column_len[7];     /* バッチデータの列名長（キー列）     */
  EELONG     seqnum_column_len;     /* バッチデータの列名長（一連通番列） */
  EELONG     data_column_len;       /* バッチデータの列名長（データ列）   */
  char       key_column[7][9];      /* バッチデータの列名（キー列）       */
  char       seqnum_column[9];      /* バッチデータの列名（一連通番列）   */
  char       data_column[9];        /* バッチデータの列名（データ列）     */
  char       filler3[7];            /* 予備                               */
  char       *uifa_pt;              /* ユーザIFAアドレス                  */
  EEULONG64  uifa_large_size;       /* ユーザIFAサイズ                    */
  char       filler4[24];           /* 予備                               */
}EEOBMSTARTPARM;

(2)　eeobm_start_lotの内容

typedef struct eeobm_start_lot {
  void       *eeobm_pt[4];         /* TP1/EEが使用する領域           */
  EELONG     eeobm_value[4];       /* TP1/EEが使用する領域           */
  short      lot_lv;               /* ロット階層レベル番号            */
  char       schedule;             /* 子ロットスケジュール方法        */
  char       tasknum_change_use;   /* 同時実行数変更可否              */
  EELONG     child_lot_top;        /* 先頭下位ロットエントリ番号      */
  EELONG     child_lot_num;        /* 下位ロットエントリ数            */
  EELONG     lot_name_len;         /* ロット名長                      */
  char       lot_name[9];          /* ロット名                        */
  char       filler1[3];           /* 予備                            */
  EELONG     key_len[7];           /* バッチデータのキー長            */
  char       key[7][8];            /* バッチデータのキー              */
  EELONG     maxtask;              /* 同時実行数の上限                */
  EELONG     lotid;                /* ユーザが任意に設定するロットID  */
  EELONG     max_data_num;         /* 一連通番の最大値                */
  char       filler3[60];          /* 予備                            */
}EEOBMSTARTLOT;

(3)　eeobm_start_outの内容

typedef struct eeobm_start_out {
  short     exit_code;          /*OBM開始コマンドのexitコード*/
  char      start_lot;          /*使用するロット情報*/
  char      filler1[29];        /*予備*/
}EEOBMSTARTOUT;

3.3.4　TP1/EEが値を設定する項目

(1)　開始要求種別，OBM状態と設定値の関係

TP1/EEが設定する項目が，参照できるかどうかは，開始要求種別とOBM状態によって決まります。

表3‒1　OBMの開始種別と設定値

項番

変数名

開始要求種別※1/OBM状態※2

開始要求種別（reqに設定される種別）

START

RESTART

LOTSTART

OBM状態（statusに設定される値）

I

P

F

I

P

F

R

1

parm

○

○

○

E

E

E

E

2

usat_pt

○

○

○

E

E

E

E

3

usat_large_size

○

○

○

E

E

E

E

4

lot_name_len[0]

○

○

○

E

E

E

E

5

lot_name_len[1〜]

×

×

×

E

E

E

E

6

lot_name[0]

○

○

○

E

E

E

E

7

lot_name[1〜]

×

×

×

E

E

E

E

8

data_table_name_len

D

D

D

×

×

×

×

9

data_table_name

D

D

D

×

×

×

×

10

trnid

D

D

D

×

×

×

×

11

type

○

○

○

E

E

E

E

12

req

○

○

○

E

E

E

E

13

status

○

○

○

E

E

E

E

14

reason_code

×

○

○

×

E

E

×

15

user_code

×

○

○

×

E

E

×

16

header_pt

D

D

D

×

×

×

×

17

header_len

D

D

D

×

×

×

×

18

lot_no

○

○

○

E

×

×

×

19

lotid_restart

×

×

×

×

E

E

E

20

key_column_len

D

×

×

×

×

×

×

21

seqnum_column_len

D

×

×

×

×

×

×

22

data_column_len

D

×

×

×

×

×

×

23

key_column

D

×

×

×

×

×

×

24

seqnum_column

D

×

×

×

×

×

×

25

data_column

D

×

×

×

×

×

×

26

uifa_pt

○

○

○

E

E

E

E

27

uifa_large_size

○

○

○

E

E

E

E

28

in_lot/w_lot

○

×

×

E

×

×

×

29

lot_lv

○

×

×

E

×

×

×

30

schedule

○

×

×

E

×

×

×

31

tasknum_change_use

○

×

×

E

×

×

×

32

child_lot_top

○

×

×

E

×

×

×

33

child_lot_num

○

×

×

E

×

×

×

34

lot_name_len

○

×

×

E

×

×

×

35

lot_name

○

×

×

E

×

×

×

36

key_len

D

×

×

×

×

×

×

37

key

D

×

×

×

×

×

×

38

maxtask

○

×

×

E

×

×

×

39

lotid

×

×

×

×

×

×

×

40

max_data_num

D

×

×

×

×

×

×

41

out

×

×

×

×

×

×

×

42

exit_code

×

×

×

×

×

×

×

43

start_lot

×

×

×

×

×

×

×

（凡例）

○：参照できます

D：データ型の場合に参照できます

E：イベント型の場合に参照できます

×：参照できません

注※1

開始要求種別を次に示します。

START：EEOBM_START（開始）

RESTART：EEOBM_RESTART（再開始）

LOTSTART：EEOBM_LOTSTART（ロット指定の開始/再開始）

注※2

OBM状態を次に示します。

I：EEOBM_STATUS_INIT（初期状態）

P：EEOBM_STATUS_STOP_P（計画停止）

F：EEOBM_STATUS_STOP_F（強制停止）

R：EEOBM_STATUS_RUNNING（実行中）

(2)　parm

usat_pt

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

lot_name_len

配列の0番目の要素にeeobmstartコマンドで指定したOBM名の長さが設定されます。

配列の1番目，2番目の要素にeeobmstartコマンドで指定したロット名の長さが設定されます。

lot_name

配列の0番目の要素にeeobmstartコマンドで指定したOBM名が設定されます。配列の1番目，2番目の要素にeeobmstartコマンドで指定したロット名が設定されます。

data_table_name_len

バッチデータを格納した表名長が設定されます。イベント型OBMの場合は，0が設定されます。

data_table_name

バッチデータを格納した表名が設定されます。イベント型OBMの場合は，参照できません。

trnid

バッチデータを格納した表のあるRMのトランザクション識別情報です。設定されるトランザクション識別情報は，ee_trn_getinfo関数の情報と同じです。詳細は，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Optionプログラム作成の手引」のee_trn_getinfo関数を参照してください。

type

バッチの形式が設定されます。

　　EEOBM_TYPE_DATA：データ型OBM

　　EEOBM_TYPE_EVENT：イベント型OBM

req

開始要求種別が設定されます。

　　EEOBM_START：OBM開始

　　EEOBM_RESTART：OBM再開始

　　EEOBM_LOTSTART：ロット指定の開始/再開始

status

OBM開始，再開始要求を受け付けたときのOBMの状態が設定されます。

　　EEOBM_STATUS_INIT：初期状態

　　EEOBM_STATUS_STOP_P：計画停止中

　　EEOBM_STATUS_STOP_F：強制停止中

　　EEOBM_STATUS_RUNNING：実行中

reason_code

OBMの状態が停止中の場合にOBMが停止した理由コードが設定されます。

　　EEOBM_RCODE_NONE：停止中でない

　　EEOBM_RCODE_USER：ユーザ要求

　　EEOBM_RCODE_LOT_STOP：全ロット停止

　　EEOBM_RCODE_RRN：TP1/EE再開始

　　EEOBM_RCODE_ROLLBACK：ノーマルトランザクション異常終了

　　EEOBM_RCODE_ROLLBACK_OPE：オープントランザクション異常終了

　　EEOBM_RCODE_ROLLBACK_CLS：クローズトランザクション異常終了

　　EEOBM_RCODE_UOC：終了UOCの設定値不正

　　EEOBM_RCODE_DATA_ACCESS：バッチデータ入力障害

　　EEOBM_RCODE_MEMORY：メモリ不足

　　EEOBM_RCODE_DATA_NUM：バッチデータ通番抜け

　　EEOBM_RCODE_NO_SUCH_SERVICE：サービス名不正

　　EEOBM_RCODE_NO_SUCH_TRNLVL：トランザクションレベル名不正

　　EEOBM_RCODE_DB_DESTROY：バッチデータ表不正

　　EEOBM_RCODE_DATA_NUM_MIX：ヒューリスティックハザード決着による通番矛盾

　　EEOBM_RCODE_SCD_DBAREA：処理済み通番管理表RDエリア不足

　　EEOBM_RCODE_SCD_ROLLBACK：ロットスケジューラ障害

　　EEOBM_RCODE_RPC_SEND：BCMからBCSへ送信時の通信障害

　　EEOBM_RCODE_RPC_RECV：BCSからの応答受信時の通信障害

　　EEOBM_RCODE_TIMEOUT：BCSとのハートビート障害

　　EEOBM_RCODE_TIMEOUT_CLT：OBM開始コマンドとのハートビート障害

　　EEOBM_RCODE_SYSERR：そのほかの要因

user_code

ユーザが停止要求時に設定した理由コードが設定されます。停止した理由コードがEEOBM_RCODE_USER以外の場合は，値は設定されません。

header_pt

ヘッダデータのアドレスが設定されます。イベント型OBMの場合，またはデータ型OBMでヘッダデータがない場合は，NULLが設定されます。

header_len

ヘッダデータの長さが設定されます。イベント型OBMの場合，またはデータ型OBMでヘッダデータがない場合は，0が設定されます。

lot_no

in_lot，w_lotに設定されているロット数が設定されます。

lotid_restart

lot_nameに設定されたロットのユーザが任意に設定したロットIDが設定されます。

key_column_len

バッチデータのキー列名の長さが設定されます。OBM構成定義のobmdef -c keynオペランドの設定値の長さが配列のn-1番目に設定されます。

次のどれかの場合は，obmdef -c keynオペランドの指定値に関係なく，0が設定されます。

lotentry -k keyn_sizeオペランドに0を設定

ロット構成が1階層

イベント型

seqnum_column_len

バッチデータの一連通番列名の長さが設定されます。OBM構成定義のobmdef -c seqnumオペランドの設定値の長さが設定されます。イベント型OBMの場合は，0が設定されます。

data_column_len

バッチデータのデータ列名の長さが設定されます。OBM構成定義のobmdef -c dataオペランドの設定値の長さが設定されます。イベント型OBMの場合は，0が設定されます。

key_column

バッチデータのキー列名が設定されます。OBM構成定義のobmdef -c keynオペランドの設定値が配列のn-1番目に設定されます。

次のどれかの場合は，obmdef -c keynオペランドの指定値に関係なく，設定されません。

lotentry -k keyn_sizeオペランドに0を設定

ロット構成が1階層

イベント型

seqnum_column

バッチデータの一連通番列名が設定されます。OBM構成定義のobmdef -c seqnumオペランドの設定値が設定されます。イベント型OBMの場合は，¥0が設定されます。

data_column

バッチデータのデータ列名が設定されます。OBM構成定義のobmdef -c dataオペランドの設定値が設定されます。イベント型OBMの場合は，¥0が設定されます。

uifa_pt

ユーザIFAエリアのポインタが設定されます。ユーザIFAエリアサイズが0の場合は，値を参照できません。

uifa_large_size

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

(3)　in_lot，w_lot

in_lot，w_lotには，ロット構成が定義した順番の配列として設定されます。エントリ番号は1から設定されます。配列を参照する添え字としてエントリ番号を使用する場合は，エントリ番号から1を引いてください。

in_lot，w_lotには同じ値が設定されています。ロットの並べ替えを行う場合などに，片方を開始するOBMのロット構成を設定し，片方を作業用領域として使用できます。

3階層のロットを例に配列に設定される順序とエントリ番号の関係を次の図に示します。

図3‒2　配列に設定される順序とエントリ番号

lot_lv

ロット階層のレベル番号が設定されます。

schedule

子ロットのスケジュール方法が設定されます。再下位ロットの場合は，EEOBM_SCD_NONEが設定されます。

　　EEOBM_SCD_SERIAL：シリアルスケジュール

　　EEOBM_SCD_PRIMARY：優先スケジュール

　　EEOBM_SCD_NONE：スケジュールなし（最下位ロット）

tasknum_change_use

ロットの同時実行数の変更可否が設定されます。

　　EEOBM_TASK_SINGLE：変更できません。同時実行数は1で固定です。

　　EEOBM_TASK_MULTI：変更できます。

child_lot_top

1階層下位のロットの中で，先頭のロットのエントリ番号が設定されます。

最下位ロットの場合は，0が設定されます。

child_lot_num

1階層下位のロットのエントリ数が設定されます。

最下位ロットの場合は，0が設定されます。

lot_name_len

ロット名の長さが設定されます。

lot_name

ロット名が設定されます。

key_len

バッチデータのキーの長さが設定されます。データ型OBMの最下位ロットの場合に設定されます。OBM構成定義lotentry -k keyn_sizeオペランドの設定値が配列のn-1番目に設定されます。ロット構成が1階層の場合は，キーの長さは0が設定されます。

key

バッチデータのキーが設定されます。データ型OBMの最下位ロットの場合に設定されます。OBM構成定義の最下位ロットのlotdef -k hexnオペランドの設定値が配列のn-1番目に設定されます。ロット構成が1階層の場合は，キーは設定されません。

maxtask

ロットの同時実行数の上限が設定されます。

max_data_num

バッチデータの一連通番の最大値。データ型OBMの最下位ロットに設定されます。それ以外は，0が設定されます。

3.3.5　ユーザが値を設定する項目

(1)　in_lot，w_lot

(a)　ロットの並べ替え

同一レベルのロットは，順番を並べ替えることができます。並べ替えは，OBM開始時だけ行えます。OBM再開始時には行えません。並べ替える場合は，次の規則を守ってください。

同じロットの下位ロットは，連続したエントリ番号の領域に並びます。

TP1/EEが使用する領域を含む構造体全体を並べ替えます。ただし，上位ロットと下位ロットの親子関係を変えてはいけません。

例えば，3階層のロットで，階層レベル2のロットを並べ替えた場合，階層レベル3のロットも次の図のように並べ替えてください。

図3‒3　ロットの並べ替え例

並べ替えのコーディング例

in_lotのエントリ番号2とエントリ番号3のロットを並べ替えてw_lotに設定する場合。

memcpy(w_lot[2-1],in_lot[3-1],sizeof(struct eeobm_start_lot));
w_lot[2-1].child_lot_top = 4;
memcpy(w_lot[3-1],in_lot[2-1],sizeof(struct eeobm_start_lot));
w_lot[3-1].child_lot_top = 7;

(b)　値を設定する項目

次の項目は値を設定できます。TP1/EEで設定された値をそのまま使用する場合は，値を設定する必要はありません。

child_lot_top

1階層下位のロットの中で，先頭のロットのエントリ番号を設定します。ロットの並べ替えによって下位ロットのエントリ番号が変わった場合に設定してください。

OBM開始時だけ設定できます。OBM再開始時には設定できません。

lotid

ユーザが任意に設定するロットIDです。初期値は0です。OBM再開始時も，前回の開始UOCで設定した値は引き継がないで初期値は0となります。ここで設定したロットIDは，ノーマルトランザクションのトランザクションインタフェースに引き継ぎます。ユーザがロットごとに割り当てたリソースとの関連づけなどに使用できます。

OBM開始時に設定できます。

(2)　out

exit_code

開始UOCをエラーリターンする場合にOBM開始コマンドのexitコードを設定します。設定できる範囲は，31〜40です。開始UOCをエラーリターンする場合は，必ず設定してください。

設定しないでエラーリターンまたは31〜40以外の値を設定してエラーリターンすると，開始コマンドのexitコードは30となります。

開始UOCを正常リターンする場合は，exit_codeを設定する必要はありません。

設定しても開始コマンドのexitコードは変わりません。

start_lot

OBM実行に使用するロット情報を設定します。初期値はEEOBM_LOTUSE_INです。

　　EEOBM_LOTUSE_IN：in_lotを使用します。

　　EEOBM_LOTUSE_W：w_lotを使用します。

3.3.6　リターン値

次のコードでリターンしてください。

リターン値

意味

EEOBM_UOC_OK

正常リターン

EEOBM_UOC_NG

エラーリターン

(1)　EOBM_UOC_OKの場合

OBM開始処理を続行しオープントランザクションを起動します。

(2)　EEOBM_UOC_NGの場合

KFSB45701-Eを出力しOBM開始処理を中止します。OBM開始コマンドはoutのexit_codeに設定したexitコードで終了します。

(3)　リターン値が上記以外の場合

KFSB45701-Eを出力しOBM開始処理を中止します。OBM開始コマンドはexitコード30で終了します。

3.3.7　発行可能なライブラリ関数

OBM開始/再開始UOCで発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

現在時刻取得機能（ee_thd_gettime）

SDBハンドラ：イニシャライズ（ee_sdh_init）

SDBハンドラ：個別開始（ee_sdh_strt）

SDBハンドラ：DBアクセス（ee_sdh_accs）

SDBハンドラ：DBアクセス（ee_sdh_clar）

SDBハンドラ：システム構成表示（ee_sdh_refs）

SDBハンドラ：個別終了（ee_sdh_fnsh）

ユーザ固有のトレース取得（ee_trb_utrace_put）

現在のトランザクション識別情報の取得（ee_trn_getinfo）

SQL

3.4　OBM終了/停止UOC（C言語）

3.4.1　機能

OBM実行に使用したりソースを解放したり，実行結果の確認をするためのUOCです。ヘッダデータの更新ができます。

3.4.2　形式

ANSI C, C++の形式

#include <eeobm_uoc.h>
EELONG own_obed(struct eeobm_end_parm *parm, struct eeobm_end_out  *out);

3.4.3　パラメタの内容

(1)　eeobm_end_parmの内容

typedef struct eeobm_end_parm {
  char        *usat_pt;              /* ユーザSATアドレス             */
  EEULONG64   usat_large_size;       /* ユーザSATサイズ               */
  EELONG      lot_name_len[4];       /* ロット名長                     */
  char        lot_name[4][9];        /* ロット名                       */
  EELONG      data_table_name_len;   /* バッチデータを格納した表名長   */
  char        data_table_name[29];   /* バッチデータを格納した表名     */
  char        type;                  /* バッチの形式                   */
  char        status;                /* OBM状態                       */
  char        filler1 [1];           /* 予備                           */
  EELONG      reason_code;           /* 停止，終了理由コード           */
  EELONG      user_code;             /* ユーザが設定した停止，終了     */
                                     /* 理由コード                     */
  char        *header_pt;            /* ヘッダデータアドレス           */
  EELONG      header_len;            /* ヘッダデータ長                 */
  char        filler2[4];            /* 予備                           */
  char        *uifa_pt;              /* ユーザIFAアドレス              */
  EEULONG64   uifa_large_size;       /* ユーザIFAサイズ                */
  char        filler3[40];           /* 予備                           */
}EEOBMENDPARM;

(2)　eeobm_end_outの内容

typedef struct eeobm_end_out {
  char      header_upd;      /* ヘッダ更新要求の有無   */
  char      filler1[31];     /* 予備                     */
}EEOBMENDOUT;

3.4.4　TP1/EEが値を設定する項目

(1)　parm

usat_pt

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

lot_name_len

配列の0番目の要素にロット名長が設定されます。

lot_name

配列の0番目の要素にロット名が設定されます。0番目のロット名は，OBM名です。

data_table_name_len

バッチデータを格納した表名長が設定されます。イベント型OBMの場合は，0が設定されます。

data_table_name

バッチデータを格納した表名が設定されます。イベント型OBMの場合は，参照できません。

type

バッチの形式が設定されます。

　　EEOBM_TYPE_DATA：データ型OBM

　　EEOBM_TYPE_EVENT：イベント型OBM

status

OBM停止，終了要求を受け付けたときの要求された終了，停止形態が設定されます。

　　EEOBM_STATUS_STOP_P：計画停止

　　EEOBM_STATUS_STOP_F：強制停止

　　EEOBM_STATUS_END_F：強制終了

　　EEOBM_STATUS_END_N：正常終了

reason_code

OBMが停止した理由コードが設定されます。強制終了の場合は，計画停止または強制停止時の理由コードが引き継がれます。

　　EEOBM_RCODE_NONE：理由コードなし（正常終了の場合に設定されます）

　　EEOBM_RCODE_USER：ユーザ要求

　　EEOBM_RCODE_LOT_STOP：全ロット停止

　　EEOBM_RCODE_RRN：TP1/EE再開始

　　EEOBM_RCODE_ROLLBACK：ノーマルトランザクション異常終了

　　EEOBM_RCODE_ROLLBACK_OPE：オープントランザクション異常終了

　　EEOBM_RCODE_ROLLBACK_CLS：クローズトランザクション異常終了

　　EEOBM_RCODE_UOC：終了UOCの設定値不正

　　EEOBM_RCODE_DATA_ACCESS：バッチデータ入力障害

　　EEOBM_RCODE_MEMORY：メモリ不足

　　EEOBM_RCODE_DATA_NUM：バッチデータ通番抜け

　　EEOBM_RCODE_NO_SUCH_SERVICE：サービス名不正

　　EEOBM_RCODE_NO_SUCH_TRNLVL：トランザクションレベル名不正

　　EEOBM_RCODE_DB_DESTROY：バッチデータ表不正

　　EEOBM_RCODE_DATA_NUM_MIX：ヒューリスティックハザード決着による通番矛盾

　　EEOBM_RCODE_SCD_DBAREA：処理済み通番管理表RDエリア不足

　　EEOBM_RCODE_SCD_ROLLBACK：ロットスケジューラ障害

　　EEOBM_RCODE_RPC_SEND：BCMからBCSへ送信時の通信障害

　　EEOBM_RCODE_RPC_RECV：BCSからの応答受信時の通信障害

　　EEOBM_RCODE_TIMEOUT：BCSとのハートビート障害検知

　　EEOBM_RCODE_TIMEOUT_CLT：OBM開始とのハートビート障害検知

　　EEOBM_RCODE_SYSERR：そのほかの要因

user_code

ユーザが停止要求時に設定した理由コードが設定されます。停止した理由コードがEEOBM_RCODE_USER以外の場合は，値は設定されません。

header_pt

ヘッダデータのアドレスが設定されます。イベント型OBMの場合，データ型OBMでヘッダデータがない場合，または強制終了の場合は，NULLが設定されます。

header_len

ヘッダデータの長さが設定されます。イベント型OBMの場合，データ型OBMでヘッダデータがない場合，または強制終了の場合は，0が設定されます。

uifa_pt

ユーザIFAエリアのポインタが設定されます。ユーザIFAエリアサイズが0の場合は，値を参照できません。

uifa_large_size

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

3.4.5　ユーザが値を設定する項目

(1)　out

header_upd

ヘッダレコードの更新の要求を設定します。初期値は，EEOBM_UPDATE_NOです。次の値以外が設定された場合は，EEOBM_UPDATE_NOが設定されたと扱います。

終了，停止形態が強制終了の場合は，EEOBM_UPDATE_YESを設定できません。設定された場合は，EEOBM_UPDATE_NOが設定されたと扱います。

　　EEOBM_UPDATE_YES：ヘッダレコードの更新を要求します。

　　EEOBM_UPDATE_NO：ヘッダレコードの更新を要求しません。

(2)　parm

header_pt

アドレスが指す領域にヘッダデータを設定します。header_updにEEOBM_UPDATE_YESを設定した場合に設定してください。ヘッダデータのアドレスおよび長さは更新できません。

3.4.6　リターン値

次のコードでリターンしてください。

リターン値

意味

EEOBM_UOC_OK

正常リターン

(1)　EEOBM_UOC_OKの場合

OBM終了処理を続行します。

(2)　リターン値が上記以外の場合

EEOBM_UOC_OKが設定されたと扱い処理を続行します。

3.4.7　発行可能なライブラリ関数

OBM終了/停止UOCで発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

現在時刻取得機能（ee_thd_gettime）

SDBハンドラ：イニシャライズ（ee_sdh_init）

SDBハンドラ：個別開始（ee_sdh_strt）

SDBハンドラ：DBアクセス（ee_sdh_accs）

SDBハンドラ：DBアクセス（ee_sdh_clar）

SDBハンドラ：システム構成表示（ee_sdh_refs）

SDBハンドラ：個別終了（ee_sdh_fnsh）

ユーザ固有のトレース取得（ee_trb_utrace_put）

現在のトランザクション識別情報の取得（ee_trn_getinfo）

SQL

3.5　OBMサービス名決定UOC（C言語）

3.5.1　機能

OBMのノーマルトランザクションを起動するサービス名を決定します。

OBMのノーマルトランザクションを処理キューに登録する前に呼び出されます。

誤ったサービス名を指定した場合は，OBMを停止します。エラートランザクションは起動しません。

3.5.2　形式

ANSI C, C++の形式

#include <eeobm_uoc.h>
void own_obsv(struct eeobm_service_parm *parm);

3.5.3　パラメタの内容

(1)　parmの内容

typedef struct eeobm_service_parm {
  char          *usat_pt;           /* ユーザSATアドレス        */
  EEULONG64     usat_large_size;    /* ユーザSATサイズ          */
  EELONG        lot_name_len[4];    /* ロット名長                */
  char          lot_name[4][9];     /* ロット名                  */
  char          type;               /* バッチの形式              */
  char          filler1[3];         /* 予備                      */
  EELONG        lot_name_num;       /* ロット名数                */
  EELONG        data_len;           /* バッチデータ長            */
  char          *data_pt;           /* バッチデータアドレス      */
  EELONG        service_name_len;   /* サービス名長              */
  char          service_name[32];   /* サービス名                */
  EELONG        key_len[7];         /* バッチデータのキー長      */
  char          key[7][8];          /* バッチデータのキー        */
  EELONG        data_no;            /* バッチデータの通番        */
  char          filler4[56];        /* 予備                      */
}EEOBMSERVICEPARM;

3.5.4　TP1/EEが値を設定する項目

(1)　parm

usat_pt

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

lot_name_len

ロット名長が設定されます。

配列の0番目が最上位のロット名長で，以下昇順に下位ロットのロット名長が設定されます。

lot_name

ロット名が設定されます。

配列の0番目が最上位のロット名で，以下昇順に下位ロットのロット名が設定されます。

lot_name_num

lot_name_len，lot_nameに設定したロット名長，およびロット名の数が設定されます（最下位ロットのロットレベル）。

type

バッチの形式が設定されます。

　　EEOBM_TYPE_DATA：データ型OBM

　　EEOBM_TYPE_EVENT：イベント型OBM

data_len

バッチデータの長さが設定されます。イベント型OBMの場合は，0が設定されます。

data_pt

バッチデータのアドレスが設定されます。イベント型OBMの場合は，NULLが設定されます。

key_len

バッチデータのキーの長さが設定されます。

イベント型OBMの場合は，0が設定されます。

key

バッチデータのキーが設定されます。

イベント型OBMの場合は，0が設定されます。

data_no

バッチデータの一連通番が返されます。

イベント型OBMの場合は，0が設定されます。

3.5.5　ユーザが値を設定する項目

(1)　parm

service_name_len

OBMのノーマルトランザクションを起動するサービス名長を設定します。1〜31の範囲で設定してください。

service_name

OBMのノーマルトランザクションを起動するサービス名を設定します。service_name_lenに設定した長さで設定してください。TP1/EEはservice_name_lenで設定した長さを超える領域は参照しません。設定できるサービス名は，TP1/EEサービス定義のobm_serviceオペランドで設定したサービス名です。

3.5.6　リターン値

リターンコードの設定は不要です。

3.5.7　発行可能なライブラリ関数

OBMサービス名決定UOCで発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

現在時刻取得機能（ee_thd_gettime）

3.6　OBMスキップデータUOC（C言語）

3.6.1　機能

eeobmskipコマンドでノーマルトランザクションを実行しないで処理済みとするデータを受け取り，後処理を行うことができます。

eeobmskipコマンドを実行後にeeobmstart実行するとノーマルトランザクションを呼び出す代わりにスキップデータUOCが呼び出されます。スキップしたバッチデータ1件につき1回呼び出されます。スキップしたバッチデータは，通番の順番に渡されます。スキップデータUOCは，ノーマルトランザクションと同様にロットのスケジュールを呼び出します。ロットの多重度，スケジュール方式に応じて，複数のスキップデータが同時に実行されることがあります。同一ロットに対するスキップデータUOCが複数同時に呼び出されることはありません。トレーラレコードをスキップした場合，トレーラレコードとして扱わないで通常のバッチデータとしてスキップデータUOCに渡します。

スキップデータUOCを呼び出したトランザクションが正常終了すると，バッチデータは処理済みとなります。

3.6.2　形式

ANSI C, C++の形式

#include <eeobm_uoc.h>
void own_obsk(struct eeobm_skip_parm *parm);

3.6.3　パラメタの内容

(1)　parmの内容

typedef struct eeobm_skip_parm {
  char              *usat_pt;             /* ユーザSATアドレス      */
  EEULONG64         usat_large_size;      /* ユーザSATサイズ        */
  EELONG            lot_name_len[4];      /* ロット名長              */
  char              lot_name[4][9];       /* ロット名                */
  char              filler1[43];          /* 予備                    */
  EELONG            lot_name_num;         /* ロット名数              */
  EELONG            data_len;             /* バッチデータ長          */
  char              *data_pt;             /* バッチデータアドレス    */
  EELONG            key_len[7];           /* バッチデータのキー長    */
  char              key[7][8];            /* バッチデータのキー      */
  EELONG            data_no;              /* バッチデータの通番      */
  char              msg_inf;              /* メッセージ状態          */
  char              filler4[7];           /* 予備                    */
  char              *uifa_pt;             /* ユーザIFAアドレス       */
  EEULONG64         uifa_large_size;      /* ユーザIFAサイズ         */
  char              filler5[16];          /* 予備                    */
}EEOBMSKIPPARM;

3.6.4　TP1/EEが値を設定する項目

(1)　parm

usat_pt

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

lot_name_len

ロット名長が設定されます。

配列の0番目が最上位のロット名長で，以下昇順に下位ロットのロット名長が設定されます。

配列の3番目の要素は，今後の拡張用です。

lot_name

配列の0番目が最上位のロット名で，以下昇順に下位ロットのロット名が設定されます。

配列の3番目の要素は，今後の拡張用です。

msg_inf

バッチデータの状態を設定します。

EEOBM_NORMAL：正常（'N'）

data_ptにバッチデータを設定しました。

EEOBM_OVERFLOW：オーバーフロー（'O'）

メッセージ引き渡し領域（IMA）が不足しました。data_ptには，バッチデータをメッセージ引き渡し領域のサイズだけ（data_lenに示すサイズ）設定しました。

lot_name_num

lot_name_len，lot_nameに設定したロット名長，およびロット名の数が設定されます（最下位ロットのロットレベル）。

data_len

バッチデータの長さが設定されます。

data_pt

バッチデータのアドレスが設定されます。

key_len

バッチデータのキーの長さが返されます。配列の3番目以降は，今後の拡張用です。

key

バッチデータのキーが返されます。配列の3番目以降は，今後の拡張用です。

data_no

バッチデータの一連通番が返されます。

uifa_pt

ユーザIFAエリアのポインタが設定されます。ユーザIFAエリアサイズが0の場合は，値を参照できません。

uifa_large_size

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

3.6.5　ユーザが値を設定する項目

ありません。

3.6.6　リターン値

リターンコードの設定は不要です。

3.6.7　発行可能なライブラリ関数

OBMスキップデータUOCで発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

UAP履歴情報の取得（ee_trn_uap_put）

トランザクションのロールバック指示（ee_trn_rollback_mark）

現在のトランザクション識別情報の取得（ee_trn_getinfo）

バッチデータの受信（ee_obm_recv）

SQL

3.7　リトライロールバック前処理UOC（C言語）

3.7.1　機能

リトライロールバック時，ユーザ資源の解放などの後処理ができます。

3.7.2　形式

ANSI C, C++の形式

#include <eetrn_uoc.h>
int uoc_func(struct eetrn_rtyrbk_uoc_parm *parm);

3.7.3　パラメタの内容

(1)　eetrn_rtyrbk_uoc_parmの内容

typedef struct eetrn_rtyrbk_uoc_parm {
  char                  *usat;           /* ユーザSATエリアポインタ  */
  EEULONG64             usat_len;        /* ユーザSATエリアサイズ    */
  char                  *uifa;           /* ユーザIFAエリアポインタ  */
  EEULONG64             uifa_len;        /* ユーザIFAエリアサイズ    */
  char                  service_name[32];   /* サービス名             */
  EEULONG               max_cnt;            /* リトライ回数の上限値   */
  EEULONG               cnt;                /* リトライ回数           */
  char                  trg;             /* リトライロールバック契機  */
  char                  yobi1[7];        /* 予備                      */
  char                  rtyrbk_area[32]; /* トランザクション引き継ぎ情報 */
  char                  reserve[18];     /* 予備                      */
}EETRNRTYRBKUOCPARM;

3.7.4　TP1/EEが値を設定する項目

(1)　eetrn_rtyrbk_uoc_parm

usat

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_len

ユーザSATエリアのサイズが設定されます（単位：バイト）。

uifa

ユーザIFAエリアのポインタが設定されます。ユーザIFAエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

uifa_len

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

service_name

サービス名が設定されます（¥0終端あり）。

max_cnt

定義したリトライ上限値（1〜255）が設定されます。

cnt

現時点のリトライ回数（1〜256）が設定されます。max_cnt以下の場合は，スレッドダウン後，トランザクションをリトライします。max_cntを超過している場合は，スレッドダウン後，トランザクションをリトライしません。

trg

リトライロールバック契機を示す次の情報が設定されます。

設定値

意味

EETRN_SYS_SDH_DEADLOCK

SDBデータベースアクセスでデッドロック発生

EETRN_USR_API_RTYRBK

ユーザがee_trn_retry_rollback()またはCBLEETRN('R-ROLL')発行

EETRN_SYS_DBQ_MSGPUT

DBキュー交替用メッセージ表書き込み機能使用時に，DBキューへのメッセージの書き込みで暗黙的ロールバックが発生

ee_dbq_msgput関数を実行したトランザクションの同期点処理で発生する場合があります。

EETRN_SYS_DBQ_MSGGET

DBキュー交替用メッセージ表書き込み機能使用時に，DBキューからのメッセージの入力で暗黙的ロールバックが発生

次のAPI関数実行時に発生する場合があります。

ee_dbq_msgget

ee_dbq_msgrefer

ee_dbq_msgrefer2

3.7.5　ユーザが値を設定する項目

rtyrbk_area

リトライロールバック機能使用時，サービストランザクション（MN），ERRTRN3(E3)，タイマトランザクション（TM）に引き継ぐ情報を設定します。格納領域は32バイトです。

3.7.6　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値

意味

EETRN_UOC_OK

正常リターン

EETRN_UOC_NORETRY_KILL

リトライなし

EETRN_UOC_NORETRY_ABORT

リトライなし

メモリダンプファイル出力

COBOL異常終了時要約リスト出力（COBOL使用時）

(1)　EETRN_UOC_OKの場合

リトライロールバック処理を続行します。

(2)　EETRN_UOC_NORETRY_KILLの場合

スレッドダウン後，トランザクションのリトライをしないで，ERRTRN3を起動します。

(3)　EETRN_UOC_NORETRY_ABORTの場合

スレッドダウン後，トランザクションのリトライをしないで，次のファイルおよびリストを出力し，ERRTRN3を起動します。

メモリダンプファイル

COBOL異常終了時要約リスト（COBOL使用時だけ出力）

(4)　リターン値が上記以外の場合

EETRN_UOC_OKが設定されたと扱い処理を続行します。

3.7.7　発行可能なライブラリ関数

発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

現在時刻取得（ee_thd_gettime）

3.7.8　注意事項

本UOCはUAP共用ライブラリ同時入れ替え機能の対象です。本関数を含むライブラリは，ユーザサービス関連定義のstatic_module_dirではなく，module_dirに指定したディレクトリ内に格納してください。

DBキューの交替用メッセージ表書き込み機能を使用して，DBキューへの書き込み，および読み込みで暗黙的ロールバックが発生したときに，このUOCでEETRN_UOC_NORETRY_KILLまたはEETRN_UOC_NORETRY_ABORTをリターンした場合は，書き込み先，および読み込み先を切り替えないでロールバックします。

3.8　OJ編集UOC（C言語）

3.8.1　機能

OJに出力するユーザデータの編集，およびOJ出力有無の選択を行うことができます。

3.8.2　形式

ANSI C, C++の形式

#include <eerpc_uoc.h>
#include <eetrn.h>
int uoc_func(struct eerpc_editoj_uoc_parm *parm);

3.8.3　パラメタの内容

(1)　eerpc_editoj_uoc_parmの内容

<64ビット>
typedef struct eerpc_editoj_uoc_parm {
char *usat;                    /* ユーザSATエリアポインタ */
EEULONG64 usat_len;            /* ユーザSATエリアサイズ */
char *uifa;                    /* ユーザIFAエリアポインタ */
EEULONG64 uifa_len;            /* ユーザIFAエリアサイズ */
char comm_type;                /* 通信種別 */
char prot_type;                /* プロトコル種別 */
char msg_type;                 /* 電文種別 */
char api_type;                 /* API種別 */
char service_group[32];        /* 宛先サービスグループ名 */
char service_name[32];         /* 宛先サービス名 */
char le_name[9];               /* 論理端末名称 */
char reserve1[11];             /* 予備 */
char *sbuf_adr;                /* 編集前ユーザデータ */
char *ebuf_adr;                /* 編集後ユーザデータ */
EEULONG sbuf_size;             /* 編集前ユーザデータサイズ */
EEULONG ebuf_size;             /* 編集後ユーザデータサイズ */
EEULONG maxoj_size;            /* OJ出力可能最大サイズ */
char reserve2[60];             /* 予備 */
}EERPCEDITOJPARM;
</64ビット>

3.8.4　TP1/EEが値を設定する項目

(1)　eerpc_editoj_uoc_parm

usat

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

usat_len

ユーザSATエリアのサイズが設定されます（単位：バイト）。

uifa

ユーザIFAエリアのポインタが設定されます。ユーザIFAエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

uifa_len

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

comm_type

通信種別が設定されます。設定される通信種別を次に示します。

EETRN_OJ_CTYPE_RPC：リモートプロシジャコール（RPC）

EETRN_OJ_CTYPE_RAP：リモートAPI機能（RAP）

EETRN_OJ_CTYPE_MCP：MCP

prot_type

プロトコル種別が設定されます。設定されるプロトコル種別を次に示します。

EETRN_OJ_PTYPE_TCP：TCP/IP

EETRN_OJ_PTYPE_UDP：UDP/IP

msg_type

電文種別＋送信タイミングが設定されます。設定される電文種別＋送信タイミングを次に示します。

EETRN_OJ_MTYPE_SEND：要求電文（即時送信）

EETRN_OJ_MTYPE_CMT：要求電文（コミット送信）

EETRN_OJ_MTYPE_OWN：要求電文（自プロセス送信）

EETRN_OJ_MTYPE_REP：応答電文（通常）

EETRN_OJ_MTYPE_TRNREP：応答電文（別トランザクションによる送信）

EETRN_OJ_MTYPE_ERRREP：応答電文（ERRTRNRまたはERRTRN3による送信）

EETRN_OJ_MTYPE_RAPREQ：代理実行要求電文

EETRN_OJ_MTYPE_RAPREP：代理実行応答電文

EETRN_OJ_MTYPE_NSYNCONE：非同期一方送信

EETRN_OJ_MTYPE_SYNCONE：同期一方送信

EETRN_OJ_MTYPE_SENDRECV：同期送受信

api_type

API種別が設定されます。設定されるAPI種別を次に示します。電文種別が応答電文の場合は，EETRN_OJ_API_REPまたはEETRN_OJ_API_NONEが設定されます。

EETRN_OJ_API_CALL：ee_rpc_call()

EETRN_OJ_API_CALLTO：ee_rpc_call_to()

EETRN_OJ_API_CMTSEND：ee_rpc_cmtsend()

EETRN_OJ_API_CMTSENDTO：ee_rpc_cmtsend_to()

EETRN_OJ_API_REP：ee_rpc_reply_send()

EETRN_OJ_API_NONE：なし

EETRN_OJ_API_MCP：ee_mcp_send()

EETRN_OJ_API_MCPSYNC：ee_mcp_sendsync()

EETRN_OJ_API_MCPSENDRECV：ee_mcp_sendrecv()

EETRN_OJ_API_ZRCSEND：ee_zrc_snd_message()

service_group

宛先サービスグループ名が設定されます（¥0終端あり）。通信種別がEETRN_OJ_CTYPE_RPCまたはEETRN_OJ_CTYPE_RAP，かつ，電文種別が要求電文の場合だけ参照可能です。

service_name

宛先サービス名が設定されます（¥0終端あり）。通信種別がEETRN_OJ_CTYPE_RPCまたはEETRN_OJ_CTYPE_RAP，かつ，電文種別が要求電文の場合だけ参照可能です。

le_name

論理端末名が設定されます（¥0終端あり）。通信種別がEETRN_OJ_CTYPE_MCPの場合だけ参照可能です。

sbuf_adr

編集前のユーザデータが格納されたアドレスが設定されます。本アドレスが示す領域は参照だけ可能です。更新した場合の動作は保証できません。

sbuf_size

編集前のユーザデータのサイズが設定されます（単位：バイト）。

ebuf_adr

編集後のユーザデータを格納するアドレスが設定されます。本アドレスが示す領域は初期化されておらず内容は不定です。OJ出力するユーザデータを編集する場合は，本アドレスが示す領域に，OJ出力するユーザデータを格納してください。本アドレスが示す領域のサイズはmaxoj_sizeに設定されています。maxoj_sizeを超えて書き込みを行った場合の動作は保証できません。

maxoj_size

OJ出力可能なユーザデータの最大サイズが設定されます（単位：バイト）。本サイズを超えてユーザデータを格納しようとした場合は，本サイズに切り詰めます。

3.8.5　ユーザが値を設定する項目

ebuf_size

編集後のユーザデータをOJ出力する場合（リターン値がEERPC_UOC_OK），編集後のユーザデータサイズを指定します（単位：バイト）。

3.8.6　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値

意味

EERPC_UOC_OK

編集後のユーザデータをOJ出力

EERPC_UOC_OK_SND

編集前のユーザデータをOJ出力

EERPC_UOC_DESTRUCT

OJ出力しない

上記以外

編集前のユーザデータをOJ出力

EERPC_UOC_OK

編集後のユーザデータをOJに出力します。ebuf_sizeがmaxoj_sizeより大きい場合，maxoj_sizeまでをOJに出力します。ebuf_sizeが0の場合，OJヘッダだけOJ出力し，ユーザデータはOJに出力しません。

リターン値がEERPC_UOC_DESTRUCTの場合

OJに出力しません。

上記以外

編集前のユーザデータをOJに出力します。sbuf_sizeがmaxoj_sizeより大きい場合，maxoj_sizeまでをOJに出力します。

3.8.7　発行可能なライブラリ関数

発行可能なライブラリ関数を次に示します。

メッセージログ出力関数（ee_logprint）

ユーザメッセージログ出力関数（ee_logprint_user）

ワークセグメントの割り当て関数（ee_mem_getwkseg）

使用済みワークセグメントの返還関数（ee_mem_rlswkseg）

現在時刻取得（ee_thd_gettime）

3.8.8　注意事項

本UOCはUAP共用ライブラリ同時入れ替え機能の対象です。本関数を含むライブラリは，ユーザサービス関連定義のstatic_module_dirではなく，module_dirに指定したディレクトリ内に格納してください。

本UOCはトランザクションタイマの範囲内で実行されます。UOC内で時間の掛かる処理を行うとトランザクションタイムアウトとなる可能性があるため，時間の掛かる処理は行わない，または，UOC実行時間分をトランザクションタイマに加算してください。UOC実行タイミングについては，マニュアル「TP1/Financial Service Platform 使用の手引」の「OJ取得機能」を参照してください。

4　TP1/FSPのオンラインで使用するUOC（COBOL言語インタフェース）

この章では，TP1/FSPのオンラインで使用するUOC（COBOL言語インタフェース）について説明します。

4.1　OBM開始/再開始UOC（COBOL言語）

4.1.1　機能

OBM実行環境の確認や，実行に必要なリソースを確保するためのUOCです。OBM開始時は，ロット構成の確認だけでなく，並べ替えや一部の定義を変更できます。

4.1.2　形式

PROGRAM-ID. OWNOBST.

LINKAGE SECTION.
01 一意名1.
  02 データ名A1    ADDRESS.                            ユーザSATアドレス
  02 データ名A2    PIC 9(18) COMP.                     ユーザSATサイズ
  02 データ名A3    PIC S9(9) COMP OCCURS 4 TIMES.      ロット名長
  02 データ名A4    PIC X(9) OCCURS 4 TIMES.            ロット名
  02 データ名A5    PIC S9(9) COMP.          バッチデータを格納した表名長
  02 データ名A6    PIC X(29)                バッチデータを格納した表名
  02 FILLER        PIC X(3).                            予備
  02 データ名T1.                            トランザクション識別名称
    03 データ名C   PIC S9(9) COMP.                      プロセスID
    03 データ名D   PIC 9(9) COMP.                       中央処理通番
    03 データ名E   PIC S9(9) COMP.                      RM接続状態
    03 データ名F   PIC S9(9) COMP.                      RMのID
    03 データ名G   PIC S9(9) COMP.                      RM名長
    03 データ名H   PIC X(36).                           RM名
    03 データ名I   PIC S9(9) COMP.                      xa_open文字列長
    03 データ名J   PIC X(256).                          xa_open文字列
    03 データ名K   PIC S9(9) COMP.                      XID長
    03 データ名L   PIC X(256).                          XID
    03 FILLER      PIC X(1024).                         予備
  02 データ名A7    PIC X(1).                            バッチの形式
  02 データ名A8    PIC X(1).                            要求種別
  02 データ名A9    PIC X(1).                            OBM状態
  02 FILLER        PIC X(5).                            予備
  02 データ名A10   PIC S9(9) COMP.                      停止，終了理由コード
  02 データ名A11   PIC S9(9) COMP.     ユーザが設定した停止，終了理由コード
  02 データ名A12   ADDRESS.            ヘッダデータアドレス
  02 データ名A13   PIC S9(9) COMP.                      ヘッダデータ長
  02 データ名A14   PIC S9(9) COMP.                      ロット数
  02 データ名A15   PIC S9(9) COMP.     ユーザが任意に設定ロットID
                                        (ロット名指定の再開始をした場合)
  02 データ名A16   PIC S9(9) COMP OCCURS 7 4TIMES.   バッチデータの列名長（キー列）
  02 データ名A17   PIC S9(9) COMP.          バッチデータの列名長（一連通番列）
  02 データ名A18   PIC S9(9) COMP.         バッチデータの列名長（データ列）
  02 データ名A19   PIC X(9) OCCURS 7 TIMES.    バッチデータの列名（キー列）
  02 データ名A20   PIC X(9).               バッチデータの列名（一連通番列）
  02 データ名A21   PIC X(9).               バッチデータの列名（データ列）
  02 FILLER        PIC X(7).                            予備
  02 データ名A22   ADDRESS.                             ユーザIFAアドレス
  02 データ名A23   PIC 9(18) COMP.                      ユーザIFAサイズ
  02 FILLER        PIC X(24).                           予備
  01 一意名2.
  02 一意名2-1       OCCURS 1 TO 9999 TIMES DEPENDING ON データ名A14.
    03 FILLER        ADDRESS OCCURS 4 TIMES.            TP1/EEが使用する領域
    03 FILLER        PIC S9(9) COMP OCCURS 4 TIMES.     TP1/EEが使用する領域
    03 データ名B2    PIC S9(4) COMP.                   ロット階層レベル番号
    03 データ名B3    PIC X(1).                   子ロットスケジュール方法
    03 データ名B4    PIC X(1).                   同時実行数変更可否
    03 データ名B5    PIC S9(9) COMP.             先頭下位ロットエントリ番号
    03 データ名B6    PIC S9(9) COMP.             下位ロットエントリ数
    03 データ名B7    PIC S9(9) COMP.             ロット名長
    03 データ名B8    PIC X(9).                   ロット名
    03 FILLER        PIC X(3).                          予備
    03 データ名B9    PIC S9(9) COMP OCCURS 7 TIMES.     バッチデータのキー長
    03 データ名B10   PIC X(8) OCCURS 7 TIMES.           バッチデータのキー
    03 データ名B11   PIC S9(9) COMP.                    同時実行数の上限
    03 データ名B12   PIC S9(9) COMP.                    ユーザが任意に設定するロットID
    03 データ名B13   PIC S9(9) COMP.                    一連通番の最大値
    03 FILLER        PIC X(60).                          予備
01 一意名3.
  02 データ名C1      PIC S9(4) COMP.          OBM開始コマンドのexitコード
  02 データ名C2      PIC X(1).                使用するロット情報
  02 FILLER          PIC X(29).                予備
01 一意名4.
  02 一意名4-1       OCCURS 1 TO 9999 TIMES DEPENDING ON データ名A14.
    03 データ名B1
      :                                           一意名2のデータ名と同じ
    03 FILLER        PIC X(54).                   予備
01 一意名5.          PIC S9(9) COMPVALUE ZERO.    リターン値

PROCEDURE DIVISION  USING 一意名1 一意名2 一意名3 一意名4
RETURNING 一意名5
      :
EXIT PROGRAM.

4.1.3　TP1/EEが値を設定する項目

(1)　開始要求種別，OBM状態と設定値の関係

TP1/EEが設定する項目が，参照できるかどうかは，開始要求種別とOBM状態によって決まります。

表4‒1　OBMの開始種別と設定値

項番

一意名/データ名

開始要求種別※1/OBM状態※2

開始要求種別

（A8に設定される種別）

START

RESTART

LOTSTART

OBM状態

（A9に設定される値）

I

P

F

I

P

F

R

1

一意名1

○

○

○

E

E

E

E

2

A1

○

○

○

E

E

E

E

3

A2

○

○

○

E

E

E

E

4

A3(1)

○

○

○

E

E

E

E

5

A3 (2〜)

○

○

○

E

E

E

E

6

A4(1)

×

×

×

E

E

E

E

7

A5(2〜)

×

×

×

E

E

E

E

8

A6

D

D

D

×

×

×

×

9

T1

D

D

D

×

×

×

×

10

A7

○

○

○

E

E

E

E

11

A8

○

○

○

E

E

E

E

12

A9

○

○

○

E

E

E

E

13

A10

×

○

○

×

E

E

×

14

A11

×

○

○

×

E

E

×

15

A12

D

D

D

×

×

×

×

16

A13

D

D

D

×

×

×

×

17

A14

○

○

○

E

×

×

×

18

A15

×

×

×

×

E

E

E

19

A16

D

×

×

×

×

×

×

20

A17

D

×

×

×

×

×

×

21

A18

D

×

×

×

×

×

×

22

A19

D

×

×

×

×

×

×

23

A20

D

×

×

×

×

×

×

24

A21

D

×

×

×

×

×

×

25

A22

○

○

○

E

E

E

E

26

A23

○

○

○

E

E

E

E

27

一意名2/一意名4

○

×

×

E

×

×

×

28

B2

○

×

×

E

×

×

×

29

B3

○

×

×

E

×

×

×

30

B4

○

×

×

E

×

×

×

31

B5

○

×

×

E

×

×

×

32

B6

○

×

×

E

×

×

×

33

B7

○

×

×

E

×

×

×

34

B8

○

×

×

E

×

×

×

35

B9

D

×

×

×

×

×

×

36

B10

D

×

×

×

×

×

×

37

B11

○

×

×

E

×

×

×

38

B12

×

×

×

×

×

×

×

39

B13

D

×

×

×

×

×

×

40

一意名3

×

×

×

×

×

×

×

41

C1

×

×

×

×

×

×

×

42

C2

×

×

×

×

×

×

×

（凡例）

○：参照できます

D：データ型の場合に参照できます

E：イベント型の場合に参照できます

×：参照できません

注※1

開始要求種別を次に示します。

START：EEOBM_START（開始）

RESTART：EEOBM_RESTART（再開始）

LOTSTART：EEOBM_LOTSTART（ロット指定の開始/再開始）

注※2

OBM状態を次に示します。

I：EEOBM_STATUS_INIT（初期状態）

P：EEOBM_STATUS_STOP_P（計画停止）

F：EEOBM_STATUS_STOP_F（強制停止）

R：EEOBM_STATUS_RUNNING（実行中）

(2)　一意名1

データ名A1

ユーザSATエリアのポインタが設定されます。データ名A2が0の場合は，値を参照できません。当該領域には排他を掛けていません。

データ名A2

ユーザSATエリアのサイズが設定されます（単位：バイト）。

データ名A3

配列の1番目の要素にeeobmstartコマンドで指定したOBM名の長さが設定されます。配列の2番目，3番目の要素にeeobmstartコマンドで指定したロット名の長さが設定されます。

配列の4番目の要素は，今後の拡張用です。

データ名A4

配列の1番目の要素にeeobmstartコマンドで指定したOBM名が設定されます。

配列の2番目から4番目までの要素は，今後の拡張用です。

データ名A5

バッチデータを格納した表名長が設定されます。イベント型OBMの場合は，0が設定されます。

データ名A6

バッチデータを格納した表名が設定されます。イベント型OBMの場合は，参照できません。

データ名T1

バッチデータを格納した表のあるRMのトランザクション識別情報です。データ名Cからデータ名Lに設定されるトランザクション識別情報は，CBLEETRN('GETINFO')関数で設定されるデータ名Cからデータ名Lと同じです。詳細は，CBLEETRN('GETINFO')関数を参照してください。

データ名A7

バッチの形式が設定されます。

　　VALUE'D'：データ型OBM

　　VALUE'E'：イベント型OBM

データ名A8

開始要求種別が設定されます。

　　VALUE'S'：OBM開始

　　VALUE'R'：OBM再開始

　　VALUE'L'：ロット指定の開始/再開始

データ名A9

OBM開始，再開始要求を受け付けたときのOBMの状態が設定されます。

　　VALUE'I'：初期状態

　　VALUE'P'：計画停止中

　　VALUE'F'：強制停止中

　　VALUE'R'：実行中

データ名A10

OBMの状態が停止中の場合にOBMが停止した理由コードが設定されます。

　　0：停止中でない

　　1：ユーザ要求

　　3：全ロット停止

　　11：TP1/EE再開始

　　21：ノーマルトランザクション異常終了

　　22：イニシャライズトランザクション異常終了

　　23：クローズトランザクション異常終了

　　24：終了UOCの設定値不正

　　31：バッチデータ入力障害

　　32：メモリ不足

　　33：バッチデータ通番抜け

　　34：サービス名不正

　　35：バッチデータ表不正

　　36：ヒューリスティックハザード決着による通番矛盾

　　37：処理済み通番管理表RDエリア不足

　　38：ロットスケジューラ障害

　　39：トランザクションレベル名不正

　　41：BCMからBCSへ送信時の通信障害

　　42：BCSからの応答受信時の通信障害

　　43：BCSとのハートビート障害検知

　　46：OBM開始コマンドとのハートビート障害検知

　　99：そのほか要因

データ名A11

ユーザが停止要求時に設定した理由コードが設定されます。停止した理由コードが'01'以外の場合は，設定されません。

データ名A12

ヘッダデータのアドレスが設定されます。イベント型OBMの場合，またはデータ型OBMでヘッダデータがない場合は，0が設定されます。

データ名A13

ヘッダデータの長さが設定されます。イベント型OBMの場合，またはデータ型OBMでヘッダデータがない場合は，0が設定されます。

データ名A14

一意名2，一意名に設定されているロット数が設定されます。

データ名A15

lot_nameに設定されたロットのユーザが任意に設定したロットIDが設定されます。

データ名A16

バッチデータのキー列名の長さが設定されます。OBM構成定義のobmdef -c keynオペランドの設定値の長さが配列のn番目に設定されます。

次のどれかの場合は，obmdef -c keynオペランドの指定値に関係なく，0が設定されます。

lotentry -k keyn_sizeオペランドに0を設定

ロット構成が1階層

イベント型

配列の4番目以降は今後の拡張用です。

データ名A17

バッチデータの一連通番列名の長さが設定されます。OBM構成定義のobmdef -c seqnumオペランドの設定値の長さが設定されます。イベント型OBMの場合は，0が設定されます。

データ名A18

バッチデータのデータ列名の長さが設定されます。OBM構成定義のobmdef -c dataオペランドの設定値の長さが設定されます。イベント型OBMの場合は，0が設定されます。

データ名A19

バッチデータのキー列名が設定されます。OBM構成定義のobmdef -c keynオペランドの設定値が配列のn番目に設定されます。

次のどれかの場合は，obmdef -c keynオペランドの指定値に関係なく，設定されません。

lotentry -k keyn_sizeオペランドに0を設定

ロット構成が1階層

イベント型

配列の4番目以降は今後の拡張用です。

データ名A20

バッチデータの一連通番列名が設定されます。OBM構成定義のobmdef -c seqnumオペランドの設定値が設定されます。イベント型OBMの場合は，0が設定されます。

データ名A21

バッチデータのデータ列名が設定されます。OBM構成定義のobmdef -c dataオペランドの設定値が設定されます。イベント型OBMの場合は，0が設定されます。

データ名A22

ユーザIFAエリアのポインタが設定されます。データ名A23が0の場合は，値を参照できません。

データ名A23

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

(3)　一意名2，一意名4

一意名2，一意名4には，ロット構成が定義した順番の配列として設定されます。

一意名2，一意名4には同じ値が設定されています。ロットの並べ替えを行う場合などに，片方を開始するOBMのロット構成を設定し，片方を作業用領域として使用できます。

エントリ番号は，配列の位置を示します。3階層のロットを例に配列に設定される順序とエントリ番号の関係を次の図に示します。

図4‒1　ロット構成の例

データ名B2

ロット階層のレベル番号が設定されます。

データ名B3

子ロットのスケジュール方法が設定されます。再下位ロットの場合は，EEOBM_SCD_NONEが設定されます。

　　VALUE'S'：シリアルスケジュール

　　VALUE'P'：優先スケジュール

　　VALUE'N'：スケジュールなし（最下位ロット）

データ名B4

ロットの同時実行数の変更可否が設定されます。

　　VALUE'S'：変更できません。同時実行数は1で固定です。

　　VALUE'M'：変更できます。

データ名B5

1階層下位のロットの中で，先頭のロットのエントリ番号が設定されます。

最下位ロットの場合は，0が設定されます。

データ名B6

1階層下位のロットのエントリ数が設定されます。

最下位ロットの場合は，0が設定されます。

データ名B7

ロット名の長さが設定されます。

データ名B8

ロット名が設定されます。

データ名B9

バッチデータのキーの長さが設定されます。データ型OBMの最下位ロットの場合に設定されます。OBM構成定義lotentry -k keyn_sizeオペランドの設定値が配列のn番目に設定されます。

ロット構成が1階層の場合は，キーの長さは0が設定されます。

配列の4番目以降は今後の拡張用です。

データ名B10

バッチデータのキーが設定されます。データ型OBMの最下位ロットの場合に設定されます。OBM構成定義の最下位ロットのlotdef -k hexnオペランドの設定値が配列のn番目に設定されます。ロット構成が1階層の場合は，キーは設定されません。

配列の4番目以降は今後の拡張用です。

データ名B11

ロットの同時実行数の上限が設定されます。

データ名B13

データ型OBMの最下位ロットに設定されます。それ以外は，0が設定されます。

4.1.4　ユーザが値を設定する項目

(1)　一意名2，一意名4

(a)　ロットの並べ替え

同一レベルのロットは，順番を並べ替えることができます。並べ替えは，OBM開始時だけ行えます。OBM再開始時には行えません。並べ替える場合は，次の規則を守ってください。

同じロットの下位ロットは，連続したエントリ番号の領域に並びます。

TP1/EEが使用する領域を含む構造体全体を並べ替えます。ただし，上位ロットと下位ロットの親子関係を変えてはいけません。

例えば，3階層のロットで，階層レベル2のロットを並べ替えた場合，階層レベル3のロットも次の図のように並べ替えてください。

図4‒2　ロットの並べ替え例

並べ替えのコーディング例

一意名2のエントリ番号2とエントリ番号3のロットを並べ替えて，一意名4に設定する場合。

MOVE 一意名2(3) TO 一意名4(2).

MOVE 4 TO データ名B5 OF一意名4(2).

MOVE 一意名2(2) TO 一意名4(3).

MOVE 7 TO データ名B5 OF 一意名4(3).

(b)　値を設定する項目

次の項目は値を設定できます。TP1/EEで設定された値をそのまま使用する場合は，値を設定する必要はありません。

データ名B5

1階層下位のロットの中で，先頭のロットのエントリ番号を設定します。ロットの並べ替えによって下位ロットのエントリ番号が変わった場合に設定してください。

OBM開始時だけ設定できます。OBM再開始時には設定できません。

データ名B12

ユーザが任意に設定するロットIDです。初期値は0です。OBM再開始時も，前回の開始UOCで設定した値は引き継がないで初期値は0となります。ここで設定したロットIDは，ノーマルトランザクションのトランザクションインタフェースに引き継ぎます。ユーザがロットごとに割り当てたリソースとの関連づけなどに使用できます。

OBM開始に設定できます。

(2)　一意名3

データ名C1

開始UOCをエラーリターンする場合にOBM開始コマンドのexitコードを設定します。設定できる範囲は，31〜40です。開始UOCをエラーリターンする場合は，必ず設定してください。

設定しないでエラーリターンまたは31〜40以外の値を設定してエラーリターンすると，開始コマンドのexitコードは30となります。

開始UOCを正常リターンする場合は，exit_codeを設定する必要はありません。

設定しても開始コマンドのexitコードは変わりません。

データ名C2

OBM実行に使用するロット情報を設定します。初期値は'I'です。

VALUE'I'：一意名2を使用します。

VALUE'W'：一意名4を使用します。

4.1.5　リターン値

一意名5に次の値を設定してください。

リターン値

意味

0

正常リターン

1

エラーリターン

(1)　0の場合

OBM開始処理を続行しイニシャライズトランザクションを起動します。

(2)　1の場合

KFSB45701-Eを出力しOBM開始処理を中止します。OBM開始コマンドは一意名3のC3に設定したexitコードで終了します。

(3)　上記以外の場合

KFSB45701-Eを出力しOBM開始処理を中止します。OBM開始コマンドはexitコード30で終了します。

4.1.6　発行可能なライブラリ関数

OBM開始/再開始UOCで発行可能なライブラリ関数を次に示します。

メッセージログの出力（CBLEELOG('PRINT')）

ユーザメッセージログの出力（CBLEELOG('PRINTU')）

ワークセグメントの割り当て（CBLEEMEM('GETWK')）

ワークセグメントの返還（CBLEEMEM('RLSWK')）

現在時刻取得機能（CBLEETHD('GETTIME')）

SDBハンドラ：イニシャライズ（CBLEESDH('INIT')）

SDBハンドラ：個別開始（CBLEESDH('STRT')）

SDBハンドラ：DBアクセス（CBLEESDH('ACCS')）

SDBハンドラ：DBアクセス（CBLEESDH('CLAR')）

SDBハンドラ：システム構成表示（CBLEESDH('REFS')）

SDBハンドラ：個別終了（CBLEESDH('FNSH')）

ユーザ固有のトレースの取得（CBLEETRB('UTPUT')）

現在のトランザクション識別情報の取得（CBLEETRN('GETINFO')）

SQL

4.2　OBM終了/停止UOC（COBOL言語）

4.2.1　機能

OBM実行に使用したリソースを解放したり，実行結果の確認をするためのUOCです。ヘッダデータの更新ができます。

4.2.2　形式

PROGRAM-ID.OWNOBED.

LINKAGE SECTION.
01 一意名1
  02 データ名A1    ADDRESS.                           ユーザSATアドレス
  02 データ名A2    PIC 9(18) COMP.                    ユーザSATサイズ
  02 データ名A3    PIC S9(9) COMP OCCURS 4 TIMES.     ロット名長
  02 データ名A4    PIC X(9) OCCURS 4 TIMES.           ロット名
  02 データ名A5    PIC S9(9) COMP.             バッチデータを格納した表名長
  02 データ名A6    PIC X(29)                   バッチデータを格納した表名
  02 データ名A7    PIC X(1).                          バッチの形式
  02 データ名A8    PIC X(1).                          OBM状態
  02 FILLER        PIC X(1).                          予備
  02 データ名A9    PIC S9(9) COMP.                    停止，終了理由コード
  02 データ名A10   PIC S9(9) COMP.    ユーザが設定した停止，終了理由コード
  02 データ名A11   ADDRESS.                           ヘッダデータアドレス
  02 データ名A12   PIC S9(9) COMP.                    ヘッダデータ長
  02 FILLER        PIC X(4).                          予備
  02 データ名A13   ADDRESS.                           ユーザIFAアドレス
  02 データ名A14   PIC 9(18) COMP.                    ユーザIFAサイズ
  02 FILLER        PIC X(40).                         予備
01 一意名2.
  02 データ名B1    PIC X(1).                          ヘッダ更新要求の有無
  02 FILLER        PIC X(31).                         予備
01 一意名3         PIC S9(9) COMP VALUE ZERO.        リターン値

PROCEDURE DIVISION  USING 一意名1 一意名2
RETURNING 一意名3
      :
EXIT PROGRAM.

4.2.3　TP1/EEが値を設定する項目

(1)　一意名1

データ名A1

ユーザSATエリアのポインタが設定されます。データ名A2が0の場合は，値を参照できません。当該領域には排他を掛けていません。

データ名A2

ユーザSATエリアのサイズが設定されます（単位：バイト）。

データ名A3

配列の1番目の要素にロット名長が設定されます。

配列の2番目から4番目までの要素は，今後の拡張用です。

データ名A4

配列の1番目の要素にロット名が設定されます。1番目のロット名は，OBM名です。

配列の2番目から4番目までの要素は，今後の拡張用です。

データ名A5

バッチデータを格納した表名長が設定されます。イベント型OBMの場合は，0が設定されます。

データ名A6

バッチデータを格納した表名が設定されます。イベント型OBMの場合は，参照できません。

データ名A7

バッチの形式が設定されます。

　　VALUE'D'：データ型OBM

　　VALUE'E'：イベント型OBM

データ名A8

OBM停止，終了要求を受け付けたときの要求された終了，停止形態が設定されます。

　　VALUE'P'：計画停止

　　VALUE'F'：強制停止

　　VALUE'E'：強制終了

　　VALUE'N'：正常終了

データ名A9

OBMが停止した理由コードが設定されます。強制終了の場合は，計画停止または強制停止時の理由コードが引き継がれます。

　　0：停止していない（正常終了の場合に設定されます）

　　01：ユーザ要求

　　03：全ロット停止

　　11：TP1/EE再開始

　　21：ノーマルトランザクション異常終了

　　22：オープントランザクション異常終了

　　23：クローズトランザクション異常終了

　　31：バッチデータ入力障害

　　32：メモリ不足

　　33：バッチデータ通番抜け

　　34：サービス名不正

　　35：バッチデータ表不正

　　36：ヒューリスティックハザード決着による通番矛盾

　　37：処理済み通番管理表RDエリア不足

　　38：ロットスケジューラ障害

　　39：トランザクションレベル名不正

　　41：BCMからBCSへ送信時の通信障害

　　42：BCSからの応答受信時の通信障害

　　43：BCSとのハートビート障害検知

　　46：OBM開始コマンドとのハートビート障害検知

　　99：そのほかの要因

データ名A10

ユーザが停止要求時に設定した理由コードが設定されます。停止した理由コードが1以外の場合は，設定されません。

データ名A11

ヘッダデータのアドレスが設定されます。イベント型OBMの場合，データ型OBMでヘッダデータがない場合，または強制終了の場合は，0が設定されます。

データ名A12

ヘッダデータの長さが設定されます。イベント型OBMの場合，データ型OBMでヘッダデータがない場合，または強制終了の場合は，0が設定されます。

データ名A13

ユーザIFAエリアのポインタが設定されます。データ名A14が0の場合は，値を参照できません。

データ名A14

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

4.2.4　ユーザが値を設定する項目

(1)　一意名2

データ名B1

ヘッダレコードの更新の要求を設定します。初期値は，'N'です。次の値以外が設定された場合は，'N'が設定されたと扱います。

終了，停止形態が強制終了の場合は，'Y'を設定できません。設定された場合は，’N’が設定されたと扱います。

　　VALUE 'Y'：ヘッダレコードの更新を要求します。

　　VALUE 'N'：ヘッダレコードの更新を要求しません。

(2)　一意名1

データ名A11

アドレスが指す領域にヘッダレコードを設定します。データ名B1に'Y'を設定した場合に設定してください。ヘッダレコードのアドレスおよび長さは更新できません。

4.2.5　リターン値

リターン値

意味

0

正常リターン

(1)　0の場合

OBM終了処理を続行します。

(2)　リターン値が上記以外の場合

0が設定されたと扱い処理を続行します。

4.2.6　発行可能なライブラリ関数

OBM終了/停止UOCで発行可能なライブラリ関数を次に示します。

メッセージログの出力（CBLEELOG('PRINT')）

ユーザメッセージログの出力（CBLEELOG('PRINTU')）

ワークセグメントの割り当て（CBLEEMEM('GETWK')）

ワークセグメントの返還（CBLEEMEM('RLSWK')）

現在時刻取得機能（CBLEETHD('GETTIME')）

SDBハンドラ：イニシャライズ（CBLEESDH('INIT')）

SDBハンドラ：個別開始（CBLEESDH('STRT')）

SDBハンドラ：DBアクセス（CBLEESDH('ACCS')）

SDBハンドラ：DBアクセス（CBLEESDH('CLAR')）

SDBハンドラ：システム構成表示（CBLEESDH('REFS')）

SDBハンドラ：個別終了（CBLEESDH('FNSH')）

ユーザ固有のトレースの取得（CBLEETRB('UTPUT')）

現在のトランザクション識別情報の取得（CBLEETRN('GETINFO')）

SQL

4.3　OBMスキップデータUOC（COBOL言語）

4.3.1　機能

eeobmskipコマンドにでノーマルトランザクションを実行しないで処理済みとするデータを受け取り，後処理を行うことができます。

eeobmskipコマンドを実行後にeeobmstartを実行するとノーマルトランザクションを呼び出す代わりにスキップデータUOCが呼び出されます。スキップしたバッチデータ1件につき1回呼び出されます。スキップしたバッチデータは，通番の順番に渡されます。スキップデータUOCは，ノーマルトランザクションと同様にロットのスケジュールを呼び出します。ロットの多重度，スケジュール方式に応じて，複数のスキップデータが同時に実行されることがあります。同一ロットに対するスキップデータUOCが複数同時に呼び出されることはありません。トレーラレコードをスキップした場合，トレーラレコードとして扱わないで通常のバッチデータとしてスキップデータUOCに渡します。

スキップデータUOCを呼び出したトランザクションが正常終了すると，バッチデータは処理済みとなります。

4.3.2　形式

PROGRAM-ID.OWNOBSK.

LINKAGE SECTION.
01 一意名1
  02 データ名A1    ADDRESS.                          ユーザSATアドレス
  02 データ名A2    PIC 9(18) COMP.                   ユーザSATサイズ
  02 データ名A3    PIC S9(9) COMP OCCURS 4 TIMES.    ロット名長
  02 データ名A4    PIC X(9) OCCURS 4 TIMES.          ロット名
  02 FILLER        PIC X(4).
  02 データ名A5    PIC S9(9) COMP.                   ロット名数
  02 データ名A6    PIC S9(9) COMP.                   バッチデータ長
  02 データ名A7    ADDRESS.                          バッチデータアドレス
  02 データ名A8    PIC S9(9) COMP OCCURS 7 TIMES.    バッチデータのキー長
  02 データ名A9    PIC X(8) OCCURS 7 TIMES.          バッチデータのキー
  02 データ名A10   PIC S9(9) COMP.                   バッチデータの通番
  02 データ名A11   PIC X(1).                         メッセージ状態
  02 FILLER        PIC X(3).                         予備
  02 データ名A12   ADDRESS.                          ユーザIFAアドレス
  02 データ名A13   PIC 9(18) COMP.                   ユーザIFAサイズ
  02 FILLER        PIC X(16).                        予備

PROCEDURE DIVISION  USING 一意名1
                    :
EXIT PROGRAM.

4.3.3　TP1/EEが値を設定する項目

(1)　一意名1

データ名A1

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

データ名A2

ユーザSATエリアのサイズが設定されます（単位：バイト）。

データ名A3

ロット名長が設定されます。

配列の1番目が最上位のロット名長で，以下昇順に下位ロットのロット名長が設定されます。

配列の4番目の要素は，今後の拡張用です。

データ名A4

ロット名が設定されます。

配列の1番目が最上位のロット名で，以下昇順に下位ロットのロット名が設定されます。

配列の4番目の要素は，今後の拡張用です。

データ名A5

データ名A3，データ名A4に設定したロット名長，およびロット名の数が設定されます（最下位ロットのロットレベル）。

データ名A6

バッチデータの長さが設定されます。

データ名A7

バッチデータのアドレスが設定されます。

データ名A8

バッチデータのキーの長さが返されます。配列の4番目以降は，今後の拡張用です。

データ名A9

バッチデータのキーが返されます。配列の4番目以降は，今後の拡張用です。

データ名A10

バッチデータの一連通番が返されます。

データ名A11

バッチデータの状態を設定します。

VALUE 'N'

データ名A7に，バッチデータを設定しました。

VALUE 'O'

メッセージ引き渡し領域（IMA）が不足しました。data_ptには，バッチデータをメッセージ引き渡し領域のサイズだけ（data_lenに示すサイズ）

設定しました。

データ名A12

ユーザIFAエリアのポインタが設定されます。データ名A13が0の場合は，値を参照できません。

データ名A13

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

4.3.4　ユーザが値を設定する項目

ありません。

4.3.5　リターン値

リターンコードの設定は不要です。

4.3.6　発行可能なライブラリ関数

OBMスキップデータUOCで発行可能なライブラリ関数を次に示します。

メッセージログの出力（CBLEELOG('PRINT')）

ユーザメッセージログの出力（CBLEELOG('PRINTU')）

ワークセグメントの割り当て（CBLEEMEM('GETWK')）

ワークセグメントの返還（CBLEEMEM('RLSWK')）

UAP履歴情報の取得（CBLEETRN('UAPPUT')）

トランザクションのロールバック指示（CBLEETRN('ROLLMARK')）

現在のトランザクション識別情報の取得（CBLEETRN(‘GETINFO’)）

バッチデータの受信（CBLEEOBM('RECV')）

SQL

4.4　リトライロールバック前処理UOC（COBOL言語）

4.4.1　機能

リトライロールバック時，ユーザ資源の解放などの後処理ができます。

4.4.2　形式

PROGRAM-ID.OWNRTYBK.

LINKAGE SECTION.
01 一意名1
  02 データ名A1    ADDRESS.                       ユーザSATアドレス
  02 データ名A2    PIC 9(18) COMP.                ユーザSATサイズ
  02 データ名A3    ADDRESS.                       ユーザIFAアドレス
  02 データ名A4    PIC 9(18) COMP.                ユーザIFAサイズ
  02 データ名A5    PIC X(32).                     サービス名
  02 データ名A6    PIC S9(9) COMP.                リトライ回数の上限値
  02 データ名A7    PIC S9(9) COMP.                リトライ回数
  02 データ名A8    PIC X(1).                      リトライロールバック契機
  02 データ名A9    PIC X(7).                      予備
  02 データ名A10   PIC X(32).                     トランザクション引き継ぎ情報
  02 FILLER        PIC X(18).                     予備
01 一意名2         PIC S9(9) COMP VALUE ZERO.     リターン値

PROCEDURE DIVISION  USING 一意名1
RETURNING 一意名2
    :
EXIT PROGRAM.

4.4.3　TP1/EEが値を設定する項目

(1)　一意名1

データ名A1

ユーザSATエリアのポインタが設定されます。ユーザSATエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

データ名A2

ユーザSATエリアのサイズが設定されます（単位：バイト）。

データ名A3

ユーザIFAエリアのポインタが設定されます。ユーザIFAエリアサイズが0の場合は，値を参照できません。当該領域には排他を掛けていません。

データ名A4

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

データ名A5

サービス名が設定されます（¥0終端あり）。

データ名A6

定義したリトライ上限値（1〜255）が設定されます。

データ名A7

現時点のリトライ回数（1〜256）が設定されます。max_cnt以下の場合は，スレッドダウン後，トランザクションをリトライします。max_cntを超過している場合は，スレッドダウン後，トランザクションをリトライしません。

データ名A8

リトライロールバック契機を示す次の情報が設定されます。

設定値

意味

X'01'

SDBデータベースアクセスでデッドロック発生

X'02'

ユーザがee_trn_retry_rollback()またはCBLEETRN('R-ROLL')発行

X'03'

DBキュー交替用メッセージ表書き込み機能使用時に，DBキューへのメッセージの書き込みで暗黙的ロールバックが発生

CBLEEDBQ('MSGPUT')関数を実行したトランザクションの同期点処理で発生する場合があります。

X'04'

DBキュー交替用メッセージ表書き込み機能使用時に，DBキューからのメッセージの入力で暗黙的ロールバックが発生

次のAPI関数実行時に発生する場合があります。

CBLEEDBQ('MSGGET ')

CBLEEDBQ('MSGREFER')

CBLEEDBQ('MSGREFE2')

4.4.4　ユーザが値を設定する項目

データ名 A10

リトライロールバック機能使用時，サービストランザクション（MN），ERRTRN3(E3)，タイマトランザクション（TM）に引き継ぐ情報を設定します。格納領域は32バイトです。

4.4.5　リターン値

次のコードでリターンしてください。

リターン値

意味

VALUE 0

正常リターン

VALUE 3

リトライなし

VALUE 4

リトライなし

メモリダンプファイル出力

COBOL異常終了時要約リスト出力（COBOL使用時）

(1)　0の場合

リトライロールバック処理を続行します。

(2)　3の場合

スレッドダウン後，トランザクションのリトライをしないで，ERRTRN3を起動します。

(3)　4の場合

スレッドダウン後，トランザクションのリトライをしないで，次のファイルおよびリストを出力し，ERRTRN3を起動します。

メモリダンプファイル

COBOL異常終了時要約リスト（COBOL使用時だけ出力）

(4)　リターン値が上記以外の場合

0が設定されたと扱い処理を続行します。

4.4.6　発行可能なライブラリ関数

発行可能なライブラリ関数を次に示します。

CBLEELOG('PRINT')

CBLEELOG('PRINTU')

CBLEEMEM('GETWK')

CBLEEMEM('RLSWK')

CBLEETHD('GETTIME')

4.4.7　注意事項

本UOCはUAP共用ライブラリ同時入れ替え機能の対象です。本関数を含むライブラリは，ユーザサービス関連定義のstatic_module_dirではなく，module_dirに指定したディレクトリ内に格納してください。

DBキューの交替用メッセージ表書き込み機能を使用して，DBキューへの書き込み，および読み込みで暗黙的ロールバックが発生したときに，このUOCで3または4をリターンした場合は，書き込み先，および読み込み先を切り替えないでロールバックします。

5　データ連携支援のUOCインタフェースの概要

この章では，データ連携支援のUOCインタフェースの概要について説明します。

5.1　UOCの作成

データ連携支援で使用するUOCの作成手順を次に示します。

図5‒1　UOCの作成手順

図5‒2　UOCの作成手順（媒体）

5.1.1　UOCのコーディング

UOCのコーディングには，C言語またはCOBOL言語を使用します。

UOCをコーディングしてソースファイルを作成するとき，次の表に示すTP1/EEライブラリ関数のほかにも，OSの標準機能を使えます。反映UOCでは，データベース言語（SQL）も使うことができます。

UOCでは，次に示すTP1/EEのライブラリ関数を使用できます。

表5‒1　使用可能なTP1/EEライブラリ関数

項番

機能

C言語ライブラリ

COBOL-UAP作成用プログラム

UOC

備考

開始

終了

反映先指定

編集

反映

1

ユーザメッセージログ出力

ee_logprint_user

CBLEELOG('PRINTU ')

○

○

○

○

−

2

メッセージの出力抑止

ee_log_dctmsg

CBLEELOG('DCTMSG ')

○

○

○

○

−

3

メッセージの出力抑止解除

ee_log_actmsg

CBLEELOG('ACTMSG ')

○

○

○

○

−

4

トランザクション処理時間監視

ee_trn_watch

CBLEETRN('WATCH ')

×

×

×

○

説明中のtrn_expiration_time定義はtrnrks_service定義の-eオプション値に読み替えてください。

5

トランザクション処理時間の残り時間取得

ee_trn_getrtime

CBLEETRN('GETRTIME')

×

×

×

○

項番4と同様です。

6

遠隔サービスの要求

ee_rpc_call

CBLEERPC('CALL ')

×

×

×

○

flags（COBOL：データ名C）を次のように設定してください。必須項目です。

EERPC_TPNOTRAN

（COBOL：32）

次の指定はできません。

EERPC_CALL_MYPROC

（COBOL：131072）

7

通信先を指定した遠隔サービスの要求

ee_rpc_call_to

CBLEERPC('CALLTO ')

×

×

×

○

directionのflagsはEERPC_SCDPORTだけ指定可能です。それ以外は項番6と同様です。

8

サービスの応答待ち時間の更新

ee_rpc_set_watch_time

CBLEERPC('SETWATCH')

×

×

×

○

説明中のwatch_time定義はtrnrks_service定義の-wオプション値に読み替えてください。

9

サービスの応答待ち時間の参照

ee_rpc_get_watch_time

CBLEERPC('GETWATCH')

×

×

×

○

項番8と同様です。

10

非同期応答型RPCの応答受信

ee_rpc_poll_any_replies

CBLEERPC('POLLANYR')

×

×

×

○

項番8と同様です。

11

すべての非同期応答型RPCの応答受信拒否

ee_rpc_discard_further_replies

CBLEERPC('DISCARDF')

×

×

×

○

項番8と同様です。

12

特定の非同期応答型RPCの応答受信拒否

ee_rpc_discard_specific_reply

CBLEERPC('DISCARDS')

×

×

×

○

項番8と同様です。

13

エラーが発生した非同期応答型RPCの識別子取得

ee_rpc_get_error_descriptor

CBLEERPC('GETERDES')

×

×

×

○

項番8と同様です。

14

データ連携支援の強制終了

ee_bpp_term

CBLEEBPP('TERM')

○

○

○

○

リターン値（COBOL：データ名B）でEECOMER_CNDBPP（COBOL：00005）は返されません。

説明中のeebpprunコマンドはデータ連携支援プロセスに読み替えてください。

15

接続ハンドルの取得

ee_trn_gethandle

CBLEETRN('GETHNDL ')

○

○

×

×

−

16

上記以外

×

×

×

×

−

（凡例）

○：使用可能

×：使用不可

−：該当しません

注

上記以外の関数を使用した場合の動作は保証しないので注意してください。

なお，上記の関数仕様についてはマニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」および「1.　トランザクションインタフェース」を参照してください。

(1)　C言語でコーディングする場合

C言語を使うときは，ANSI C形式に従ってコーディングします。

(2)　COBOL言語でコーディングする場合

COBOL言語を使うときは，COBOL2002の形式でコーディングします。

(3)　コーディング規約

コーディングするときは，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」の該当する言語編のコーディング規約に従ってコーディングしてください。SQLのコーディングの規約については，該当するリファレンスマニュアルを参照してください。

5.1.2　翻訳と結合

ソースファイルをコンパイルして，UOCオブジェクトファイルを作成します。Cコンパイラのプリプロセッサオプションに-Dee_TP1EETRNIOARKSを指定してください。

コンパイルして作成した各UOCオブジェクトファイルをリンケージして，UOCライブラリを作成します。

コンパイルオプションおよびリンケージオプションについては，データ連携支援のサンプルmakeファイル（makefile_rks）を参照してください。

5.1.3　データ連携支援の環境設定

作成したUOCライブラリをデータ連携支援で使えるように，次のとおり環境設定します。

(1)　格納ディレクトリ

任意のディレクトリに格納します。

(2)　データ連携支援への登録

UOCライブラリをTP1/EEサービス定義のmodule定義に設定します。

5.1.4　データ連携支援の実行

データ連携支援実行コマンドを実行します。

データ連携支援とUOCとは同一のプロセス，同一のスレッドで動作します。そのため，UOCの動作環境は，データ連携支援と同様となります。詳細について次に示します。

標準入力（stdin）は，データ連携支援によって/dev/nullにリダイレクトされます。

標準出力（stdout）および標準エラー出力（stderr）は，データ連携支援によってメッセージログファイルにリダイレクトされます。

データ連携支援を開始すると，$EERKSDIR環境変数で指定したデータ連携支援環境下にデータ連携支援実行環境（$EERKSDIR/job/データ連携支援ID/run）が作成されます。このディレクトリをカレントディレクトリとして，データ連携支援が稼働します。

ユーザID（UID）とグループID（GID）は，データ連携支援の環境設定時に指定した値になります。

umaskは000です。

制御端末はありません。

UOC内ではシグナル関連の操作は行わないでください。

5.2　UOCの処理手順

5.2.1　概要

データ連携支援では，ユーザデータ（UJ）を引き渡すインターフェースとしてUOC（ユーザオウンコーディング）を提供します。

UOCは次の4種類があります。

開始終了UOC（データ連携支援の開始および終了時に呼び出されます)

反映先指定UOC（UJを反映処理するサービスを指定するときに呼び出されます）

編集UOC（DBQ，RPC反映処理で呼び出され，反映するデータを編集します）

反映UOC（ユーザ任意の処理を実行するときに呼び出されます）

5.2.2　開始終了UOCの処理手順

データ連携支援開始時または終了時にデータ連携スレッドから呼び出します。開始時は呼び出し種別（'ST'）で，終了（中断含む）時は呼び出し種別（'EN'）で呼び出します。

開始時に開始終了UOCを呼び出して正常リターンした場合，終了（中断，強制停止を含む）時に呼び出し種別（'EN'）で開始終了UOCを呼び出します。ただし，次の場合は呼び出しません。

開始終了UOC，編集UOC，または反映UOCが強制停止指示

終了APIによる強制停止

中断コマンドによる強制停止

UOCの時間監視タイムアウトによる強制停止（全UOC）

自動再実行機能を使用しているときは，一時中断時に呼び出し種別（'EN'）で開始終了UOCを呼び出し，自動再実行による開始時に呼び出し種別（'ST'）で，開始終了UOCを呼び出します。開始終了UOCは省略可能です。開始終了UOCの処理手順を次の図に示します。

図5‒3　開始終了UOC処理手順

5.2.3　反映先指定UOCの処理手順

データ連携支援は，データ連携スレッド上で，反映先指定UOCに1トランザクション分のユーザデータ（UJ）を一括して渡します。ユーザは，反映先指定UOC内でUJを反映処理するサービスを指定します。反映先指定UOCリターン後，データ連携支援は指定された反映サービスを呼び出します。反映先指定UOCは省略可能です。省略した場合，データ連携支援はUJを全反映サービスで反映処理します。反映先指定UOCの処理手順を次の図に示します。

図5‒4　反映先指定UOCの処理手順

5.2.4　編集UOCの処理手順

反映処理方法にDBキュー書き込み，またはRPC送信を設定した場合，反映処理スレッド上から呼び出します。編集UOCでは反映処理（DBキュー書き込み，RPC送信）する編集データ指定エリアを編集します。編集UOCリターン後，編集データ指定エリアの情報を書き込み/送信します。編集UOCは省略可能であり，省略した場合は，UJ（履歴情報ヘッダと履歴情報）を反映処理します。反映方法はリターンコードEETRN_RKS_RTN_04（COBOL言語：4）でリターンした場合と同様です。

図5‒5　編集UOCの処理手順

5.2.5　反映UOCの処理手順

反映処理方法にユーザ任意処理を設定した場合，反映処理スレッド上から呼び出します。反映UOCではユーザ任意の反映処理（SQL処理，RPC送信など）を実行します。

図5‒6　反映UOCの処理手順

5.3　UOCの開始条件と終了条件

データ連携支援からUOCに制御が渡るときの条件を開始条件，UOCがデータ連携支援に制御を戻すときを終了条件といいます。

5.3.1　開始条件

UOCに制御を渡すとき，データ連携支援がパラメタの各エリアのアドレスを設定します。

5.3.2　終了条件

UOCからデータ連携支援に制御を戻すとき，UOCがパラメタで示すエリアに必要な情報を設定します。

6　データ連携支援のUOCインタフェース（C言語インタフェース）

この章では，データ連携支援のUOCインタフェース（C言語インタフェース）について説明します。

6.1　開始終了UOCインタフェース（C言語）

6.1.1　形式

ANSI C,C++の形式

#include <eetrn_uoc_rks.h>
void uoc_func(struct ee_trn_rks_st_en_interface_t   *interface,
                        char                        *user_area,
                        int                         user_area_len);

6.1.2　説明

データ連携支援を開始または終了するときに呼び出されるUOCです。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。

6.1.3　パラメタの内容

(1)　パラメタの形式

図6‒1　パラメタ形式

(2)　ee_trn_rks_st_en_interface_t（インタフェースエリア）の内容

typedef struct ee_trn_rks_st_en_interface_t {   /* インタフェースエリア       */
   char inf_call_type[2];                /* 呼び出し種別               */
   char inf_start_mode;                  /* 開始モード                 */
   char inf_end_mode;                    /* 終了モード                 */
   EELONG inf_return;                    /* リターンコード             */
   EEULONG64  uifa_len;                  /* ユーザIFAエリアサイズ     */
   char       *uifa;                     /* ユーザIFAエリアポインタ   */
   EEULONG64  usat_len;                  /* ユーザSATエリアサイズ     */
   char       *usat;                     /* ユーザSATエリアポインタ   */
   char inf_start_auto_run;              /* 開始時の自動再実行有無     */
   char inf_end_auto_run;                /* 終了時の自動再実行有無     */
   char inf_reserve1[2];                 /* 予備                       */
   EELONG inf_end_mode_detail;           /* 終了モード詳細             */
   char inf_reserve[208];                /* 予備                       */
}EETRN_RKS_STEN_INTERFACE;

6.1.4　データ連携支援が設定する項目

(1)　引数

表6‒1　引数情報

項番

項目

内容

参照可否

開始

終了

1

インタフェースエリアアドレス

インタフェースエリアのアドレス

○

○

2

ユーザ引き継ぎエリアアドレス

ユーザ引き継ぎエリアのアドレス

○

○

3

ユーザ引き継ぎエリアサイズ

ユーザ引き継ぎエリアサイズ

○

○

（凡例）

○：参照可

(2)　インタフェースエリア

表6‒2　インタフェースエリア情報

項番

項目

内容

参照可否

開始

終了

1

呼び出し種別

データ連携支援がUOCに渡す情報の種別

EETRN_RKS_CALL_ST：開始

データ連携支援の開始時に開始情報を渡します。

EETRN_RKS_CALL_EN：終了

データ連携支援の終了時に終了情報を渡します。

○

○

2

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

○

○

3

終了モード

データ連携支援の終了モード

EETRN_RKS_END_V：中断

EETRN_RKS_END_F：正常終了

EETRN_RKS_END_A：強制停止

EETRN_RKS_END_S：中断（読み出しUJ指定）

×

○

4

リターンコード

開始終了UOCの処理結果

×

×

5

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

○

○

6

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

○

7

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

○

○

8

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

○

9

開始時の自動再実行有無

開始時，自動再実行かどうかの情報

開始モードが正常開始/強制開始の場合でも自動再実行となる場合があります。

EETRN_RKS_AUTO_START_Y：自動再実行です。

EETRN_RKS_AUTO_START_N：自動再実行ではありません。

○

○

10

終了時の自動再実行有無

終了時，自動再実行するかどうかの情報

EETRN_RKS_AUTO_START_Y：自動再実行します。

EETRN_RKS_AUTO_START_N：自動再実行しません。

×

○

11

終了モード詳細※

データ連携支援の中断/強制停止時の詳細情報

呼び出し種別が開始のときは，開始モードが再開始（読み出しUJ指定含む）のときだけ参照できます。また，呼び出し種別が終了のときは，終了モードが中断（読み出しUJ指定含む）/強制停止のときだけ参照できます。

EETRN_RKS_END_EOF：EOF検知による中断

EETRN_RKS_END_RANGE：TABLE制御文のUAPTBLオペランドで指定されたユーザデータ（UJ）終了による中断

EETRN_RKS_END_PLAN：計画停止検知による中断

EETRN_RKS_END_COMMAND：eeaphstprksコマンド（-a/-bオプション）による中断

EETRN_RKS_END_UOC：UOC指示による中断

EETRN_RKS_END_OTHER：上記以外の要因による中断/強制停止

○

○

（凡例）

○：参照可

×：参照不可

注※

終了モードがEETRN_RKS_END_A，またはDB障害が発生した場合，本情報を再開始時の終了モード詳細に引き継ぐことができません。

(3)　ユーザ引き継ぎエリア

データ連携支援終了／中断後の正常開始／再開始に備えて，UOCがデータ連携支援間で引き継ぎをするための4,000バイトのエリアです。

データ連携支援の開始の場合，呼び出し種別’開始’の開始終了UOC呼び出し時にPJ管理表から抽出した引き継ぎ情報を，ユーザ引き継ぎエリアに設定します。

データ連携支援の終了時，呼び出し種別’終了’の開始終了UOCを呼び出す直前にPJ管理表に更新した引き継ぎ情報（反映先指定UOCのユーザ引き継ぎエリア）をユーザ引き継ぎエリアに設定します。

PJ管理表の更新時にSQLエラーが発生した場合，以前にPJ管理表を更新した最新の引き継ぎ情報を，ユーザ引き継ぎエリアに設定します。

表6‒3　ユーザ引き継ぎエリア情報

項番

項目

内容

参照可否

開始

終了

1

ユーザ引き継ぎエリア

ユーザ任意情報

正常開始時

○

○

2

再開始時

○

3

強制開始時

×

（凡例）

○：参照可

×：参照不可

(4)　ユーザ引き継ぎエリアサイズ

ユーザ引き継ぎエリアのサイズをデータ連携支援が設定します。サイズは4,000（バイト）固定です。

表6‒4　ユーザ引き継ぎエリアサイズ情報

項番

項目

内容

参照可否

開始

終了

1

ユーザ引き継ぎエリアサイズ

ユーザ引き継ぎエリアのサイズ

正常開始時

○

○

2

再開始時

○

3

強制開始時

○

（凡例）

○：参照可

6.1.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表6‒5　インタフェースエリア情報

項番

項目

内容

更新可否

開始

終了

1

呼び出し種別

データ連携支援がUOCに渡す情報の種別

EETRN_RKS_CALL_ST：開始

データ連携支援の開始時に開始情報を渡します。

EETRN_RKS_CALL_EN：終了

データ連携支援の終了時に終了情報を渡します。

×

×

2

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

×

×

3

終了モード

データ連携支援の終了モード

EETRN_RKS_END_V：中断

EETRN_RKS_END_F：正常終了

EETRN_RKS_END_A：強制停止

EETRN_RKS_END_S：中断（読み出しUJ指定）

×

×

4

リターンコード

開始終了UOCの処理結果

詳細については，表6-6を参照してください。

○

○

5

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

×

×

6

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

×

7

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

×

×

8

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

×

9

開始時の自動再実行有無

開始時，自動再実行かどうかの情報

開始モードが正常開始/強制開始の場合でも自動再実行となる場合があります。

EETRN_RKS_AUTO_START_Y：自動再実行です。

EETRN_RKS_AUTO_START_N：自動再実行ではありません。

×

×

10

終了時の自動再実行有無

終了時，自動再実行するかどうかの情報

EETRN_RKS_AUTO_START_Y：自動再実行します。

EETRN_RKS_AUTO_START_N：自動再実行しません。

×

×

11

終了モード詳細

データ連携支援の中断/強制停止時の詳細情報

呼び出し種別が開始のときは，開始モードが再開始（読み出しUJ指定含む）のときだけ参照できます。また，呼び出し種別が終了のときは，終了モードが中断（読み出しUJ指定含む）/強制停止のときだけ参照できます。

EETRN_RKS_END_EOF：EOF検知による中断

EETRN_RKS_END_RANGE：TABLE制御文のUAPTBLオペランドで指定されたユーザデータ（UJ）終了による中断

EETRN_RKS_END_PLAN：計画停止検知による中断

EETRN_RKS_END_COMMAND：eeaphstprksコマンド（-a/-bオプション）による中断

EETRN_RKS_END_UOC：UOC指示による中断

EETRN_RKS_END_OTHER：上記以外の要因による中断/強制停止

×

×

（凡例）

○：更新可

×：更新不可（無視する）

表6‒6　リターンコード情報

項番

項目

内容

1

EETRN_RKS_RTN_00

データ連携支援を続行します。

2

EETRN_RKS_RTN_100

データ連携支援を強制停止します。ただし，強制停止する前に呼び出し種別'EN'で開始終了UOCは呼び出しません。

3

上記以外

(2)　ユーザ引き継ぎエリア

ユーザ引き継ぎエリアの情報は，UOCリターン後にPJ管理表に出力され，開始時にUOCに渡し始めるユーザデータ（UJ）とユーザ引き継ぎエリアの内容の整合性を取れるようにします。

データ連携支援は，ユーザ引き継ぎエリアの内容に関係なく，EEFDPARMパラメタのOUTPUT文のUSRAREAオペランドでYES指定があったときだけ，内容をPJ管理表に出力します。

UOCがEETRN_RKS_RTN_100でリターンした場合，ユーザ引き継ぎエリアの情報は再開始に引き継がれません。

表6‒7　ユーザ引き継ぎエリア情報

項番

項目

内容

更新可否

開始

終了

1

ユーザ引き継ぎエリア

ユーザ任意情報

正常開始時

×

○※

2

再開始時

×

3

強制開始時

×

（凡例）

○：更新可

×：更新不可（無視する）

注※

終了モードがEETRN_RKS_END_Aの場合，ユーザ引き継ぎ情報は，再開始に引き継がれません。

6.1.6　注意事項

特にありません。

6.2　反映先指定UOCインタフェース（C言語）

6.2.1　形式

ANCI C,C++の形式

#include <eetrn_uoc_rks.h>
void EEFDUOC(struct ee_trn_rks_interface_t   *interface,
             struct ee_trn_rks_recindex_t    *rec_index,
             struct ee_trn_rks_editindex_t   *edit_index,
             char                            *user_area,
             int                             user_area_len);

6.2.2　説明

ユーザデータ（UJ）を反映処理するサービス名を指定するUOCです。データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。UOCに渡す1トランザクション中のユーザデータ（UJ）の最大数を，EEFDPARMパラメタのOUTPUT文のUAPMXCTオペランドで指定します。ただし，1トランザクションのユーザデータ（UJ）数がEEFDPARMパラメタの指定値を超えた場合，データ連携支援実行コマンドを強制停止します。

6.2.3　パラメタの内容

(1)　パラメタの形式

図6‒2　パラメタ形式

(2)　ee_trn_rks_interface_t（インタフェースエリア）の内容

typedef struct ee_trn_rks_interface_t {       /* インタフェースエリア    */
    char inf_start_mode;               /* 開始モード              */
    char inf_reserve1[3];              /* 予備                    */
    EELONG inf_return;                 /* リターンコード          */
    char inf_nodeid[4];                /* ノード識別子            */
    char inf_reserve2[4];              /* 予備                     */
    EEULONG inf_runid;                 /* ランID                  */
    EEULONG inf_proc_number;           /* 中央処理通番             */
    EELONG inf_service_len;            /* サービス名長             */
    char inf_service[32];              /* サービス名               */
    EELONG inf_uap_cnt;                /* UJ数                     */
    EELONG64 inf_first_block_number;   /* 先頭累積データ通番       */
    EELONG64 inf_last_block_number;    /* 最終累積データ通番       */
    EELONG ref_service_len;            /* 反映サービス名長         */
    char ref_service[32];              /* 反映サービス名           */
    char inf_reserve3[4];              /* 予備                     */
    EEULONG64 uifa_len;                /* ユーザIFAエリアサイズ   */
    char *uifa;                        /* ユーザIFAエリアポインタ */
    EEULONG64 usat_len;                /* ユーザSATエリアサイズ   */
    char *usat;                        /* ユーザSATエリアポインタ */
    void *rm_handle;                   /* 接続ハンドル             */
    char inf_reserve34[96];            /* 予備                     */
}EETRN_RKS_INTERFACE;

(3)　ee_trn_rks_recindex_t（履歴情報レコードインデクス）の内容

typedef struct ee_trn_rks_recindex_t {      /* 履歴情報レコードインデクス */
  EETRN_RKS_COMINF *recx_cominf;       /* 履歴情報共通エリアアドレス     */
  EETRN_UAP_COMINDEX *recx_comindex;   /* 履歴情報レコードエリアアドレス */
  EETRN_RKS_REFSRV  *recx_service;     /* 反映サービス指定エリアアドレス */
  char *recx_uoc_area;                 /* UOC間連携エリアアドレス        */
  unsigned short recx_uoc_area_size;   /* UOC間連携エリアサイズ          */
  char recx_reserve[6];                /* 予備                           */
}EETRN_RKS_RECINDEX;

(4)　ee_trn_rks_editindex_t（編集後データインデクス）の内容

typedef struct ee_trn_rks_editindex_t {   /* 編集後データインデクス */
    char editx_reserve[32];        /* 予備                   */
}EETRN_RKS_EDITINDEX;

(5)　ee_trn_rks_cominf_t（履歴情報共通エリア）の内容

typedef struct ee_trn_rks_cominf_t {      /* 履歴情報共通エリア  */
    EELONG64 com_block_number;     /* 累積データ通番      */
    char com_date[8];              /* 取得年月日          */
    char com_time[6];              /* 取得時刻            */
    char com_reserve1[2];          /* 予備                */
    EELONG com_rootjsq_no;         /* ルート世代番号      */
    EELONG com_jsq_no;             /* 世代番号            */
    EELONG com_serial_no;          /* 順序番号            */
    char com_reserve[20];          /* 予備                */
    char com_system[32];           /* TP1/FSP使用領域     */
} EETRN_RKS_COMINF;

(6)　ee_trn_uap_com_index_t（履歴情報共通インデクス）の内容

「1.8　UAP履歴情報取得機能が提供する共通のデータ領域」を参照してください。

(7)　ee_trn_uap_header_t（履歴情報ヘッダ）の内容

「1.8　UAP履歴情報取得機能が提供する共通のデータ領域」を参照してください。

(8)　ee_trn_ref_service_t（反映サービス指定エリア）の内容

typedef struct ee_trn_ref_service_t {      /* 反映サービス指定エリア  */
       char bundle_end;              /* 一括引き渡し末尾指定         */
       char com_reserve[7];          /* 予備                         */
       EELONG max_service_num;       /* 最大サービス数               */
       EELONG service_num;           /* サービス数                   */
       char service[100][32];        /* サービス名指定エリア         */
}EETRN_RKS_REFSRV;

6.2.4　データ連携支援が設定する項目

(1)　引数

表6‒8　引数情報

項番

項目

内容

参照可否

1

インタフェースエリアアドレス

インタフェースエリアのアドレス

○

2

履歴情報レコードインデクスアドレス

履歴情報レコードインデクスのアドレス

○

3

編集後データインデクスアドレス

編集後データインデクスのアドレス

×

4

ユーザ引き継ぎエリアアドレス

ユーザ引き継ぎエリアのアドレス

×※

5

ユーザ引き継ぎエリアサイズ

ユーザ引き継ぎエリアサイズ

○

（凡例）

○：参照可

×：参照不可

注※

書き込み用の領域のため，参照しても値は設定されていません。

(2)　インタフェースエリア

表6‒9　インタフェースエリア情報

項番

項目

内容

参照可否

1

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

○

2

リターンコード

ユーザが設定します。データ連携支援は設定しません。

×

3

ノード識別子

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

○

4

ランID

ユーザデータ（UJ）を出力したTP1/EEのランID

○

5

中央処理通番

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

○

6

サービス名長

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

○

7

サービス名

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

○

8

UJ数

UOCで渡すユーザデータ（UJ）数

UJ数分の履歴情報レコードインデクスがあります。

○

9

先頭累積データ通番

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

○

10

最終累積データ通番

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

○

11

反映サービス名長

実行している反映サービス名の長さ

×

12

反映サービス名

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

○

14

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

15

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

○

16

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

17

接続ハンドル

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：参照可

×：参照不可

(3)　履歴情報レコードインデクス

履歴情報レコードインデクスは構造体の配列です。配列の要素数はインタフェースエリアのUJ数と同じであり，ユーザデータ取得順に設定します。

表6‒10　履歴情報レコードインデクス情報

項番

項目

内容

参照可否

1

履歴情報共通エリアアドレス

履歴情報共通エリアのアドレス

○

2

履歴情報レコードエリアアドレス

履歴情報レコードエリアの先頭アドレス

（履歴情報共通インデクスのアドレス）

○

3

反映サービス指定エリアアドレス

反映サービス指定エリアの先頭アドレス

○

4

UOC間連携エリアアドレス

UOC間連携エリアのアドレス

○

5

UOC間連携エリアサイズ

UOC間連携エリアのサイズ

○

（凡例）

○：参照可

(4)　履歴情報共通エリア

表6‒11　履歴情報共通エリア情報

項番

項目

内容

参照可否

1

累積データ通番

ユーザデータ（UJ）の累積データ通番

（TMS-4V/SPのブロック番号相当）

○

2

取得年月日

ユーザデータ（UJ）を出力した日時（YYYYMMDD形式）

○

3

取得時刻

ユーザデータ（UJ）を出力した時刻（hhmmss形式）

○

4

ルート世代番号

履歴情報表のルート世代番号

○

5

世代番号

履歴情報表の世代番号

（TMS-4V/SPのJSQ相当）

○

6

順序番号

1トランザクション中のユーザデータ（UJ）の順序番号（1〜32,767）

○

（凡例）

○：参照可

(5)　履歴情報レコードエリア

30,000バイトのエリアに履歴情報共通インデクス，履歴情報ヘッダ，およびUAP履歴情報を設定します。履歴情報レコードのフォーマットについては，「1.　トランザクションインタフェース」を参照してください。

表6‒12　履歴情報レコードエリア情報

項番

項目

内容

参照可否

1

履歴情報共通インデクス

TP1/EEが履歴情報レコードごとに付加する情報です。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

2

履歴情報ヘッダ

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報ヘッダです。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

3

履歴情報

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報です。

○

（凡例）

○：参照可

(6)　反映サービス指定エリア

表6‒13　反映サービス指定エリア情報

項番

項目

内容

参照可否

1

末尾指定

一括で引き渡す複数のUJのうち，末尾にあたるUJかどうかを指定する領域です。

×

2

最大サービス数

ユーザが設定可能な最大サービス数です。

trnrks_service定義の定義数。

○

3

サービス数

対象UJを反映処理するサービス数です。

×

4

サービス名指定エリア

対象UJを反映処理するサービス名を指定するエリアです。

×

（凡例）

○：参照可

×：参照不可

(7)　ユーザ引き継ぎエリアサイズ

ユーザ引き継ぎエリアのサイズを設定します。サイズは4,000（バイト）を設定します。

6.2.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表6‒14　インタフェースエリア情報

項番

項目

内容

更新可否

1

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

×

2

リターンコード

UOCの処理結果

詳細については，表6-15を参照してください。

○

3

ノード識別子

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

×

4

ランID

ユーザデータ（UJ）を出力したTP1/EEのランID

×

5

中央処理通番

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

×

6

サービス名長

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

×

7

サービス名

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

×

8

UJ数

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

×

9

先頭累積データ通番

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

×

10

最終累積データ通番

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

×

11

反映サービス名長

実行している反映サービス名の長さ

×

12

反映サービス名

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

×

14

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

15

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

×

16

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

17

接続ハンドル

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：更新可

×：更新不可（無視する）

表6‒15　リターンコード情報

項番

項目

内容

1

EETRN_RKS_RTN_00

データ連携支援を続行します。

該当するトランザクションのUJをサービスへ登録し，次のトランザクションのUJの処理をします。

2

EETRN_RKS_RTN_08

データ連携支援を続行しますが，データ連携支援中断後の再開始時，このUAP履歴情報から引き渡します（再開始（読み出しUJ指定）指示）。

3

EETRN_RKS_RTN_12

データ連携支援を中断します。

再開始時，データ連携支援は中断したUAP履歴情報から渡します。

4

EETRN_RKS_RTN_16

データ連携支援を中断します。

再開始時，データ連携支援は中断したときのトランザクションの次のトランザクションのUAP履歴情報から引き渡します。

5

EETRN_RKS_RTN_100

データ連携支援を強制停止させます。

再開始時，データ連携支援は反映処理が未完了だったトランザクションのUAP履歴情報から引き渡します。

6

上記以外

(2)　ユーザ引き継ぎエリア

データ連携支援中断後の再開始に備えて，UOCがデータ連携支援間で引き継ぎをするためのエリアで，UOCが自由に使用できる4,000バイトのエリアです。ユーザ引き継ぎエリアの情報は，UOCリターン後，ユーザデータ（UJ）の反映処理が完了したあとにPJ管理表に出力され，再開始時にUOCに渡し始めるユーザデータ（UJ）とユーザ引き継ぎエリアの内容の整合性を取れるようにします。EEFDPARMパラメタのCONTROL文のPJUPITVLオペランドを指定しているときは，反映先指定UOC処理を定義の指定値の回数分行い，該当するユーザデータ（UJ）の反映処理がすべて完了したあとに，PJ管理表に出力することで整合性を取ります。

データ連携支援は，ユーザ引き継ぎエリアの内容に関係なく，EEFDPARMパラメタのOUTPUT文のUSRAREAオペランドでYES指定があったときだけ，内容をPJ管理表に出力します。

PJ管理表の更新時にSQLエラーが発生した場合，以前にPJ管理表を更新した最新の引き継ぎ情報を，ユーザ引き継ぎエリアに設定します。

UOCがEETRN_RKS_RTN_12，EETRN_RKS_RTN_100でリターンした場合，ユーザ引き継ぎエリアの情報は再開始に引き継がれません。

(3)　反映サービス指定エリア

抽出したUJを反映処理するサービスを，ユーザが指定するエリアです。詳細を次の表に示します。

項番

項目

内容

更新可否

1

末尾指定

一括で引き渡す複数のUJのうち，末尾にあたるUJかどうかを指定する領域。

○

2

最大サービス数

ユーザが設定可能な最大サービス数。

trnrks_service定義の定義数。

×

3

サービス数

対象UJを反映処理するサービス数。

○

4

サービス名指定エリア

対象UJを反映処理するサービス名を指定するエリア。

○

（凡例）

○：更新可

×：更新不可（無視する）

(a)　反映処理するサービスの指定

反映サービス名はサービス名指定エリアに指定します。入力形式を図6-3に示します。配列の先頭から順に反映サービス名を書き込みます。反映サービス名が32バイト未満の場合，空き領域をスペースで埋めてください。

反映サービス名は配列先頭から最大サービス数分の行まで指定できます。

サービス数に，反映処理するサービス数を指定します。サービス名指定エリアで，配列先頭からサービス数分の行に設定した反映サービス名を，データ連携支援が読み込みます。サービス数分の行以降に設定した反映サービス名は読み込みません。

サービス数は最大サービス数まで指定できます。サービス数に0を指定した場合，データ連携支援は対象UJを反映処理しません。

次の表の指定をした場合データ連携支援を強制停止します。

表6‒16　データ連携支援が停止するエラー内容

項番

エラーの対象

エラー内容

1

サービス名指定エリア

サービス名の重複です。

2

trnrks_service定義で未定義のサービス名を指定しています。

3

サービス数

最大サービス数の超過です。

図6‒3　サービス名指定エリアへの反映サービス名設定方法

(b)　反映サービスへ一括で引き渡すUJの単位の指定

反映サービスへ一括で引き渡すUJの単位を指定します。反映サービスに一括で引き渡す複数のUJのうち，末尾にしたいUJの末尾指定にEETRN_RKS_BUNDLE_ENDを指定します。

末尾指定にEETRN_RKS_BUNDLE_ENDを指定したUJまでを一括で反映サービスへ引き渡します。このとき，EETRN_RKS_BUNDLE_ENDを指定したUJの反映サービスへUJを引き渡します。1トランザクション内末尾のUJは末尾指定の指定有無に関わらず，EETRN_RKS_BUNDLE_ENDを指定した場合と同様に扱います。

1トランザクション内すべてのUJの末尾指定が未指定の場合，1トランザクション内UJすべてを一括して，1トランザクション内末尾のUJの反映サービスへ引き渡します。

図6‒4　UJを一括して反映サービスへ引き渡すかの指定

(4)　UOC間連携エリア

UOC間連携エリアは編集UOCでデータ編集処理，または反映UOCで反映処理するに当たって，反映先指定UOCと編集UOC/反映UOC間で引き継ぎをするためのエリアです。UOC間連携エリアの情報は反映先指定UOCリターン後，反映サービス名指定エリアで指定したサービスのUOCに引き継ぎます。UOC間連携エリアはユーザが自由に使用できます。

UOC間連携エリアは128バイトであり，初期化されていません。

6.2.6　注意事項

反映先指定UOCでUJを編集した場合，編集UOCや反映UOCに編集したUJを渡します。

EETRN_RKS_RTN_08でリターンしたあとに，再度EETRN_RKS_RTN_08でリターンしたときは，KFSB42008-Wメッセージを出力し，EETRN_RKS_RTN_00でリターンしたものとして処理を継続します。

6.3　編集UOCインタフェース（C言語）

6.3.1　形式

ANCI C,C++の形式

#include <eetrn_uoc_rks.h>
void uoc_func(struct ee_trn_rks_interface_t   *interface,
              struct ee_trn_rks_recindex_t    *rec_index,
              char                            *msg_data,
              int                             *max_msg_len,
              int                             *msg_len);

6.3.2　説明

反映処理方法にDBキュー書き込み，RPC送信を選択した場合，反映処理する編集データを編集するUOCです。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。ユーザデータ（UJ）に関して，反映先指定UOCでの末尾指定の指定値に応じて，編集UOCに引き渡すUJ数が異なります。引き渡すUJ数はインタフェースエリアのUJ数を参照してください。

6.3.3　パラメタの内容

(1)　パラメタの形式

図6‒5　パラメタの形式

(2)　ee_trn_rks_interface_t（インタフェースエリア）の内容

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

(3)　ee_trn_rks_recindex_t（履歴情報レコードインデクス）の内容

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

6.3.4　データ連携支援が設定する項目

(1)　引数

表6‒17　引数情報

項番

項目

内容

参照可否

1

インタフェースエリアアドレス

インタフェースエリアのアドレス

○

2

履歴情報レコードインデクスアドレス

履歴情報レコードインデクスのアドレス

○

3

編集データ指定エリアアドレス

DBキュー書き込み，RPC送信するデータを設定するアドレス

×※

4

最大編集データサイズ

DBキュー書き込み，RPC送信する最大データサイズ

○

5

編集データサイズ

DBキュー書き込み，RPC送信するデータサイズ

×※

（凡例）

○：参照可

×：参照不可

注※

書き込み用の領域のため，参照しても値は設定されていません。

(2)　インタフェースエリア

表6‒18　インタフェースエリア設定情報

項番

項目

内容

参照可否

1

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

○

2

リターンコード

ユーザが設定します。データ連携支援は設定しません。

×

3

ノード識別子

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

○

4

ランID

ユーザデータ（UJ）を出力したTP1/EEのランID

○

5

中央処理通番

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

○

6

サービス名長

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

○

7

サービス名

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

○

8

UJ数

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

○

9

先頭累積データ通番

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

○

10

最終累積データ通番

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

○

11

反映サービス名長

実行している反映サービス名の長さ

○

12

反映サービス名

実行している反映サービス名

反映先指定UOCでは参照しないでください。

○

13

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

○

14

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

15

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

○

16

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

17

接続ハンドル

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：参照可

×：参照不可

(3)　履歴情報レコードインデクス

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

表6‒19　履歴情報レコードインデクス情報

項番

項目

内容

参照可否

1

履歴情報共通エリアアドレス

履歴情報共通エリアのアドレス

○

2

履歴情報レコードエリアアドレス

履歴情報レコードエリアの先頭アドレス

（履歴情報共通インデクスのアドレス）

○

3

反映サービス指定エリアアドレス

反映サービス指定エリアの先頭アドレス

×

4

UOC間連携エリアアドレス

UOC間連携エリアのアドレス

○

5

UOC間連携エリアサイズ

UOC間連携エリアのサイズ

○

（凡例）

○：参照可

×：参照不可

(4)　履歴情報共通エリア

表6‒20　履歴情報共通エリア情報

項番

項目

内容

参照可否

1

累積データ通番

ユーザデータ（UJ）の累積データ通番

（TMS-4V/SPのブロック番号相当）

○

2

取得年月日

ユーザデータ（UJ）を出力した日時（YYYYMMDD形式）

○

3

取得時刻

ユーザデータ（UJ）を出力した時刻（hhmmss形式）

○

4

ルート世代番号

履歴情報表のルート世代番号

○

5

世代番号

履歴情報表の世代番号

（TMS-4V/SPのJSQ相当）

○

6

順序番号

1トランザクション中のユーザデータ（UJ）の順序番号（1〜32,767）

○

（凡例）

○：参照可

(5)　履歴情報レコードエリア

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

表6‒21　履歴情報レコードエリア情報

項番

項目

内容

参照可否

1

履歴情報共通インデクス

TP1/EEが履歴情報レコードごとに付加する情報です。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

2

履歴情報ヘッダ

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報ヘッダです。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

3

履歴情報

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報です。

○

（凡例）

○：参照可

(6)　最大編集データサイズ

DBキュー書き込み/RPC送信するデータの最大サイズをデータ連携支援が設定します。設定値は，反映サービスがRPC送信の場合はtrn_rks_max_msg_size定義値，反映処理がDBQ書き込みの場合はeedbqtblh -zオプション指定値です。

(7)　UOC間連携エリア

反映先指定UOCで設定したUOC間連携エリアの情報が，本エリアに設定されています。エリアサイズは128バイトです。

同じUJでは，編集UOC，反映UOC共に同じメモリ領域のUOC間連携エリアを参照します。

6.3.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表6‒22　インタフェースエリア情報

項番

項目

内容

更新可否

1

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

×

2

リターンコード

UOCの処理結果

詳細については，表6-23を参照してください。

○

3

ノード識別子

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

×

4

ランID

ユーザデータ（UJ）を出力したTP1/EEのランID

×

5

中央処理通番

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

×

6

サービス名長

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

×

7

サービス名

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

×

8

UJ数

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

×

9

先頭累積データ通番

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

×

10

最終累積データ通番

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

×

11

反映サービス名長

実行している反映サービス名の長さ

×

12

反映サービス名

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

×

14

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

15

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

×

16

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

17

接続ハンドル

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：更新可

×：更新不可（無視する）

表6‒23　リターンコード情報

項番

項目

内容

1

EETRN_RKS_RTN_00

データ連携支援を続行します。

UOCリターン後，編集データエリアに設定したデータをDBキュー書き込み，RPC送信します。

2

EETRN_RKS_RTN_04

データ連携支援を続行します。

UOCリターン後，UOCに引き渡されたUJの履歴情報エリアの履歴情報ヘッダおよび履歴情報を，1つのデータにまとめてDBキュー書き込み，RPC送信します。1つにまとめたデータが最大編集データサイズを超えた場合，データ連携支援を中断します。まとめたデータの形式は図6-6を参照してください。

3

EETRN_RKS_RTN_08

対象UJの反映処理を行いません。

UOCリターン後，DBキュー書き込み，RPC送信を実行しないで，対象UJの処理を終了します。次のUJの処理を開始します。

4

EETRN_RKS_RTN_12

データ連携支援を中断します。

再開始時，データ連携支援は中断したトランザクションのUJから渡します。

5

EETRN_RKS_RTN_100

データ連携支援を強制停止させます。ただし，強制停止する前に呼び出し種別'EN'で開始終了UOCは呼び出しません。

再開始時，データ連携支援は反映処理が未完了だったトランザクションのUAP履歴情報から引き渡します。

6

上記以外

図6‒6　EETRN_RKS_RTN_04指定時のデータ形式

(2)　編集データエリア

DBキュー書き込み/RPC送信するデータを設定するエリアです。データ連携支援は，編集データ指定エリアに設定したデータをDBキュー書き込み/RPC送信します。

編集データエリアの先頭アドレスから，最大編集データサイズを超えて書き込み/送信するデータを設定した場合，データ連携支援の動作を保障しません。

(3)　編集データサイズ

DBキュー書き込み/RPC送信するデータのサイズを指定します。編集データエリアの先頭アドレスから，編集データサイズ分のデータをDBキュー書き込み/RPC送信します。

編集データサイズは，最大編集データサイズまで指定できます。

編集データサイズに0を設定した場合，リターンコードEETRN_RKS_RTN_08を設定した場合と同様に動作します。

6.3.6　注意事項

履歴情報レコードインデクスの値は，編集UOCおよび反映UOC共に参照するため，履歴情報レコードインデクスの値を変更しないでください。

6.4　反映UOCインタフェース（C言語）

6.4.1　形式

ANCI C,C++の形式

#include <eetrn_uoc_rks.h>
void uoc_func(struct ee_trn_rks_interface_t   *interface,
              struct ee_trn_rks_recindex_t    *rec_index);

6.4.2　説明

反映処理方法にユーザ任意処理を選択した場合，ユーザ任意の反映処理をするUOCです。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。ユーザデータ（UJ）に関して，反映先指定UOCでの末尾指定の指定値に応じて，反映UOCに引き渡すUJ数が異なります。引き渡すUJ数はインタフェースエリアのUJ数を参照してください。

6.4.3　パラメタの内容

(1)　パラメタの形式

図6‒7　パラメタの形式

(2)　ee_trn_rks_interface_t（インタフェースエリア）の内容

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

(3)　ee_trn_rks_recindex_t（履歴情報レコードインデクス）の内容

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

6.4.4　データ連携支援が設定する項目

(1)　引数

表6‒24　引数情報

項番

項目

内容

参照可否

1

インタフェースエリアアドレス

インタフェースエリアのアドレス

○

2

履歴情報レコードインデクスアドレス

履歴情報レコードインデクスのアドレス

○

（凡例）

○：参照可

(2)　インタフェースエリア

表6‒25　インタフェースエリア設定情報

項番

項目

内容

参照可否

1

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

○

2

リターンコード

ユーザが設定します。データ連携支援は設定しません。

×

3

ノード識別子

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

○

4

ランID

ユーザデータ（UJ）を出力したTP1/EEのランID

○

5

中央処理通番

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

○

6

サービス名長

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

○

7

サービス名

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

○

8

UJ数

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

○

9

先頭累積データ通番

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

○

10

最終累積データ通番

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

○

11

反映サービス名長

実行している反映サービス名の長さ

○

12

反映サービス名

実行している反映サービス名

反映先指定UOCでは参照しないでください。

○

13

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

○

14

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

15

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

○

16

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

17

接続ハンドル

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

○

（凡例）

○：参照可

×：参照不可

(3)　履歴情報レコードインデクス

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

表6‒26　履歴情報レコードインデクス情報

項番

項目

内容

参照可否

1

履歴情報共通エリアアドレス

履歴情報共通エリアのアドレス

○

2

履歴情報レコードエリアアドレス

履歴情報レコードエリアの先頭アドレス

（履歴情報共通インデクスのアドレス）

○

3

反映サービス指定エリアアドレス

反映サービス指定エリアの先頭アドレス

×

4

UOC間連携エリアアドレス

UOC間連携エリアのアドレス

○

5

UOC間連携エリアサイズ

UOC間連携エリアのサイズ

○

（凡例）

○：参照可

×：参照不可

(4)　履歴情報共通エリア

表6‒27　履歴情報共通エリア情報

項番

項目

内容

参照可否

1

累積データ通番

ユーザデータ（UJ）の累積データ通番

（TMS-4V/SPのブロック番号相当）

○

2

取得年月日

ユーザデータ（UJ）を出力した日時（YYYYMMDD形式）

○

3

取得時刻

ユーザデータ（UJ）を出力した時刻（hhmmss形式）

○

4

ルート世代番号

履歴情報表のルート世代番号

○

5

世代番号

履歴情報表の世代番号

（TMS-4V/SPのJSQ相当）

○

6

順序番号

1トランザクション中のユーザデータ（UJ）の順序番号（1〜32,767）

○

（凡例）

○：参照可

(5)　履歴情報レコードエリア

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。

表6‒28　履歴情報レコードエリア情報

項番

項目

内容

参照可否

1

履歴情報共通インデクス

TP1/EEが履歴情報レコードごとに付加する情報です。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

2

履歴情報ヘッダ

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報ヘッダです。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

3

履歴情報

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報です。

○

（凡例）

○：参照可

(6)　UOC間連携エリア

反映先指定UOCで設定したUOC間連携エリアの情報が，本エリアに設定されています。エリアサイズは128バイトです。

同じUJでは，編集UOC，反映UOC共に同じメモリ領域のUOC間連携エリアを参照します。

6.4.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表6‒29　インタフェースエリア情報

項番

項目

内容

更新可否

1

開始モード

データ連携支援の開始モード

EETRN_RKS_START_N：正常開始

EETRN_RKS_START_R：再開始

EETRN_RKS_START_F：強制開始

EETRN_RKS_START_S：再開始（読み出しUJ指定）

×

2

リターンコード

UOCの処理結果

詳細については，表6-30を参照してください。

○

3

ノード識別子

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

×

4

ランID

ユーザデータ（UJ）を出力したTP1/EEのランID

×

5

中央処理通番

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

×

6

サービス名長

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

×

7

サービス名

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

×

8

UJ数

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

×

9

先頭累積データ通番

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

×

10

最終累積データ通番

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

×

11

反映サービス名長

実行している反映サービス名の長さ

×

12

反映サービス名

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

ユーザIFAエリアのサイズ

×

14

ユーザIFAエリアポインタ

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

15

ユーザSATエリアサイズ

ユーザSATエリアのサイズ

×

16

ユーザSATエリアポインタ

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

17

接続ハンドル

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：更新可

×：更新不可（参照不可）

表6‒30　リターンコード情報

項番

項目

内容

1

EETRN_RKS_RTN_00

データ連携支援を続行します。

UOCリターン後，対象UJの処理を終了します。次のUJの処理を開始します。

2

EETRN_RKS_RTN_12

データ連携支援を中断します。

3

EETRN_RKS_RTN_20

データ連携支援を一時中断し自動再実行します。

4

EETRN_RKS_RTN_100

データ連携支援を強制停止させます。ただし，強制停止する前に呼び出し種別'EN'で開始終了UOCは呼び出しません。

5

上記以外

6.4.6　注意事項

履歴情報レコードインデクスの値は，編集UOCおよび反映UOC共に参照するため，履歴情報レコードインデクスの値を変更しないでください。

7　データ連携支援のUOCインタフェース（COBOL言語インタフェース）

この章では，データ連携支援のUOCインタフェース（COBOL言語インタフェース）について説明します。

7.1　開始終了UOCインタフェース（COBOL言語）

データ連携支援のUOCをCOBOL言語で作成するときは，CALL文で呼び出します。

7.1.1　形式

PROGRAM-ID.プログラム名.
DATA   DIVISION.
WORKING-STORAGE SECTION.
                    ：
LINKAGE SECTION.
01     データ名A   ADDRESS.        /* インタフェースエリアアドレス   */
01     データ名B   ADDRESS.        /* ユーザ引き継ぎエリアアドレス   */
01     データ名C   PIC S9(9) COMP. /* ユーザ引き継ぎエリアサイズ     */

PROCEDURE DIVISION USING BY VALUE データ名A データ名B データ名C．
    ：
    UOCの処理
    ：
EXIT PROGRAM.

7.1.2　説明

データ連携支援を開始または終了するときに呼び出されるUOCです。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。

7.1.3　パラメタの内容

(1)　パラメタの形式

図7‒1　パラメタ形式

(2)　インタフェースエリアの内容

01  一意名1 ADDRESSED BY データ名A.    /* インタフェースエリア     */
02  データ名11   PIC X(2).              /* 呼び出し種別             */
02  データ名12   PIC X(1).              /* 開始モード               */
02  データ名13   PIC X(1).              /* 終了モード               */
02  データ名14   PIC S9(9) COMP.        /* リターンコード           */
02  データ名15   PIC 9(18) COMP.        /* ユーザIFAエリアサイズ   */
02  データ名16   ADDRESS.               /* ユーザIFAエリアポインタ */
02  データ名17   PIC 9(18) COMP.        /* ユーザSATエリアサイズ   */
02  データ名18   ADDRESS.               /* ユーザSATエリアポインタ */
02  データ名19   PIC X(1).              /* 開始時の自動再実行有無   */
02  データ名1A   PIC X(1).              /* 終了時の自動再実行有無   */
02 FILLER PIC X(2).                     /* 予備                      */
02 データ名1B PIC S9(9) COMP.           /* 終了モード詳細           */
02  FILLER       PIC X(208).             /* 予備                     */

(3)　ユーザ引き継ぎエリアの内容

01  一意名4 ADDRESSED BY データ名B.    /* ユーザ引き継ぎエリア       */
02  データ名41   PIC X(4000).           /* ユーザ引き継ぎエリア       */

7.1.4　データ連携支援が設定する項目

(1)　引数

表7‒1　引数情報

項番

項目

内容

参照可否

開始

終了

1

インタフェースエリアアドレス

（データA）

インタフェースエリアのアドレス

○

○

2

ユーザ引き継ぎエリアアドレス

（データB）

ユーザ引き継ぎエリアのアドレス

○

○

3

ユーザ引き継ぎエリアサイズ

（データC）

ユーザ引き継ぎエリアサイズ

○

○

（凡例）

○：参照可

(2)　インタフェースエリア

表7‒2　インタフェースエリア情報

項番

項目

内容

参照可否

開始

終了

1

呼び出し種別

（データ名11）

データ連携支援がUOCに渡す情報の種別

'ST'：開始

データ連携支援の開始時に開始情報を渡します。

'EN'：終了

データ連携支援の終了時に終了情報を渡します。

○

○

2

開始モード

（データ名12）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

○

○

3

終了モード

（データ名13）

データ連携支援の終了モード

'V'：中断

'F'：正常終了

'A'：強制停止

'S'：中断（読み出しUJ指定）

×

○

4

リターンコード

（データ名14）

開始終了UOCの処理結果

×

×

5

ユーザIFAエリアサイズ

（データ名15）

ユーザIFAエリアのサイズ

○

○

6

ユーザIFAエリアポインタ

（データ名16）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

○

7

ユーザSATエリアサイズ

（データ名17）

ユーザSATエリアのサイズ

○

○

8

ユーザSATエリアポインタ

（データ名18）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

○

9

開始時の自動再実行有無

（データ名19）

開始時，自動再実行かどうかの情報

開始モードが正常開始/強制開始の場合でも自動再実行となる場合があります。

'Y'：自動再実行です。

'N'：自動再実行ではありません。

○

○

10

終了時の自動再実行有無

（データ名1A）

終了時，自動再実行するかどうかの情報

'Y'：自動再実行します。

'N'：自動再実行しません。

×

○

11

終了モード詳細

（データ名1B）※

データ連携支援の中断/強制停止時の詳細情報

呼び出し種別が開始のときは，開始モードが再開始（読み出しUJ指定含む）のときだけ参照できます。また，呼び出し種別が終了のときは，終了モードが中断（読み出しUJ指定含む）/強制停止のときだけ参照できます。

0：EOF検知による中断

1：TABLE制御文のUAPTBLオペランドで指定されたユーザデータ（UJ）終了による中断

2：計画停止検知による中断

3：eeaphstprksコマンド（-a/-bオプション）による中断

4：UOC指示による中断

99：上記以外の要因による中断/強制停止

○

○

（凡例）

○：参照可

×：参照不可

注※

終了モードが'A'，またはDB障害が発生した場合，本情報を再開始時の終了モード詳細に引き継ぐことができません。

(3)　ユーザ引き継ぎエリア

「6.1　開始終了UOCインタフェース（C言語）」を参照してください。

表7‒3　ユーザ引き継ぎエリアサイズ情報

項番

項目

内容

参照可否

開始

終了

1

ユーザ引き継ぎエリア

（データ名B）

ユーザ任意情報

正常開始時

○

○

2

再開始時

○

3

強制開始時

×

（凡例）

○：参照可

×：参照不可

(4)　ユーザ引き継ぎエリアサイズ

「6.1　開始終了UOCインタフェース（C言語）」を参照してください。

表7‒4　ユーザ引き継ぎエリアサイズ情報

項番

項目

内容

参照可否

開始

終了

1

ユーザ引き継ぎエリアサイズ

（データ名C）

ユーザ引き継ぎエリアのサイズ

正常開始時

○

○

2

再開始時

○

3

強制開始時

○

（凡例）

○：参照可

7.1.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表7‒5　インタフェースエリア情報

項番

項目

内容

更新可否

開始

終了

1

呼び出し種別

（データ名11）

データ連携支援がUOCに渡す情報の種別

'ST'：開始

データ連携支援の開始時に開始情報を渡します。

'EN'：終了

データ連携支援の終了時に終了情報を渡します。

×

×

2

開始モード

（データ名12）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

×

×

3

終了モード

（データ名13）

データ連携支援の終了モード

'V'：中断

'F'：正常終了

'A'：強制停止

'S'：中断（読み出しUJ指定）

×

×

4

リターンコード

（データ名14）

開始終了UOCの処理結果

詳細については，表7-6を参照してください。

○

○

5

ユーザIFAエリアサイズ

（データ名15）

ユーザIFAエリアのサイズ

×

×

6

ユーザIFAエリアポインタ

（データ名16）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

×

7

ユーザSATエリアサイズ

（データ名17）

ユーザSATエリアのサイズ

×

×

8

ユーザSATエリアポインタ

（データ名18）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

×

9

開始時の自動再実行有無

（データ名19）

開始時，自動再実行かどうかの情報

開始モードが正常開始/強制開始の場合でも自動再実行となる場合があります。

'Y'：自動再実行です。

'N'：自動再実行ではありません。

×

×

10

終了時の自動再実行有無

（データ名1A）

終了時，自動再実行するかどうかの情報

'Y'：自動再実行します。

'N'：自動再実行しません。

×

×

11

終了モード詳細

（データ名1B）

データ連携支援の中断/強制停止時の詳細情報

呼び出し種別が開始のときは，開始モードが再開始のときだけ参照できます。また，呼び出し種別が終了のときは，終了モードが中断/強制停止のときだけ参照できます。

1：TABLE制御文のUAPTBLオペランドで指定されたユーザデータ（UJ）終了による中断

2：計画停止検知による中断

3：eeaphstprksコマンド（-a/-bオプション）による中断

4：UOC指示による中断

99：上記以外の要因による中断/強制停止

×

×

（凡例）

○：更新可

×：更新不可（無視する）

表7‒6　リターンコード情報

項番

項目

内容

1

0

データ連携支援を続行します。

2

100

データ連携支援を強制停止します。ただし，強制停止する前に呼び出し種別'EN'で開始終了UOCは呼び出しません。

3

上記以外

(2)　ユーザ引き継ぎエリア

「6.1　開始終了UOCインタフェース（C言語）」を参照してください。ただし，EETRN_RKS_RTN_100は100に読み替えてください。

表7‒7　ユーザ引き継ぎエリア情報

項番

項目

内容

参照可否

開始

終了

1

ユーザ引き継ぎエリア

（データ名B）

ユーザ任意情報

正常開始時

×

○※

2

再開始時

×

3

強制開始時

×

（凡例）

○：参照可

×：参照不可（無視する）

注※

終了モードが'A'の場合，ユーザ引き継ぎ情報は，再開始に引き継がれません。

7.1.6　注意事項

特にありません。

7.2　反映先指定UOCインタフェース（COBOL言語）

データ連携支援のUOCをCOBOL言語で作成するときは，CALL文で呼び出します。

7.2.1　形式

PROGRAM-ID.プログラム名.
DATA   DIVISION.
WORKING-STORAGE SECTION.
                    ：
LINKAGE SECTION.
01   データ名A   ADDRESS.        /* インタフェースエリアアドレス        */
01   データ名B   ADDRESS.        /* 履歴情報レコードインデクスアドレス  */
01   データ名C   ADDRESS.        /* 編集後データインデクスアドレス      */
01   データ名D   ADDRESS.        /* ユーザ引き継ぎエリアアドレス        */
01   データ名E   PIC S9(9) COMP.    /* ユーザ引き継ぎエリアサイズ       */

PROCEDURE DIVISION USING BY VALUE データ名A データ名B データ名C データ名D データ名E．
                    ：
UOCの処理
                    ：
EXIT PROGRAM.

7.2.2　説明

ユーザデータ（UJ）を反映処理するサービス名を指定します。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。UOCに渡す1トランザクション中のユーザデータ（UJ）の最大数を，EEFDPARMパラメタのOUTPUT文のUAPMXCTオペランドで指定します。ただし，1トランザクションのユーザデータ（UJ）数がEEFDPARMパラメタの指定値を超えた場合，データ連携支援を強制停止します。

7.2.3　パラメタの内容

(1)　パラメタの形式

図7‒2　パラメタの形式

(2)　インタフェースエリアの内容

01  一意名1 ADDRESSED BY データ名A.   /* インタフェースエリア     */
02  データ名11   PIC X(1).              /* 開始モード               */
02  FILLER        PIC X(3).              /* 予備                    */
02  データ名12   PIC S9(9) COMP.        /* リターンコード           */
02  データ名13   PIC X(4).              /* ノード識別子             */
02  FILLER        PIC X(4).              /* 予備                    */
02  データ名14   PIC 9(9) COMP-X.         /* ランID                  */
02  データ名15   PIC 9(9) COMP-X.         /* 中央処理通番             */
02  データ名16   PIC S9(9) COMP.        /* サービス名長             */
02  データ名17   PIC X(32).             /* サービス名               */
02  データ名18   PIC S9(9) COMP.        /* UJ数                    */
02  データ名19   PIC S9(18) COMP.       /* 先頭累積データ通番       */
02  データ名1A   PIC S9(18) COMP.       /* 最終累積データ通番       */
02  データ名1H   PIC S9(9) COMP.        /* 反映サービス名長         */
02  データ名1B   PIC X(32).             /* 反映サービス名           */
02  FILLER        PIC X(4).              /* 予備                    */
02  データ名1C   PIC 9(18) COMP.        /* ユーザIFAエリアサイズ   */
02  データ名1D   ADDRESS.               /* ユーザIFAエリアポインタ */
02  データ名1E   PIC 9(18) COMP.        /* ユーザSATエリアサイズ   */
02  データ名1F   ADDRESS.               /* ユーザSATエリアポインタ */
02  データ名1G   ADDRESS.               /* 接続ハンドル             */
02  FILLER        PIC X(104).           /* 予備                      */

(3)　履歴情報レコードインデクスの内容

01  一意名2 ADDRESSED BY データ名B.   /* 履歴情報レコードインデクス    */
02  データ名2 OCCURS 1 TO 32767 TIMES DEPENDING ON データ名18.
    03  データ名21   ADDRESS.          /* 履歴情報共通エリアアドレス     */
    03  データ名22   ADDRESS.          /* 履歴情報レコードエリアアドレス */
    03  データ名23   ADDRESS.          /* 反映サービス指定エリアアドレス */
    03 データ名24 ADDRESS.             /* UOC間連携エリアアドレス       */
    03 データ名25 PIC 9(4) COMP-X.       /* UOC間連携エリアサイズ         */
    03  FILLER        PIC X(6).        /* 予備                            */

(4)　編集後データインデクスの内容

01  一意名3 ADDRESSED BY データ名C.      /* 編集後データインデクス    */
  02  データ名3.
  03  データ名31   PIC X(32).              /* 予備                      */

(5)　ユーザ引き継ぎエリアの内容

01  一意名4 ADDRESSED BY データ名D.      /* ユーザ引き継ぎエリア       */
  02  データ名41   PIC X(4000).           /* ユーザ引き継ぎ情報         */

(6)　履歴情報共通エリアの内容

01  一意名5  ADDRESSED BY データ名5X.      /* 履歴情報共通エリア       */
  02  データ名51   PIC S9(18) COMP.         /* 累積データ通番          */
  02  データ名52   PIC X(8).                /* 取得年月日              */
  02  データ名53   PIC X(6).                /* 取得時刻                */
  02  FILLER        PIC X(2).                /* 予備                   */
  02  データ名54   PIC S9(9) COMP.          /* ルート世代番号          */
  02  データ名55   PIC S9(9) COMP.          /* 世代番号                */
  02  データ名56   PIC S9(9) COMP.          /* 順序番号                */
  02  FILLER        PIC X(20).               /* 予備                   */
  02  FILLER        PIC X(32).               /* TP1/FSP使用領域        */

(7)　履歴情報レコードエリアの内容

履歴情報共通インデクスおよび履歴情報ヘッダについては，「1.8　UAP履歴情報取得機能が提供する共通のデータ領域」を参照してください。

(8)　反映サービス指定エリアの内容

01  一意名6 ADDRESSED BY データ名6X.      /* 反映サービス名指定エリア */
  02 データ名61 PIC X(1).                  /* 末尾指定                 */
  02 FILLER PIC X(7).                       /* 予備                    */
  02  データ名62   PIC S9(9) COMP.         /* 最大サービス数           */
  02  データ名63   PIC S9(9) COMP.         /* サービス数               */
  02  データ名64   PIC X(32) OCCURS 100.   /* サービス名指定エリア     */

7.2.4　データ連携支援が設定するデータ領域

(1)　引数

UOCには次の値をデータ領域に渡します。

表7‒8　引数情報

項番

項目

内容

参照可否

1

インタフェースエリアアドレス

（データ名A）

インタフェースエリアのアドレス

○

2

履歴情報レコードインデクスアドレス

（データ名B）

履歴情報レコードインデクスのアドレス

○

3

編集後データインデクスアドレス

（データ名C）

編集後データインデクスのアドレス

×

4

ユーザ引き継ぎエリアアドレス

（データ名D）

ユーザ引き継ぎエリアのアドレス

×※

5

ユーザ引き継ぎエリアサイズ

（データ名E）

ユーザ引き継ぎエリアサイズ

○

（凡例）

○：参照可

×：参照不可

注※

書き込み用の領域のため，参照しても値は設定されていません。

(2)　インタフェースエリア

表7‒9　インタフェースエリア情報

項番

項目

内容

参照可否

1

開始モード

（データ名11）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

○

2

リターンコード

（データ名12）

ユーザが設定します。データ連携支援は設定しません。

×

3

ノード識別子

（データ名13）

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

○

4

ランID

（データ名14）

ユーザデータ（UJ）を出力したTP1/EEのランID

○

5

中央処理通番

（データ名15）

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

○

6

サービス名長

（データ名16）

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

○

7

サービス名

（データ名17）

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

○

8

UJ数

（データ名18）

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

○

9

先頭累積データ通番

（データ名19）

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

○

10

最終累積データ通番

（データ名1A）

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

○

11

反映サービス名長

（データ名1H）

実行している反映サービス名の長さ

×

12

反映サービス名

（データ名1B）

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

（データ名1C）

ユーザIFAエリアのサイズ

○

14

ユーザIFAエリアポインタ

（データ名1D）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

15

ユーザSATエリアサイズ

（データ名1E）

ユーザSATエリアのサイズ

○

16

ユーザSATエリアポインタ

（データ名1F）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

17

接続ハンドル

（データ名1G）

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：参照可

×：参照不可

(3)　履歴情報レコードインデクス

履歴情報レコードインデクスは構造体の配列です。配列の要素数はインタフェースエリアのUJ数（データ名1A）であり，ユーザデータ取得順に設定します。

表7‒10　履歴情報レコードインデクス情報

項番

項目

内容

参照可否

1

履歴情報共通エリアアドレス

（データ名21）

履歴情報共通エリアのアドレス

○

2

履歴情報レコードエリアアドレス

（データ名22）

履歴情報レコードエリアの先頭アドレス

（履歴情報共通インデクスのアドレス）

○

3

反映サービス指定エリアアドレス

（データ名23）

反映サービス指定エリアの先頭アドレス

○

4

UOC間連携エリアアドレス

（データ名24）

UOC間連携エリアのアドレス

○

5

UOC間連携エリアサイズ

（データ名25）

UOC間連携エリアのサイズ

○

（凡例）

○：参照可

(4)　履歴情報共通エリア

表7‒11　履歴情報共通エリア情報

項番

項目

内容

参照可否

1

累積データ通番

（データ名51）

ユーザデータ（UJ）の累積データ通番

（TMS-4V/SPのブロック番号相当）

○

2

取得年月日

（データ名52）

ユーザデータ（UJ）を出力した日時（YYYYMMDD形式）

○

3

取得時刻

（データ名53）

ユーザデータ（UJ）を出力した時刻（hhmmss形式）

○

4

ルート世代番号

（データ名54）

履歴情報表のルート世代番号

○

5

世代番号

（データ名55）

履歴情報表の世代番号

（TMS-4V/SPのJSQ相当）

○

6

順序番号

（データ名56）

1トランザクション中のユーザデータ（UJ）の順序番号（1〜32,767）

○

（凡例）

○：参照可

(5)　履歴情報レコードエリア

30,000バイトのエリアに履歴情報共通インデクス，履歴情報ヘッダ，およびUAP履歴情報を設定します。履歴情報レコードのフォーマットについては，「1.　トランザクションインタフェース」を参照してください。

表7‒12　履歴情報レコードエリア情報

項番

項目

内容

参照可否

1

履歴情報共通インデクス

TP1/EEが履歴情報レコードごとに付加する情報です。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

2

履歴情報ヘッダ

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報ヘッダです。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

3

履歴情報

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報です。

○

（凡例）

○：参照可

(6)　反映サービス指定エリア

表7‒13　反映サービス指定エリア情報

項番

項目

内容

参照可否

1

末尾指定

（データ名61）

一括で引き渡す複数のUJのうち，末尾にあたるUJかどうかを指定する領域です。

×

2

最大サービス数

（データ名62）

ユーザが設定可能な最大サービス数です。trnrks_service定義の定義数です。

○

3

サービス数

（データ名63）

対象UJを反映処理するサービス数です。

×

4

サービス名指定エリア

（データ名64）

対象UJを反映処理するサービス名を指定するエリアです。

×

（凡例）

○：参照可

×：参照不可

(7)　ユーザ引き継ぎエリアサイズ

ユーザ引き継ぎエリアのサイズを設定します。サイズは4,000（バイト）を設定します。

7.2.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表7‒14　インタフェースエリア情報

項番

項目

内容

更新可否

1

開始モード

（データ名11）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

×

2

リターンコード

（データ名12）

UOCの処理結果

詳細については，表7-15を参照してください。

○

3

ノード識別子

（データ名13）

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

×

4

ランID

（データ名14）

ユーザデータ（UJ）を出力したTP1/EEのランID

×

5

中央処理通番

（データ名15）

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

×

6

サービス名長

（データ名16）

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

×

7

サービス名

（データ名17）

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

×

8

UJ数

（データ名18）

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

×

9

先頭累積データ通番

（データ名19）

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

×

10

最終累積データ通番

（データ名1A）

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

×

11

反映サービス名長

（データ名1H）

実行している反映サービス名の長さ

×

12

反映サービス名

（データ名1B）

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

（データ名1C）

ユーザIFAエリアのサイズ

×

14

ユーザIFAエリアポインタ

（データ名1D）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

15

ユーザSATエリアサイズ

（データ名1E）

ユーザSATエリアのサイズ

×

16

ユーザSATエリアポインタ

（データ名1F）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

17

接続ハンドル

（データ名1G）

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：更新可

×：更新不可（無視する）

表7‒15　リターンコード情報

項番

項目

内容

1

0

データ連携支援を続行します。

該当するトランザクションのUJをサービスへ登録し，次のトランザクションのUJの処理をします。

2

8

データ連携支援を続行しますが，データ連携支援を中断したあとの再開始時，このUAP履歴情報から引き渡します（再開始（読み出しUJ指定）指示）。

3

12

データ連携支援を中断します。

再開始時，データ連携支援は中断したUAP履歴情報から渡します。

4

16

データ連携支援を中断します。

再開始時，データ連携支援は中断したときのトランザクションの次のトランザクションのUAP履歴情報から引き渡します。

5

100

データ連携支援を強制停止させます。

再開始時，データ連携支援は反映処理が未完了だったトランザクションのUAP履歴情報から引き渡します。

6

上記以外

(2)　ユーザ引き継ぎエリア

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。ただし，EETRN_RKS_RTN_12は12に，EETRN_RKS_RTN_100は100に読み替えてください。

(3)　反映サービス指定エリア

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。ただし，EETRN_RKS_BUNDLE_ENDは'E'に読み替えてください。

表7‒16　反映サービス指定エリア

項番

項目

内容

更新可否

1

末尾指定

（データ名61）

一括で引き渡す複数のUJのうち，末尾にあたるUJかどうかを指定する領域です。

○

2

最大サービス数

（データ名62）

ユーザが設定可能な最大サービス数です。trnrks_service定義の定義数です。

×

3

サービス数

（データ名63）

対象UJを反映処理するサービス数です。

○

4

サービス名指定エリア

（データ名64）

対象UJを反映処理するサービス名を指定するエリアです。

○

（凡例）

○：更新可

×：更新不可（無視する）

(4)　UOC間連携エリア

反映先指定UOCで設定したUOC間連携エリアの情報が，本エリアに設定されています。エリアサイズは128バイトです。

同じUJでは，編集UOC・反映UOC共に同じメモリ領域のUOC間連携エリアを参照します。

7.2.6　注意事項

「6.2　反映先指定UOCインタフェース（C言語）」を参照してください。ただし，EETRN_RKS_RTN_08は8に読み替えてください。

7.3　編集UOCインタフェース（COBOL言語）

データ連携支援のUOCをCOBOL言語で作成するときは，CALL文で呼び出します。

7.3.1　形式

PROGRAM-ID. プログラム名.
DATA   DIVISION.
WORKING-STORAGE SECTION.
                    ：
LINKAGE SECTION.
01   データ名A      ADDRESS.    /* インタフェースエリアアドレス       */
01   データ名B      ADDRESS.    /* 履歴情報レコードインデクスアドレス */
01   データ名C      ADDRESS.    /* 編集データ指定エリアアドレス           */
01   データ名D      ADDRESS.    /* 最大編集データサイズアドレス       */
01   データ名E      ADDRESS.    /* 編集データサイズアドレス           */

PROCEDURE DIVISION USING BY VALUE データ名A データ名B データ名C データ名D
データ名E．
                    ：
UOCの処理
                    ：
EXIT PROGRAM.

7.3.2　説明

反映処理方法にDBキュー書き込み，RPC送信を選択した場合，反映処理する編集データを指定するUOCです。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。ユーザデータ（UJ）に関して，反映先指定UOCでの末尾指定の指定値に応じて，編集UOCに引き渡すUJ数が異なります。引き渡すUJ数はインタフェースエリアのUJ数を参照してください。

7.3.3　パラメタの内容

(1)　パラメタの形式

図7‒3　パラメタの形式

(2)　インタフェースエリアの内容

「6.3　編集UOCインタフェース（C言語）」を参照してください。

(3)　履歴情報レコードインデクスの内容

「6.3　編集UOCインタフェース（C言語）」を参照してください。

7.3.4　データ連携支援が設定する項目

(1)　引数

表7‒17　引数情報

項番

項目

内容

参照可否

1

インタフェースエリアアドレス

（データ名A）

インタフェースエリアのアドレス

○

2

履歴情報レコードインデクスアドレス

（データ名B）

履歴情報レコードインデクスのアドレス

○

3

編集データ指定エリアアドレス

（データ名C）

DBキュー書き込み，RPC送信するデータを設定するエリアのアドレス

×※

4

最大編集データサイズアドレス

（データ名D）

DBキュー書き込み，RPC送信する最大データサイズ

○

5

編集データサイズアドレス

（データ名E）

DBキュー書き込み，RPC送信するデータサイズ

×※

（凡例）

○：参照可

×：参照不可

注※

書き込み用の領域のため，参照しても値は設定されていません。

(2)　インタフェースエリア

表7‒18　インタフェースエリア設定情報

項番

項目

内容

参照可否

1

開始モード

（データ名11）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

○

2

リターンコード

（データ名12）

ユーザが設定します。データ連携支援は設定しません。

×

3

ノード識別子

（データ名13）

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

○

4

ランID

（データ名14）

ユーザデータ（UJ）を出力したTP1/EEのランID

○

5

中央処理通番

（データ名15）

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

○

6

サービス名長

（データ名16）

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

○

7

サービス名

（データ名17）

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

○

8

UJ数

（データ名18）

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

○

9

先頭累積データ通番

（データ名19）

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

○

10

最終累積データ通番

（データ名1A）

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

○

11

反映サービス名長

（データ名1H）

実行している反映サービス名の長さ

○

12

反映サービス名

（データ名1B）

実行している反映サービス名

反映先指定UOCでは参照しないでください。

○

13

ユーザIFAエリアサイズ

（データ名1C）

ユーザIFAエリアのサイズ

○

14

ユーザIFAエリアポインタ

（データ名1D）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

15

ユーザSATエリアサイズ

（データ名1E）

ユーザSATエリアのサイズ

○

16

ユーザSATエリアポインタ

（データ名1F）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

17

接続ハンドル

（データ名1G）

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：参照可

×：参照不可

(3)　履歴情報レコードインデクス

「6.3　編集UOCインタフェース（C言語）」を参照してください。

表7‒19　履歴情報レコードインデクス情報

項番

項目

内容

参照可否

1

履歴情報共通エリアアドレス

（データ名21）

履歴情報共通エリアのアドレス

○

2

履歴情報レコードエリアアドレス

（データ名22）

履歴情報レコードエリアの先頭アドレス

（履歴情報共通インデクスのアドレス）

○

3

反映サービス指定エリアアドレス

（データ名23）

反映サービス指定エリアの先頭アドレス

×

4

UOC間連携エリアアドレス

（データ名24）

UOC間連携エリアのアドレス

○

5

UOC間連携エリアサイズ

（データ名25）

UOC間連携エリアのサイズ

○

（凡例）

○：参照可

×：参照不可

(4)　履歴情報共通エリア

表7‒20　履歴情報共通エリア情報

項番

項目

内容

参照可否

1

累積データ通番

（データ名51）

ユーザデータ（UJ）の累積データ通番

（TMS-4V/SPのブロック番号相当）

○

2

取得年月日

（データ名52）

ユーザデータ（UJ）を出力した日時（YYYYMMDD形式）

○

3

取得時刻

（データ名53）

ユーザデータ（UJ）を出力した時刻（hhmmss形式）

○

4

ルート世代番号

（データ名54）

履歴情報表のルート世代番号

○

5

世代番号

（データ名55）

履歴情報表の世代番号

（TMS-4V/SPのJSQ相当）

○

6

順序番号

（データ名56）

1トランザクション中のユーザデータ（UJ）の順序番号（1〜32,767）

○

（凡例）

○：参照可

(5)　履歴情報レコードエリア

「6.3　編集UOCインタフェース（C言語）」を参照してください。

表7‒21　履歴情報レコードエリア情報

項番

項目

内容

参照可否

1

履歴情報共通インデクス

TP1/EEが履歴情報レコードごとに付加する情報です。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

2

履歴情報ヘッダ

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報ヘッダです。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

3

履歴情報

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報です。

○

（凡例）

○：参照可

(6)　最大編集データサイズ

「6.3　編集UOCインタフェース（C言語）」を参照してください。

(7)　UOC間連携エリア

反映先指定UOCで設定したUOC間連携エリアの情報が，本エリアに設定されています。エリアサイズは128バイトです。

同じUJでは，編集UOC・反映UOC共に同じメモリ領域のUOC間連携エリアを参照します。

7.3.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表7‒22　インタフェースエリア情報

項番

項目

内容

更新可否

1

開始モード

（データ名11）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

×

2

リターンコード

（データ名12）

UOCの処理結果

詳細については，表7-23を参照してください。

○

3

ノード識別子

（データ名13）

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

×

4

ランID

（データ名14）

ユーザデータ（UJ）を出力したTP1/EEのランID

×

5

中央処理通番

（データ名15）

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

×

6

サービス名長

（データ名16）

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

×

7

サービス名

（データ名17）

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

×

8

UJ数

（データ名18）

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

×

9

先頭累積データ通番

（データ名19）

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

×

10

最終累積データ通番

（データ名1A）

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

×

11

反映サービス名長

（データ名1H）

実行している反映サービス名の長さ

×

12

反映サービス名

（データ名1B）

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

（データ名1C）

ユーザIFAエリアのサイズ

×

14

ユーザIFAエリアポインタ

（データ名1D）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

15

ユーザSATエリアサイズ

（データ名1E）

ユーザSATエリアのサイズ

×

16

ユーザSATエリアポインタ

（データ名1F）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

17

接続ハンドル

（データ名1G）

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：更新可

×：更新不可（無視する）

表7‒23　リターンコード情報

項番

項目

内容

1

0

データ連携支援を続行します。

UOCリターン後，編集データエリアに設定したデータをDBキュー書き込み，RPC送信します。

2

4

データ連携支援を続行します。

UOCリターン後，UOCに引き渡されたUJの履歴情報エリアの履歴情報ヘッダおよび履歴情報を，1つのデータにまとめてDBキュー書き込み，RPC送信します。1つにまとめたデータが最大編集データサイズを超えた場合，データ連携支援を中断します。

3

8

対象UJの反映処理を行いません。

UOCリターン後，DBキュー書き込み，RPC送信を実行しないで，対象UJの処理を終了します。次のUJの処理を開始します。

4

12

データ連携支援を中断します。

再開始時，データ連携支援は中断したトランザクションのUJから渡します。

5

100

データ連携支援を強制停止させます。ただし，強制停止する前に呼び出し種別'EN'で開始終了UOCは呼び出しません。

再開始時，データ連携支援は反映処理が未完了だったトランザクションのUAP履歴情報から引き渡します。

6

上記以外

(2)　編集データエリア

「6.3　編集UOCインタフェース（C言語）」を参照してください。

(3)　編集データサイズ

「6.3　編集UOCインタフェース（C言語）」を参照してください。

7.3.6　注意事項

「6.3　編集UOCインタフェース（C言語）」を参照してください。

7.4　反映UOCインタフェース（COBOL言語）

データ連携支援のUOCをCOBOL言語で作成するときは，CALL文で呼び出します。

7.4.1　形式

PROGRAM-ID. プログラム名.
DATA   DIVISION.
WORKING-STORAGE SECTION.
                   ：
LINKAGE SECTION.
01   データ名A   ADDRESS.     /* インタフェースエリアアドレス       */
01   データ名B   ADDRESS.     /* 履歴情報レコードインデクスアドレス */

PROCEDURE DIVISION USING BY VALUE データ名A データ名B．
                    ：
UOCの処理
                    ：
EXIT PROGRAM.

7.4.2　説明

反映処理方法にユーザ任意処理を選択した場合，ユーザ任意の反映処理をするUOCです。

データ連携支援は，各情報を格納したパラメタの領域アドレスを引数としてUOCに渡します。ユーザデータ（UJ）に関して，反映先指定UOCでの次UJ一括引き渡し有無の指定値に応じて，反映UOCに引き渡すUJ数が異なります。引き渡すUJ数はインタフェースエリアのUJ数を参照してください。

7.4.3　パラメタの内容

(1)　パラメタの形式

図7‒4　パラメタの形式

(2)　インタフェースエリアの内容

「6.4　反映UOCインタフェース（C言語）」を参照してください。

(3)　履歴情報レコードインデクスの内容

「6.4　反映UOCインタフェース（C言語）」を参照してください。

7.4.4　データ連携支援が設定する項目

(1)　引数

表7‒24　引数情報

項番

項目

内容

参照可否

1

インタフェースエリアアドレス

（データ名A）

インタフェースエリアのアドレス

○

2

履歴情報レコードインデクスアドレス

（データ名B）

履歴情報レコードインデクスのアドレス

○

（凡例）

○：参照可

(2)　インタフェースエリア

表7‒25　インタフェースエリア設定情報

項番

項目

内容

参照可否

1

開始モード

（データ名11）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

○

2

リターンコード

（データ名12）

ユーザが設定します。データ連携支援は設定しません。

×

3

ノード識別子

（データ名13）

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

○

4

ランID

（データ名14）

ユーザデータ（UJ）を出力したTP1/EEのランID

○

5

中央処理通番

（データ名15）

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

○

6

サービス名長

（データ名16）

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

○

7

サービス名

（データ名17）

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

○

8

UJ数

（データ名18）

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

○

9

先頭累積データ通番

（データ名19）

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

○

10

最終累積データ通番

（データ名1A）

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

○

11

反映サービス名長

（データ名1H）

実行している反映サービス名の長さ

○

12

反映サービス名

（データ名1B）

実行している反映サービス名

反映先指定UOCでは参照しないでください。

○

13

ユーザIFAエリアサイズ

（データ名1C）

ユーザIFAエリアのサイズ

○

14

ユーザIFAエリアポインタ

（データ名1D）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

○

15

ユーザSATエリアサイズ

（データ名1E）

ユーザSATエリアのサイズ

○

16

ユーザSATエリアポインタ

（データ名1F）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

○

17

接続ハンドル

（データ名1G）

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

○

（凡例）

○：参照可

×：参照不可

(3)　履歴情報レコードインデクス

「6.4　反映UOCインタフェース（C言語）」を参照してください。

表7‒26　履歴情報レコードインデクス情報

項番

項目

内容

参照可否

1

履歴情報共通エリアアドレス

（データ名21）

履歴情報共通エリアのアドレス

○

2

履歴情報レコードエリアアドレス

（データ名22）

履歴情報レコードエリアの先頭アドレス

（履歴情報共通インデクスのアドレス）

○

3

反映サービス指定エリアアドレス

（データ名23）

反映サービス指定エリアの先頭アドレス

×

4

UOC間連携エリアアドレス

（データ名24）

UOC間連携エリアのアドレス

○

5

UOC間連携エリアサイズ

（データ名25）

UOC間連携エリアのサイズ

○

（凡例）

○：参照可

×：参照不可

(4)　履歴情報共通エリア

表7‒27　履歴情報共通エリア情報

項番

項目

内容

参照可否

1

累積データ通番

（データ名51）

ユーザデータ（UJ）の累積データ通番

（TMS-4V/SPのブロック番号相当）

○

2

取得年月日

（データ名52）

ユーザデータ（UJ）を出力した日時（YYYYMMDD形式）

○

3

取得時刻

（データ名53）

ユーザデータ（UJ）を出力した時刻（hhmmss形式）

○

4

ルート世代番号

（データ名54）

履歴情報表のルート世代番号

○

5

世代番号

（データ名55）

履歴情報表の世代番号

（TMS-4V/SPのJSQ相当）

○

6

順序番号

（データ名56）

1トランザクション中のユーザデータ（UJ）の順序番号（1〜32,767）

○

（凡例）

○：参照可

(5)　履歴情報レコードエリア

「6.4　反映UOCインタフェース（C言語）」を参照してください。

表7‒28　履歴情報レコードエリア情報

項番

項目

内容

参照可否

1

履歴情報共通インデクス

TP1/EEが履歴情報レコードごとに付加する情報です。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

2

履歴情報ヘッダ

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報ヘッダです。

詳細については，「1.　トランザクションインタフェース」を参照してください。

○

3

履歴情報

UAP履歴情報取得要求（ee_trn_uap_put関数/CBLEETRN('UAPPUT')）時に指定した履歴情報です。

○

（凡例）

○：参照可

(6)　UOC間連携エリア

反映先指定UOCで設定したUOC間連携エリアの情報が，本エリアに設定されています。エリアサイズは128バイトです。

同じUJでは，編集UOC・反映UOC共に同じメモリ領域のUOC間連携エリアを参照します。

7.4.5　ユーザが値を設定する項目

(1)　インタフェースエリア

表7‒29　インタフェースエリア情報

項番

項目

内容

更新可否

1

開始モード

（データ名11）

データ連携支援の開始モード

'N'：正常開始

'R'：再開始

'F'：強制開始

'S'：再開始（読み出しUJ指定）

×

2

リターンコード

（データ名12）

UOCの処理結果

詳細については，表7-30を参照してください。

○

3

ノード識別子

（データ名13）

ユーザデータ（UJ）を出力したTP1/EEのノード識別子

×

4

ランID

（データ名14）

ユーザデータ（UJ）を出力したTP1/EEのランID

×

5

中央処理通番

（データ名15）

ユーザデータ（UJ）を出力したトランザクションの中央処理通番

×

6

サービス名長

（データ名16）

ユーザデータ（UJ）を出力したトランザクションのサービス名の長さ

サービス名のないトランザクションのときは0が設定されます。

×

7

サービス名

（データ名17）

（¥0終端あり）

ユーザデータ（UJ）を出力したトランザクションのサービス名

サービス名長が0のときは参照しないでください。

×

8

UJ数

（データ名18）

UOCで渡すユーザデータ（UJ）数

UJ数の履歴情報レコードインデクスがあります。

×

9

先頭累積データ通番

（データ名19）

トランザクション内の先頭の累積データ通番

先頭のUAP履歴情報がUJ以外（IJ/OJ）の場合は，先頭のユーザデータ（UJ）の累積データ通番を設定します。

×

10

最終累積データ通番

（データ名1A）

トランザクション内の最終の累積データ通番

PJがある最終のUAP履歴情報の累積データ通番を設定します。

×

11

反映サービス名長

（データ名1H）

実行している反映サービス名の長さ

×

12

反映サービス名

（データ名1B）

実行している反映サービス名

反映先指定UOCでは参照しないでください。

×

13

ユーザIFAエリアサイズ

（データ名1C）

ユーザIFAエリアのサイズ

×

14

ユーザIFAエリアポインタ

（データ名1D）

ユーザIFAエリアのポインタ

ユーザIFAエリアサイズが0の場合は，値を参照できません。

×

15

ユーザSATエリアサイズ

（データ名1E）

ユーザSATエリアのサイズ

×

16

ユーザSATエリアポインタ

（データ名1F）

ユーザSATエリアのポインタ

ユーザSATエリアサイズが0の場合は，値を参照できません。

×

17

接続ハンドル

（データ名1G）

接続ハンドル

trnrks_service定義の-nオプションおよび-iオプションで指定したリソースマネジャに対応した接続ハンドルです。

×

（凡例）

○：更新可

×：更新不可（無視する）

表7‒30　リターンコード情報

項番

項目

内容

1

0

データ連携支援を続行します。

UOCリターン後，対象UJの処理を終了します。次のUJの処理を開始します。

2

12

データ連携支援を中断します。

3

20

データ連携支援を一時中断し，自動再実行します。

4

100

データ連携支援を強制停止させます。ただし，強制停止する前に呼び出し種別'EN'で開始終了UOCは呼び出しません。

5

上記以外

7.4.6　注意事項

「6.4　反映UOCインタフェース（C言語）」を参照してください。

8　データ編集コマンドインタフェース

この章では，データ編集コマンドインタフェースについて説明します。

8.1　編集出力コマンドのマスク出口ルーチン

編集出力コマンドについて，マスク出口ルーチンのUAP作成手順を次に示します。

図8‒1　マスク出口ルーチン作成の流れ

8.1.1　コーディング

(1)　コーディング規約

マスク出口ルーチンをコーディングする場合，C言語またはCOBOL2002言語を使います。マスク出口ルーチンでは，TP1/EE，TP1/XTC，TP1/MCP，TP1/FSPのライブラリ関数は使えません。これらが提供する機能を使用した場合の動作は保証しないので注意してください。OSの標準の機能は使えます。コーディング規約については，マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引」およびDBMSのリファレンスマニュアルを参照してください。ただし，次の規約は変更します。

chdir（カレントワーキングディレクトリを変更）は使用可能

fork（新プロセスの生成），exec（ファイルの実行），system（シェルコマンドの実行）は，使用不可

これらに加え，マスク出口ルーチンのコーディング規約として，次を追加します。

64bit環境

exit（プロセスの終了）の実行不可

標準出力，標準エラー出力のクローズ不可

なお，編集出力コマンドは，グループ管理表および履歴情報表を参照します。このため，編集出力コマンドが処理対象とする表について，マスク出口ルーチン内で表を削除することはできません。

(2)　C言語インタフェース

(a)　形式

#include <eetrn_mer.h>

EELONG マスク出口ルーチン名(
     char         *info_pt      /* 履歴情報のアドレス       */
    ,unsigned int info_len      /* 履歴情報長               */
    ,char         *mask_pt      /* マスクパターンのアドレス */
    ,EELONG       flags         /* フラグ                   */
)

(b)　編集出力コマンドが値を設定する引数

info_pt

編集出力する履歴情報のコピーを格納したエリアの先頭アドレスを指定します。この内容を変更しても，マスク対象外部分の編集出力内容に影響しません。

info_len

編集出力する履歴情報長を指定します。

mask_pt

マスクパターンを格納するエリアの先頭アドレスを指定します。履歴情報と同じ長さのエリアであり，バイト単位に履歴情報のマスク有無を示します。設定値を次に示します。

EETRN_MER_ON

マスク対象とします。自動マスク部分に設定します。

EETRN_MER_OFF

マスク対象としません。履歴情報共通インデクスに設定します。

flags

EENOFLAGSを設定します。

(c)　マスク出口ルーチンで値を設定する引数

mask_pt

マスク有無を変更したい部分を次の値で変更します。ほかの値を設定すると，コマンドはエラー終了します。その場合の出力例は，「8.1.4　不正なマスクパターンを検知したときの後処理」を参照してください。

EETRN_MER_ON

マスク対象とします。該当する個所のダンプ出力に"*"を出力します。

EETRN_MER_OFF

マスク対象としません。該当する個所のダンプ出力に，値に応じたデータを出力します。

(d)　リターン値

EE_OK

コマンドは処理続行します。

EETRN_MER_NG

重大なエラーが発生したので処理を中断します。

(e)　注意事項

C++コンパイラを使用する場合，関数の宣言はextern "C"{…}で囲んでください。コンパイラによって関数のシンボル名がマングルされ，MASKEXTオペランドに指定できない名称になるためです。

(3)　COBOL2002言語インタフェース

(a)　形式

IDENTIFICATION DIVISION.
PROGRAM-ID. 一意名1.
LINKAGE SECTION.
01 一意名2 PIC S9(9) USAGE COMP.
01 一意名3 ADDRESS.
01 一意名4 PIC S9(9) USAGE COMP.
01 一意名5 ADDRESS.
01 一意名6 PIC S9(9) USAGE COMP.
PROCEDURE DIVISION USING BY VALUE 一意名3 一意名4 一意名5 一意名6 RETURNING 一意名2.

(b)　編集出力コマンドが値を設定する引数

一意名3

編集出力する履歴情報のコピーを格納したエリアの先頭アドレスを指定します。この内容を変更しても，マスク対象外部分の編集出力内容に影響しません。

一意名4

編集出力する履歴情報長を指定します。

一意名5

マスクパターンを格納するエリアの先頭アドレスを指定します。履歴情報と同じ長さのエリアであり，バイト単位に履歴情報のマスク有無を示します。設定値を次に示します。

(FF)16

マスク対象とします。自動マスク部分に設定します。

(00)16

マスク対象としません。履歴情報共通インデクスに設定します。

一意名6

0を設定します。

(c)　マスク出口ルーチンで値を設定する引数

一意名5

マスク有無を変更したい部分を次の値で変更します。ほかの値を設定すると，コマンドはエラー終了します。その場合の出力例は，「8.1.4　不正なマスクパターンを検知したときの後処理」を参照してください。

(FF)16

マスク対象とします。該当する個所のダンプ出力に"*"を出力します。

(00)16

マスク対象としません。該当する個所のダンプ出力に，値に応じたデータを出力します。

(d)　リターン値

0：コマンドは処理続行します。

8：重大なエラーが発生したので処理を中断します。

(e)　注意事項

一意名1を，MASKEXTオペランドのマスク出口ルーチン名に記述してください。

8.1.2　翻訳と結合

マスク出口ルーチンをコンパイルして，共用ライブラリを作成します。コンパイルオプションとリンケージオプションについては，提供するサンプルを参照してください。

マスク出口ルーチンが必要とするものは，当該共用ライブラリにリンケージしてください。

8.1.3　コマンドの環境設定

作成した共用ライブラリを編集出力コマンドで使用するために，制御情報ファイルのMASKEXTオペランドに，次を記述します。

マスク出口ルーチン名

共用ライブラリのパス名

またMASKEXTオペランドを有効にするため，次を設定してください。

DUMPオペランドにYES

MASKオペランドにON

コマンド実行時の環境変数LD_LIBRARY_PATHに，次のライブラリを格納したディレクトリを追加してください。

MASKEXTオペランドに共用ライブラリ名のファイル名だけを記述した場合は，共用ライブラリを格納したパス

共用ライブラリに，別のライブラリをリンケージした場合は，別のライブラリを格納したパス

DBMSがHiRDBの場合，コマンド実行時の環境変数PDSWAITTIMEの値は，マスク出口ルーチンの実行時間を考慮して設定してください。

8.1.4　不正なマスクパターンを検知したときの後処理

指定したマスクパターンに不正があった場合，不正の直前までをダンプ出力します。その例を次に示します。

図8‒2　不正なマスクパターンを検知したときの履歴情報の出力例

このあとに関数リターン時のマスクパターンをダンプ出力します。出力例を次に示します。

図8‒3　不正なマスクパターンを検知したときのマスクパターンの出力例

付録

付録A　各バージョンの変更内容

各バージョンの変更内容を示します。

付録A.1　変更内容（3000-3-K02-40）

次の製品の変更内容（3000-3-K02-40）を表に示します。

uCosminexus TP1/Financial Service Platform　01-11

追加・変更内容

交替用メッセージ表書き込み機能使用時の説明を追加した。

タイムアウトとなったときの説明にuapabend_downmodeオペランドの説明を追加した。

HiRDBクライアント環境定義PDSWAITTIMEおよびPDSWATCHTIMEの説明を変更，PDLCKWAITTIMEの説明を追加した。

ee_trn_retry_rollback関数使用時の注意事項を追加した。

OJ編集UOCのリターン値の説明を変更した。

uCosminexus TP1/Financial Service Platform　01-10

追加・変更内容

トランザクション引き継ぎ情報の領域，およびリトライ回数を追加した。

次の関数を追加した。

ee_trn_uap_fput関数

CBLEETRN('UAPFPUT')関数

リトライロールバック機能の説明を追加した。

付録A.2　変更内容（3000-3-K02-30）

次の製品の変更内容（3000-3-K02-30）を表に示します。

uCosminexus TP1/Financial Service Platform　01-09

追加・変更内容

ee_obm_any_stopの注意事項を追加した。

個別開始実行要求結果の記載を追加した。

CBLEEOBM('ANYSTOP')の注意事項を追加した。

SDHステータスコード11173の設定有無欄を修正した。

次のライブラリ関数のパラメタ説明を変更した。

CBLEETRN('IOAINIT ')の一意名_IPARAMパラメタ

CBLEETRN('IOAGET ')の一意名_GPARAMパラメタ

CBLEETRN('IOATERM ')の一意名_TPARAMパラメタ

制御情報ファイルのCONTROL文のCNCTHDLの説明を修正した。

データ連携支援のユーザ引き継ぎ情報の引き継ぎについて説明を変更した。

uCosminexus TP1/Financial Service Platform　01-08

追加・変更内容

UAP履歴情報のサイズを変更した。

付録A.3　変更内容（3000-3-K02-20）

次の製品の変更内容（3000-3-K02-20）を表に示します。

uCosminexus TP1/Financial Service Platform　01-07

追加・変更内容

リソースマネジャ連携有無（rm_func）の説明を追加した。

ライブラリ関数ee_sdh_accs（COBOL言語：CBLEESDH('ACCS')）における，検索時のSDHステータスコードとリターンコード情報の説明を変更した。

次のデータ型の誤りを訂正した。

CBLEESDH('INIT')のデータ名D43

CBLEESDH('STRT')のデータ名D43

CBLEESDH('ACCS')のデータ名D43

CBLEESDH('CLAR')のデータ名D43

CBLEESDH('REFS')のデータ名D43

CBLEESDH('FNSH')のデータ名D43

UAP履歴情報長の最大サイズを変更した。

uCosminexus TP1/Financial Service Platform　01-06

追加・変更内容

履歴情報ヘッダにユーザ任意情報を追加した。

データ連携支援のUOCのインタフェースエリアに反映サービス名長を追加した。

付録A.4　変更内容（3000-3-K02-10）

次の製品の変更内容（3000-3-K02-10）を表に示します。

uCosminexus TP1/Financial Service Platform　01-05

追加・変更内容

TP1/FSPのトランザクションで使用できるAPI関数一覧を追加した。

データ連携支援引き継ぎ情報の設定APIを追加した。

システム定義パラメタで，履歴情報表に取得するUAP履歴情報の出力データ(OJ)の最大サイズを指定できるようにした。

SDBハンドラ機能用APIインタフェースに，事前ページ割り当てページ数，暗黙的ロールバック有無，個別開始実行要求を追加した。

UAP履歴情報取得機能が提供する共通のデータ領域に，データ連携支援引き継ぎ情報領域を追加した。

TP1/FSPのオンラインで使用するUOCの一覧を追加した。

OJ編集UOCでOJ出力有無の指示ができるようにした。

データ連携支援のUOCインタフェースの開始モード，終了モードに再開始（読み出しUJ指定），中断（読み出しUJ指定）を追加した。

データ連携支援の反映先指定UOCで再開始（読み出しUJ指定）指示ができるようにした。

付録B　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

付録B.1　関連マニュアル

関連マニュアルを次に示します。必要に応じてお読みください。

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 システム定義（3000-3-D52）

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作（3000-3-D53）

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 メッセージ（3000-3-D56）

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引（3000-3-F51）

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引（3000-3-F52）

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option メッセージ （3000-3-F53）

OpenTP1 Version 7 分散トランザクション処理機能 TP1/EE/Message Control Extension 使用の手引（3000-3-F57）

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform 使用の手引（3000-3-K01）

HiRDB Version 9 構造型データベース機能（3000-6-361）

HiRDB Version 9 解説（3020-6-450）

HiRDB Version 9 システム導入・設計ガイド（UNIX(R)用）（3000-6-452）

HiRDB Version 9 システム定義（UNIX(R)用）（3000-6-453）

HiRDB Version 9 システム運用ガイド（UNIX(R)用）（3000-6-454）

HiRDB Version 9 コマンドリファレンス（UNIX(R)用）（3000-6-455）

HiRDB Version 9 UAP開発ガイド（3020-6-456）

HiRDB Version 9 SQLリファレンス （3020-6-457）

HiRDB Version 9 メッセージ（3020-6-458）

HiRDB Version 10 解説（3020-6-551）

HiRDB Version 10 システム導入・設計ガイド（UNIX(R)用）（3020-6-552）

HiRDB Version 10 システム定義（UNIX(R)用）（3020-6-554）

HiRDB Version 10 システム運用ガイド（UNIX(R)用）（3020-6-556）

HiRDB Version 10 コマンドリファレンス（UNIX(R)用）（3020-6-558）

HiRDB Version 10 UAP開発ガイド（3020-6-560）

HiRDB Version 10 SQLリファレンス（3020-6-561）

HiRDB Version 10 メッセージ（3020-6-562）

HiRDB Version 10 構造型データベース機能（3020-6-578）

付録B.2　このマニュアルでの表記

このマニュアルで使用する製品名称の略称を次に示します。

略称

正式名称

Linux

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 7（64-bit x86_64）

Red Hat Enterprise Linux Server 8（64-bit x86_64）

Red Hat Enterprise Linux Server 9（64-bit x86_64）

TP1/EE

uCosminexus TP1/Server Base Enterprise Option

TP1/FSP

uCosminexus TP1/Financial Service Platform

TP1/FSP（全銀RC）

uCosminexus TP1/Financial Service Platform 全銀RCプロトコル接続機能

TP1/MCPまたはMCP

uCosminexus TP1/EE/Message Control Extension

TP1/SBまたはTP1/Server Base

uCosminexus TP1/Server Base

TP1/XTC

uCosminexus TP1/EE/Extended Transaction Controller

付録B.3　英略語

このマニュアルで使用する英略語を次に示します。

英略語

正式名称

AP

Application Program

API

Application Programming Interface

BCM

Batch Control Manager

BCS

Batch Control Server

BES

Back End Server

CPU

Central Processing Unit

CSV

Comma Separated Value

DAM

Direct Access Method

DB

Database

DBMS

Database Management System

DML

Data Manipulation Language

EOF

End Of File

EOV

End Of Volume

HA

High Availability

I/O

Input/Output

LAN

Local Area Network

OBM

Online Batch Message Processing

OS

Operating System

RM

Resource Manager

RPC

Remote Procedure Call

SDB

Structured Database

SPP

Service Providing Program

SQL

Structured Query Language

TCP

Transmission Control Protocol

TCP/IP

Transmission Control Protocol/Internet Protocol

UAP

User Application Program

UDP

User Datagram Protocol

UOC

User Own Coding

XA

Extended Architecture

付録B.4　KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

付録C　用語解説

（英字）

BCM

バッチを実行するトランザクションのスケジュールをするサーバの略称です。

BCS

バッチを実行するトランザクションを実行するサーバの略称です。

EOF

TP1/EEが正常終了したことを示す印です。

IJ

入力データとして取得したUAP履歴情報です。

LCN番号

論理パスを認識するための番号です。業務プロトコルヘッダに設定します。

OBM

バッチ業務をオンライン業務に影響を与えることなく実行することができる機能の略称，または1つのバッチ業務を制御する単位です。

OBMトランザクションの異常終了

UAPリターン後にトランザクションがロールバック決着，あるいはヒューリスティックミックス決着することです。

OBMトランザクションの正常終了

UAPリターン後にトランザクションがコミット決着することです。

OBMの終了

1つのバッチ業務の処理をすべて終えることです。

OBMの停止

一時的に実行中のバッチ業務を中断することです。中断点から再開することができます。強制停止と計画停止があります。

OJ

出力データとして取得したUAP履歴情報です。

PJ

トランザクション内で最後に書き込みをしたUAP履歴情報であることを示す印です。

UAP履歴情報

UAP履歴情報取得機能で使用するユーザの履歴情報です。

UJ

ユーザデータとして取得したUAP履歴情報です。

（ア行）

イベント型OBM

バッチデータをUAPが入力する方式です。

（カ行）

強制停止

TP1/EEまたはユーザが，障害を検知してOBMまたはロットを停止することです。

業務UAPサービス

ユーザが業務処理を行うサービス群です（ユーザ側で作成するサービス）。

計画停止

ユーザが計画的にOBMまたはロットを停止することです。

計画停止EOV

計画停止スワップによってTP1/EEが計画停止したことを示す印です。

（サ行）

制御ミドル

TP1/FSP（全銀RC）サービス内にあるユーザ関数です。TP1/FSP（全銀RC）と業務UAPサービスとの間に位置しています。各種イベント発生時にTP1/FSP（全銀RC）から関数コールし，制御ミドルでは業務UAPサービスへの処理登録などの制御処理を実装します。

全銀 on TCP/IP

全国銀行データ通信システムで，TCP/IP手順を使用した接続プロトコルの総称です。

全銀RC

全銀センタと加盟金融機関との間に位置する中継コンピュータです。

全銀センタ

全国銀行データ通信システムを構成する東京センタまたは大阪センタのことです。

全国銀行データ通信システム

全国銀行協会に加盟した金融機関を相互接続するためのオンラインシステムです。

（タ行）

データ型OBM

バッチデータをTP1/EEが入力する方式です。

データ通番

履歴情報表ごとに割り当てる通番で，行番号に相当します。

（ハ行）

物理回線

全銀RCとの間に確立する物理的な通信路です。IPアドレスと1対1の関係にあります。

（ラ行）

履歴情報ブロック

履歴情報表に取得した1行分の履歴情報レコードです。1つまたは複数の履歴情報レコードが含まれます。

履歴情報レコード

1つのUAP履歴情報のことです。

累積データ通番

UAP履歴情報グループの同一ルート世代内で一意となる通番です。スワップによって履歴情報表が変わった場合，スワップ元のデータ通番を引き継いで加算します。

ルート世代番号

現用表の決定からEOF情報の書き込みまでを1世代として管理する世代番号です。

ロット

OBMのトランザクションをスケジュールする単位です。

ロットの終了

1つのロットの処理をすべて終えることです。データ型OBMは，バッチデータをすべて処理することです。

ロットの停止

一時的に実行中のロットを中断することです。中断点から再開することができます。強制停止と計画停止があります。

論理回線

全銀RCとの間に確立する論理的な通信路です。ポートと1対1の関係にあるコネクション確立の単位です。

論理端末

TP1/EEのUAP側の通信接点です。MCP（TCP/IP手順）ではコネクションと論理端末が1対1の関係にあります。

論理パス

全銀RCとの間で電文の送受信をする論理的なパスです。

索引

B

BCM〔用語解説〕[1]

BCS〔用語解説〕[1]

C

CBLEEBPP('SETRC ')（オフラインバッチ制御（COBOL言語））[1]

CBLEEBPP('TERM ')（オフラインバッチ制御（COBOL言語））[1]

CBLEELOG('ACTMSG ')[1]

CBLEELOG('DCTMSG ')[1]

CBLEELOG('PRINTU ')[1]

CBLEEMEM('USERDUMP')[1]

CBLEEOBM('ANYSTOP')[1]

CBLEEOBM('LOTEND')[1]

CBLEEOBM('LOTSTOP')[1]

CBLEEOBM('RECV')[1]

CBLEEOBM('STOP')[1]

CBLEERPC('GETBIZID')[1]

CBLEERPC('SETBIZID')[1]

CBLEESDH('ACCS ')[1]

CBLEESDH('CLAR ')[1]

CBLEESDH('FNSH ')[1]

CBLEESDH('INIT ')[1]

CBLEESDH('REFS ')[1]

CBLEESDH('STRT ')[1]

CBLEETIM('CANCEL-P')[1]

CBLEETIM('CHECK-P')[1]

CBLEETIM('EXECAP-P')[1]

CBLEETRN('GETHNDL ')[1]

CBLEETRN('GETRTIME')[1]

CBLEETRN('IOAGET ')（トランザクション制御（COBOL言語））[1]

CBLEETRN('IOAINIT ')（トランザクション制御（COBOL言語））[1]

CBLEETRN('IOATERM ')（トランザクション制御（COBOL言語））[1]

CBLEETRN('R-ROLL ')[1]

CBLEETRN('SETUJINF')[1]

CBLEETRN('UAPCHG ')[1]

CBLEETRN('UAPFPUT')[1]

CBLEETRN('UAPPUT ')[1]

CBLEETRN('WATCH ')[1]

COBOL言語インタフェース[1]

CONTROL文[1]

C言語インタフェース[1]

D

DCDIR[1]

E

ee_bpp_setrc（オフラインバッチ制御（ee_bpp_〜）（C言語））[1]

ee_bpp_term（オフラインバッチ制御（ee_bpp_〜）（C言語））[1]

ee_log_actmsg[1]

ee_log_dctmsg[1]

ee_logprint_user[1]

ee_mem_userdump[1]

ee_obm_any_stop[1]

ee_obm_lot_end[1]

ee_obm_lot_stop[1]

ee_obm_recv[1]

ee_obm_stop[1]

ee_rpc_get_bizid[1]

ee_rpc_set_bizid[1]

ee_sdh_accs[1]

ee_sdh_clar[1]

ee_sdh_fnsh[1]

ee_sdh_init[1]

ee_sdh_refs[1]

ee_sdh_strt[1]

ee_tim_execap_cancel_perm[1]

ee_tim_execap_check_perm[1]

ee_tim_execap_perm[1]

ee_trn_gethandle[1]

ee_trn_getrtime[1]

ee_trn_ioa_get（トランザクション制御（ee_trn_〜）（C言語））[1]

ee_trn_ioa_init（トランザクション制御（ee_trn_〜）（C言語））[1]

ee_trn_ioa_term（トランザクション制御（ee_trn_〜）（C言語））[1]

ee_trn_retry_rollback[1]

ee_trn_set_uj_info[1]

ee_trn_uap_change[1]

ee_trn_uap_fput[1]

ee_trn_uap_put[1]

ee_trn_watch[1]

EETRNIOALOGCMODE[1]

EETRNIOALOGDIR[1]

EOF〔用語解説〕[1]

ERRTRNS関数（ee_zrc_errtrns）[1]

H

HiRDBのクライアント環境定義[1]

I

IJ〔用語解説〕[1]

L

LCN番号〔用語解説〕[1]

LD_LIBRARY_PATH[1]

O

OBM開始/再開始UOC（COBOL言語）[1]

OBM開始/再開始UOC（C言語）[1]

OBMサービス名決定UOC（C言語）[1]

OBM終了/停止UOC（COBOL言語）[1]

OBM終了/停止UOC（C言語）[1]

OBMスキップデータUOC（COBOL言語）[1]

OBMスキップデータUOC（C言語）[1]

OBMトランザクションの異常終了〔用語解説〕[1]

OBMトランザクションの正常終了〔用語解説〕[1]

OBMの終了〔用語解説〕[1]

OBMの停止〔用語解説〕[1]

OBM〔用語解説〕[1]

OJ編集UOC（C言語）[1]

OJ〔用語解説〕[1]

P

PJ〔用語解説〕[1]

S

SDBハンドラ制御（CBLEESDH）[1]

SDBハンドラ制御（ee_sdh_〜）（C言語）[1]

SDHステータスコード一覧[1]

T

TABLE文[1]

TP1/EEから値が渡される引数[1]

TP1/EEから値が渡される引数（TP1/EE独自）[1]

TP1/FSP（全銀RC）関数の概要[1]

TP1/FSP（全銀RC）関数のコールタイミングについて[1]

TP1/FSPのオンラインで使用するUOC（COBOL言語インタフェース）[1]

TP1/FSPのオンラインで使用するUOC（C言語インタフェース）[1]

TP1/FSPのオンラインで使用するUOCの一覧[1]

TP1/FSPのオンラインで使用するUOCの概要[1]

TP1/FSPライブラリ関数の文法（COBOL言語）[1]

TP1/FSPライブラリ関数の文法（C言語）[1]

U

UAP履歴情報取得機能が提供する共通のデータ領域[1]

UAP履歴情報〔用語解説〕[1]

UJ〔用語解説〕[1]

UOCの開始条件と終了条件[1]

UOCのコーディング[1]

UOCの作成[1]

UOCの処理手順[1]

い

イベント型OBM〔用語解説〕[1]

え

エラートランザクションインタフェース[1]

お

オフラインバッチ用UAP[1]

オフラインバッチ用インタフェース[1]

オフラインバッチ用ライブラリ関数[1]

オンラインバッチ制御（CBLEEOBM）[1]

オンラインバッチ制御（ee_obm_〜）（C言語）[1]

か

開始終了UOCインタフェース（COBOL言語）[1]

開始終了UOCインタフェース（C言語）[1]

開始終了UOCの処理手順[1]

開始条件[1]

概要[1]

き

強制停止〔用語解説〕[1]

業務UAPサービス〔用語解説〕[1]

く

クライアントUAPから値が渡される引数[1]、[2]

け

計画停止EOV〔用語解説〕[1]

計画停止〔用語解説〕[1]

こ

コーディング[1]

コマンドの環境設定[1]

さ

サービス関数に値が渡される引数[1]

し

終了条件[1]

せ

制御情報ファイル[1]

制御文の文法[1]

制御ミドル関数で発行できるライブラリ[1]

制御ミドル関数のインタフェース概要[1]

制御ミドル〔用語解説〕[1]

全銀 on TCP/IP〔用語解説〕[1]

全銀RCプロトコル接続機能インタフェース[1]

全銀RC〔用語解説〕[1]

全銀センタ〔用語解説〕[1]

全国銀行データ通信システム〔用語解説〕[1]

そ

送信関数（ee_zrc_snd_message）[1]

送達管理電文送信関数[1]

た

タイマトランザクション（CBLEETIM）[1]

タイマトランザクション（ee_tim_〜）（C言語）[1]

て

データ型OBM〔用語解説〕[1]

データ抽出ユティリティ用UAP[1]

データ抽出ユティリティ用ライブラリ関数[1]

データ抽出用インタフェース[1]

データ通番〔用語解説〕[1]

データ編集コマンドインタフェース[1]

データ連携支援が設定するデータ領域[1]

データ連携支援のUOCインタフェース[1]

データ連携支援のUOCインタフェース（COBOL言語インタフェース）[1]

データ連携支援のUOCインタフェース（C言語インタフェース）[1]

データ連携支援の環境設定[1]

データ連携支援の実行[1]

と

トランザクションインタフェース[1]

トランザクションインタフェース情報[1]

トランザクション制御（CBLEETRN）[1]

トランザクション制御（ee_trn_〜）（C言語）[1]

トランザクションで使用できるAPI関数[1]

トランザクションレベル名判定UOC/OBMのトランザクションレベル名判定UOC（C言語）[1]

は

反映UOCインタフェース（COBOL言語）[1]

反映UOCインタフェース（C言語）[1]

反映UOCの処理手順[1]

反映先指定UOCインタフェース（COBOL言語）[1]

反映先指定UOCインタフェース（C言語）[1]

反映先指定UOCの処理手順[1]

ふ

不正なマスクパターンを検知したときの後処理[1]

物理回線〔用語解説〕[1]

へ

編集UOCインタフェース（COBOL言語）[1]

編集UOCインタフェース（C言語）[1]

編集UOCの処理手順[1]

編集出力コマンドのマスク出口ルーチン[1]

ほ

翻訳と結合[1]、[2]

め

メッセージログの出力（CBLEELOG）[1]

メッセージログの出力（ee_log_〜）（C言語）[1]

メモリ管理（CBLEEMEM）[1]

メモリ管理（ee_mem_〜）（C言語）[1]

ゆ

ユーザタイマ参照UOC（C言語）[1]

ら

ライブラリ関数で指定するサービス名の注意事項[1]

り

リトライロールバック前処理UOC（COBOL言語）[1]

リトライロールバック前処理UOC（C言語）[1]

リモートプロシジャコール（CBLEERPC）[1]

リモートプロシジャコール（ee_rpc_〜）（C言語）[1]

履歴情報ブロック〔用語解説〕[1]

履歴情報レコード〔用語解説〕[1]

る

累積データ通番〔用語解説〕[1]

ルート世代番号〔用語解説〕[1]

ろ

ロットの終了〔用語解説〕[1]

ロットの停止〔用語解説〕[1]

ロット〔用語解説〕[1]

論理回線〔用語解説〕[1]

論理端末〔用語解説〕[1]

論理パス〔用語解説〕[1]