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

サーチバッファ

サーチバッファとバリューバッファは、次の定義を行うときに、対で使用します。

サーチバッファを指定した場合、バリューバッファも指定されているものと見なされます。 バリューバッファが指定されていないと、サーチバッファとペアになるダミーのバリューバッファが作成されます。 それぞれのタイプの ABD またはバッファ間の関係については、「バッファタイプ間の関係」を参照してください。

単一の Adabas ダイレクトコールに指定可能なサーチバッファとバリューバッファのペアの数は 1 つだけです。

ユーザーは、サーチバッファに検索式を、バリューバッファには検索式に対応する値を指定します。

サーチバッファの構文は、使用する検索条件のタイプによって異なります。

  1. 単一ファイル検索。 この検索条件は、単一ファイル内の 1 つ以上のフィールドで構成されます。

  2. 物理的にカップリングされたファイルを使用した複数ファイル検索。 この検索条件は、ADAINV ユーティリティで物理的にカップリングされている 2 つ以上のファイルに含まれているフィールドで構成されます。

  3. ソフトカップリング機能を使用した検索。 この機能は、検索、読み込み、内部リストのマッチングの組み合わせができます。

検索条件には、1 つ以上の非ディスクリプタを含めることができます。 非ディスクリプタを使用した場合、Adabas は実際に読み込みを行い、どのレコードをユーザーに返すかを判断します。

注意:

  1. ファイルに多数のレコードが含まれる場合、非ディスクリプタを使用して検索を実行すると、レスポンスタイムが長くなることがあります。
  2. Adabas データベースにおける非ディスクリプタ値の検索は、メインフレームの場合とオープンシステムの場合とで、フィールド内の空値省略に関して違いがあります。 オープンシステムではフィールドが空値省略(NU)の場合、非ディスクリプタ値を検索したときに空値を含むレコードを返しません。メインフレームシステムでは、非ディスクリプタ値を検索したときにフィールドの空値省略(NU)は無視されます。 このときフィールドを非ディスクリプタ値の検索で使用する必要がある場合は、オープンシステムフィールドの空値省略(NU)オプションを解除してこの問題を解決することをお勧めします。

サーチバッファの形式

このセクションでは、サーチバッファの形式オプションの概要を示します。 各サーチバッファエントリはデリミタ(コンマ、スラッシュ、カッコ、セミコロン)で区切らなければなりません。 各エントリ間に 1 つ以上の空白があってもかまいません。 サーチバッファは、ピリオドで終了する必要があります。

このセクションでは、次のトピックについて説明します。

検索式

検索式はすべての検索タイプに共通です。

graphics/2search_expression_syntax.png

検索式は、フィールド名(field-name)とオプションのエントリまたはコマンド ID(command-id)で構成されます。

ここでは、この構文の各エレメントについて説明します。

field-name

検索式には、フィールド(ディスクリプタ、非ディスクリプタ)、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、照合ディスクリプタまたはフォネティックディスクリプタを指定できます。 非ディスクリプタを使用すると、マルチプルバリューフィールドは指定できますが、サブ/スーパーフィールドは指定できません。

非ディスクリプタを使用する場合、Adabas では検索条件を満たすレコードを決定するのにファイル全体を読み込む必要があります。 ただし、ディスクリプタのみを使用した場合、インバーテッドリストが使用され、レコードを読み込む必要はありません。 非ディスクリプタを含む検索条件とディスクリプタを含む検索条件は、組み合わせることができます。

ディスクリプタフィールドを初期化せず、論理的に物理レコードの最後に存在している場合、そのレコードのインバーテッドリストエントリはパフォーマンスの理由から生成されません。したがって、そのレコードは検索できません。 このとき、インバーテッドリストエントリを生成するには、ファイルのアンロード、圧縮解除、再ロードを行います。あるいは、アプリケーションプログラムを使用してファイルのレコードごとにフィールドを初期化してください。

ディスクリプタが NU オプション(空値省略)と定義されている場合は、空値はインバーテッドリストに格納されません。したがって、空値をもつレコードに対し検索を実行すると、(データストレージの中に空値のディスクリプタをもつレコードがある場合でも)結果は検出レコードなしとなります。 この規則は、サブディスクリプタについても適用されます。 スーパーディスクリプタの場合は、スーパーディスクリプタを構成するフィールドのうち少なくとも 1 つのフィールドが NU オプションと定義され、かつそのフィールドが空値であると、スーパーディスクリプタ値は格納されません。

注意:
ラージオブジェクト(LB)フィールドをサーチバッファに指定することはできません。同じく、フォーマット選択条件に指定することもできません。

command-id

コマンド ID 値はカッコで囲みます。これは、前回 Sx コマンドで SAVE ISN LIST オプションを指定した結果生成された ISN リストを識別する値です。

