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

L9 コマンド:ディスクリプタ値の読み込み

L9 コマンドは、指定のディスクリプタの値を読み込みます。

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


機能および使用

L9 コマンドは、ある範囲にあるディスクリプタの値とその値を持つレコード数を求めるために使用します。

ディスクリプタを持つファイル、値を取得するディスクリプタ、および処理の開始値を指定します。 各 L9 コールは、ディスクリプタの次の値をレコードバッファに返し、その値を持つレコード数を ISN 数フィールドに返します。 値は正である場合と負である場合があります。 空値省略(NU)オプションで定義されたディスクリプタの場合、空値は返されません。

マルチフェッチ/プリフェッチ オプションを使用すると、一度に複数のディスクリプタ値が読み込まれるため、パフォーマンスが向上します。 マルチフェッチを使用可能にするには、コマンドオプション 1 フィールドに "M" を指定します。 詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

コマンドオプション 2 フィールドに "I" を指定すると、各値の ISN がレコードバッファに返されます。 L9 コマンドは、アソシエータ内のインバーテッドリストだけを読み込みます。データストレージにはアクセスしません。

論理読み込み順を変更しなくても、コマンドオプション 2 で "A" または "D" を指定することによって、いつでも論理読み込み方向を昇順から降順に変更できます。 コマンドオプション 2 に A または D を選択した場合やサーチバッファとバリューバッファのオプションを選択した場合の結果については、「例 3 制御オプションの組み合わせ」を参照してください。 昇順および降順オプションは、マルチフェッチ処理ではサポートされていません。

Top of page

ACB インターフェイスダイレクトコール:L9 コマンド

このセクションでは、L9 コマンドの ACB インターフェイスダイレクトコールについて説明します。 本書には、次のトピックが含まれています。

コントロールブロックとバッファの概要

コントロールブロック

ダイレクトコールが開始される前に、未使用の ACB フィールドにバイナリの 0 を設定することをお勧めします。

フィールド 位置 フォーマット Adabas コール前 Adabas コール後
  1~2 -- -- --
コマンドコード 3~4 英数字 F U
コマンド ID 5~8 英数字 F U
ファイル番号 9~10 バイナリ F U
レスポンスコード 11~12 バイナリ -- A
ISN 13~16 バイナリ -- A
ISN 下限 17~20 バイナリ F A
ISN 数 21~24 バイナリ -- A
フォーマットバッファ長 25~26 バイナリ F U
レコードバッファ長 27~28 バイナリ F U
サーチバッファ長 29‐30 バイナリ F U
バリューバッファ長 31‐32 バイナリ F U
ISN バッファ長* 33~34 バイナリ F U
コマンドオプション 1 35 英数字 F U
コマンドオプション 2 36 英数字 F U
アディション 1 37~44 英数字 F U
アディション 2 45~48 バイナリ -- A
アディション 3 49~56 英数字 F A
  57~64 -- -- --
アディション 5 65~72 英数字 F U
コマンドタイム 73~76 バイナリ -- A
ユーザーエリア 77~80 -- -- U

バッファエリア

バッファ Adabas コール前 Adabas コール後
フォーマット F U
レコード -- A
サーチ F U
バリュー F U
ISN * -- A

上記の意味は次に示すとおりです。

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* ISN バッファおよび長さは、マルチフェッチオプションまたはプリフェッチオプションを指定した場合にのみ必須です。
-- 未使用

コントロールブロックフィールドの説明

ダイレクトコールが開始される前に、未使用の ACB フィールドにバイナリの 0 を設定することをお勧めします。

コマンドコード(ACBCMD)

L9

コマンド ID(ACBCID)

このフィールドには、空白およびゼロを除く値を指定する必要があります。 この値は、Adabas が正しい順序で値を返し、フォーマットバッファを繰り返し解釈するのを避けるために使用されます。

このフィールドは、ファイルの順次読み込み中に変更しないでください。

このフィールドの第 1 バイトには 16 進数 'FF' にセットしないでください。

ファイル番号(ACBFNR)

読み込むファイルの番号を 2 進数で指定します。 物理ダイレクトコールの場合は、次のようファイル番号を指定します。

注意:
2 バイトファイル番号およびデータベース ID を使用する場合は、コントロールブロックの先頭バイトに X'30' を入力しなければなりません。

レスポンスコード(ACBRSP)

