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

L3/L6 コマンド:論理順に読み込み

L3 コマンドと L6 コマンドは、指定のディスクリプタの値の順番に従ってファイルを論理順に読み込むのに使用します。

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


機能および使用

次の情報を指定します。

各 L3 コマンドまたは L6 コマンドは、あるレコードの 1 つ以上のフィールドに対して要求された値をレコードバッファに返します。 コマンドを繰り返すと、各フィールドの値が検索ディスクリプタ値の順に返されます。

昇順および降順オプションを使用すると、レコードを昇順または降順に読み込むことを指定できます。 昇順、降順、および開始値オプションを使用すると、順次読み込みを開始する前または順次読み込みの間に、指定された値への位置付けを行うことができます。 これにより、レコードを 1 つずつ読み込むことなく、ファイル内の特定のレコードへの位置付けを行うことができます。

マルチフェッチ/プリフェッチ オプションを指定すると、1 つ以上のシーケンシャルレコードへの事前アクセスが可能になるため、処理全体の時間が短縮され、単一レコードをフェッチする時間が必要なくなります。 マルチフェッチおよびプリフェッチを使用可能にするには、コマンドオプション 1 フィールドに "M" または "O"(マルチフェッチ)を指定します。 詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

フォーマットバッファに "C." があると、読み込んだ各レコードのフィールド値が圧縮形式で返されます。それ以外の場合は非圧縮形式で返されます。

L3 コマンドの処理では、内部テーブル(シーケンシャルコマンドのテーブル)を使用して、最後に返された値および ISN の情報が保持されます。 標準ファイルと拡張ファイルでは操作方法が異なり、パフォーマンスの理由から、それぞれの値および ISN はテーブル内で処理が異なります。 特に、標準ファイルのエントリは、最後のコールで返された値および ISN を保持します。 拡張ファイルのエントリは、次のコールでアプリケーションに返す必要のある値および ISN を保持します。 つまり、標準ファイルに対して更新が同時に発生した場合は、最後に挿入された値/ISN が最後に返された値/ISN と同じかまたはそれ以上である限り、最後に挿入された値と ISN の組合わせが L3 コマンドによって返されます。 拡張ファイルに対して更新が同時に発生した場合は、最後に挿入された値/ISN が、次に返される値/ISN としてシーケンシャルコマンドのテーブルのエントリに保存されている値と同じかまたはそれ以上である限り、最後に挿入された値と ISN の組合わせが L3 コマンドによって返されます。

L6 コマンドは L3 コマンドと同じ機能を持ちます。ただし、各レコードをホールド状態にします。 読み込んでホールドしようとしているレコードが現在他のユーザーによってホールドされている場合、レコードが使用可能になるか、または操作タイムアウトが発生するまで、読み込み操作は停止し、ユーザーは待機状態になります。 コマンドオプション 1 フィールドが "O" または "R" で、要求したレコードがすでにホールドされている場合、L6 コマンドによってレスポンスコード 145 が返されます。

特定の値への再位置決め

順番制御ディスクリプタの開始値を指定する方法については、「ACB インターフェイスダイレクトコール:L3 コマンドおよび L6 コマンド」または「ACBX インターフェイスダイレクトコール:L3 コマンドおよび L6 コマンド」の「ISN:開始 ISN/レコード読み込み ISN オプション」で ISN コントロールブロックフィールドの説明を参照してください。 順次読み込み中に特定の値に再位置決めを行うには、次の手順に従います。

  1. アディション 1 フィールド(順次制御ディスクリプタ)の最後 6 桁を空白にします。

  2. 読み込み順の再位置決め先を示す値をバリューバッファに入れます。

  3. ISN フィールドを 0 にします。

  4. コマンドオプション 2 フィールドに "A"、"D"、または "V" を設定します。

読み込み方向の変更

再位置決めを行わなくても、コマンドオプション 2 で "A" または "D" を指定することによって、いつでも論理読み込み方向を昇順から降順に変更できます。

