スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)

[目次][索引][前へ][次へ]

8.10.4 UOCインタフェース

<この項の構成>
(1) UOCインタフェース領域の構造と内容
(2) データ値の形式

(1) UOCインタフェース領域の構造と内容

pdrorgとUOCとの連絡は,インタフェース領域を使用して情報の入出力をします。これをUOCインタフェース領域といいます。

この領域は,更新バッファを除いて,すべてpdrorgが確保します。UOCは,呼び出す関数の第1引数にこの領域のアドレスを受け取って,参照及び更新をします。

UOCインタフェース領域の構造を図8-28及び図8-29に示します。

図8-28 UOCインタフェース領域の構造(1/2)

[図データ]

注1
[ ]内は,64ビットモードのHiRDBの場合の数値となります。

注2
UOCインタフェース領域の内容については表8-30を,列定義情報アドレスリストの内容については表8-31を,列定義情報領域の内容については表8-32を,抽象データ型逆生成パラメタ情報領域の内容については表8-33を参照してください。

図8-29 UOCインタフェース領域の構造(2/2)

[図データ]

注1
[ ]内は,64ビットモードのHiRDBの場合の数値となります。

注2
データアドレスリストの内容については表8-36を,更新後データアドレスリストの内容については表8-37を参照してください。

表8-30 UOCインタフェース領域の内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
32 64 32 64
0 0 アイキャッチャ 8 8 char pdrorg インタフェース領域('*UOCINF*')
8 8 実行中プログラム 4 4 int pdrorg 制御が渡っているプログラム
0:pdrorg
1:UOC
12 12 呼び出し種別 4 4 int pdrorg UOCに対する処理要求種別
o:開始要求
e:データ更新要求
c:終了要求
t:停止要求
16 16 認可識別子の長さ 2 2 short pdrorg 対象表の所有者名の長さ
18 18 認可識別子 30 30 char pdrorg 対象表の所有者名
48 48 表識別子の長さ 2 2 short pdrorg 対象表の名称の長さ
50 50 表識別子 30 30 char pdrorg 対象表の名称
80 80 行長 4 8 long pdrorg データ格納方法がYの場合,行長を設定します。
84 88 データアドレスリストのアドレス 4 8 void* pdrorg pdrorgが検索したデータのアドレスを格納している,データアドレスリストの先頭アドレス
88 96 システムが使用する情報 4 8 long pdrorg システムが使用する情報(UOC側では使用しないでください)
92 104 更新後データアドレスリストのアドレス 4 8 void* UOC UOCで更新したデータをpdrorgに返却する場合は,UOC内で作成したデータのアドレスを格納している更新後データアドレスリストの先頭アドレスを設定します。データを更新しない場合は,0を設定します。
96 112 ユーザパラメタのアドレス 4 8 void* pdrorg unlduoc文のparamオペランドに指定した文字列のアドレスを設定します(文字列の末尾は\0)。paramオペランドを省略した場合は,ナル値を設定します。
100 120 列定義情報アドレスのアドレス 4 8 void* pdrorg 対象表の列定義情報アドレスリストの先頭アドレス
104 128 予備 1 1 char pdrorg 予備領域(UOC側では使用しないでください)
105 129 表の属性 1 1 char pdrorg 対象表の表属性
F:FIX表
空白:非FIX表
106 130 列数 2 2 short pdrorg 対象表の列数
108 132 格納フラグ 1 1 char UOC 格納フラグを設定します。
Y:アンロードデータファイルに格納します。
N:アンロードデータファイルに格納しません。
pdrorg側でアンロードデータファイルを作成する場合,必ず設定してください(UOCでUOCデータファイルを作成する場合は指定しなくてもかまいません)。
109 133 データ格納方法 1 1 char pdrorg FIX表の場合,unlduoc文のfixrowオペランドに指定した値(fixrow省略時はN)を設定します。
Y:列定義順にデータを詰めて(連続して)渡します。
N:データ型のバウンダリに従ってデータの開始アドレスを補正して渡します。
110 134 予備 10 10 char pdrorg 予備領域(UOC側では使用しないでください)
120 144 リターンコード 4 4 int UOC リターンコードを設定します。
pdrorgから制御を受け取ったUOCは,次の基準でリターンコードをコールごとに戻してください。