Adabas はこのフィールドに、コマンドのレスポンスコードを返します。 レスポンスコード 0 は、このコマンドが正しく実行されたことを示します。 ゼロ以外のレスポンスコードは、アディション 2 フィールドの下位 2 バイトにサブコードを伴う場合があります。詳細は『Adabas メッセージおよびコード』を参照してください。

レスポンスコード 3 は、エンドオブファイル条件が検出されたことを示します。

ISN:ピリオディックグループのオカレンス(ACBISN)

値を求めたいディスクリプタがピリオディックグループに属する場合、このフィールドには、求められた値が見つかったオカレンス番号が返されます。 オカレンス番号は下位 2 バイトにバイナリ形式で返されます。

プリフェッチオプションを指定した場合、プリフェッチした値のオカレンスは ISN バッファ値の先頭のヘッダーに返されます。

ISN 下限:レコードバッファで最小の ISN(ACBISL)

このフィールドに返される値は次のとおりです。

コマンドオプション 1 コマンドオプション 2 L9 コマンドの処理内容
空白 I 各値の ISN がレコードバッファに返されます。ISN 下限フィールドには、値は返されません。
I が設定されていない 返された ISN リストの先頭の ISN 番号が ISN 下限フィールドに入ります。
P(プリフェッチ) I 先頭の ISN 番号がレコードバッファに返されます。プリフェッチされたすべてのディスクリプタ値は、先頭に 16 バイトのヘッダーが付いて ISN バッファに返されます。ISN 下限フィールドには値は返されません。
I が設定されていない プリフェッチされた最後の値の先頭の ISN 番号が ISN 下限フィールドに入ります。
M(マルチフェッチ) I マルチフェッチされたレコードのグループがレコードバッファに返されます。このレコードの記述は呼び出し元の ISN バッファに返されます。ISN 下限フィールドには値は返されません。
I が設定されていない マルチフェッチされた最後の値の先頭の ISN 番号が ISN 下限フィールドに入ります。

コマンドオプション 1 が "M"(マルチフェッチオプション)に設定されている場合、次の設定を行うことができます。

詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

ISN 数:レコード件数(ACBISQ)

コマンドオプション 2 に RETURN ISN オプション(I)を指定した場合を除き、このフィールドにはレコードバッファに返された値を持つレコード数が返されます。

プリフェッチオプションを指定した場合、プリフェッチした値の数は ISN バッファ値の先頭のヘッダーに返されます。

フォーマットバッファ長(ACBFBL)

フォーマットバッファ長(バイト単位)。 ユーザープログラムで定義するフォーマットバッファエリアは、この指定長と同じか、それ以上でなければなりません。

レコードバッファ長(ACBRBL)

レコードバッファ長(バイト単位)。 ユーザープログラムで定義するレコードバッファエリアは、この指定長と同じか、それ以上でなければなりません。

サーチバッファ長(ACBSBL)

サーチバッファ長(バイト単位)。 ユーザープログラムで定義するサーチバッファエリアは、この指定長と同じか、それ以上でなければなりません。

バリューバッファ長(ACBVBL)

バリューバッファ長(バイト単位)。 ユーザープログラムで定義するバリューバッファエリアは、この指定長と同じか、それ以上でなければなりません。

ISN バッファ長:コマンドレベルのマルチフェッチ/プリフェッチオプションのみ(ACBIBL)

ISN バッファ長(バイト単位)。

コマンドオプション 1 フィールドに "P" が設定されている場合は、L9 コマンドでは ISN バッファを使用して、プリフェッチしたディスクリプタ値を保持します。 ISN バッファは、最大ディスクリプタ値に、各値の先頭 16 バイトのヘッダーを加えた大きさ以上にする必要があります。 ユーザープログラムで定義する実際の ISN バッファエリアは、この指定長と同じか、それ以上でなければなりません。

コマンドオプション 1:コマンドレベルのマルチフェッチ/プリフェッチ オプション(ACBCOP1)

このうちのいずれかのオプションを指定すると、(コマンドレベルの)プリフェッチオプションまたはマルチフェッチオプションが使用されます。 マルチフェッチ/プリフェッチ オプションを使用すると、同時に複数のディスクリプタ値を読み込み、単一レコードをフェッチする時間が必要なくなるため、パフォーマンスを向上させることができます。 詳細は「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

オプション 説明
M(マルチフェッチ) マルチフェッチ処理が有効です。