プリフェッチまたはマルチフェッチ処理も要求した場合、このオプションはサポートされません。

Top of page

ACB インターフェイスダイレクトコール:L3 コマンドおよび L6 コマンド

このセクションでは、L3 コマンドおよび L6 コマンドの 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 バイナリ F A
ISN 下限 17~20 バイナリ F U
  21~24 -- -- --
フォーマットバッファ長 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 A
アディション 2 45~48 バイナリ/バイナリ -- A
アディション 3 49~56 英数字 F A
アディション 4 57~64 英数字 F A
アディション 5 65~72 英数字 F U
コマンドタイム 73~76 バイナリ -- A
ユーザーエリア 77~80 -- -- U

バッファエリア

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

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

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* VALUE START オプション使用時のみ必要
** ISN バッファおよび長さは、マルチフェッチオプションまたはプリフェッチオプションを指定した場合にのみ必須です。
*** 圧縮オプション制御文字 "C" を含んでもかまいません。
-- 未使用

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

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

コマンドコード(ACBCMD)

L3 または L6

コマンド ID(ACBCID)

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

このフィールドの第 1 バイトに 16 進の FF を指定することはできません。また、ファイルの順次読み込み中は、このフィールドを変更しないでください。

コマンド ID 値が X'FFFFFFFF' の場合、コマンド ID は自動的に生成されます。 Adabas ニュークリアスは、X'00000001' から始まるコマンド ID 値を生成し、L3 または L6 コールごとに値を 1 ずつ増やします。

ユーザー定義コマンド ID を指定する場合、ユーザーは各コマンド ID を固有のものにする必要があります。

別のフォーマット ID およびグローバルフォーマット ID の使用については、アディション 5 フィールドを参照してください。

ファイル番号(ACBFNR)

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

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

レスポンスコード(ACBRSP)

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

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

ISN:開始 ISN/レコード読み込み ISN オプション(ACBISN)

アディション 1 フィールドの後ろ 6 バイトに空白を設定すると、論理読み込みの開始位置や後続位置を特定できます。これには、ISN フィールドに加えて、バリューバッファに指定した開始ディスクリプタ値を使用し、開始位置または再開位置を指定します。

アディション 1 フィールドの後ろ 6 バイトが、最後に指定された READ コマンドと同じであり、現在の読み込み順の位置を変更しない場合は、ISN フィールドは無視されます。

Adabas は、読み込んだレコードの ISN を ISN フィールドに返します。

論理読み込み順の位置決めまたは再位置決めが行われるとき、開始ディスクリプタ値との比較演算子を次のように指定した場合は、ISN フィールドは使用されません。

これ以外を指定した場合には、ISN フィールドが使用され、次のルールが適用されます。

昇順読み込みのルール(ASCENDING オプション)

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在する場合は、次のように位置付けされます。

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在しない場合は、指定した ISN に関係なく、つねに次に大きいディスクリプタ値の最初の ISN に位置付けられます。

降順読み込みのルール(DECENDING オプション)

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在する場合は、次のように位置付けされます。

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在しない場合は、指定した ISN に関係なく、つねに次に小さいディスクリプタ値の最後の ISN に位置付けられます。

ISN 下限:マルチフェッチレコード数(ACBISL)

コマンドオプション 1 フィールドに "M" または "O"(マルチフェッチオプション)を指定した場合、このフィールドのゼロ以外の値によって、マルチフェッチする最大レコード数が特定されます。 このフィールドの値がゼロの場合は、マルチフェッチ対象のレコード数はレコードバッファと ISN バッファの長さによって制限されます。 詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

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

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

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

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

サーチバッファ長(ACBSBL)

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

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

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

ISN バッファ長(ACBIBL)

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

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