0:
各要求に対する処理が正常に実行された場合に設定します。

4:
デバックなどで,正常時もメッセージを出力したい場合に設定します。内容は0と同じです。リターンコードに4を設定した場合,メッセージは3回まで出力されます。ただし,メッセージが3回出力された後に4を設定しても無視され,メッセージは出力されません。

8:
UOCの処理中にエラーが発生した場合に設定します。
上記以外のリターンコードが設定された場合,pdrorgは処理を中断し終了します。また,リターンコードに4又は8を設定すると,メッセージ埋め込み領域の内容を標準出力及びメッセージログに出力します。メッセージは,末尾に\0を付けて131バイト以内の文字列にしてください。先頭データが\0の場合はメッセージは出力しません。
124 148 メッセージ埋め込み領域 132 132 char pdrorg
UOC
標準出力及びメッセージログに出力するメッセージの格納領域(pdrorgは先頭データを\0にして渡します)

(凡例)
32:32ビットモードのHiRDBの相対位置,及び長さを示します。
64:64ビットモードのHiRDBの相対位置,及び長さを示します。

注1
先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証します。

注2
各フィールドに対する参照,更新可否を次に示します。
フィールド名 呼び出し種別
開始要求 データ更新要求 終了要求 停止要求
アイキャッチャ
実行中プログラム
呼び出し種別
認可識別子の長さ
認可識別子
表識別子の長さ
表識別子
行長 × × ×
データアドレスリストのアドレス × × ×
更新後データアドレスリストのアドレス × × ×
ユーザパラメタのアドレス
列定義情報アドレスのアドレス
表の属性
列数
データ格納方法 × × ×
メッセージ埋め込み領域
リターンコード
格納フラグ × × ×
(凡例)
○:値を設定できます。
△:値を参照できます。
×:値を参照できません(値が保証されません)。

表8-31 列定義情報アドレスリストの内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
32 64 32 64
0 0 列ID1の定義情報アドレス 4 8 void* pdrorg 列ID1の列定義情報のアドレスが設定されます。
4 8 列ID2の定義情報アドレス 4 8 void* pdrorg 列ID2の列定義情報のアドレスが設定されます。
(n-1)×4 (n-1)×8 列IDnの定義情報アドレス 4 8 void* pdrorg 列IDnの列定義情報のアドレスが設定されます。

(凡例)
32:32ビットモードのHiRDBの相対位置,及び長さを示します。
64:64ビットモードのHiRDBの相対位置,及び長さを示します。

注1
先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証します。

注2
列定義情報アドレスリストの内容は,列の定義順に連続して渡します。

表8-32 列定義情報領域の内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
32 64 32 64
0 0 列名長 2 2 short pdrorg 列名の長さが設定されます。
2 2 列名 30 30 char pdrorg 列名が設定されます。
32 32 列ID 2 2 short pdrorg 列のIDが設定されます。
34 34 予備1 1 1
35 35 データ型 1 1 unsigned char pdrorg 列のデータ型が設定されます。各データ型のデータコードとデータ値のバウンダリについては,表8-35を参照してください。
36 36 定義長 2 2 short pdrorg 列の定義長が設定されます。列の定義長領域の長さと内容については,表8-34を参照してください。
38 38 繰り返し回数 2 2 short pdrorg 列の繰り返し回数が設定されます。
40 40 BLOB長,又はBINARY長 8 8 int[2] pdrorg 列のデータ型が長大データ型,又はBINARY型の場合に設定されます。上位4バイトには0,下位4バイトには長大データ型の定義長がバイト単位で設定されます。
48 48 パラメタ数 2 2 short pdrorg 抽象データ型の場合,該当するunld_func文の関数の数(パラメタ数)が設定されます。なお,次の場合は,0が設定されます。
  • 列のデータ型が抽象データ型以外の場合
  • unld_func文を指定していない抽象データ型の場合