このオプションと組み合わせて、次の設定を行うことができます。

  • ISN 下限フィールドにゼロ以外の値を設定すると、マルチフェッチする値の数を制限できます。

  • すべての値をマルチフェッチする場合は、ISN 下限フィールドにゼロを指定します。 M オプションが指定された ISN バッファのデータフォーマットには、レコードディスクリプタの標準フォーマットが反映されます。

P(プリフェッチ) プリフェッチ処理が有効です。

M または P オプションが指定されている場合、L9 コマンドでは、プリフェッチまたはマルチフェッチしたすべてのディスクリプタ値の先頭に 16 バイトのヘッダーを付け、ISN バッファに格納します。 ISN バッファは、一番大きなディスクリプタ値に 16 バイトを加えた大きさを格納できる必要があります。 ユーザープログラムの ISN バッファエリアは、指定された ISN バッファ長と等しいか、それ以上である必要があります。

コマンドオプション 2:RETURN ISN オプション(ACBCOP2)
オプション 説明
I Adabas は、値自体の他、各値の ISN もレコードバッファに格納します。 L9 コマンドは、アソシエータ内のインバーテッドリストだけを読み込みます。データストレージにはアクセスしません。
A ディスクリプタのエントリを昇順に処理します。
D ディスクリプタのエントリを降順に処理します。
アディション 1:ディスクリプタ名(ACBADD1)

サーチバッファ長およびバリューバッファ長の両方にゼロが指定されている場合、アディション 1 フィールドの値は、値を求めるディスクリプタの名前になります。 この名前は、フォーマットバッファで指定したディスクリプタ名と同じでなければなりません。

この場合、L9 は指定されたディスクリプタのすべての値をファイルの始めから処理します。

ディスクリプタ名は、このフィールドの先頭 2 桁に指定します。 残りの桁は空白にしなければなりません。

アディション 2:レスポンスサブコード(ACBADD2)

L9 コマンドによってゼロ以外のレスポンスコードが返された場合、このフィールドの下位 2 バイトにレスポンスコードの正確な意味を定義したサブコードが含まれていることがあります。 レスポンスコードとサブコードについては、『Adabas メッセージおよびコード』を参照してください。

アディション 3:パスワード(ACBADD3)

このフィールドは、Adabas Security または ADAESI パスワードを指定するため使用します。 データベース、ファイル、またはフィールドがセキュリティ保護されている場合は、有効なセキュリティパスワードまたは ADAESI パスワードをユーザーは指定する必要があります。 パスワードを保護するために、コマンド処理時にアディション 3 フィールドに空白がセットされます。

アディション 5:フォーマット ID、グローバルフォーマット ID(ACBADD5)

このコマンド用の内部フォーマットバッファを識別する別のフォーマット ID を表示したり、全ユーザーが内部フォーマットバッファを使用できるようにグローバルフォーマット ID を表示したりします。

アディション 5 フィールドの左端のビットに 0 が指定されていると、コマンド ID フィールドに指定された値がフォーマット ID として使用されます。

このビットに 1 がセットされていると、アディション 5 フィールドの 5 バイト目から 8 バイト目までがフォーマット ID として使用されます。

さらに、アディション 5 フィールドの第 1 バイトの最上位(左端)2 ビットに、1(B'11')がセットされると、アディション 5 フィールドの全 8 バイトが、グローバルフォーマット ID として使用されます(つまり、複数ユーザーがこのフォーマット ID を同時に使用できます)。

詳細と例については、「コマンド ID、フォーマット ID、グローバルフォーマット ID」を参照してください。

ACB の例

例 1

ファイル 2 内のディスクリプタ RB の全値を返します。

コントロールブロック

コマンドコード L9  
コマンド ID L901 空白でないコマンド ID を要求
ファイル番号 2  
フォーマットバッファ長 3 またはそれ以上
レコードバッファ長 10 またはそれ以上
サーチバッファ長 5 またはそれ以上
バリューバッファ長 1 またはそれ以上
アディション 3 パスワード ファイル 2 はセキュリティ保護されています。

バッファエリア

フォーマットバッファ RB. 値は標準の長さおよびフォーマットで返されます。
サーチバッファ RB,1. ディスクリプタ RB の値が返され、開始値は標準フォーマットと長さ 1 で指定されます。
バリューバッファ b 処理は RB の最初の値が b またはそれ以上の場合に始まります。