コマンドオプション 1(ACBCOP1)
オプション 説明
M(マルチフェッチ) マルチフェッチ処理がアクティブになります。
O(R オプションを指定してマルチフェッチ処理) マルチフェッチ処理とオプション R(下記参照)処理がアクティブになります。
P(プリフェッチ) プリフェッチ処理がアクティブになります。
R(リターン) L6 コマンドによる読み込みおよびホールド対象のレコードが使用可能でない場合に、レスポンスコード 145 を返します。

"M"、"O"、"P" のいずれかを指定すると、(コマンドレベルの)プリフェッチオプションまたはマルチフェッチオプションが使用されることになります。 マルチフェッチ/プリフェッチ オプションを使用すると、1 つ以上のシーケンシャルレコードへの事前アクセスが可能になり、処理全体の時間が短縮され、単一レコードをフェッチする時間が必要なくなるため、パフォーマンスを向上させることができます。 詳細は「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

コマンドオプション 2(ACBCOP2)

ディスクリプタエントリの処理順を指定します。

オプション 説明
A(昇順) ディスクリプタエントリを昇順に処理します。開始値の指定(オプション)を伴うこともあります。 開始ディスクリプタ値はバリューバッファに指定します。 また、ISN フィールドに空値以外の値を設定すると、ディスクリプタ値が一致する複数のエントリ内での位置付けを行えます。 サーチバッファまたはバリューバッファを省略(SBL または VBL をゼロ(0)に設定)すると、すべてのエントリを処理します。
D(降順) ディスクリプタエントリを降順に処理します。開始値の指定(オプション)を伴うこともあります。 開始ディスクリプタ値はバリューバッファに指定します。 また、ISN フィールドに空値以外の値を設定すると、ディスクリプタ値が一致する複数のエントリ内での位置付けを行えます。 サーチバッファまたはバリューバッファを省略(SBL または VBL をゼロ(0)に設定)すると、すべてのエントリを処理します。
V(開始値) ディスクリプタの最小値(またその次の値)からではなく、ユーザー指定値から昇順に順次読み込みを開始(続行)します。 このユーザー指定値はバリューバッファに示し、また値の長さとフォーマットはサーチバッファに指定する必要があります。 ISN フィールドに空値以外の値を指定すると、読み込み操作をさらに限定できます。 このオプションはバージョン 6 以前の Adabas で使用され、既存プログラムをサポートするために維持されています。
空白 開始値を指定せずに、昇順に順次読み込みを開始します。存在するすべての値が処理されます。 サーチバッファとバリューバッファは無視されます。 このオプションはバージョン 6 以前の Adabas で使用され、既存プログラムをサポートするために維持されています。
アディション 1:順次制御ディスクリプタ(ACBADD1)

このフィールドには読み込み順序の制御に使用するディスクリプタを指定する必要があります。 ディスクリプタ、サブディスクリプタ、またはスーパーディスクリプタを指定できます。

アディション 1 フィールドは、L3 または L6 の各コール間で変更しないでください。 ただし、順次読み込み中に、特定の値に位置を変更することはできます。 これを行うには、このフィールドの後ろ 6 桁を空白にする方法、位置を示す値をバリューバッファに追加する方法、ISN フィールドをゼロにする方法、およびコマンドオプション 2 フィールドに A、D、または V を設定する方法があります。

アディション 2(圧縮および非圧縮レコード長(ACBADD2))

コマンドが正常に処理されると、次の情報がこのフィールドに返されます。

注意:
プリフェッチ機能の使用時、この長さ情報は返されません。

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

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

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

アディション 4:サイファコード(ACBADD4)

このフィールドは、サイファコードを指定するために使用します。 ファイルを暗号化する場合は、有効なサイファコードを指定する必要があります。 ファイルを暗号化しない場合は、このフィールドに空白をセットする必要があります。

Adabas は、コマンド処理時に、サイファコードに空白をセットし、バージョンコードとデータベース ID をフィールドの下位 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 を順序制御に使用します。 フィールド RA および RB の値を返します。 ファイル全体を読み込みます。

コントロールブロック

