スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)
pdrorgとUOCとの連絡は,インタフェース領域を使用して情報の入出力をします。これをUOCインタフェース領域といいます。
この領域は,更新バッファを除いて,すべてpdrorgが確保します。UOCは,呼び出す関数の第1引数にこの領域のアドレスを受け取って,参照及び更新をします。
UOCインタフェース領域の構造を図8-28及び図8-29に示します。
図8-28 UOCインタフェース領域の構造(1/2)
図8-29 UOCインタフェース領域の構造(2/2)
表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は,次の基準でリターンコードをコールごとに戻してください。
|
124 | 148 | メッセージ埋め込み領域 | 132 | 132 | char | pdrorg UOC |
標準出力及びメッセージログに出力するメッセージの格納領域(pdrorgは先頭データを\0にして渡します) |
フィールド名 | 呼び出し種別 | |||
---|---|---|---|---|
開始要求 | データ更新要求 | 終了要求 | 停止要求 | |
アイキャッチャ | △ | △ | △ | △ |
実行中プログラム | △ | △ | △ | △ |
呼び出し種別 | △ | △ | △ | △ |
認可識別子の長さ | △ | △ | △ | △ |
認可識別子 | △ | △ | △ | △ |
表識別子の長さ | △ | △ | △ | △ |
表識別子 | △ | △ | △ | △ |
行長 | × | △ | × | × |
データアドレスリストのアドレス | × | △ | × | × |
更新後データアドレスリストのアドレス | × | ○ | × | × |
ユーザパラメタのアドレス | △ | △ | △ | △ |
列定義情報アドレスのアドレス | △ | △ | △ | △ |
表の属性 | △ | △ | △ | △ |
列数 | △ | △ | △ | △ |
データ格納方法 | × | ○ | × | × |
メッセージ埋め込み領域 | ○ | ○ | ○ | ○ |
リターンコード | ○ | ○ | ○ | ○ |
格納フラグ | × | ○ | × | × |
表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の列定義情報のアドレスが設定されます。 |
表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が設定されます。
|
50 | 50 | 予備2 | 6 | 6 | char | pdrorg | 予備領域 |
56 | 56 | 拡張アドレス | 4 | 8 | void* | pdrorg | 抽象データ型逆生成パラメタ情報の先頭アドレスが設定されます。なお,パラメタ数が0の場合は,0が設定されます。 |
60 | 64 | 予備3 | 64 | 64 | char | pdrorg | 予備領域 |
表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 | 予備領域 |
表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のデータのアドレスが設定されます。 |
表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のデータのアドレスを設定します。 |
列の属性 | 更新前のデータ | 更新後のデータ | |
---|---|---|---|
非ナル値 | ナル値 | ||
非ナル値制約指定なし | ナル値 | ○ | ○ |
非ナル値 | ○ | ○ | |
非ナル値制約指定あり | 非ナル値 | ○ | × |
各データ型のデータ値の形式を次に示します。
抽象データ型の場合は,抽象データ型パラメタのアドレスリストが格納されます。抽象データ型パラメタのアドレスリストの構造を図8-30に,抽象データ型パラメタのアドレスリストの内容を表8-38に示します。
図8-30 抽象データ型パラメタのアドレスリストの構造
表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パラメタのデータのアドレスが設定されます。 |
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.