Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


12.6.1 レコードのデータ形式

入力データファイル中に格納するレコードのデータ形式を次の図に示します。この図に示すデータ形式に従って入力データを作成してください。

図12‒4 レコードのデータ形式

[図データ]

(凡例)

L1:プリフィクス部の長さで,0〜32,767バイトになります。

L2:SDBデータベース定義で定義した全構成要素サイズの合計長になります。

注意事項

HiRDB/SDはエンディアンおよび文字コード変換を行わないため,入力データ中の数値データはOSのエンディアンおよび文字コードに合わせてください。

レコード内の各項目について説明します。

〈この項の構成〉

(1) レコード長

次に示す計算式で求めたレコード長(単位:バイト)を格納してください。

レコード長=4+30+L1+L2

(2) レコード型名

レコードのレコード型名を格納してください。左詰めで格納し,余った部分にはスペースを格納してください。

(3) プリフィクス部【4V FMB,4V AFM】

プリフィクス部には,親子集合型の情報を格納してください。ここには,USERポインタフラグ,ページ切り替えフラグ,および事前割り当てページ数の情報を格納します。プリフィクス部のデータ形式の例を次の図に示します。

図12‒5 プリフィクス部のデータ形式の例

[図データ]

この例では,USERポインタフラグ,ページ切り替えフラグ,事前割り当てページ数の順でプリフィクス部を構成していますが,指定順序に制約はありません。

また,USERポインタフラグ,ページ切り替えフラグ,事前割り当てページ数のすべてを指定する必要はありません。必要な情報だけでプリフィクス部を構成しても問題ありません。USERポインタフラグ,ページ切り替えフラグ,事前割り当てページ数のすべてが必要ない場合は,プリフィクス部を作成する必要はありません。

プリフィクス部を指定する場合の規則を次に示します。

(a) USERポインタフラグに設定する値【4V FMB】

USERポインタフラグに設定する値を次の表に示します。

表12‒10 USERポインタフラグに設定する値

項番

設定値

説明

1

C'U'

4V FMBのSDBデータベースでUSERポインタを定義している場合にUSERポインタフラグを設定します。そのほかの場合に設定しても,設定は無効になります。

左記に示す値を子レコードに設定した場合,親レコードがUSERポインタを持つという意味になります。複数の子レコードにUSERポインタフラグを設定した場合,最後の子レコードに設定したUSERポインタフラグが有効になります。

2

上記以外

無視されます。

(b) ページ切り替えフラグに設定する値

ページ切り替えフラグに設定する値を次の表に示します。

表12‒11 ページ切り替えフラグに設定する値

項番

条件

設定値

説明

1

サブページ分割をしていない場合

C'C'

左記に示す値が設定されているレコードを格納する際,格納ページを切り替えて,空きページにそのレコードを格納します。このレコードを格納したページには,ほかのレコードも格納されます。

2

C'O'

左記に示す値が設定されているレコードを格納する際,格納ページを切り替えて,空きページにこのレコードを格納します。このレコードを格納したページには,ほかのレコードは格納されません。

3

上記以外

格納ページの切り替えは行われません。

4

サブページ分割をしている場合

C'C'

左記に示す値が設定されているレコードを格納する際,格納サブページを切り替えて未使用サブページにそのレコードを格納します。このレコードを格納したサブページには,ほかのレコードも格納されます。

5

C'O'

左記に示す値が設定されているレコードを格納する際,格納サブページを切り替えて,未使用サブページにこのレコードを格納します。このレコードを格納したサブページには,ほかのレコードは格納されません。

6

上記以外

格納サブページの切り替えは行われません。

ページ切り替えについては,「2.6.2(3)レコード格納時のページ切り替え【4V FMB,4V AFM】」を参照してください。

サブページ切り替えについては,「2.7.2(3) レコード格納時のサブページ切り替え【4V FMB,4V AFM】」を参照してください。

(c) 事前割り当てページ数に設定する値【4V FMB】

事前割り当てページ数に設定する値を次の表に示します。

表12‒12 事前割り当てページ数に設定する値

項番

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERの指定

指定値

事前ページ割り当て制御の内容

1

指定あり(サブページ)

0

事前割り当てサブページは割り当てられません。

2

1〜2,147,483,647

指定値数分のサブページを事前割り当てサブページとして割り当てます。

3

上記以外

論理エラーを出力し,該当するルートレコードをスキップします。

4

指定なし(ページ)

0

事前割り当てページは割り当てられません。

5

1〜2,147,483,647

指定値数分のページを事前割り当てページとして割り当てます。

6

上記以外

論理エラーを出力し,該当するルートレコードをスキップします。

(d) 留意事項

ルートレコード型の入力データ以外のレコードに,事前割り当てページ数を指定しても無視されます。事前割り当てページ数とページ切り替えフラグの指定値の関係を次の表に示します。

表12‒13 事前割り当てページ数とページ切り替えフラグの指定値の関係

項番

プリフィクス部の指定値

pdsdblodコマンドの動作

事前割り当てページ数※1

ページ切り替えフラグ

ルートレコード

子レコード

1

0

'c'

ページ切り替え※2が有効になります。

2

'o'

3

上記以外

ページ切り替え※2および事前ページ割り当て※3は適用されません。

4

1〜2,147,483,647

'c'

論理エラーを出力し,該当するルートレコードおよびその子レコード群をスキップします。

5

'o'

6

上記以外

事前ページ割り当て※3が有効になります。

7

0

'c'

ページ切り替え※2が有効になります。

8

'o'

9

上記以外

ページ切り替え※2および事前ページ割り当て※3は適用されません。

10

1〜2,147,483,647

'c'

論理エラーを出力し,該当するルートレコードおよびその子レコード群をスキップします。

11

'o'

12

上記以外

事前ページ割り当て※3が有効になります。

(凡例)

−:該当しません。

注※1

事前割り当てページ数の設定値が有効になるのはルートレコード型の入力データだけです。ルートレコード型以外の入力データに設定されていた場合は無視されます。

注※2

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERオペランドでサブページ分割数が指定されている場合は,サブページ切り替えになります。

注※3

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERオペランドでサブページ分割数が指定されている場合は,事前サブページ割り当てになります。

また,データロード時にレコードを格納するために確保したページ(またはサブページ)の数が,指定した事前割り当てページ数(または事前割り当てサブページ数)を超えた場合,該当するファミリを格納するために指定値を超えて確保したページ(またはサブページ)も,事前割り当てページ(事前割り当てサブページ)として扱われます。

(4) レコードデータ

レコードデータには,データベースに格納するデータを格納してください。SDBデータベース定義で指定したレコード型と同じ構成要素を持つデータを格納します。レコードデータの例を次に示します。

SDBデータベース定義の例(4V FMBの場合)

   :
RECORD レコード型名
 2 DBKEY_L2 XCHARACTER 1 TYPE K,L                   …科目
 2 DBKEY_L3 XCHARACTER 3 TYPE K,L                   …店番
 2 DBKEY_L4 XCHARACTER 5 TYPE K,L                   …顧客番号
 2 DBKEY_K2 INTEGER       TYPE K,P                  …上位の一連番号
 2 DBKEY_K3 INTEGER       TYPE K,P                  …上位の一連番号
 2 DBKEY    INTEGER       TYPE K,N                  …一連番号
 2 USERDATA CHARACTER 5  TYPE U,D                   …ユーザデータ
   :

レコードデータの例

[図データ]

次に示す構成要素が定義されている場合は,領域を確保して0を設定してください。

HiRDB/SDは,これらの構成要素の領域の値を参照しません。