コマンドコード L3  
コマンド ID EX01 空白でないコマンド ID を要求
ファイル番号 2  
ISN 0 全レコードを読み込みます
フォーマットバッファ長 6 またはそれ以上
レコードバッファ長 18 またはそれ以上
サーチバッファ長 0  
バリューバッファ長 0  
コマンドオプション 1 b レスポンスコード 145 またはプリフェッチオプションは使用しません
コマンドオプション 2 A 昇順(サーチバッファとバリューバッファは指定しません)
アディション 1 RBbbbbbb 順序制御に使用するディスクリプタ RB。bbbbbb には空白が入ります。
アディション 3 パスワード ファイルはセキュリティ保護されています
アディション 4 bbbbbbbb(空白) ファイルは暗号化されない

バッファエリア

フォーマットバッファ RA,RB.

L3 コールを繰り返して各レコードを取得します。 CID とアディション 1 フィールドは L3 コールの間に変更しないでください。 全レコードの読み込みが終わると、レスポンスコード 3 が返されます。

例 2:論理順に読み込んでレコードをホールドする

ファイル 1 を論理順に読み込みます。 ディスクリプタ AA を順序制御として使用します。 フィールド AA と AB の値が返されます。 読み込んだ各レコードはホールド状態になります。

コントロールブロック

コマンドコード L6  
コマンド ID EX02 空白でないコマンド ID を要求
ファイル番号 1  
ISN 0 全レコードを読み込みます。
フォーマットバッファ長 3 またはそれ以上
レコードバッファ長 10 またはそれ以上
サーチバッファ長 0  
バリューバッファ長 0  
コマンドオプション 1 b レスポンスコード 145 またはプリフェッチオプションは使用しません
コマンドオプション 2 b 昇順(サーチバッファとバリューバッファは指定しません)
アディション 1 AAbbbbbb 順序制御に使用するディスクリプタ AA。bbbbbb には空白が入ります。
アディション 3 bbbbbbbb(空白) ファイルはセキュリティ保護されていません
アディション 4 bbbbbbbb(空白) ファイルは暗号化されない

バッファエリア

フォーマットバッファ GA.

論理トランザクションを終了し、ホールドしたレコードを解放するため、ET ロジックユーザーは ET コマンドを発行します。 非 ET ユーザーは、A4、E4、または RI コマンドを発行して、ホールドしたレコードを解放します。

例 3:ASCENDING オプション

値 N から読み込みを始めること以外は、例 1 と同じです。

コントロールブロック

コマンドコード L3  
コマンド ID EX03 空白でないコマンド ID を要求
ファイル番号 2  
ISN 0 全レコードを読み込みます
フォーマットバッファ長 6 またはそれ以上
レコードバッファ長 18 またはそれ以上
サーチバッファ長 7 またはそれ以上
バリューバッファ長 1 またはそれ以上
コマンドオプション 1 b レスポンスコード 145 オプション使用しません
コマンドオプション 2 A 開始値が指定された ASCENDING オプション
アディション 1 RBbbbbbb RB を順序制御に使用します。bbbbbb には空白が入ります。
アディション 3 パスワード ファイルはセキュリティ保護されています
アディション 4 bbbbbbbb(空白) ファイルは暗号化されない

バッファエリア

フォーマットバッファ RA,RB.  
サーチバッファ RB,1,A.  
バリューバッファ N 値 N で読み込みを開始します。

最初の L3 コマンドでディスクリプタ RB に値 N を持つ最初のレコードが返されます。 この値を持つレコードが存在しない場合は、N より大きな値(NA など)を持つ最初のレコードが返されます。

例 4:再位置決めを伴う DESCENDING オプション

再位置決めすること以外は、例 3 の要求と同じです。 順次読み込み処理は値 Q から続行されます。

コントロールブロック

