Btrieve API Guide (v11)

Create(14)

Create オペレーション(B_CREATE)では、アプリケーション内部から新しいデータ ファイルを生成できます。Create オペレーションにはファイルの削除または名前変更ができるサブファンクションもあります(Create オペレーションによる削除および名前変更サブファンクションを参照)。


メモ

同じディレクトリに、ファイル名が同一で拡張子のみが異なるようなファイルを置かないでください。たとえば、同じディレクトリ内のデータ ファイルの 1 つに Invoice.btr、もう 1 つに Invoice.mkd という名前を付けてはいけません。このような制限が設けられているのは、データベース エンジンがさまざまな機能でファイル名のみを使用し、ファイルの拡張子を無視するためです。ファイルの識別にはファイル名のみが使用されるため、ファイルの拡張子だけが異なるファイルは、データベース エンジンでは同一のものであると認識されます。


パラメーター

 
オペレーション コード
ポジション ブロック
データ バッファー
データ バッファー長
キー バッファー
キー番号
送り値

 

戻り値
 
 
 
 
 
 

前提条件

既存のファイルを基に空のファイルを作成する場合は、Create オペレーションを実行する前に必ずその既存ファイルは閉じているようにします。

手順

  1. オペレーション コードに 14 を設定します。
  2. 詳細の説明に従い、データ バッファーにファイル仕様、キー仕様、およびオルタネート コレーティング シーケンス(ACS)を指定します(格納するファイル仕様とキー仕様の値はすべて、バイナリ形式でなければなりません)。
  3. データ バッファー長を指定します。これは、Create の指定を含むバッファーの長さであり、ファイルのレコード長ではありません。
  4. キー バッファーにファイルのパス名を指定します。パス名の終端は必ず空白かバイナリ ゼロにします。パス名は、ボリューム名および終端文字を含めて、255 文字までの範囲で指定することができます。
    Pervasive PSQL クライアントでサポートするパス名の詳細については、『Getting Started with Pervasive PSQL』の Pervasive リクエスターでサポートするネットワーク パスの形式を参照してください。『Pervasive PSQL Programmer's Guide』の「データベース URI」 も参照してください。
  5. キー番号パラメーターの値を、表 14 の値のいずれかを使って指定します。

詳細

8 は、ファイル仕様およびキー仕様を格納する順序を示しています。

表 8 Create オペレーションのデータ バッファー構造体
説明
データ型1
バイト番号
値の例2
ファイル仕様
論理固定レコード長3
Short Int4
0, 1
すべてのフィールドを結合したサイズです。
ページ サイズ
Pervasive PSQL 6.x から 9.4
Short Int
2, 3
512
Pervasive PSQL 6.x 以上
1,024
Pervasive PSQL 6.x から 9.4
1,536
Pervasive PSQL 6.x 以上
2,048
Pervasive PSQL 6.x から 9.4
3,072
3,584
Pervasive PSQL 6.x 以上
4,096
Pervasive PSQL 9.0 から 9.4x
8,192
Pervasive PSQL 9.5 以上
16,384
ほとんどのファイルでは最小サイズの 4096 バイトが最も効率的です。微調整を行う場合の詳細については、ページ レベル圧縮を用いたファイルの作成を参照してください。
9.5 ファイル形式のファイルを作成する場合、指定された論理ページ サイズがそのファイル形式で有効ならば、MicroKernel は指定値の次に大きな有効値があるかどうかを調べ、存在する場合はその値に切り上げます。それ以外の値やファイル形式の場合、オペレーションはステータス コード 24 で失敗します。古いバージョンのファイル形式では切り上げは行われません。
キー(インデックス)数
Byte
4
 