各 L9 コールで次の値を受け取ります(値は昇順で与えられます)。 この値を持つレコードの数は ISN 数フィールドに返されます。

例 2

ファイル 1 内のディスクリプタ AB の値を返します。 20 以上の値だけを返すこととします。

コントロールブロック

コマンドコード L9  
コマンド ID L902 空白でないコマンド ID を要求
ファイル番号 1  
フォーマットバッファ長 7 またはそれ以上
レコードバッファ長 3 またはそれ以上
サーチバッファ長 7 またはそれ以上
バリューバッファ長 2 またはそれ以上
アディション 3 bbbbbbbb(空白) ファイル 1 はセキュリティ保護されていません

バッファエリア

フォーマットバッファ AB,3,U. 値は長さ = 3、フォーマット = アンパックで返されます。
サーチバッファ AB,2,U. ディスクリプタ AB の値が返され、開始値は 2 バイトのアンバック数字で指定されます。
バリューバッファ X'F2F0' 処理は AB の最初の値が 20 またはそれ以上の場合に始まります。

例 3:制御オプションの組み合わせ

下表は、ASCENDING/DESCENDING オプションと、サーチバッファおよびバリューバッファの各設定の組み合わせ例を示しています。 これらの例は、ファイルが読み込まれている場合に適用されます。

L9 Command Search and Value Buffer Sequence Options

順序オプションの概要

Top of page

ACBX インターフェイスダイレクトコール:L9 コマンド

このセクションでは、L9 コマンドの ACBX インターフェイスダイレクトコールについて説明します。 本書には、次のトピックが含まれています。

コントロールブロックとバッファの概要

コントロールブロック

ダイレクトコールが開始される前に、未使用の ACBX フィールドにバイナリの 0 を設定することをお勧めします。

フィールド 位置 フォーマット Adabas コール前 Adabas コール後
  1~2 --- --- ---
バージョンインジケータ 3~4 バイナリ F U
  5~6 --- --- ---
コマンドコード 7~8 英数字 F U
  9~10 --- --- ---
レスポンスコード 11~12 バイナリ --- A
コマンド ID 13~16 英数字/バイナリ F U
データベース ID 17~20 数値 F U
ファイル番号 21~24 数値 F U
  25~28 --- --- ---
ISN 29~32 バイナリ --- A
  33~36 --- --- ---
ISN 下限 37~40 バイナリ F A
  41~44 --- --- ---
ISN 数 45~48 バイナリ --- A
コマンドオプション 1 49 英数字 F U
コマンドオプション 2 50 英数字 F U
  51~56 --- --- ---
アディション 1 57~64 英数字/バイナリ F U
--- 65~68 --- --- ---
アディション 3 69~76 英数字/バイナリ F A
  77~84 --- --- ---
アディション 5 85~92 英数字/バイナリ F U
  93~114 --- --- ---
エラーサブコード 115~116 バイナリ --- A
  117~144 --- --- ---
コマンドタイム 145~152 バイナリ --- A
ユーザーエリア 153~168 該当なし --- U
--- 169~193 操作不可 --- ---

ABD とバッファ

ABD とバッファ Adabas コール前 Adabas コール後
フォーマット F U
レコード --- A
サーチ F U
バリュー F U
マルチフェッチ * --- A

上記の意味は次に示すとおりです。

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* マルチフェッチバッファは、マルチフェッチオプションを指定した場合にのみ必須です。
--- 未使用

コントロールブロックフィールドの説明

ダイレクトコールが開始される前に、未使用の ACBX フィールドにバイナリの 0 を設定することをお勧めします。

バージョンインジケータ(ACBXVER)

F2

コマンドコード(ACBXCMD)

L9

レスポンスコード(ACBXRSP)

Adabas はこのフィールドに、コマンドのレスポンスコードを返します。 レスポンスコード 0 は、このコマンドが正しく実行されたことを示します。 ゼロ以外のレスポンスコードは、エラーサブコード(ACBXERRC)フィールドにサブコードを伴う場合があります。詳細は、Adabas メッセージおよびコード のドキュメントを参照してください。

レスポンスコード 3 は、エンドオブファイル条件が検出されたことを示します。

コマンド ID(ACBXCID)

このフィールドには、空白およびゼロを除く値を指定する必要があります。 この値は、Adabas が正しい順序で値を返し、フォーマットバッファを繰り返し解釈するのを避けるために使用されます。