コマンドコード L3  
コマンド ID EX03 再位置決めを行うときは、CID フィールドを変更しないでください。
ファイル番号 2  
ISN 0 バリューによる再位置決めを行うときは、このフィールドをゼロに設定する必要があります。
フォーマットバッファ長 6 またはそれ以上
レコードバッファ長 18 またはそれ以上
サーチバッファ長 7 またはそれ以上
バリューバッファ長 1 またはそれ以上
コマンドオプション 1 b レスポンスコード 145 オプション使用しません
コマンドオプション 2 D 再位置決めを伴う DESCENDING オプション
アディション 1 RBbbbbbb このフィールドの最後の 6 桁には、再位置決め用に空白を設定しておく必要があります。
アディション 3 パスワード ファイル 2 はセキュリティ保護されています。
アディション 4 bbbbbbbb(空白) ファイル 2 は暗号化されていません

バッファエリア

フォーマットバッファ RA,RB.  
サーチバッファ RB,1,A,LE.  
バリューバッファ Q 値 Q に再位置決めします。

Top of page

ACBX インターフェイスダイレクトコール:L3 コマンドおよび L6 コマンド

このセクションでは、L3 コマンドおよび L6 コマンドの 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 バイナリ F A
  33~36 --- --- ---
ISN 下限 37~40 バイナリ F U
  41~48 --- --- ---
コマンドオプション 1 49 英数字 F U
コマンドオプション 2 50 英数字 F U
  51~56 --- --- ---
アディション 1 57~64 英数字/バイナリ F A
アディション 2 65~68 バイナリ --- A
アディション 3 69~76 英数字/バイナリ F A
アディション 4 77~84 英数字 F A
アディション 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
マルチフェッチ ** F U

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

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* VALUE START オプション使用時のみ必要
** マルチフェッチオプションを指定した場合のみ、マルチフェッチバッファが必要です。
*** 圧縮オプション制御文字 "C" を含んでもかまいません。
--- 未使用

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

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

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

F2

コマンドコード(ACBXCMD)

L3 または L6

レスポンスコード(ACBXRSP)

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

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

コマンド ID(ACBXCID)

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

このフィールドの第 1 バイトに 16 進の FF を指定することはできません。また、ファイルの順次読み込み中は、このフィールドを変更しないでください。

コマンド ID 値が X'FFFFFFFF' の場合、コマンド ID は自動的に生成されます。 Adabas ニュークリアスは、X'00000001' から始まるコマンド ID 値を生成し、L3 または L6 コールごとに値を 1 ずつ増やします。

ユーザー定義コマンド ID を指定する場合、ユーザーは各コマンド ID を固有のものにする必要があります。

別のフォーマット ID およびグローバルフォーマット ID の使用については、アディション 5 フィールドを参照してください。

データベース ID(ACBXDBID)

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

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

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

ファイル番号(ACBXFNR)

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

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

ISN:開始 ISN/レコード読み込み ISN オプション(ACBXISN)

アディション 1 フィールドの後ろ 6 バイトに空白を設定すると、論理読み込みの開始位置や後続位置を特定できます。これには、ISN フィールドに加えて、バリューバッファに指定した開始ディスクリプタ値を使用し、開始位置または再開位置を指定します。

アディション 1 フィールドの後ろ 6 バイトが、最後に指定された READ コマンドと同じであり、現在の読み込み順の位置を変更しない場合は、ISN フィールドは無視されます。

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

Adabas は、読み込んだレコードの ISN を ISN フィールドに返します。

論理読み込み順の位置決めまたは再位置決めが行われるとき、開始ディスクリプタ値との比較演算子を次のように指定した場合は、ISN フィールドは使用されません。

これ以外を指定した場合には、ISN フィールドが使用され、次のルールが適用されます。

昇順読み込みのルール(ASCENDING オプション)

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在する場合は、次のように位置付けされます。

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在しない場合は、指定した ISN に関係なく、つねに次に大きいディスクリプタ値の最初の ISN に位置付けられます。

降順読み込みのルール(DECENDING オプション)

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在する場合は、次のように位置付けされます。