ファイル バージョン
Byte
5
0x60
バージョン 6.0
0x70
バージョン 7.0
0x80
バージョン 8.0
0x90
バージョン 9.0
0x95
バージョン 9.5
0x00
データベース エンジンのデフォルトを使用
予約済み(Create オペレーションでは使用しません)
予約済み
6- 9
0
ファイル フラグ。ファイル属性を指定します。ファイルの例では、ファイル フラグを使用していません。
Short Int
10, 11
0
追加ポインター数。将来のキーの追加のために予約する重複ポインター数を設定します。ファイル属性で予約重複ポインターを指定する場合に使用します。
Byte
12
0
予約済み(Create オペレーションでは使用しません)
予約済み
13
0
プリアロケート ページ数。事前に割り当てられるページ数を設定します。ファイル属性でページ プリアロケーションを指定する場合に使用します。
Short Int
14, 15
0
キー 0(ラスト ネーム)のキー仕様
キー ポジション。レコード内のキーの最初のバイトの位置を指定します。レコード内の最初のバイトは 1 です。
Short Int
16, 17
1
キー長。バイト単位でキーの長さを指定します。
Short Int
18, 19
25
キー フラグ。キー属性を指定します。
Short Int
20, 21
EXTTYPE_KEY + NOCASE_KEY + DUP + MOD
Create には使用しません。
Byte
22-25
0
拡張キー タイプ。キー フラグで「拡張キー タイプを使用する」を指定する場合に使用します。拡張データ型のうちの 1 つを指定します。
Byte
26
ZSTRING
ヌル値(レガシー ヌルのみ)。キー フラグで「ヌルキー(すべてのセグメント)」または「ヌルキー(任意のセグメント)」を指定する場合に使用します。キーの除外値を指定します。レガシー ヌルと真のヌルの概念については、「ヌル値」を参照してください。
Byte
27
0
Create には使用しません。
Byte
28, 29
0
手動割り当てキー番号。ファイル属性で「キー番号」を指定する場合に使用します。キー番号を割り当てます。
Byte
30
0
ACS 番号。キー フラグで「デフォルトの ACS を使用する」、「ファイル内の番号付きの ACS を使用する」または「名前付きの ACS を使用する」を指定する場合に使用します。使用する ACS 番号を指定します。
Byte
31
0
キー 1(社員 ID)のキー仕様
キー ポジション。(社員 ID は、ミドル イニシャルの後の最初のバイトから始まります。)
Short Int
32, 33
52
キー長。
Short Int
34, 35
4
キー フラグ。
Short Int
36, 37
EXTTYPE_KEY + MOD
Create には使用しません。
Byte
38-41
0
拡張キー タイプ。
Byte
42
INTEGER
ヌル値。
Byte
43
0
Create には使用しません。
Byte
44, 45
0
手動割り当てキー番号。
Byte
46
0
ACS 番号。
Byte
47
0
ページ圧縮のキー仕様
物理ページ サイズ5
Char
A
512
(デフォルト値)
1 特に指定がない場合、すべてのデータ型は符号なしです。
2 簡素化を図るため、数値以外の値の例は C アプリケーションの場合です。
3 可変長レコードを持つファイルの場合、論理レコード長はレコードの固定長部分のみを指します。
4 Short Integer(Short Int)は「リトル エンディアン」のバイト順、つまり、Intel 系のコンピューターが採用している下位バイトから上位バイトへ記録する方式で格納する必要があります。
5 ページ レベル圧縮でのみ使用します。ページ圧縮ファイル フラグ(表 6 を参照)と組み合わせて使用する必要があります。詳細については、ページ レベル圧縮を用いたファイルの作成を参照してください。


メモ

トランザクショナル インターフェイスは Create オペレーションではデータ バッファーの「未使用」および「予約済み」領域を使用しませんが、それらを割り当てておく必要があります。将来のリリースとの互換性を維持するため、予約済み領域はゼロに初期化してください。


ファイル仕様

データ バッファーの先頭 16 バイトにはファイル仕様を格納します。バイトは 0 から数え始めます。レコード長、ページ サイズおよびインデックス数の情報を整数で格納します。

論理レコード長。(オフセット 0x00)論理レコード長はファイルの固定長データのバイト数です(論理レコード長には可変長データを含めないでください)。

ページ サイズ。(オフセット 0x02)ページ サイズはファイル形式のバージョンによって決まっています。『Pervasive PSQL Programmer's Guide』のページ サイズの選択を参照してください。