i(オカレンスインデックス)

オカレンスインデックス( i )は、ピリオディックグループ内のディスクリプタまたは非ディスクリプタの特定のオカレンスを識別し、特定のオカレンスにある値のみを検索できるように制限するのに使用します。 インデックスを指定しないと、全オカレンスの値が検索の対象となります。

この場合、ピリオディックグループの全オカレンスの値が検索の対象となります。

S(シグニフィカンス)および空値インジケータ

SQL 空値圧縮オプション NC のあるフィールドの場合、S 空値インジケータを使用して "空値" か "空値でない" かを選択できます。空値インジケータの説明については、前述の「SQL 有意性(シグニフィカンス)インジケータおよび連続フィールドの指定」を参照してください。

注意:
NC オプションは、NU(空値省略)、FI(固定ストレージ)、MU(マルチプルバリュー)、または PE(ピリオディックグループ)を指定したフィールド、またはグループフィールドには適用できません。

SQL 有意性(シグニフィカンス)インジケータ(S)は、フィールド名の後に指定する必要があります(フィールド名 S)。また、対応する SQL 空値インジケータはバリューバッファに指定する必要があります。

検索引数として次の 16 進空値インジケータを使用できます。

X'FFFF' 空値を選択します。
0000 空値以外を選択します。

空値インジケータ値がこれ以外である場合は、Adabas レスポンスコード 52 が返されます。

空値インジケータ値(16 進の FFFF または 0000)は、長さが 2 バイトの標準長で、フォーマットが固定小数点となります。この長さとフォーマットは変更しないでください。

S インジケータとともに使用できる値演算子は等号(=)のみです。他の値演算子を使用すると、Adabas レスポンスコード 61 が返されます。

S 有意性演算子が、フィールド名 AA の検索引数に含まれています。

AAS.

FN フィールド値がパック + 1 で、かつ AA フィールドが空値(未定義)のレコードを選択します。

サーチバッファ
FN  , 2 , P , D ,  AAS.
検索引数
バリューバッファ
001F                FFFF
フィールド値の指定

注意:
インデックスには、無意味な空値は格納されません。 このため、空値を検索すると、アプリケーションプログラムのパフォーマンスが大幅に低下する場合があります。

FN フィールド値がパック + 1 で、かつ AA フィールドが空値以外のレコードを選択します。

サーチバッファ
FN  , 2 , P , D ,  AAS.
検索引数
バリューバッファ
001F               0000
フィールド値の指定
length

バリューバッファに指定するフィールド/ディスクリプタ値の長さ。 この長さを省略した場合、バリューバッファの値は、「許可されているデータ長とフォーマット」表に示すように、フィールド/ディスクリプタの標準長に準拠する必要があります。

format

バリューバッファに指定するフィールド/ディスクリプタ値のフォーマット。 このフォーマットを省略した場合、バリューバッファの値は、「許可されているデータ長とフォーマット」表に示すように、フィールド/ディスクリプタの標準のフォーマットに準拠する必要があります。

value-operator

値演算子は、先行するディスクリプタとバリューバッファ内の対応する値との間で行う論理演算を示します。

次の演算子を指定できます。

演算子 説明
EQ または = 等しい
GE より大きいまたは等しい
GT または > より大きい
LE より小さいまたは等しい
LT または < より小さい
NE 等しくない

値演算子を指定しないと、等しい(EQ)が指定されたものと見なされます。

次のサーチバッファの例は、値演算子の使用方法を示しています。

説明
AA. AA がバリューバッファ内の指定値と等しい(デフォルト)。
AA,LT. AA がバリューバッファ内の指定値より小さい。
AA,GE. AA がバリューバッファ内の指定値より大きいか等しい。

NE 演算子(NOT EQUAL TO)を使用した次のサーチバッファは、FN フィールドの値が "MIKE" でないレコードをすべて選択します。

サーチバッファ
FN,4,A,NE.
検索引数
バリューバッファ
MIKE
フィールド値の指定

この例の NE 演算子を EQ(等しい)に置き換えると、FN フィールドの値が

"MIKE" であるレコードのみが選択されます。

検索式の結合

結合演算子は、検索式を結合するのに使用します。 次の結合演算子が用意されています。

演算子 説明
D 2 つの検索式の結果を論理積(AND)演算で結合します。 例としては、次のようなものがあります。
AA,D,AB.
O 2 つの検索式の結果を論理和(OR)演算で結合します。 OR 演算は、同じディスクリプタを使用する検索式を結合する場合にのみ使用できます。 有効な例と無効な例は次のとおりです。

有効な例

AA,O,AA.

無効な例(指定した 2 つのディスクリプタが異なる)