バリューバッファで指定した開始ディスクリプタ値が論理読み込みに存在しない場合は、指定した ISN に関係なく、つねに次に小さいディスクリプタ値の最後の ISN に位置付けられます。

ISN 下限:マルチフェッチレコード数(ACBXISL)

コマンドオプション 1 フィールドに "M" または "O"(マルチフェッチオプション)を指定した場合、このフィールドのゼロ以外の値によって、マルチフェッチする最大レコード数が特定されます。 この値がゼロであれば、マルチフェッチするレコード数はレコードバッファとマルチフェッチバッファの長さによって制限されます。 詳細は、「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

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

コマンドオプション 1(ACBXCOP1)
オプション 説明
M(マルチフェッチ) マルチフェッチ処理がアクティブになります。
O(R オプションを指定してマルチフェッチ処理) マルチフェッチ処理とオプション R(下記参照)処理がアクティブになります。
R(リターン) L6 コマンドによる読み込みおよびホールド対象のレコードが使用可能でない場合に、レスポンスコード 145 を返します。

M または O オプションを指定すると、(コマンドレベルの)マルチフェッチオプションが使用されます。 マルチフェッチオプションを使用すると、1 つ以上のシーケンシャルレコードへの事前アクセスが可能になり、処理全体の時間が短縮され、単一レコードをフェッチする時間が必要なくなるため、パフォーマンスを向上させることができます。 詳細は「マルチフェッチ/プリフェッチ機能の使用」を参照してください。

コマンドオプション 2(ACBXCOP2)

ディスクリプタエントリの処理順を指定します。

オプション 説明
A(昇順) ディスクリプタエントリを昇順に処理します。開始値の指定(オプション)を伴うこともあります。 開始ディスクリプタ値はバリューバッファに指定します。 また、ISN フィールドに空値以外の値を設定すると、ディスクリプタ値が一致する複数のエントリ内での位置付けを行えます。 サーチバッファまたはバリューバッファを省略(SBL または VBL をゼロ(0)に設定)すると、すべてのエントリを処理します。
D(降順) ディスクリプタエントリを降順に処理します。開始値の指定(オプション)を伴うこともあります。 開始ディスクリプタ値はバリューバッファに指定します。 また、ISN フィールドに空値以外の値を設定すると、ディスクリプタ値が一致する複数のエントリ内での位置付けを行えます。 サーチバッファまたはバリューバッファを省略(SBL または VBL をゼロ(0)に設定)すると、すべてのエントリを処理します。
V(開始値) ディスクリプタの最小値(またその次の値)からではなく、ユーザー指定値から昇順に順次読み込みを開始(続行)します。 このユーザー指定値はバリューバッファに示し、また値の長さとフォーマットはサーチバッファに指定する必要があります。 ISN フィールドに空値以外の値を指定すると、読み込み操作をさらに限定できます。 このオプションはバージョン 6 以前の Adabas で使用され、既存プログラムをサポートするために維持されています。
空白 開始値を指定せずに、昇順に順次読み込みを開始します。存在するすべての値が処理されます。 サーチバッファとバリューバッファは無視されます。 このオプションはバージョン 6 以前の Adabas で使用され、既存プログラムをサポートするために維持されています。
アディション 1:順次制御ディスクリプタ(ACBXADD1)

このフィールドには読み込み順序の制御に使用するディスクリプタを指定する必要があります。 ディスクリプタ、サブディスクリプタ、またはスーパーディスクリプタを指定できます。

アディション 1 フィールドは、L3 または L6 の各コール間で変更しないでください。 ただし、順次読み込み中に、特定の値に位置を変更することはできます。 これを行うには、このフィールドの後ろ 6 桁を空白にする方法、位置を示す値をバリューバッファに追加する方法、ISN フィールドをゼロにする方法、およびコマンドオプション 2 フィールドに A、D、または V を設定する方法があります。