このフィールドは、ファイルの順次読み込み中に変更しないでください。

このフィールドの第 1 バイトには 16 進数 'FF' にセットしないでください。

データベース ID(ACBXDBID)

このフィールドを使用して、データベース ID を指定します。 Adabas コールはこのデータベースに送られます。

このフィールドは 4 バイトのバイナリフィールドですが、現時点では 2 バイトのデータベース ID のみがサポートされています。 したがって、データベース ID はフィールドの下位部分(右端のバイト)に指定し、その前にバイナリの 0 を付加する必要があります。

このフィールドがバイナリの 0 に設定されている場合は、Adabas API は DDCARD 入力データで指定された ADARUN カードのデータベース ID か、リンクされているかリンクルーチンによりロードされた LNKGBLS モジュールで指定されているデフォルトのデータベース ID 値のいずれかを使用します。

ファイル番号(ACBXFNR)

このフィールドを使用して、Adabas コールで送る必要のあるファイル数を指定します。

このフィールドは 4 バイトのバイナリフィールドですが、ファイル番号はフィールドの下位部分(右端のバイト)に指定し、その前にバイナリの 0 を付加する必要があります。

ISN:ピリオディックグループのオカレンス(ACBXISN)

値を求めたいディスクリプタがピリオディックグループに属する場合、このフィールドには、求められた値が見つかったオカレンス番号が返されます。 オカレンス番号は下位 2 バイトにバイナリ形式で返されます。

プリフェッチオプションを指定した場合、プリフェッチした値のオカレンスは ISN バッファ値の先頭のヘッダーに返されます。

ISN 下限:レコードバッファで最小の ISN(ACBXISL)

このフィールドに返される値は次のとおりです。

コマンドオプション 1 コマンドオプション 2 L9 コマンドの処理内容
空白 I 各値の ISN がレコードバッファに返されます。ISN 下限フィールドには、値は返されません。
I が設定されていない 返された ISN リストの先頭の ISN 番号が ISN 下限フィールドに入ります。
P(プリフェッチ) I 先頭の ISN 番号がレコードバッファに返されます。プリフェッチされたすべてのディスクリプタ値は、先頭に 16 バイトのヘッダーが付いて ISN バッファに返されます。ISN 下限フィールドには値は返されません。
I が設定されていない プリフェッチされた最後の値の先頭の ISN 番号が ISN 下限フィールドに入ります。
M(マルチフェッチ) I マルチフェッチされたレコードのグループがレコードバッファに返されます。このレコードの記述は呼び出し元の ISN バッファに返されます。ISN 下限フィールドには値は返されません。
I が設定されていない マルチフェッチされた最後の値の先頭の ISN 番号が ISN 下限フィールドに入ります。

コマンドオプション 1 が "M"(マルチフェッチオプション)に設定されている場合、次の設定を行うことができます。

詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

ACBXISL フィールドは、8 バイトの ACBXISLG フィールドに埋め込まれた 4 バイトのバイナリフィールドで、まだ使用されていません。 ACBXISLG フィールドの上位部分には、バイナリの 0 を設定します。

ISN 数:レコード件数(ACBXISQ)

"RETURN ISN"(コマンドオプション I)を指定した場合を除いて、このフィールドにはレコードバッファに返された値を持つレコード数が返されます。

プリフェッチオプションを指定した場合、プリフェッチした値の数は ISN バッファ値の先頭のヘッダーに返されます。

コマンドオプション 1:コマンドレベルのマルチフェッチ/プリフェッチ オプション(ACBXCOP1)

このフィールドに M オプションを指定すると、(コマンドレベルの)マルチフェッチオプションが使用されることになります。 マルチフェッチオプションを使用すると、同時に複数のディスクリプタ値を読み込み、単一レコードをフェッチする時間が必要なくなるため、パフォーマンスを高めることができます。 詳細は「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

オプション 説明
M(マルチフェッチ) マルチフェッチ処理が有効です。

このオプションと組み合わせて、次の設定を行うことができます。

  • ISN 下限フィールドにゼロ以外の値を設定すると、マルチフェッチする値の数を制限できます。

  • すべての値をマルチフェッチする場合は、ISN 下限フィールドにゼロを指定します。 M を指定すると、ISN バッファのデータフォーマットはレコードディスクリプタの標準フォーマットに合わされます。