50 50 予備2 6 6 char pdrorg 予備領域
56 56 拡張アドレス 4 8 void* pdrorg 抽象データ型逆生成パラメタ情報の先頭アドレスが設定されます。なお,パラメタ数が0の場合は,0が設定されます。
60 64 予備3 64 64 char pdrorg 予備領域

(凡例)
32:32ビットモードのHiRDBの相対位置,及び長さを示します。
64:64ビットモードのHiRDBの相対位置,及び長さを示します。
−:該当する内容はありません。

先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証します。

表8-33 抽象データ型逆生成パラメタ情報領域の内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
0 パラメタ番号 2 short pdrorg パラメタ番号(1が先頭)
2 データ型 1 unsigned char pdrorg パラメタのデータ型が設定されます。各データ型のデータコードとデータ値のバウンダリについては,表8-35を参照してください。
3 予備1 3 char pdrorg 予備領域
6 定義長 2 short pdrorg パラメタの定義長が設定されます。列の定義長領域の長さと内容については,表8-34を参照してください。
8 BLOB長,又はBINARY長 8 int[2] pdrorg パラメタのデータ型が長大データ型,又はBINARY型の場合,BLOB長が設定されます。上位4バイトには0,下位4バイトには長大データ型の定義長がバイト単位で設定されます。
16 予備2 112 char pdrorg 予備領域

注1
先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証します。

注2
抽象データ型逆生成パラメタ情報領域の内容は,unld_func文で指定した関数(パラメタ)の順に連続して渡します。

表8-34 列の定義長領域の長さと内容

データ型 領域長 内容
DECIMAL,LARGE DECIMAL,
INTERVAL YEAR TO DAY,及び
INTERVAL HOUR TO SECOND
上位1バイト 定義で指定した精度です。
下位1バイト 定義で指定した位取りです。
TIMESTAMP(p) 2バイト 7+↑p/2↑
BLOB,抽象データ型,及びBINARY 2バイト 値は保証されません。
上記以外 2バイト 定義長です。

表8-35 各データ型のデータコードとデータ値のバウンダリ

データ型 データコード(16進数) バウンダリ(単位:バイト)
非ナル値制約指定なし 非ナル値制約指定あり
MVARCHAR A1 A0 2
MCHAR A5 A4
NVARCHAR B1 B0 2
NCHAR B5 B4
VARCHAR C1 C0 2
CHAR C5 C4
FLOAT E1 E0 8
SMALLFLT E3 E2 4
DECIMAL E5 E4
INTEGER F1 F0 4
SMALLINT F5 F4 2
INTERVAL YEAR TO DAY 65 64
DATE 71 70
TIME 79 78
INTERVAL HOUR TO SECOND 6F 6E
TIMESTAMP 7D 7C
BINARY 91 90 4
BLOB 93 92 4
抽象データ型 抽象データ型パラメタのアドレスリスト 83 82 32ビットモードのHiRDBの場合は4,64ビットモードのHiRDBの場合は8
パラメタのデータ パラメタの各データ型に従います。

(凡例)−:アドレスのバウンダリを調整しません。

表8-36 データアドレスリストの内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
32 64 32 64
0 0 列ID1のデータ格納アドレス 4 8 void* pdrorg 列ID1のデータのアドレスが設定されます。
4 8 列ID2のデータ格納アドレス 4 8 void* pdrorg 列ID2のデータのアドレスが設定されます。
(n-1)×4 (n-1)×8 列IDnのデータ格納アドレス 4 8 void* pdrorg 列IDnのデータのアドレスが設定されます。

(凡例)
32:32ビットモードのHiRDBの相対位置,及び長さを示します。
64:64ビットモードのHiRDBの相対位置,及び長さを示します。

注1
先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証します。

注2
データアドレスリストの内容は,列の定義順に連続して渡します。

注3
列値がナル値の場合は,0が設定されます。

注4
FIX表の場合,UOCインタフェース領域のデータ格納方法がYのときは,データバッファは列ID1のデータ格納アドレスが示すアドレスから,UOC情報の行長分連続した領域で格納します。このとき,列ID順に格納します。