インデックス数。(オフセット 0x04)インデックス数はファイルに対して定義しているキーの数です。キー セグメント数ではありません。データオンリー ファイルを作成するには、インデックス数に 0 を設定します。

ファイル バージョン。(オフセット 0x05)作成するトランザクショナル インターフェイスのファイル バージョンです。前のリリースでは、トランザクショナル インターフェイスは 2 バイト整数を使って Create オペレーションでインデックス数を取得していました。インデックスの最大数は 119 であるため、この整数の上位バイトは常にゼロでした。この上位バイトは、Stat オペレーションではファイル バージョンを返すために常に使用されていますが、以前のアプリケーションを破棄しなくとも、Create オペレーションでファイル バージョンの指定に使用できるようになりました。Create でサポートされるファイル バージョンは 6.x、7.x、8.x、9.x、9.5 です。これらは、それぞれ 16 進数の値 0x50、0x60、0x70、0x80、0x90、0x95 で特定のバイトに示されます。

物理ページ サイズ。(オフセット 0xA)このフィールドは、以前は「未使用」とマークされていました。このフィールドはページ圧縮ファイル フラグと組み合わせて使用されます。ページ圧縮フラグが指定されていなければ、このフィールドは無視されます。

バージョン 6.x 以降のデータ ファイルでは、論理ページは物理ページに割り当て、ページ アロケーション テーブル(PAT)に格納します。物理ページのサイズは論理ページのサイズと同一です。ページ圧縮は 9.5 以降のファイル形式で使用できます。データベース ページはページ レベルで圧縮されます。各論理ページは、1 つ以上の物理ページ単位に圧縮されます。これら個々の物理ページのサイズは、1 論理ページよりも小さくなります。

物理ページ サイズ フィールドを使用して、ファイルで使用する物理ページ サイズを指定できます。このフィールドで指定する値は、使用される実際の物理ページ サイズを決定するため、512 の倍数にします。ゼロを指定すると、エンジンは物理ページ サイズのデフォルト値を使用します。デフォルト値は 512 バイトです。

物理ページ サイズに指定された値は、論理ページ サイズに指定された値よりも大きくすることはできません。物理ページ サイズに指定された値の方が大きい場合、エンジンは論理ページ サイズと同じになるようその値を切り捨てます。論理ページ サイズは物理ページ サイズの倍数になっていなければなりません。倍数でない場合、その論理ページ サイズの値は物理ページ サイズの値のちょうど倍数になるよう切り捨てられます。このような操作の結果として、論理ページ サイズと物理ページ サイズの値が同じになった場合、ページ レベルの圧縮はこのファイルに適用されません。『Pervasive PSQL Programmer's Guide』のページ レベル圧縮を用いたファイルの作成も参照してください。

ファイル フラグ。(オフセット 0x0A)ファイル フラグ ワードのビットをセットして、ファイルの属性を指定します。表 9 に、ファイル フラグの値の 2 進、16 進、および 10 進表記を示します。

表 9 ファイル フラグの値
属性
定数
2 進数
16 進数
10 進数
可変長レコード
VAR_RECS
0000 0000 0000 0001
1
1
ブランク トランケーション
BLANK_TRUNC
0000 0000 0000 0010
2
2
ページ プリアロケーション
PRE_ALLOC
0000 0000 0000 0100
04
4
データ圧縮
DATA_COMP
0000 0000 0000 1000
08
8
キーオンリー ファイル
KEY_ONLY
0000 0000 0001 0000
10
16
インデックス バランス
BALANCED_KEYS
0000 0000 0010 0000
20
32
10% 空きスペース スレッショルド
FREE_10
0000 0000 0100 0000
40
64
20% 空きスペース スレッショルド
FREE_20
0000 0000 10 00 0000
80
128
30% 空きスペース スレッショルド
FREE_30
0000 0000 1100 0000
C0
192
予約重複ポインター
DUP_PTRS
0000 0001 0000 0000
100
256
システムデータを含める1
INCLUDE_SYSTEM_DATA
0000 0010 0000 0000
200
512
システム データを含めない
NO_INCLUDE_SYSTEM_DATA
0001 0010 0000 0000
1200
4,608
キー番号
SPECIFY_KEY_NUMS
0000 0100 0000 0000
400
1,024
VAT の使用
VATS_SUPPORT
0000 1000 0000 0000
800
2,048
ページ圧縮の使用2
PAGE_COMPRESSED
0010 0000 0000 0000
2000
8,192
1 システム データをファイルに含めるかどうかを明示的に指定していない場合、Btrieve API は、トランザクショナル インターフェイス設定オプションの「システム データ」のその時点の設定を使用します。
2 ページ レベル圧縮でのみ使用します。「物理ページ サイズ」キー仕様と組み合わせて使用されます。詳細については、『Pervasive PSQL Programmer's Guide』のページ レベル圧縮を用いたファイルの作成を参照してください。