M オプションが指定されている場合、L9 コマンドでは、マルチフェッチしたすべてのディスクリプタ値の先頭に 16 バイトのヘッダーを付け、マルチフェッチバッファに格納します。 マルチフェッチバッファは、一番大きなディスクリプタ値に 16 バイトを加えた大きさを格納できる必要があります。 ユーザープログラムに定義する実際のマルチフェッチバッファエリアは、対応するマルチフェッチバッファ ABD に指定されているマルチフェッチバッファの長さ以上の大きさである必要があります。

コマンドオプション 2:RETURN ISN オプション(ACBXCOP2)
オプション 説明
I 各値の ISN リストをレコードバッファに返します。 L9 コマンドは、アソシエータ内のインバーテッドリストだけを読み込みます。データストレージにはアクセスしません。
A ディスクリプタのエントリを昇順に処理します。
D ディスクリプタのエントリを降順に処理します。
アディション 1:ディスクリプタ名(ACBXADD1)

サーチバッファ長およびバリューバッファ長の両方にゼロが指定されている場合、アディション 1 フィールドの値は、値を求めるディスクリプタの名前になります。 この名前は、フォーマットバッファで指定したディスクリプタ名と同じでなければなりません。

この場合、L9 は指定されたディスクリプタのすべての値をファイルの始めから処理します。

ディスクリプタ名は、このフィールドの先頭 2 桁に指定します。 残りの桁は空白にしなければなりません。

アディション 3:パスワード(ACBXADD3)

このフィールドは、Adabas Security または ADAESI パスワードを指定するため使用します。 データベース、ファイル、またはフィールドがセキュリティ保護されている場合は、有効なセキュリティパスワードまたは ADAESI パスワードをユーザーは指定する必要があります。 パスワードを保護するために、コマンド処理時にアディション 3 フィールドに空白がセットされます。

アディション 5:フォーマット ID、グローバルフォーマット ID(ACBXADD5)

このコマンド用の内部フォーマットバッファを識別する別のフォーマット ID を表示したり、全ユーザーが内部フォーマットバッファを使用できるようにグローバルフォーマット ID を表示したりします。

アディション 5 フィールドの左端のビットに 0 が指定されていると、コマンド ID フィールドに指定された値がフォーマット ID として使用されます。

このビットに 1 がセットされていると、アディション 5 フィールドの 5 バイト目から 8 バイト目までがフォーマット ID として使用されます。

さらに、アディション 5 フィールドの第 1 バイトの最上位(左端)2 ビットに、1(B'11')がセットされると、アディション 5 フィールドの全 8 バイトが、グローバルフォーマット ID として使用されます(つまり、複数ユーザーがこのフォーマット ID を同時に使用できます)。

詳細と例については、「コマンド ID、フォーマット ID、グローバルフォーマット ID」を参照してください。

エラーサブコード(ACBXERRC)

コマンドがゼロ以外のレスポンスコードを返したときは、このフィールドにレスポンスコードの正確な意味を定義したサブコードが含まれます。 レスポンスコードとサブコードについては、『Adabas メッセージおよびコード』を参照してください。

Top of page

バッファ

L9 コマンドには、次のバッファが適用されます。

フォーマットバッファ

注意:
フォーマットバッファではエレメントをコンマで区切り、ピリオドで終了します。 フォーマットバッファの形式の詳細については、「フォーマットバッファ」を参照してください。

取得する値を返すときの形式をこのバッファに指定しなければなりません。

L9 操作のフォーマットバッファの形式は次のとおりです。

name  [ ,length ]  [ ,format ] .

上記の意味は次に示すとおりです。

name 値を求めるディスクリプタの名前。 フォネティックディスクリプタとハイパーディスクリプタは指定できません。 ユーザー出口で DECODE オプションを指定している場合に使用できるのは、照合ディスクリプタのみです。この場合に返される値は、インデックスではなく元のフィールド値です。 マルティプルバリューフィールドとして定義したサブディスクリプタ、スーパーディスクリプタ、およびディスクリプタを指定できます。
length 取得する値の長さを指定します。 長さを指定しないと、値はディスクリプタの標準長で返されます。
format 取得する値のフォーマットを指定します。 指定したフォーマットは、ディスクリプタの標準フォーマットとの互換性が必要です。 フォーマットを指定しない場合、値はディスクリプタの標準フォーマットで返されます。