注5
UOCインタフェース領域のデータ格納方法がNの場合,データ型ごとに設定されたバウンダリで,データの開始アドレスを調整して設定します。なお,列ごとにデータは連続していません。

注6
列定義情報領域のパラメタ数が0の場合は,0が設定されます。

表8-37 更新後データアドレスリストの内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
32 64 32 64
0 0 列ID1のデータ格納アドレス 4 8 void* UOC 列ID1のデータのアドレスを設定します。
4 8 列ID2のデータ格納アドレス 4 8 void* UOC 列ID2のデータのアドレスを設定します。
(n-1)×4 (n-1)×8 列IDnのデータ格納アドレス 4 8 void* UOC 列IDnのデータのアドレスを設定します。

(凡例)
32:32ビットモードのHiRDBの相対位置,及び長さを示します。
64:64ビットモードのHiRDBの相対位置,及び長さを示します。

注1
先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証してください。

注2
データ更新後のデータアドレスリストは,列の定義順に連続した領域で設定してください。

注3
データのアドレス値として,データアドレスリストのデータ格納アドレスを設定してもかまいません。ただし,データ値は更新しないでください。

注4
データのアドレスは,バウンダリを保証しなくてもかまいません。

注5
列定義で非ナル値制約指定なしの列の列値を,ナル値に変更する場合は0を設定してください。非ナル値制約指定有無によるデータ変更可否を次に示します。
列の属性 更新前のデータ 更新後のデータ
非ナル値 ナル値
非ナル値制約指定なし ナル値
非ナル値
非ナル値制約指定あり 非ナル値 ×
(凡例)
○:変更できます。
×:変更できません。

(2) データ値の形式

各データ型のデータ値の形式を次に示します。

(a) INTEGER又はSMALLINT
(b) FLOAT又はSMALLFLT
(c) DECIMAL

[図データ]

(d) CHAR,VARCHAR,MCHAR,又はMVARCHAR

[図データ]

(e) NCHAR又はNVARCHAR

[図データ]

(f) DATE

[図データ]

(g) TIME

[図データ]

(h) INTERVAL YEAR TO DAY

[図データ]

(i) INTERVAL HOUR TO SECOND

[図データ]

(j) TIMESTAMP

[図データ]

(k) BINARY

[図データ]

(l) BLOB

[図データ]

(m) 抽象データ型

抽象データ型の場合は,抽象データ型パラメタのアドレスリストが格納されます。抽象データ型パラメタのアドレスリストの構造を図8-30に,抽象データ型パラメタのアドレスリストの内容を表8-38に示します。

図8-30 抽象データ型パラメタのアドレスリストの構造

[図データ]

[ ]内は,64ビットモードのHiRDBの場合の数値となります。

表8-38 抽象データ型パラメタのアドレスリストの内容

相対位置 フィールド名 長さ(単位:バイト) 属性 値の設定元 内容
32 64 32 64
0 0 第1パラメタのデータのアドレス 4 8 void* pdrorg 第1パラメタのデータのアドレスが設定されます。
4 8 第2パラメタのデータのアドレス 4 8 void* pdrorg 第2パラメタのデータのアドレスが設定されます。
(n-1)×4 (n-1)×8 第nパラメタのデータのアドレス 4 8 void* pdrorg 第nパラメタのデータのアドレスが設定されます。

(凡例)
32:32ビットモードのHiRDBの相対位置,及び長さを示します。
64:64ビットモードのHiRDBの相対位置,及び長さを示します。

注1
先頭アドレスは,32ビットモードのHiRDBの場合は4バイトのバウンダリ,64ビットモードのHiRDBの場合は8バイトのバウンダリを保証します。

注2
パラメタのデータの開始アドレスは,データ型ごとに設定したバウンダリで調整したアドレスが設定されます。

注3
抽象データ型パラメタのアドレスリストの内容は,unld_func文で指定した関数(パラメタ)の順に連続して渡します。
(n) 繰返し列の場合

[図データ]