互換性のないフラグの使用は避けてください。同一ビット位置を使用するフラグ間には互換性はありません。未使用のビットは将来使用するために予約されています。これらのビットには 0 を設定します。

ファイルの属性を組み合わせるには、対応するファイル フラグの値を加算します。たとえば、可変長レコードを含むことができ、ブランク トランケーションを行うファイルを指定するには、ファイル フラグ ワードを 3(2 + 1)に初期化してください。可変長レコードのビットが 0 に設定されている場合、トランザクショナル インターフェイスではブランク トランケーションおよび空きスペース スレッショルドのビットを無視します。

ページ プリアロケーションのビットを設定する場合は、ファイル仕様ブロック(アロケーション)の最後の 2 バイトを使用して、ファイルにプリアロケートするページ数を指定する整数値を格納してください。データ圧縮のビットを設定した場合、トランザクショナル インターフェイスでは可変長レコードのビットが無視されます。キーオンリー ファイルのビットを設定した場合、トランザクショナル インターフェイスではシステム データのビットが無視されます。

データベース エンジンは、システム データを使用しており、レコード長が許容最大サイズを超えるファイルについては自動的にデータ圧縮を使用します。『Pervasive PSQL Programmer's Guide』の表 12 を参照してください。

ファイルを作成した後でインデックスの追加が予想され、そのインデックスに多数の重複した値が含まれる場合は、重複ポインターのビットを設定します。このビットを設定すると、トランザクショナル インターフェイスでは重複した値をリンクするポインターのためにファイルの各レコードにスペースが確保されるようになります。このようなスペースを確保することにより、特に、キーが長く、多数のレコードが重複するキー値を持つことが予測される場合には、検索時間を短縮し、ディスク領域を節約できる場合があります。


メモ

重複ポインターの領域は、ファイル作成後に追加されるインデックスのみを対象に予約できます。したがって、重複値へのポインターのために領域を確保するときは、この Create オペレーションの実行中に作成されるインデックスの領域は含めないでください。また、繰り返し重複キーとして指定されるキーについて、トランザクショナル インターフェイスは重複ポインターの領域を確保しません。


特定の番号をキーに割り当てることが必要な場合は、キー番号のビットを設定し、希望するキー番号をキー仕様ブロックの手動割り当てキー番号要素(オフセット 0x0E)に入れます。トランザクショナル インターフェイスではキー番号が連続している必要はありません。つまり、ファイルのキー番号は飛んでいてもかまいません。キーが作成されると、トランザクショナル インターフェイスはデフォルトで、0 から始まるキー番号のうち使用可能な最小の番号をそのインデックスに割り当てます。ただし、アプリケーションによっては、デフォルトの割り当てとは異なるキー番号が必要なこともあります。

ファイルで可変長部割り当てテーブルを使用する場合は、VAT の使用のビットを設定します。VAT を使うには、ファイルで可変長レコードを使用していることが必要です。

予約する重複ポインター数。(オフセット 0x0C)予約する重複ポインター数をファイルごとに指定できます。予約重複ポインターのファイル フラグを指定した場合にのみ、この要素を使用してください。重複キーの詳細については、『Pervasive PSQL Programmer's Guide』の重複キーを参照してください。