レコードバッファ

サーチバッファおよびバリューバッファに指定したディスクリプタ値がこのフィールドに返されます。 L9 コールごとに別の値が返されます。 ディスクリプタに空値省略オプションが定義されていると、ディスクリプタ値が空値の場合は返されません。 コマンドオプション 2 フィールドに "I" を設定した場合、要求した値自体の他、その値がある ISN のリストもレコードバッファに返されます。 また、ISN は昇順で返されます。

ディスクリプタ値は次の形式で返されます。

length  value  count  ISN-list

上記の意味は次に示すとおりです。

length 1 バイトのバイナリ値(返される値の長さ)。 ディスクリプタのタイプに応じた標準長である場合、このフィールドは 0 になります。
value ディスクリプタ値
count 指定したディスクリプタのファイルに存在する値の数。 この数は 1 または 2 バイトで返されます。 1 バイトの場合、フォーマットは X'cc' で、cc には個数が入ります。2 バイトの場合、フォーマットは X'8ccc' で、ccc には個数が入ります。
ISN-list コマンドオプション 2 フィールドに I を設定した場合、この値があるレコードの ISN がレコードバッファの残部に返されます。 1 つのレコードバッファには、1 つの NI(ノーマルインデックス)ブロックの ISN リストが返されます。 このため、次のようになります。
  • レコードバッファは、NI ブロック全体を格納するのにに十分な大きさである必要があります。

  • 同一値が昇順 ISN リストに複数現れる場合があります。

サーチバッファ

注意:
サーチバッファでは要素をコンマで区切り、ピリオドで終了します。 サーチバッファの形式の詳細については、「サーチバッファ」を参照してください。

サーチバッファ長およびバリューバッファ長の両方にゼロが指定されている場合、アディション 1 フィールドの値は、値を求めるディスクリプタの名前になります。 この場合、L9 は指定されたディスクリプタのすべての値をファイルの始めから処理します。 サーチバッファとバリューバッファは使用されません。

開始値、終了値、あるいはその両方をバリューバッファに指定する場合、検索するディスクリプタエントリ数を制限するためにサーチバッファが必要です。

バリューバッファに指定したディスクリプタ値の長さおよびフォーマットが、指定ディスクリプタの標準長およびフォーマットと異なる場合には、これらをサーチバッファに指定しなければなりません。

バリューバッファに 1 つの値(つまり、コマンドオプション 2 に A を指定した場合には開始値、D を指定した場合には終了値)を与えるとき、サーチバッファの構文は次のとおりです。

name [ i ]  [ ,length ]  [ ,format ] [ ,comparator ]

バリューバッファに 2 つの値(つまり、開始値と終了値)を与えるとき、サーチバッファの構文は次のとおりです。

name [ i ]  [ ,length ] [ ,format ]  ,S  ,name  [ ,length ] [ ,format]

ここで、サーチバッファのエレメントは次のとおりです。

name 値を求めるディスクリプタの名前。 フォーマットバッファで指定した名前と同じ名前である必要があります。
i ディスクリプタがピリオディックグループに属し、特定のオカレンス値だけを求める場合は、オカレンス番号の 1 桁から 3 桁のインデックスをディスクリプタ名に指定します。
length バリューバッファに指定した値の長さ。 長さを指定しない場合、ディスクリプタの標準長に応じて値が指定されます。 指定可能な長さに関するページを参照してください。
format バリューバッファに指定した値のフォーマット。 フォーマットを指定しない場合、ディスクリプタの標準フォーマットに応じて値が指定されます。 指定可能なフォーマットに関するページを参照してください。
comparator 読み込み範囲。
GE 値範囲の中の最大値よりも大きいか等しい(デフォルト)。
GT 値範囲の中の最大値よりも大きい。
LE 値範囲の中の最小値よりも小さいか等しい。
LT 値範囲の中の最小値よりも小さい。
S 2 つの検索式を使って開始-終了の範囲を示します。 2 つの式に同じディスクリプタを指定する必要があります。
AA,S,AA. 有効
AA,S,AB. 無効

バリューバッファ

サーチバッファ長とバリューバッファ長のどちらもバイナリの 0 に設定した場合、アディション 1 フィールドの値は、値を取得するディスクリプタの名前になります。 この場合、L9 は指定されたディスクリプタのすべての値を、コマンドオプション 2 フィールドで指定した順序で処理します。順序は、A オプションを指定した場合にはファイルの始めから、D オプションを指定した場合には終わりからになります。 サーチバッファとバリューバッファは使用されません。