アディション 2:圧縮および非圧縮レコード長(ACBXADD2)

コマンドが正常に処理されると、次の情報がこのフィールドに返されます。

注意:
プリフェッチ機能の使用時、この長さ情報は返されません。

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

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

アディション 4:サイファコード(ACBXADD4)

このフィールドは、サイファコードを指定するために使用します。 ファイルを暗号化する場合は、有効なサイファコードを指定する必要があります。 ファイルを暗号化しない場合は、このフィールドに空白をセットする必要があります。

Adabas は、コマンド処理時に、サイファコードに空白をセットし、バージョンコードとデータベース ID をフィールドの下位 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

バッファ

L3 コマンドおよび L6 コマンドには、次のバッファが適用されます。

フォーマットバッファ

このバッファには、値を取得するフィールドを指定する必要があります。 フォーマットバッファの構文および例については、「バッファの定義」を参照してください。

先頭 2 桁に C. を指定すると、COMPRESSED オプションが有効になります。 これにより、レコードは、圧縮解除された形式ではなく圧縮された形式で返されます。

レコードバッファ

Adabas は、バッファに要求されたフィールドの値をこのバッファに返します。 フィールド値は、フォーマットバッファに別のフォーマットや長さをユーザーが指定していない限り、標準フォーマットと標準長で返されます。

サーチバッファ

注意:
サーチバッファでは要素をコンマで区切り、ピリオドで終了します。 サーチバッファの構文については別途説明します。

サーチバッファを使用するときは、コントロールブロックにサーチバッファ長(SBL)を指定する必要があります。 サーチバッファを使用しない場合は、SBL を 0 に設定する必要があります。

VALUE START(V)オプションをコマンドオプション 2 に使用する場合、順序制御に使用するディスクリプタの開始値をバリューバッファに指定し、値の長さと形式をサーチバッファに指定する必要があります

ASCENDING オプションまたは DESCENDING オプションをコマンドオプション 2 に使用する場合、サーチバッファを使用できますが、必ずしも使用する必要はありません。 サーチバッファかバリューバッファのどちらかを省略すると、所定のディスクリプタのすべての値が処理されます。 バリューバッファに開始値、終了値またはその両方を指定する場合は、検索されるディスクリプタエントリ数を制限するためにサーチバッファを使用する必要があります

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

バリューバッファに 1 つの値(つまり、オプション A 付きの開始値またはオプション D 付きの終了値)を指定するとき、サーチバッファの形式は次のとおりです。

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

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

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

サーチバッファの構文ステートメントで使用されるエレメントを以下に示します。

name 順序制御に使用するディスクリプタの名前。 指定する名前は、アディション 1 フィールドに指定した名前と同じである必要があります。
length バリューバッファに指定した値の長さ。 長さを指定しない場合、ディスクリプタの標準長に応じて値が指定されます。 指定可能な長さについては「長さおよびデータフォーマット」セクションを参照してください。
format バリューバッファに指定した値のフォーマット。 フォーマットを指定しない場合、ディスクリプタの標準フォーマットに応じて値が指定されます。 指定可能なフォーマット設定については「長さおよびデータフォーマット」セクションを参照してください。
comparator 読み込み範囲の指定。
GE 値範囲の中の最大値よりも大きいか等しい(デフォルト)。
GT 値範囲の中の最大値よりも大きい。
LE 値範囲の中の最小値よりも小さいか等しい。
LT 値範囲の中の最小値よりも小さい。
S 2 つの検索式を使って開始-終了の範囲を示します。 2 つの式に同じディスクリプタを指定する必要があります。
AA,S,AA. 有効
AA,S,AB. 無効

コマンドオプション 2 に A または D を選択した場合やサーチバッファとバリューバッファのオプションを選択した場合の結果については、「例 3 制御オプションの組み合わせ」を参照してください。

バリューバッファ

バリューバッファ長(VBL)は、コントロールブロックに設定する必要があります。 バリューバッファを使用しない場合は、VBL を 0 に設定する必要があります。