アロケーション。(オフセット 0x0E)プリアロケートするページ数を指定できます。ページ プリアロケーションのファイル フラグを指定した場合にのみ、この要素を使用してください。ページのプリアロケーションの詳細については、『Pervasive PSQL Programmer's Guide』のページ プリアロケーションを参照してください。

キー仕様ブロック

ファイル仕様のすぐ後にキー仕様ブロックを配置します。ファイルのキー セグメントごとに 16 バイトのキー仕様ブロックを割り当てます。キー ポジションおよびキー長の情報は整数で格納します。

キー セグメントの最大許容数は、ファイルのページ サイズによって異なります。

ページ サイズ(バイト数)
キー セグメントの最大数(ファイル バージョン別)
8.x 以前
9.0
9.5
512
8
8
切り上げ2
1,024
23
23
97
1,536
24
24
切り上げ2
2,048
54
54
97
2,560
54
54
切り上げ2
3,072
54
54
切り上げ2
3,584
54
54
切り上げ2
4,096
119
119
204(または 119)3
8,192
N/A1
119
420(または 119)3
16,384
N/A1
N/A1
420(または 119)3
1 N/A は「適用外」を意味します。
2 「切り上げ」は、ページ サイズを、ファイル バージョンでサポートされる次のサイズへ切り上げることを意味します。たとえば、512 は 1,024 に切り上げられ、2,560 は 4,096 に切り上げるということです。
3 リレーショナル インターフェイスで使用できるインデックス セグメントの最大数は 119 です。トランザクショナル インターフェイスの場合、最大数は、ページ サイズ 4,096 では 204、ページ サイズ 8,192 および 16,384 では 420 です。

Status Codes and Messages』のステータス コード 26:指定されたキーの数が不正です。および 29:キー長が不正です。を参照してください。

キー ポジション。(オフセット 0x00)キー ポジションは、キーまたはキー セグメントの開始位置のバイト オフセットです。ポジションは 1 からの相対になります。レコードの先頭に位置するキーは、ポジション 1 から始まります。ポジション 0 はありません。

キー長。(オフセット 0x02)キーまたはキー セグメントの長さです。キーの最大長は、すべてのキー セグメントを含めて、255 バイトです。

キー フラグ。(オフセット 0x04)キー フラグ ワードのビットをセットして、キーの属性を指定します。表 10 に、キー フラグの値の 2 進、16 進、および 10 進表記を示します。

表 10 キー フラグの値
属性
定数
2 進数
16 進数
10 進数
重複許可(リンクされた重複はデフォルト、あるいは繰り返し重複用に REPEAT_DUPS_KEY と組み合わせる)
DUP
0000 0000 0000 0001
1
1
変更可能キー値
MOD
0000 0000 0000 0010
2
2
旧形式の BINARY データ型を使用
BIN
0000 0000 0000 0100
4
4
旧形式の STRING データ型を使用(ビット 2 および 8 は 0 にする必要があります)
 
0000 0000 0000 0000
0
0
ヌル キー(全セグメント)
NUL
0000 0000 0000 1000
8
8
セグメント キー
SEG
0000 0000 0001 0000
10
16
デフォルトの ACS を使用
ALT
0000 0000 0010 0000
20
32
ファイル内の番号付きの ACS を使用
NUMBERED_ACS
0000 0100 0010 0000
420
1,056
名前付きの ACS を使用
NAMED_ACS
0000 1100 0010 0000
C20
3,104
降順ソート
DESC_KEY
0000 0000 0100 0000
40
64
繰り返し重複(DUP 属性と組み合わせる)
REPEAT_DUPS_KEY
0000 0000 1000 0000
80
128
拡張データ型を使用
EXTTYPE_KEY
0000 0001 0000 0000
100
256
ヌル キー(一部セグメント)
MANUAL_KEY
0000 0010 0000 0000
200
512
大文字小文字無視キー
NOCASE_KEY
0000 0100 0000 0000
400
1,024

互換性のないフラグの使用は避けてください。同一ビット位置を使用するフラグ間には互換性はありません。未使用のビットは将来使用するために予約されています。これらのビットには 0 を設定します。

