Hitachi

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


12.1.2 フォーマットライト【4V DAM】

pdsdbdefコマンドで定義したデータベースに初期値を格納し,インデクスを作成します。この機能をフォーマットライトといいます。初期値はHiRDB/SDが自動的に作成します。データロードとは異なり,HiRDB/SDの利用者が格納データを準備する必要はありません。フォーマットライトの概要を次の図に示します。

図12‒2 フォーマットライトの概要

[図データ]

[説明]
  • データベースの定義(SDBデータベース定義およびSDBデータベース格納定義)に従ってHiRDB/SDが初期値を作成してデータベースに格納します。

  • インデクスに関する情報がインデクス情報ファイルに出力され,ソート用ワークファイルでインデクスのデータをソートしてインデクスが作成されます。

SDBデータベース定義のFORMAT句にUSEを指定したレコード型に対してだけフォーマットライトを実行できます。

フォーマットライトは,4V DAMのSDBデータベースの場合に実行できます。

〈この項の構成〉

(1) フォーマットライトの際に準備するファイルと作成されるファイル

フォーマットライトの際に準備するファイルと作成されるファイルについては,「12.1.1(1) データロードの際に準備するファイル」および「12.1.1(3) データロードの際に作成されるファイル」を参照してください。

(2) インデクスの作成モードの選択

インデクスの作成モードもデータロードと同じく,次に示す2つのモードがあります。

(3) SDBデータベースが横分割されている場合のフォーマットライト

SDBデータベースが複数のRDエリアに横分割されている場合のフォーマットライトの方法を説明します。

(4) 初期値として格納されるデータ

初期値として格納されるデータは,データベースの定義(SDBデータベース定義およびSDBデータベース格納定義)に従ってHiRDB/SDが自動的に作成します。HiRDB/SDが作成する初期値の例を次に示します。

SDBデータベース定義

     :
  SCHEMA DAM1
  DBTYPE 4V DAM
  RECORD REC0  …仮想ルートレコード
    2 DBKDBMEI         CHARACTER 4   TYPE D,L       …データベース名
    2 DBKHIDUKE        XCHARACTER 1  TYPE K,L       …日付
    2 DBKTENBAN        XCHARACTER 3  TYPE K,L       …店番
    2 DBKKUBUN         XCHARACTER 4  TYPE K,R       …区分
  RECORD REC1
    2 DBKDBMEI         CHARACTER 4   TYPE D,L       …データベース名
    2 DBKEY
     3 DBKHIDUKE       XCHARACTER 1  TYPE K,L       …日付
     3 DBKTENBAN       XCHARACTER 3  TYPE K,L       …店番
     3 DBKKUBUN        XCHARACTER 4  TYPE K,R       …区分
     3 DBKITIRENBANGOU INTEGER       TYPE K,N       …一連番号
    2 USERDA1          CHARACTER 5   TYPE U,D       …ユーザデータ
  RECORD REC2
    2 DBKDBMEI         CHARACTER 4   TYPE D,L       …データベース名
    2 DBKEY
     3 DBKHIDUKE       XCHARACTER 1  TYPE K,L       …日付
     3 DBKTENBAN       XCHARACTER 3  TYPE K,L       …店番
     3 DBKKUBUN        XCHARACTER 4  TYPE K,R       …区分
     3 DBKITIRENBANGOU INTEGER       TYPE K,N       …一連番号
    2 USERDA2            CHARACTER 10  TYPE U,D     …ユーザデータ
  SET 親子集合1
      :
    MEMBER REC1
      :
    OCCURRENCE NUMBER 10  …一連番号の最大値
  SET 親子集合2
      :
    MEMBER REC2
      :
    OCCURRENCE NUMBER 20  …一連番号の最大値
           :

SDBデータベース格納定義

        :
STORAGE SCHEMA DAM1 FOR DAM1
        :
  SDBOPTION
    KEYDEF DBKDBMEI                  …データベース名
      DATA DAM1
    KEYDEF DBKHIDUKE                 …日付
      DATA X'C1'
      DATA X'C2'
    KEYDEF DBKTENBAN                 …店番
      DATA X'000011'
      DATA X'000012'
    KEYDEF DBKKUBUN                  …区分
      DATA X'00000001', REC1
      DATA X'00000002', REC2
        :

初期値として格納されるデータ

キー部

ユーザデータ部

データベース名

日付

店番

区分

一連番号

ユーザデータ※1

DAM1

X'C1'

X'000011'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C1'

X'000011'

X'00000002'

1〜20※2

X'00000000000000000000'

DAM1

X'C1'

X'000012'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C1'

X'000012'

X'00000002'

1〜20※2

X'00000000000000000000'

DAM1

X'C2'

X'000011'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C2'

X'000011'

X'00000002'

1〜20※2

X'00000000000000000000'

DAM1

X'C2'

X'000012'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C2'

X'000012'

X'00000002'

1〜20※2

X'00000000000000000000'

注※1

対応するレコードごとに構成要素を切り替えます。

注※2

SDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値の数だけ,レコードが作成されます。

キー部の作成仕様
  • SDBデータベース定義のRECORD句に指定したDBKEYに対応する構成要素に対して,SDBデータベース格納定義のKEYDEF句に指定したすべてのキー値の組み合わせが作成されます。

  • SDBデータベース定義のRECORD句に指定したDBKEYに対応する構成要素に対して,下位の構成要素から先頭の構成要素の順番に,キー値を組み替えながらすべての組み合わせが作成されます。

  • 1つの構成要素に設定するキー値は,対応するSDBデータベース格納定義のKEYDEF句に指定したキー値の指定順に設定されます。

  • 一連番号の構成要素は,1からSDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値(指定値が0の場合は1)までが採番されます。

  • SDBデータベース格納定義のKEYDEF句で指定したキー値の定義順にキー部が作成されます。作成されたキー部(データベースキー)がSEQUENTIAL句で定義した並びと異なる場合,論理エラーとなるため注意してください。

ユーザデータ部の作成仕様
  • ユーザデータ部に格納される初期値は,構成要素のデータ型によって決まります。構成要素のデータ型とユーザデータ部に格納される初期値を次の表に示します。

    表12‒2 構成要素のデータ型とユーザデータ部に格納される初期値

    構成要素のデータ型

    データ長(単位:バイト)

    ユーザデータ部に格納される初期値

    CHARACTER n

    n

    X'00....00'(0を代入)

    XCHARACTER n

    n

    X'00....00'(0を代入)

    PACKED DECIMAL FIXED p,s

    ↓(p+s)÷2↓+1

    X'00....0C'

    (最終8ビットをX'0C'とし,残りは0を代入)

    INTEGER

    4

    X'00....00'(0を代入)

格納されるレコード数の仕様

フォーマットライトによって格納されるレコードの最大数は次のようになります。

(A÷B)×C

A:SDBデータベース格納定義のKEYDEF句で指定したすべてのキー値の組み合わせ数

B:格納先のレコード数

C:SDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値の総数

(5) 注意事項