VALUE START オプションを使用する場合、またはバリューによる再位置決めを行う場合、読み込みを開始する(または継続する)値をこのバッファに指定する必要があります。

コマンドオプション 2 で ASCENDING オプションまたは DESCENDING オプションを使用する場合、バリューバッファを使用できますが、必ずしも使用する必要はありません。 サーチバッファかバリューバッファのどちらかを省略すると、所定のディスクリプタのすべての値が処理されます。 開始値、終了値、あるいはその両方をバリューバッファに指定する場合、検索するディスクリプタエントリ数を制限するためにサーチバッファが必要です。

コマンドオプション 2 で ASCENDING(A)オプションを指定すると、指定値を持つ最初のレコードから読み込みが開始(または継続)されます。 この値を持つレコードがない場合は、次に大きい値を持つ最初のレコードから処理が行われます。

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

また、ISN フィールドがゼロでない場合には、この ISN より大きい ISN を持つレコードについて、指定値に該当する最初のレコードから読み込みが開始(または継続)されるか、またはそのレコードで終了します。 該当する ISN がない場合は、次に大きい(または、小さい)値を持つ最初のレコードが読み込まれます。

サーチバッファとバリューバッファの例

例 1:サーチバッファおよびバリューバッファを使用した ASCENDING オプション

順序制御に使用するディスクリプタのインバーテッドリスト

ISN リスト
A 1, 4
B 2
D 3, 5

最初の L3 コマンドまたは L6 コマンドはコマンドオプション 2 に A(ASCENDING オプション)を指定、後続の L3 コマンドまたは L6 コマンドはコマンドオプション 2 に A を指定し、アディション 1 の最後 6 バイトを空白にリセットします。

ユーザー指定値 ユーザー指定 ISN 読み込み開始(または継続)の ISN
A 0 1
A 1 4
A 2 4
A 4 2
A 5 2
B 0 2
B 1 2
B 2 3
B 3 3
BABC 1 3
C 0 3
D 0 3
D 3 5
D 4 5
D 5 レスポンスコード 3
E-Z - レスポンスコード 3

例 2:サーチバッファおよびバリューバッファを使用した DESCENDING オプション

順序制御に使用するディスクリプタのインバーテッドリスト

ISN リスト
A 1, 9, 25
B 3, 18, 21
C 7, 8, 11

最初の L3 コマンドまたは L6 コマンドはコマンドオプション 2 に D(DESCENDING オプション)、開始値に ISN=0、サーチバッファの比較演算子に LT、バリューバッファに C を指定します。 開始位置は、次に低いディスクリプタ値の最大 ISN になります。この例では、ディスクリプタ B の ISN 21 です。

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

下表は、ASCENDING/DESCENDING オプションと、サーチバッファおよびバリューバッファの各設定の組み合わせ例を示しています。 これらの例は、ファイルが読み込まれており、かつ ISN=0(一致する開始値に位置付けていない)の場合に適用されます。

L3/L6 Command Search and Value Buffer Sequence Options

順序オプションの概要

ISN バッファ

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

マルチフェッチバッファ

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

Top of page

その他の考慮事項

L3 コマンドまたは L6 コマンドを使用するとき、次の事項も考慮に入れます。

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

  2. L3 または L6 コマンドを使用して読み込んでいるファイルに対して、レコードの更新と削除を行うことができます。 挿入したレコード(複数可)を読み込む場合は、レコード挿入後に再位置付けを行う必要があります。

  3. L3 コマンドまたは L6 コマンドを使用して読み込んでいるファイルを他のユーザーが更新している場合は、L3 コマンドまたは L6 コマンドでそのファイルを読み込んでも、レコードが返されないことがあります。 また、ファイルの順次読み込み中に同じレコードが複数回返されることもあります。

注意:
現在の値よりも大きい値で読み込み順序を制御するディスクリプタフィールドを更新しないでください。

Top of page