キーの属性を組み合わせるには、対応するキー フラグの値を加算します。たとえば、キーが拡張キー タイプで、セグメント キーの一部であり、さらに降順に照合される場合は、キー フラグ ワードを 336(256 + 16 + 64)に初期化します。

セグメント キー属性は、データ バッファー内の次のキー仕様ブロックが同一キーの次のセグメントを指すことを示します。セグメント キーについては以下の規則に従ってください。

ACS は、STRING、LSTRING および ZSTRING キーにのみ適用できます。大文字小文字の区別を無視し、かつ ACS を使用するキーを定義することはできません。あるキーの一部のセグメントにしか ACS が指定されていないファイルの場合、ACS が指定されているセグメントはその ACS に従ってソートされ、ACS が指定されていないセグメントはそれぞれの型に従ってソートされます。

拡張データ型。(オフセット 0x0A)拡張データ型をキー仕様ブロックのバイト 10 にバイナリ値で指定します。表 11 に、拡張データ型に対応するコードを示します。

表 11 拡張データ型
データ型
コード
データ型
コード
CHAR
0
ZSTRING
11
INTEGER
1
UNSIGNED BINARY
14
FLOAT
2
AUTOINCREMENT
15
DATE
3
NUMERICSTS
17
TIME
4
NUMERICSA
18
DECIMAL
5
CURRENCY
19
MONEY
6
TIMESTAMP
20
LOGICAL
7
WSTRING
25
NUMERIC
8
WZSTRING
26
BFLOAT
9
GUID
27
LSTRING
10
NULL INDICATOR SEGMENT
255

拡張データ型のコード 12、13、16 および 21 から 24 までは将来使用するために予約されています。

STRING および UNSIGNED BINARY データ型は、標準型と拡張型のどちらとしても定義できます。これにより、以前のバージョンの Btrieve API を使って開発したアプリケーションとの互換性が保てる一方、新しいアプリケーションで拡張データ型を排他的に使用できるようになります。

キーに割り当てるデータ型に関し、入力したレコードがそのキーに定義されているデータ型に合っているかどうかは、トランザクショナル インターフェイスでは確認されません。たとえば、TIMESTAMP キーをファイルに定義することができますが、そこに文字列を格納することもできます。Btrieve API アプリケーションでは問題なく動作していても、ODBC アプリケーションで同じデータに ODBC TIMESTAMP データ型を使ってアクセスしようとすると、正常に動作しないことがあります。これはおそらく、バイトの形式が異なり、タイムスタンプ値を生成するアルゴリズムが異なるからです。データ型の説明については、『SQL Engine Reference』を参照してください。

ヌル値。(オフセット 0x0B)キー仕様ブロックのこのオフセットは、キーの除外値を表します。あるキーをヌル キーとして定義した場合は、各キー セグメントのヌル値として認識させる値をトランザクショナル インターフェイスに提供する必要があります。これは、レガシー ヌルへの参照内にあり、真のヌルには影響しません。ヌルのサポートの説明については、『Pervasive PSQL Programmer's Guide』の「ヌル値」を参照してください。

手動割り当てキー番号。(オフセット 0x0E)トランザクショナル インターフェイスでは、インデックス付きのファイルを作成するときに、アプリケーションで特定のキー番号を割り当てることができます。ファイルの各インデックスに手動でキー番号を割り当てるには、各キー番号をキー仕様ブロックのバイト 14 にバイナリ値で指定し、ファイル フラグ ワードにキー番号ビット(0x400)を設定します。

キー番号はファイルで一意であり、キー 0 から昇順に指定されていなければなりません。また、有効な値、つまり、ファイルのページ サイズに対するキーの最大数よりも小さい値でなければなりません。

手動でキー番号を割り当てるという機能は、キーを削除して、その削除したキーよりも大きなキー番号を持つすべてのキーの番号をトランザクショナル インターフェイスに付け替えさせないようにする機能と相補関係にあります。たとえば、アプリケーションからインデックスを削除し、トランザクショナル インターフェイスにそれよりも大きな番号を持つキーの番号を付け替えないように指示を出した場合、その後でユーザーが具体的なキー番号を割り当てずに影響を受けたファイルを複製すると、複製したファイルには元のファイルとは別のキー番号が割り当てられます。