AA,O,AB.
R さまざまなディスクリプタから生成された ISN リストを指すフィールドまたはコマンド ID を論理和(OR)演算で結合します。 例としては、次のようなものがあります。
AA,5,A,R,AB,LT.
S 2 つの検索式の FROM-TO 範囲(開始と終了も含めて)を示します。 2 つの式に同じディスクリプタを指定する必要があります。 有効な例と無効な例は次のとおりです。

有効な例

AA,S,AA.

無効な例(指定した 2 つのディスクリプタが異なる)

AA,S,AB. 
N 直前の FROM-TO 範囲から単一の値またはある範囲の値を除外します。 この演算子は必ず S 演算子とともに指定します。FROM-TO 範囲に指定するフィールドと同じフィールドに適用する必要があります。 フィネティックディスクリプタは指定できません。 以下に、有効な例と無効な例をいくつか示します。
  • 有効な例

    AA,S,AA,N,AA.

    無効な例(指定した 2 つのディスクリプタが異なる)

    AA,S,AA,N,AB.
  • 有効な例

    AA,S,AA,N,AA,S,AA.

    無効な例(指定した 2 つのディスクリプタが異なる)

    AA,S,AA,N,AA,S,AB.
    AA,S,AA,N,AA,N,AB.
Y D、O、R、S、N の検索式の結果を任意の数だけ論理積(AND)演算で結合します。 例としては、次のようなものがあります。
AA,D,AB,Y,AA,O,AA,Y,AA,S,AA,N,AA,S,AA.
Y 結合演算子はカッコのような働きをします。カッコのネストはサポートされておらず、単一レベルにのみ使用できます。 Y 結合演算子で結合される検索式はすべて、同一のファイルに適用する必要があります。

詳細な例については、「サーチ/バリューバッファの例」を参照してください。

サーチバッファ内の結合演算子の処理順

1 つのサーチバッファ内の引数に複数の結合演算子を指定した場合、結合演算子は次の順で処理されます。

  1. すべての S/N/O 演算子を評価します。

  2. すべての D 演算子を評価します。

  3. すべての R 演算子を評価します。

  4. すべての Y 演算子を評価します。

サーチバッファの指定内容

AA,S,AA,O,AA,D,AB,R,AC,D,AD.

処理される順番

( ( (AA,S,AA),O,AA),D,AB),R,(AC,D,AD)

サーチバッファの指定内容

AA,D,AB,Y,AA,O,AA,Y,AA,S,AA,N,AA,S,AA.

処理される順番

(AA,D,AB),Y,(AA,O,AA),Y,((AA,S,AA),N,(AA,S,AA))

1 ファイルの検索

単一ファイル検索に関するサーチバッファは次の構文にしたがいます。

search-expression [{,connecting-operator,search-expression}...] .

search-expressionの構文については、「検索式」を参照してください。 connecting-operatorの詳細については、「検索式の結合」を参照してください。

複数の物理カップリングファイルの検索

2 つ以上の物理カップリングファイルのフィールドを使用して、複数ファイル検索を行うサーチバッファの構文は、次のとおりです。

/file-x/search-expression[{,connecting-operator,search-expression}...] {,D,/file-y search-expression/[{,connecting-operator,search-expression}...]}... .

ここで、file-xfile-y には、物理カップリングファイルのファイル番号が入ります。 物理カップリングファイルを使用したサーチバッファ構文については、「物理カップリングファイル」を参照してください。 search-expression の構文については、「検索式」を参照してください。 connecting-operator の詳細については、「検索式の結合」を参照してください。

ソフトカップリングを使用した 1 つ以上のファイルの検索

ソフトカップリングを使用して検索を行うサーチバッファは、次の構文にしたがいます。

(m-file,m-field,s-file,s-field[{;m-file,m-field,s-file,s-field }...])/s-file-x/search-expression[{,connecting-operator,search-expression}... ] [{,D,/s-file-y/search-expression[{,connecting-operator,search-expression}...]}...] .

ここで、m-field s-file-xs-file-y には、ソフトカップリングファイルのファイル番号が入ります。

ソフトカップリングファイルを使用したサーチバッファ構文については、「ソフトカップリング」を参照してください。 search-expression の構文については、「検索式」を参照してください。 connecting-operator の詳細については、「検索式の結合」を参照してください。

Top of page

物理カップリングファイル

2 つ以上の物理カップリングファイルのフィールドを使用して、複数ファイル検索を行うサーチバッファの構文は、次のとおりです。

/file-x/search-expression[{,connecting-operator,search-expression}...] {,D,/file-y search-expression/[{,connecting-operator,search-expression}...]}... .

物理カップリングファイルの検索条件は任意の順序で指定できます。 実際に返される ISN の値は、Adabas コントロールブロックのファイル番号フィールドに指定したカップリングファイルのものであり、このファイルを "プライマリ" ファイルといいます。

この構文の各要素は次のとおりです。

file-x および file-y

