12.6.1 レコードのデータ形式
入力データファイル中に格納するレコードのデータ形式を次の図に示します。この図に示すデータ形式に従って入力データを作成してください。
- (凡例)
-
L1:プリフィクス部の長さで,0〜32,767バイトになります。
L2:SDBデータベース定義で定義した全構成要素サイズの合計長になります。
- 注意事項
-
HiRDB/SDはエンディアンおよび文字コード変換を行わないため,入力データ中の数値データはOSのエンディアンおよび文字コードに合わせてください。
レコード内の各項目について説明します。
(1) レコード長
次に示す計算式で求めたレコード長(単位:バイト)を格納してください。
レコード長=4+30+L1+L2
(2) レコード型名
レコードのレコード型名を格納してください。左詰めで格納し,余った部分にはスペースを格納してください。
(3) プリフィクス部【4V FMB,4V AFM】
プリフィクス部には,親子集合型の情報を格納してください。ここには,USERポインタフラグ,ページ切り替えフラグ,および事前割り当てページ数の情報を格納します。プリフィクス部のデータ形式の例を次の図に示します。
この例では,USERポインタフラグ,ページ切り替えフラグ,事前割り当てページ数の順でプリフィクス部を構成していますが,指定順序に制約はありません。
また,USERポインタフラグ,ページ切り替えフラグ,事前割り当てページ数のすべてを指定する必要はありません。必要な情報だけでプリフィクス部を構成しても問題ありません。USERポインタフラグ,ページ切り替えフラグ,事前割り当てページ数のすべてが必要ない場合は,プリフィクス部を作成する必要はありません。
プリフィクス部を指定する場合の規則を次に示します。
-
各オペランドに指定した開始位置の情報を格納する領域の長さが重ならないように指定してください。
-
load文のprefixオペランドに指定されたプリフィックス長の範囲内で指定してください。
(a) USERポインタフラグに設定する値【4V FMB】
USERポインタフラグに設定する値を次の表に示します。
項番 |
設定値 |
説明 |
---|---|---|
1 |
C'U' |
4V FMBのSDBデータベースでUSERポインタを定義している場合にUSERポインタフラグを設定します。そのほかの場合に設定しても,設定は無効になります。 左記に示す値を子レコードに設定した場合,親レコードがUSERポインタを持つという意味になります。複数の子レコードにUSERポインタフラグを設定した場合,最後の子レコードに設定したUSERポインタフラグが有効になります。 |
2 |
上記以外 |
無視されます。 |
(b) ページ切り替えフラグに設定する値
ページ切り替えフラグに設定する値を次の表に示します。
項番 |
条件 |
設定値 |
説明 |
---|---|---|---|
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】
事前割り当てページ数に設定する値を次の表に示します。
項番 |
SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERの指定 |
指定値 |
事前ページ割り当て制御の内容 |
---|---|---|---|
1 |
指定あり(サブページ) |
0 |
事前割り当てサブページは割り当てられません。 |
2 |
1〜2,147,483,647 |
指定値数分のサブページを事前割り当てサブページとして割り当てます。 |
|
3 |
上記以外 |
論理エラーを出力し,該当するルートレコードをスキップします。 |
|
4 |
指定なし(ページ) |
0 |
事前割り当てページは割り当てられません。 |
5 |
1〜2,147,483,647 |
指定値数分のページを事前割り当てページとして割り当てます。 |
|
6 |
上記以外 |
論理エラーを出力し,該当するルートレコードをスキップします。 |
(d) 留意事項
ルートレコード型の入力データ以外のレコードに,事前割り当てページ数を指定しても無視されます。事前割り当てページ数とページ切り替えフラグの指定値の関係を次の表に示します。
項番 |
プリフィクス部の指定値 |
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が有効になります。 |
(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は,これらの構成要素の領域の値を参照しません。