ACS 番号。(オフセット 0x0F)特定の ACS を使用するキーの場合、キー仕様ブロックのオフセット 0x0F により、キーの照合に使用する ACS 番号が示されます。ACS 番号はデータ バッファー内の位置に基づいて決まります。最後のキー仕様ブロックに続く最初の ACS は、ACS 番号 0 になります。ACS 0 の次には ACS 1、その次には ACS 2、というように続きます。

オルタネート コレーティング シーケンス(ACS)

アプリケーションでは、データ バッファー内の最後のキー仕様ブロックの直後から ACS を 1 つずつ順に指定します。

ユーザー定義の ACS。文字列値を ASCII 標準とは異なる並び順でソートする ACS を作成するには、表 12 に示す形式を使って、アプリケーションからデータ バッファーに直接 265 バイトを設定する必要があります。

表 12 ユーザー定義の ACS を作成するためのデータ バッファー
位置
(オフセット)
長さ
(バイト単位)
説明
0
1
識別バイト。0xAC を指定します。
1
8
トランザクショナル インターフェイスに ACS を識別させる、8 バイトの一意の名前。
9
256
256 バイトのマップ。マップ内の 1 バイトの位置はそれぞれ、マップ内でのその位置のオフセットと同じ値を持つコード ポイントに対応します。その位置にあるバイトの値は、コード ポイントに割り当てられるコレーティング ウェイトです。たとえば、コード ポイント 0x61('a')をコード ポイント 0x41('A')と同じウェイトでソートさせるには、オフセット 0x61 および 0x41 に同一の値を設定します。

ユーザー定義の ACS の例については、『Pervasive PSQL Programmer's Guide』の「オルタネート コレーティング シーケンス」を参照してください。

インターナショナル ソート規則(ISR)。ISR を指定するには、以下の形式でアプリケーションからデータ バッファーに直接 265 バイトを設定することが必要です。

表 13 ISR ACS を指定するためのデータ バッファー
位置
(オフセット)
長さ
(バイト単位)
説明
0
1
識別バイト。0xAD を指定します。
1
16
トランザクショナル インターフェイスに ISR テーブルを識別させる、16 バイトの一意の名前。ISR テーブル名のリストについては、『Pervasive PSQL Programmer's Guide』を参照してください。
17
248
Filler

データ バッファー長

データ バッファー長は、ファイル仕様、キー仕様、および定義されている ACS を十分に格納できるだけの長さを持つ必要があります。このパラメーターにファイルのレコード長を指定しないでください。

たとえば、1 セグメントのキーを 2 つと ACS を 1 つ持つファイルを作成するには、Create オペレーションのデータ バッファーには、以下のように、少なくとも 313 バイトの長さが必要です。

ファイル仕様
+
キー仕様
+
キー2 仕様
+
ACS
 
16
+
16
+
16
+
265
= 313

キー番号

Create オペレーションのキー番号パラメーターは、同名のファイルが既に存在する場合にトランザクショナル インターフェイスが警告を出すかどうかを決定するために、また、ファイルの作成時にトランザクショナル インターフェイスがローカル エンジンとリモート エンジンのどちらを使用するかを決定するために使用されます。

14 を使って、キー番号パラメーターで使用する値を決定します。


メモ

ローカル エンジンでファイルを作成するよう指定する場合は、ワークグループ エンジンでも、サーバー エンジンでも、Create オペレーションに何ら違いはありません。


表 14 Create オペレーションのキー番号パラメーター
CREATE オペレーション
選択しない
ローカル エンジンにファイルを作成させる
リモート エンジンにファイルを作成させる
標準の作成(ファイルが既存の場合、上書きする)
0
6
99
ファイルが既存の場合、ステータス 59 を返す
-1
7
100

Create オペレーションによる削除および名前変更サブファンクション