開始値、終了値、あるいはその両方をバリューバッファに指定する場合、検索するディスクリプタエントリ数を制限するためにサーチバッファが必要です。

バリューバッファに与えた値が 1 つで、サーチバッファの比較演算子を GE か GT にすると、その値はコマンドオプション 2 が A の場合は開始値、D の場合は終了値になります。

バリューバッファに 2 つの値が指定されている場合、1 つ目の値は範囲の下限値、2 つ目の値は上限値を示します。 各値が開始値であるか終了値であるかは、コマンドオプション 2 での指定が A か D かによって決まります。

指定値がファイル内に存在しないと、コマンドオプション 2 の設定が A か D かによって、Adabas は次に高い値か低い値を探します。 この場合、サーチバッファ比較演算子 LE と GE はそれぞれ LT と GT と同じになります。 指定値も存在せず、より高い(または低い)値も存在しない場合は、レスポンスコード 3 が返されます。

ISN バッファ

コマンドレベルのマルチフェッチオプションを使用する場合と、このコマンドを ACB ダイレクトコールインターフェイスから発行する場合にのみ、ISN バッファが使用されます。 L9 コマンドの実行後に ISN バッファに保持される情報は、コマンドオプション 1 フィールドに M(マルチフェッチ)または P(プリフェッチ)オプションを指定した結果となります。 ISN バッファのデータフォーマットは、指定したオプションに応じて異なります。

マルチフェッチオプション(M)のデータフォーマット

レコードディスクリプタのデータフォーマットについては、「READ(Lx)コマンドのマルチフェッチ 処理」セクションを参照してください。

プリフェッチオプション(P)のデータフォーマット

注意:
プリフェッチオプションは、ACB インターフェイスダイレクトコールでのみ有効です。

ISN バッファには、プリフェッチオプションでプリフェッチしたディスクリプタ値(16 バイトのヘッダー付き)が保持されます。 各値の先頭にある 16 バイトのヘッダーのフォーマットは次のとおりです。

バイト 使用方法
1~2 ディスクリプタの長さ(このヘッダーを含む)
3~4 ニュークリアスレスポンスコード
5~8 ニュークリアス内部 ID
9~12 ピリオディックグループオカレンス(ISN フィールドの説明参照)
13~16 レコード数(ISN 数フィールドの説明参照)

マルチフェッチバッファ

コマンドレベルのマルチフェッチオプションを使用する場合と、このコマンドを ACBX ダイレクトコールインターフェイスから発行する場合にのみ、マルチフェッチバッファが使用されます。 レコードディスクリプタのデータフォーマットについては、「READ(Lx)コマンドのマルチフェッチ 処理」セクションを参照してください。 詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

Top of page

その他の考慮事項

L9 コマンドを使用するときには、次の事項を考慮する必要があります。

  1. L9 コマンドで使用したコマンド ID は、Adabas により内部的に保存および使用されます。 この ID は、エンドオブファイル条件が検出されるか、RC コマンドか CL コマンドが発行されるか、Adabas セッションが終了したときに解放されます。 コマンド ID は、解放されるまで、別のコマンドには使用できません。

  2. L9 コマンドを使用して読み込んでいるファイルを他のユーザーが更新している場合は、L9 コマンドでそのファイルを読み込んでも、レコードが返されないことがあります。

  3. L9 コマンドを使用して読み込んでいるファイルに対して、レコードを更新および削除できます。 Adabas は L9 コマンドで返した最終値と次に返す値を保存し、コール間で更新または削除が行われても正しく次の値を返します。 ただし、L9 コマンドでアクセスされるレコードはいくつかの理由(例えば、他のユーザーが更新または削除した場合)により変更された場合、L9 コマンドでは変更がなかったかのように処理を続行します。 つまり、インバーテッドリストのエントリにアクセスする直前に他のコマンドでレコードが削除されても、L9 コマンドではそのレコードがまだ有効なエントリであるとみなされます。

  4. L9 コマンドで使用する内部フォーマットバッファは、先の L9 コマンドが作成したものである必要があります。 L9 以外のコマンドは、L9 コマンドで作成された内部フォーマットバッファを使用できません。

Top of page