バージョン 8.1.3
 —  コマンドリファレンス  —

レコードバッファ

レコードバッファは、Adabas がデータを返したり、ユーザーが処理対象のデータを指定したりするためのストレージ内のエリアです。 レコードバッファが必要になる場合、対応するフォーマットバッファも必要になると見なされます。 フォーマットバッファを指定しないと、レコードバッファのペアとなるダミーのフォーマットバッファ(長さゼロ)が作成されます。 それぞれのタイプの ABD またはバッファ間の関係については、「バッファタイプ間の関係」を参照してください。

ACBX ダイレクトコールインタフェースを使用する場合、Adabas ダイレクトコールに複数のレコードバッファを指定できます。

レコードバッファは、主に読み込みコマンド、検索コマンド、更新コマンドで使用します。

このドキュメントでは、次のトピックについて説明します。


レコードバッファでの SQL 空値インジケータの指定と読み込み

Adabas SQL Gateway(ACE)などの SQL をサポートするため、NC/NN(NOT COUNTED/NOT NULL は不可)オプションで定義したフィールドは、レコードバッファに 2 バイトのバイナリ空値インジケータがある SQL の有効空値となります。

値を入力または変更する場合や、値を読み込んでレコードバッファに返す場合、フィールドの "ゼロ" 値が有効なのか、それとも無意味な空値(未定義)なのかは、レコードバッファに指定された空値インジケータによって決まります。

値を指定したり読み込んだりするときは、次のことを同時に行う必要があります。

空値インジケータは、データフォーマットにかかわらず、常に 2 バイトであり、固定小数点フォーマットです。

読み込み(Lx)または読み込みを伴う検索(フォーマットバッファエントリがある Sx)コマンドを実行すると、選択したフィールドに含まれている実際の値に応じて、次の空値インジケータ値のいずれかが返されます。

説明
X'FFFF' このフィールドの空値には意味がありません。
0000 このフィールドの空値は有効な値、つまり、ゼロまたは空白です。
xxxx フィールドは桁落としされました。 空値インジケータには、データベースレコードに格納されたとおりの値の全長(xxxx)が含まれています。

更新(Ax)または追加(Nx)コマンドの場合、レコードバッファの空値インジケータ値に次の値を設定する必要があります。

説明
X'FFFF' フィールド値を "未定義"、つまり無意味な空値に設定します。フィールドに設定されたバイナリの 0 または空白文字は、レコードバッファのフィールドの内容とは無関係です。
0000 レコードバッファにまったく値が指定されていない場合や、バイナリの 0 や空白が指定されている場合でも、フィールドには有効な空値が含まれています。

追加コマンドの場合、NC オプション付きで定義されたフィールドに対し、レコードバッファにまったく値が提供されていなければ、そのフィールドは空値フィールドとして扱われます。 次の例は、NC オプション付きで定義された 2 バイトの Adabas バイナリフィールド AA の空値の表現方法を示しています。

フィールド定義:01,AA,2,B,NC

  ゼロ以外の値を挿入する場合 空白を挿入する場合 空値を挿入する場合
レコードバッファの空値インジケータ 0(バイナリの値に有意性あり) 0(バイナリの空値に有意性あり) FFFF(バイナリの空値に有意性なし)
データ 0005 0000(ゼロ) 無関係
Adabas データベース内の内部表現 0205 0200 C1

更新(A1/N1)コマンドの場合、NC オプション付きで定義されたフィールドの値は常に有効です。つまり、このフィールドは、空値インジケータ値 "0000" が(指定されていなくても)指定されているときと同様に扱われます。

読み込みコマンドの場合、NC オプション付きで定義されたフィールドに空値インジケータが指定されていなければ、レコードに有効な値が存在した場合にのみレコードバッファにフィールド値が返されます。 無意味なインジケータ値 FFFF が指定されているフィールドがデータストレージレコードに存在する場合、レコードが読み込まれるときにレスポンスコード 55 が返されます。

Top of page

レコードバッファでの LA(ロング英数字)フィールドのフィールド長の指定

通常、LA オプションは可変長データとともに使用します。 LA オプションを使用する英数字フィールドの長さをレコードバッファに指定することもできます。 フィールド値の前に、2 バイトの長さフィールドが付加されます。長さフィールドには、値の長さに 2 を加算した値(つまり長さフィールドを含む長さ)が格納されます。

フォーマットバッファ
AA, ...
読み込むフィールドの名前
レコードバッファ
0005ABC ...
または
2712 ...(10,000 characters)...
Adabas から返されるフィールド値

Top of page