Create オペレーションには 2 つのサブファンクションがあり、これを使用してファイルの削除または名前変更ができます。

Pervasive.SQL v8.5 より前のリリースでは、オペレーティング システムを介してトランザクショナル インターフェイス ファイルを操作することは常に可能でした。これは、オペレーティング システムが Pervasive PSQL ユーザーに与える権限にトランザクショナル インターフェイスが依存していたためです。

しかし現在は、セキュリティが設定された Pervasive PSQL データベースがある場合、承認されていないアクセスからデータベースを保護する過程において、このようなオペレーティング システムのアクセス権は除去されることがあります。これにより、必ずしも必要な権限を利用できるとは限らなくなるため、プログラムによるファイルの削除や移動が困難になりました。

名前変更と削除のサブファンクションは、代替キー番号を持つ Create オペレーションとして実装されています。新規データ ファイルを作成する場合のようにファイル仕様を指定する必要はありません。Create オペレーションで名前変更と削除サブファンクションを使用するための設定方法を、次の表に示します。

表 15 Create オペレーションのサブファンクション
機能
使用するキー番号
説明
データ バッファーに指定するもの
キー バッファーに指定するもの
ファイルの名前変更
-127
データ バッファーの既存のファイルを、キー バッファーの名前に変更します。
既存のファイル名
新しいファイル名
ファイルの削除
-128
ファイルを削除します。
適用外
既存のファイル名

これらのサブファンクションはセキュリティ モデルで動作するように変更されました。その変更点として、サブファンクションは削除または名前変更するトランザクショナル インターフェイス ファイルを示すために、必要に応じて、キー バッファーおよびデータ バッファーでファイル名の代わりに URI を受け入れるようになりました。これにより、セキュリティ情報をオペレーションに指定することができます。URI 接続文字列の詳細については、『Pervasive PSQL Programmer's Guide』の「データベース URI」 を参照してください。

セキュリティ情報は、通常の Create または Open オペレーションとまったく同様に処理されます。ユーザーは認証され、かつ、既存のファイルに対して、また新しいファイルの保存場所となるディレクトリに対して DB_RIGHT_CREATE、DB_RIGHT_ALTER、および DB_RIGHT_OPEN 権限を持っている必要があります。

表 16 Create サブファンクション-キー バッファーでの URI パラメーターの使用
機能
URI パラメーター file=
URI パラメーター dbfile=
URI パラメーター table=
名前変更

削除

表 17 Create サブファンクション-データ バッファーでの URI パラメーターの使用
機能
file=
dbfile=
table=
名前変更

削除
適用外
適用外
適用外

名前変更および削除サブファンクションでの注意

結果

Create オペレーションが正常に終了した場合は、トランザクショナル インターフェイスから同名のファイルが既に存在すると警告されるか、仕様に従って新しいファイルが作成されます。新規ファイルにはレコードは含まれていません。Create オペレーションでは作成したファイルを開きません。したがって、ファイルにアクセスするには、アプリケーションで Open オペレーションを実行する必要があります。

Create オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。

2
アプリケーションで I/O エラーが発生しました。
11
指定されたファイル名は不正です。
18
ディスクがいっぱいです。
22
データ バッファー パラメーターが短すぎます。
24
ページ サイズまたはデータ バッファー サイズが不正です。
25
アプリケーションが指定されたファイルを作成できません。
26
指定されたキーの数が不正です。
27
キー ポジションが不正です。
28
レコード長が不正です。
29
キー長が不正です。
48
オルタネート コレーティング シーケンス定義が不正です。
49
拡張キー タイプが不正です。
59
指定されたファイルは既に存在します。
104
トランザクショナル インターフェイスがロケールを認識しません。
105
このファイルは、可変長部割り当てテーブル(VAT)付きで作成することはできません。
134
トランザクショナル インターフェイスがインターナショナル ソート規則(ISR)を読み取れません。
135
指定されたインターナショナル ソート規則(ISR)テーブルは破損しているか、または不正です。

ポジショニング

Create オペレーションを実行しても、ファイルにカレンシーは確立しません。


Continuous Operation(42)

Create Index(31)