物理カップリングファイルのファイル番号。 指定するファイルはすべて、ADAINV ユーティリティの COUPLE 機能を使用して、あらかじめカップリングしておく必要があります。 ファイル番号は各ファイルに対し 1 回だけ指定すればよく、 検索条件(1 つ以上の検索式と適切な結合演算子で構成)の直前に指定する必要があります。 物理カップリングファイルの単一のサーチバッファに最大 5(5)ファイルを指定できます。

D

物理カップリングファイルの検索条件間で許可されている結合演算子は、論理積(AND)の記号 D のみです。

search-expression

関連する物理カップリングファイルの検索式。 search-expression の構文については、「検索式」を参照してください。

connecting-operator

個々の物理カップリングファイルに対する検索条件の検索式をつなぐ結合演算子。 物理的にカップリングされたファイルの検索条件を結合する場合、結合演算子には "D"(AND)を使用する必要があります。個別ファイルを対象とする検索条件から構成される検索式を結合する場合、結合演算子には、「検索式の結合」で説明している演算子をすべて使用することができます。

ファイル 1 のレコードのうち、フィールド RB の値が ABCDE であるファイル 2 のレコードとカップリングされており、かつフィールド AB の値が 3 バイト(長さ指定)アンパック 10 進(フォーマット指定)の +20 であるレコードの ISN を検索します。なお、フィールド AB は 10 バイト標準長の英数字フォーマットです。

サーチバッファ
/1/AB,3,U,D,/2/RB.
検索引数
バリューバッファ character-notation
020ABCDEbbbbb
hex-notation
F0F2F0C1C2C3C4C54040404040
フィールド値の指定

Top of page

ソフトカップリング

ソフトカップリングを使用して検索を行うサーチバッファの構文は次のとおりです。

(m-file,m-field,s-file,s-field[{;m-file,m-field,s-file,s-field }...])/s-file-x/search-expression[{,connecting-operator,search-expression}... ] [{,D,/s-file-y/search-expression[{,connecting-operator,search-expression}...]}...] .

ソフトカップリング検索条件の例については、「サーチ/バリューバッファの例」の例 1518 を参照してください。

この構文の各要素は次のとおりです。

m-file,m-field

m-file には、主ファイルの番号を指定します。 このファイルは、Adabas コントロールブロックのファイル番号フィールドに指定されていなければなりません。 最終的に返される ISN 結果リストには、主ファイルにのみ存在する ISN が記載されます。

m-field には、ソフトカップリングのリンクフィールドとして使用される主ファイルのフィールドを指定します。 このフィールドは、ディスクリプタ、サブディスクリプタ、スーパーディスクリプタまたはハイパーディスクリプタでなければなりません。 ピリオディックグループ内のフィールドまたはロング英数字フィールドは指定できません。

m-filem-fields-files-field の指定を組み合わせたものが、単一のソフトカップリングとなります。 最大で 42 のソフトカップリング条件が指定できます。 ソフトカップリング全体を 1 組のかっこの中に指定する必要があります。

s-file, s-field

s-file には検索ファイルのファイル番号を指定し、s-field には検索ファイル内のフィールドを指定します。 (検索条件に従って)この検索ファイルから選択された ISN ごとに、s-field として指定したフィールドが読み込まれます。 このフィールド値は、主ファイルのどの ISN に一致する値があるかを判断するのに使用されます。

このフィールドは、ディスクリプタでも非ディスクリプタでもよく、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、ロング英数字フィールドであってもかまいません。 フォーマットは、対応する m-field フィールドのものと同じでなければなりません。 標準長は異なっていてもかまいません。 このフィールドはピリオディックグループに含まれていてはなりません。

m-filem-fields-files-field の指定を組み合わせたものが、単一のソフトカップリングとなります。 最大で 42 のソフトカップリング条件が指定できます。 ソフトカップリング全体を 1 組のかっこの中に指定する必要があります。

s-file-x および s-file-y

検索条件を指定するカップリングファイルのファイル番号。 ファイル番号は各ファイルに対し 1 回だけ指定すればよく、 検索条件(1 つ以上の検索式と適切な結合演算子で構成)の直前に指定する必要があります。 単一のサーチバッファに最大 5(5)ファイルを指定できます。

D

カップリングファイルの検索条件間で許可されている結合演算子は、論理積(AND)の記号 D のみです。

search-expression

関連するカップリングファイルの検索式。 search-expression の構文については、「検索式」を参照してください。

connecting-operator

個々のカップリングファイルに対する検索条件の検索式をつなぐ結合演算子。 物理的にカップリングされたファイルの検索条件を結合する場合、結合演算子には "D"(AND)を使用する必要があります。個別ファイルを対象とする検索条件から構成される検索式を結合する場合、結合演算子には、「検索式の結合」で説明している演算子をすべて使用することができます。

Top of page