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

Adabas コントロールブロックの構造(ACB および ACBX)

Adabas では 2 種類のコントロールブロックがサポートされています。

コントロールブロックの各フィールドの使用法については、「コマンド」で各 Adabas コマンドの説明を参照してください。 今後の Adabas リリースとユーザープログラムとの互換性を確保するため、特定のコマンドによって使用されていないすべてのコントロールブロックフィールドは、そのフィールドタイプに応じてゼロまたは空白に設定する必要があります。

コントロールブロック内の各フィールドの位置は固定です。 また、コントロールブロックの値はすべて、フィールドに定義されているデータタイプで入力する必要があります。 例えば、ISN フィールドはバイナリ形式であるため、このフィールドの値はバイナリ形式で入力する必要があります。

注意:

  1. Adabas など Software AG プログラム製品は一部のコントロールブロックフィールドを内部で使用しており、ユーザーには意味のないフィールド値を返すことがあります。 このようなフィールドの使用法および値は、リリースに応じて異なるため、ユーザープログラムでは使用しないでください。 このマニュアルで説明しているフィールドおよび値のみを使用することをお勧めします。 また、未使用のコントロールブロックフィールドは、それぞれのフィールドタイプに応じてゼロまたは空白で初期化しておく必要があります。
  2. Adabas 依存の Software AG 製品の中には、レスポンスコードやサブコードなどのコントロールブロック値を返すものがあります。 製品固有のコントロールブロック値の説明については、該当する製品のマニュアルを参照してください。

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


Adabas コントロールブロック(ACB)

Adabas コントロールブロック(ACB)の長さは 80 バイトです。 このセクションでは、次のトピックについて説明します。

ACB フォーマット

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

DSECT 名 フィールド コントロールブロックの位置 オフセット 長さ(バイト) フォーマット
ACBTYPE コールタイプ 1 00 1 バイナリ
予約 (予約) 2 01 1 バイナリ
ACBCMD コマンドコード 3~4 02 2 英数字
ACBCID コマンド ID 5~8 04 4 英数字/バイナリ
ACBFNR ファイル番号 9~10 08 2 バイナリ
ACBRSP レスポンスコード 11~12 0A 2 バイナリ
ACBISN ISN 13~16 0C 4 バイナリ
ACBISL ISN 下限 17~20 10 4 バイナリ
ACBISQ ISN 数 21~24 14 4 バイナリ
ACBFBL フォーマットバッファ長 25~26 18 2 バイナリ
ACBRBL レコードバッファ長 27~28 1A 2 バイナリ
ACBSBL サーチバッファ長 29‐30 1C 2 バイナリ
ACBVBL バリューバッファ長 31‐32 1E 2 バイナリ
ACBIBL ISN バッファ長 33~34 20 2 バイナリ
ACBCOP1 コマンドオプション 1 35 22 1 英数字
ACBCOP2 コマンドオプション 2 36 23 1 英数字
ACBADD1 アディション 1 37~44 24 8 英数字/バイナリ
ACBADD2 アディション 2 45~48 2C 4 英数字/バイナリ
ACBADD3 アディション 3 49~56 30 8 英数字
ACBADD4 アディション 4 57~64 38 8 英数字
ACBADD5 アディション 5 65~72 40 8 英数字/バイナリ
ACBCMDT コマンドタイム 73~76 48 4 バイナリ
ACBUSER ユーザーエリア 77~80 4C 4 該当なし

ACB フィールド

コントロールブロックフィールドおよびバッファの内容は、Adabas コマンド(コール)を発行する前にセットしておかなければなりません。 また、Adabas は各コマンドの実行後、特定のフィールドおよびバッファに 1 つ以上の値またはコードを返します。

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

ACB の各フィールドについては、このセクションで説明します。ACB フォーマットの表示順に記載されています。 この説明は、ほとんどの Adabas コマンドに当てはまりますが、一部の Adabas コマンドでは、この説明とは異なる目的でコントロールブロックフィールドが使用されます。 これらのフィールドが各 Adabas コマンドによってどのように使用されるかの詳細については、「コマンド」を参照してください。

コールタイプ(ACBTYPE)

Adabas コントロールブロック(ADACB)の先頭バイトは、Adabas API がどの処理を実行するかを判断するのに使用されます。 詳細については、「アプリケーションと Adabas のリンク」を参照してください。

論理リクエストの値は次のとおりです。

16 進数 説明
X'00' 1 バイトファイル番号(ファイル番号 1~255)または DBID
X'30' 2 バイトファイル番号(ファイル番号 1~65535)または DBID
X'40' 空白以上の値。 この値は、以前の Adabas リリースとの互換性を維持するため、論理アプリケーションコールとして受け入れられます。

注意:
ただし、X'44'、X'48'、および X'4C' のコールは、Software AG 用に予約されているため受け入れられません

ADACB の先頭バイトのうち、上記以外の値はすべて、Software AG 用に予約されています。

アプリケーションでは ADACB の先頭バイトの値を各コールでリセットできるため、単一のアプリケーションに 1 バイトファイル番号と 2 バイトファイル番号(DBID)要求を混在させることができます。 この場合、コールタイプごとに ADACB のファイル番号(ACBFNR)とレスポンスコード(ACBRSP)のフィールドを適切に構成する必要があります。 詳細については、これらのフィールドの説明を参照してください。

2 バイトファイル番号を使用するアプリケーションでは、ADACB の先頭バイトに X'30'、ACBRSP フィールドに論理データベース ID、ACBFNR フィールドにファイル番号を設定することをお勧めします。 そうすることによって、アプリケーションは、使用中のファイル番号の値に関係なく、2 バイトのバイナリ整数としてデータベース ID とファイル番号の両方を処理することができます。

Software AG の Natural 言語でアプリケーションを作成すると、Natural が適切な値を指定するため、Adabas ACB の 1 バイト目にこの値を指定する必要はありません。

コマンドコード(ACBCMD)

コマンドコードは、実行するコマンドを定義し、OP、A1、BT のように 2 文字の英数字で構成されます。

コマンド ID(ACBCID)

コマンド ID フィールドは、後続のコマンドで使用する論理読み込み順序、検索結果、および(オプション)デコードされたフォーマットを識別するために、多くの Adabas コマンドにより使用されます。 用途に応じて英数字またはバイナリのコマンド ID を使い分けたり、Adabas に新しいバイナリコマンド ID を生成するように要求することができます。 コマンド ID の詳細については、「プログラミング全般に関する考慮事項」を参照してください。 ET、CL および一部の OP コマンドの場合、Adabas は、バイナリのトランザクションシーケンス番号をコマンド ID フィールドに返します。

ファイル番号(ACBFNR)

注意:
カップリングされた対のファイルで演算するコマンドの場合、このフィールドは、ISN またはデータが返されるプライマリファイルを指定します。

ファイル番号は 1 または 2 バイトです。

1 バイトのファイル番号および DBID

1~255(1 バイト)のファイル番号に対応するアプリケーションプログラムから Adabas コマンドを発行する場合は、コントロールブロックを次のように作成します。

位置 処理内容
1 ADACB の先頭バイトに X'00' を配置します。
9 ADACB の ACBFNR フィールドの 2 番目(右端)のバイトにファイル番号を配置します。 ACBFNR フィールドの 1 バイト目(左側)は、論理(データベース)ID または番号を格納するために使用します。

ACBFNR フィールドの先頭バイトが 0(B'0000 0000)の場合、Adabas API は DDCARD 入力データに指定された ADARUN カードのデータベース ID の値、またはオフセット X'80' でリンクルーチンにアセンブルされたデフォルトのデータベース ID 値を使用します。

2 バイトのファイル番号および DBID

Adabas は、論理リクエストで 255 より大きなファイル番号を使用できます。 256~5000(2 バイト)のファイル番号に対応するアプリケーションプログラムから Adabas コマンドを発行する場合は、コントロールブロックを次のように作成します。

位置 処理内容
1 ADACB の先頭バイトに X'30' を配置します。
9 ファイル番号に ACBFNR の 2 バイトを使用し、データベース(論理)ID に ACBRSP の 2 バイトを使用します。

ACBRSP フィールドが 0 の場合、Adabas API は DDCARD 入力データに指定された ADARUN カードのデータベース ID の値、またはオフセット X'80' でリンクルーチンにアセンブルされたデフォルトのデータベース ID 値を使用します。

レスポンスコード(ACBRSP)

レスポンスコードフィールドには、2 バイトのデータベース ID が使用されます。

また、Adabas コマンドの完了時に必ず値が設定されます。 通常、正常終了はゼロのレスポンスコードで示されます。 レコードシーケンスまたは ISN シーケンスを処理する繰り返し可能なコマンドの場合には、レスポンスコードはエンドオブファイルまたはエンドオブ ISN リストを示します。 ゼロ以外のレスポンスコードは、『Adabas メッセージおよびコードマニュアル』に定義されています。

ISN(ACBISN)

フィールドコマンドに応じて 4 バイトの ISN 値を指定します。Adabas は、必要に応じてコマンドが生成した ISN リストの先頭 ISN か、またはコマンドが読み込んだレコードの ISN を返します。

ISN 下限(ACBISL)

ISN 下限には、処理の開始位置となる ISN リストの開始点または範囲を指定します。 OP コマンドでは、オプションとしてユーザー指定の非アクテビティタイムアウトの値を、このフィールドに指定できます。 また、OP コマンドはこのフィールドに Adabas リリース情報も返します(アディション 5 フィールドの説明を参照)。 マルチフェッチオプションを使用した場合、このフィールドはプリフェッチレコードの最大カウント(オプション)を保持します。ゼロにすると制限なしになります。

ISN 数(ACBISQ)

コマンドから返される ISN のカウントです。 カウントは、ISN リストの ISN 数を合計した値、またはこの操作で大規模な ISN プールから ISN バッファ内に入る ISN 数の合計値です。 OP コマンドは、このフィールドを使用してオプションのユーザー指定トランザクションタイムリミットを指定し、ISN 数フィールドにシステム情報やコールタイプ情報のフラグを返します(アディション 5 フィールドの説明を参照)。 また、セキュリティバイバリューを使用する Sx コマンドは、検索条件を満たす ISN が複数存在した場合、このフィールドに 1 を設定します。

バッファ長:フォーマット、レコード、サーチ、バリュー、および ISN(ACBFBL、ACBRBL、ACBSBL、ACBVBL、および ACBIBL)

フォーマット、レコード、サーチ、バリュー、ISN の各バッファ長フィールドには、関連するバッファのサイズを指定します。 バッファサイズは通常、トランザクション全体で同じサイズに保たれます。 一部の ISN 関連操作では、ISN バッファサイズ値によって、コマンドによる ISN の処理方法が決まります。例えば、ISN バッファ長をゼロにすると、ISN 結果リストが Adabas ワークエリアに格納されます。 バッファが不要な Adabas コマンドの場合は、対応するバッファ長値にゼロを設定する必要があります。 また、バッファ長が制限されている場合もあります(例えば、マルチフェッチオプション)。詳細については、それぞれのコマンドの説明を参照してください。

コマンドオプション 1 およびコマンドオプション 2(ACBCOP1 および ACBCOP2)

コマンドオプション 1 フィールドおよびコマンドオプション 2 フィールドには、処理オプションを指定できます(ISN ホールド、コマンドレベルのプリフェッチ制御、返される ISN など)。

アディション 1(ACBADD1)

ISN リストを作成するディスクリプタの分類、またはカップリングした対のファイルの 2 番目のファイル番号など、その他のコマンド関連パラメータをアディション 1 フィールドに指定することが必要な場合があります。

アディション 2(ACBADD2)

An、Ln、Nn、S1/2/4 のどのコマンドでも、左端(上位)2 バイトに圧縮レコード長を返し、右端(下位)2 バイトにレコードバッファで選択されたフィールドの非圧縮長を返します。 OP(オープン)および RE(ET データの読み込み)コマンドは、このフィールドにトランザクションシーケンス番号を返します。 Entire Net-Work がインストールされている場合、一部のレスポンスコードでは、アディション 2 フィールドの左端 2 バイトに、障害が発生した Entire Net-Work ノードのノード ID が返されます。

コマンドの結果がニュークリアスレスポンスコードである場合、アディション 2 フィールドの下位(右端)2 バイト(47 と 48)にレスポンスコードの原因を識別する 16 進のサブコードが返されることがあります。 例えば、セッションを OP コマンドで開始していないものの ADARUN ステートメントに OPENRQ=YES を指定している場合、レスポンスコード 9、サブコード 66 が返され、この 2 バイトには 10 進数の 66 に相当する 16 進値 0042 が設定されます。 レスポンスコードとサブコードの詳細については、『Adabas メッセージおよびコードマニュアル』の「ニュークリアスレスポンスコード」の説明を参照してください。

アディション 3(ACBADD3)

アディション 3 フィールドには、パスワードで保護されたファイルにアクセスするのに必要なユーザーのパスワードを設定します。 ファイルが実際にパスワードで保護されている場合、コマンドの実行中にフィールド内のパスワードがスペース(空白)に置き換えられた後、ユーザープログラムに制御が戻されます。

アディション 4(ACBADD4)

アディション 4 フィールドには、暗合化(サイファ化)されたデータベースのデータファイルを読み書きする命令に合わせたサイファコードを設定する必要があります。 複数のコマンド ID を必要とするコマンドでは、サイファコードが不要であれば、コマンド ID の 1 つをこのフィールドに指定します。

ニュークリアスによって処理される Adabas コールは、Adabas リリース(バージョンおよび改訂)レベル番号およびデータベース ID をアディション 4 フィールドの下位(右端)3 バイトに次のような vrnnnn 形式で返します。

v Adabas バージョン番号を示します。
r Adabas リリース番号を示します。
nnnn コールを処理した Adabas データベースの番号(16 進)を示します。

例えば、"741111" は、データベース 4369 の Adabas バージョン 7.4 ニュークリアスがコールを処理したことを示します。

アディション 5(ACBADD5)

アディション 5 フィールドの 1 バイト目の上位(左端)2 ビットは、ユニークなフォーマット ID かグローバルフォーマット ID のどちらが選択されているかを制御します。下位(右端)4 バイトまたは 8 バイトは、選択に応じてユニークなフォーマット ID かグローバルフォーマット ID のいずれかを格納することができます この機能の詳細については、「グローバルフォーマット ID の使用」を参照してください。 RC(コマンド ID の解放)コマンドでは、削除するグローバルフォーマット ID をこのフィールドに指定できます。 コールが完了すると、OP コマンドはオプションで指定された非アクティビティタイムアウトやトランザクションタイムアウトの値をアディション 5 フィールドに返します。

コマンドタイム(ACBCMDT)

コマンドタイムフィールドは、ニュークリアスがコマンドを処理するのに要した経過時間を返すために、Adabas が使用します。 スレッドが Adabas I/O オペレーションなどのリソースを待機していた時間は含まれません。 時間は 16 マイクロ秒単位で、"Adabas スレッドタイム" と呼ばれ、 バイナリ形式です。

ユーザーエリア(ACBUSER)

ユーザーエリアフィールドは、ユーザープログラムで使用できるように予約されています。 論理ユーザーコールを発行したとき、Adabas はユーザーエリアをいっさい読み書きしません。

今後の Adabas リリースとの互換性のため、未使用のコントロールブロックフィールドはフィールドデータタイプに合わせた空値を設定しておくことをお勧めします。

ACB DSECT

ACB DSECT は、分散 Adabas SRCE ライブラリのメンバ ADACB にあります。

ACB の例

さまざまなホスト言語のコントロールブロック構造を示すプログラミング例は、このマニュアルの「プログラミング例」に記載されています。

Top of page

拡張 Adabas コントロールブロック(ACBX)

拡張 Adabas コントロールブロック ACBX は、Adabas コマンドのバッファサイズの増量に対応しています。 ACB では 80 バイトでしたが、192 バイトに増えています。 既存の非拡張 Adabas コントロールブロック(ACB)も引き続きサポートされ、既存のアプリケーションも機能しますが、Adabas 8 で導入された拡張機能を活用する場合には、新しい ACBX を使用する必要があります。 特に、Adabas 8 の長い(32K を超える)バッファまたはセグメント化されたバッファ(フォーマットバッファとレコードバッファの複数ペア、またはフォーマット、レコードおよびマルチフェッチの 3 つのバッファの複数セット)機能を使用している場合、ACBX を使用する必要があります。

ACBX を使用しない場合は、お使いのアプリケーションプログラムは既存のダイレクトコールインターフェイス(ACB)を使用した Adabas コールと新しいインターフェイス(ACBX)を使用したコールを自由に切り替ることができます。

ACBX フォーマット

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

DSECT フィールド名 フィールド コントロールブロックの位置 オフセット 長さ(バイト) フォーマット
ACBXTYP コールタイプ 1 00 1 バイナリ
ACBXRSV1 予約 1 2 01 1 バイナリ
ACBXVER バージョンインジケータ 3~4 02 2 バイナリ
ACBXLEN ACBX 長 5~6 04 2 バイナリ
ACBXCMD コマンドコード 7~8 06 2 英数字
ACBXRSV2 予約 2 9~10 08 2 バイナリ
ACBXRSP レスポンスコード 11~12 0A 2 バイナリ
ACBXCID コマンド ID 13~16 0C 4 英数字/バイナリ
ACBXDBID データベース ID 17~20 10 4 数値
ACBXFNR ファイル番号 21~24 14 4 数値
ACBXISNG 8 バイト ISN 25~32 18 8 使用不可
ACBXISN ISN 29~32 1C 4 バイナリ
ACBXISLG 8 バイト(ISN 下限) 33~40 20 8 使用不可
ACBXISL ISN 下限 37~40 24 4 バイナリ
ACBXISQG 8 バイト(ISN 数) 41~48 28 8 使用不可
ACBXISQ ISN 数 45~48 2C 4 バイナリ
ACBXCOP1 コマンドオプション 1 49 30 1 英数字
ACBXCOP2 コマンドオプション 2 50 31 1 英数字
ACBXCOP3 コマンドオプション 3 51 32 1 英数字
ACBXCOP4 コマンドオプション 4 52 33 1 英数字
ACBXCOP5 コマンドオプション 5 53 34 1 英数字
ACBXCOP6 コマンドオプション 6 54 35 1 英数字
ACBXCOP7 コマンドオプション 7 55 36 1 英数字
ACBXCOP8 コマンドオプション 8 56 37 1 英数字
ACBXADD1 アディション 1 57~64 38 8 英数字/バイナリ
ACBXADD2 アディション 2 65~68 40 4 バイナリ
ACBXADD3 アディション 3 69~76 44 8 英数字/バイナリ
ACBXADD4 アディション 4 77~84 4C 8 英数字
ACBXADD5 アディション 5 85~92 54 8 英数字/バイナリ
ACBXADD6 アディション 6 93~100 5C 8 英数字/バイナリ
ACBXRSV3 予約 3 101~104 64 4 バイナリ
ACBXERRG バッファ内のエラーオフセット(64 ビット) 105~112 68 8 使用不可
ACBXERRA バッファ内のエラーオフセット(32 ビット) 109~112 6C 4 バイナリ
ACBXERRB エラー文字フィールド 113~114 70 2 英数字
ACBXERRC エラーサブコード 115~116 72 2 バイナリ
ACBXERRD エラーバッファ ID 117 74 1 英数字
ACBXERRE 予約済み(将来的に使用される予定) 118 75 1 使用不可
ACBXERRF エラーバッファシーケンス番号 119~120 76 2 数値
ACBXSUBR サブコンポーネントレスポンスコード 121~122 78 2 バイナリ
ACBXSUBS サブコンポーネントレスポンスサブコード 123~124 7A 2 バイナリ
ACBXSUBT サブコンポーネントエラーテキスト 125~128 7C 4 英数字
ACBXLCMP 圧縮レコード長 129~136 80 8 バイナリ
ACBXLDEC 非圧縮レコード長 137~144 88 8 バイナリ
ACBXCMDT コマンドタイム 145~152 90 8 バイナリ
ACBXUSER ユーザーエリア 153~168 98 16 該当なし
ACBXRSV4 予約 4 169~193 A8 24 操作不可

ACBX フィールド

コントロールブロックフィールドおよびバッファの内容は、Adabas コマンド(コール)を発行する前にセットしておかなければなりません。 また、Adabas は各コマンドの実行後、特定のフィールドおよびバッファに 1 つ以上の値またはコードを返します。

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

ACBX の各フィールドについては、このセクションで説明します。ACBX フォーマットの表示順に記載されています。 この説明は、ほとんどの Adabas コマンドに当てはまりますが、一部の Adabas コマンドでは、この説明とは異なる目的でコントロールブロックフィールドが使用されます。 これらのフィールドが各 Adabas コマンドによってどのように使用されるかの詳細については、「コマンド」を参照してください。

コールタイプ(ACBXTYP)

Adabas コントロールブロック(ADACBX)の先頭バイトは、Adabas API がどの処理を実行するかを判断するのに使用されます。 詳細については、『Adabas オペレーションマニュアル』の「アプリケーションと Adabas のリンク」を参照してください。

Adabas コマンドを発行するときに、このフィールドをバイナリの 0 に設定します。 これは、ACBXTUSR のように、論理ユーザーコールが行われていることを示します。

ACBXTYPE の値の X'04'、X'08'、X'0c'、X'10'、X'14'、X'18'、X'1c'、X'20'、X'24'、X'28'、X'2c'、X'34'、X'38'、X'3c'、X'44'、X'48'、および X'4c' は、Software AG で使用するために予約されています。そのため、アプリケーションプログラムで使用することはできません。

Software AG の Natural 言語で作成されたアプリケーションは、Natural が適切な値を指定するので、Adabas ACBX の 1 バイト目にこの値を指定する必要はありません。

予約 1(ACBXRSV1)

このフィールドは予約されています。 このフィールドにはゼロを設定します。

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

バージョンインジケータは、Adabas コントロールブロックが新しい ACBX フォーマットを使用するのか、従来の ACB フォーマットを使用するのかを示します。 このフィールドを文字 "F" で始まる値(例えば "F2")に設定すると、Adabas コントロールブロックは ACBX フォーマットで指定されているものとして扱われます。 このフィールドをそれ以外の値に設定すると、Adabas コントロールブロックは従来の ACB フォーマットで指定されているものとして扱われます。

ACBX 長(ACBXLEN)

ACBX 長フィールドは、Adabas に渡される ACBX 構造の長さ(ACBXQLL と同じく現時点では 192)に設定する必要があります。

コマンドコード(ACBXCMD)

コマンドコードは、実行するコマンドを定義し、OP、A1、BT のように 2 文字の英数字で構成されます。

予約 2(ACBXRSV2)

このフィールドは予約されています。 このフィールドにはゼロを設定します。

レスポンスコード(ACBXRSP)

このフィールドには、Adabas コマンドの完了時に値が設定されます。 通常、正常終了はゼロのレスポンスコードで示されます。 レコードシーケンスまたは ISN シーケンスを処理する繰り返し可能なコマンドの場合には、レスポンスコードはエンドオブファイルまたはエンドオブ ISN リストを示します。 ゼロ以外のレスポンスコードについては、「Adabas メッセージおよびコード」を参照してください。

コマンド ID(ACBXCID)

コマンド ID フィールドは、後続のコマンドで使用する論理読み込み順序、検索結果、および(オプション)デコードされたフォーマットを識別するために、多くの Adabas コマンドにより使用されます。 用途に応じて英数字またはバイナリのコマンド ID を使い分けたり、Adabas に新しいバイナリコマンド ID を生成するように要求することができます。 コマンド ID の詳細については、「プログラミング全般に関する考慮事項」を参照してください。 ET、CL および一部の OP コマンドの場合、Adabas は、バイナリのトランザクションシーケンス番号をコマンド ID フィールドに返します。

データベース ID(ACBXDBID)

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

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

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

ファイル番号(ACBXFNR)

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

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

注意:
カップリングされた対のファイルで演算するコマンドの場合、このフィールドは、ISN またはデータが返されるプライマリファイルを指定します。

ISN(ACBXISNG/ACBXISN)

ISN フィールドにはコマンドで必要な Adabas ISN 値を指定し、必要に応じてコマンドが読み込んだレコードの ISN か、またはコマンドが生成した ISN リストの最初の ISN が返されます。

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

ISN 下限(ACBXISLG/ACBXISL)

ISN 下限フィールドには、処理の開始位置となる ISN リストの開始点または範囲を指定します。

OP コマンドでは、オプションとしてユーザー指定の非アクテビティタイムアウトの値を、このフィールドに指定できます。 また、OP コマンドはこのフィールドに Adabas リリース情報を返します。

マルチフェッチ オプションを使用した場合、このフィールドにはプリフェッチされるレコードの最大カウント(オプション)が保持されます。ゼロにすると制限なしになります。

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

ISN 数(ACBXISQG/ACBXISQ)

ISN 数フィールドは、検索(Sx)コマンドが返した ISN のカウントです。 このカウントは、ISN リストの ISN 数を合計した値、またはこの操作で大規模な ISN プールから ISN バッファセグメントに入る ISN 数の合計値です。 検索コマンドでセキュリティバイバリューを使用すると、複数の ISN が検索条件を満たした場合、ISN 数フィールドが "1" に設定されます。

OP コマンドの場合、オプションとしてユーザー固有のトランザクションタイムリミットをこのフィールドに指定できます。 OP コマンドは、このフィールドにシステム情報およびコールタイプ情報を返します。

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

1 から 8 までのコマンドオプション(ACBXCOP1~ACBXCOP8)

コマンドオプション 1 からコマンドオプション 8 までのフィールドには、処理オプションを指定できます(ISN ホールド、コマンドレベルのプリフェッチ制御、返される ISN など)。 Adabas 8.1 では、コマンドオプション 1 フィールドとコマンドオプション 2 フィールドのみがサポートされています。 それ以外のコマンドオプションフィールドは、今後の Adabas リリースでの拡張のために用意されています。

アディション 1(ACBXADD1)

ISN リストを作成するディスクリプタの分類、またはカップリングした対のファイルの 2 番目のファイル番号など、その他のコマンド関連パラメータをアディション 1 フィールドに指定することが必要な場合があります。

アディション 2(ACBXADD2)

OP(オープン)および RE(ET データの読み込み)コマンドは、このフィールドにトランザクションシーケンス番号を返します。

アディション 3(ACBXADD3)

アディション 3 フィールドには、パスワードで保護されたファイルにアクセスするのに必要なユーザーのパスワードを設定します。 このフィールドは、コマンドの実行中、常に空白にリセットされます。

アディション 4(ACBXADD4)

暗合化(サイファ化)された Adabas ファイルのレコードをコマンドで読み書きする場合は、アディション 4 フィールドをそのファイルのサイファコードに設定する必要があります。 複数のコマンド ID を必要とするコマンドでは、サイファコードが不要であれば、コマンド ID の 1 つをこのフィールドに指定します。

このフィールドは、コマンドの実行中、常に空白にリセットされます。

シングルユーザーモードを実行していない(ADARUN MODE=SINGLE と指定していない)ニュークリアスで Adabas コールを処理すると、アディション 4 フィールドの下位(右端)3 バイトに Adabas リリース(バージョンおよび改訂)レベル番号およびデータベース ID が次のようなフォーマット vrnnnn で返されます。

v Adabas バージョン番号を示します。
r Adabas リリース番号を示します。
nnnn コールを処理した Adabas データベースの番号(16 進)を示します。

例えば、"811111" は、データベース 4369 の Adabas バージョン 8.1 ニュークリアスがコールを処理したことを示します。

アディション 5(ACBXADD5)

アディション 5 フィールドの 1 バイト目の上位(左端)2 ビットは、ユニークなフォーマット ID かグローバルフォーマット ID のどちらが選択されているかを制御します。下位(右端)4 バイトまたは 8 バイトは、選択に応じてユニークなフォーマット ID かグローバルフォーマット ID のいずれかを格納することができます RC(コマンド ID の解放)コマンドでは、削除するグローバルフォーマット ID をこのフィールドに指定できます。 コールが完了すると、OP コマンドはオプションで指定された非アクティビティタイムアウトやトランザクションタイムアウトの値をアディション 5 フィールドに返します。

アディション 6(ACBXADD6)

このフィールドは現時点では使用されません。 バイナリの 0 に設定する必要があります。

予約 3(ACBXRSV3)

このフィールドは予約されています。 このフィールドはバイナリの 0 に設定する必要があります。

バッファ内のエラーオフセット(64 ビット)(ACBXERRG)

バッファのエラーオフセット(64 ビット)およびバッファのエラーオフセット(32 ビット)フィールドは、存在する場合、ダイレクトコール中にエラーが検出されたバッファのオフセットを示します。

バッファのエラーオフセット(64 ビット)フィールドの ACBXERRG は使用できませんが、今後のリリースで使用できるようになる可能性があります。 現時点では、バッファのエラーオフセット(32 ビット)フィールドの ACBXERRA を使用してください。

ACBXERRx フィールドは、レスポンスコードがダイレクトコールから返されたときにのみ設定されます。 ACBXERRA、ACBXERRD、ACBXEFFE の各フィールドは、レスポンスコードがバッファ処理に関連しているときにのみ設定されます。

バッファ内のエラーオフセット(32 ビット)(ACBXERRA)

バッファのエラーオフセット(64 ビット)およびバッファのエラーオフセット(32 ビット)フィールドは、存在する場合、ダイレクトコール中にエラーが検出されたバッファのオフセットを示します。

バッファのエラーオフセット(64 ビット)フィールドの ACBXERRG は使用できませんが、今後のリリースで使用できるようになる可能性があります。 現時点では、バッファのエラーオフセット(32 ビット)フィールドの ACBXERRA を使用してください。

ACBXERRx フィールドは、レスポンスコードがダイレクトコールから返されたときにのみ設定されます。 ACBXERRA、ACBXERRD、および ACBXERRF フィールドは、レスポンスコードがバッファ処理に関連しているときにのみ設定されます。

エラー文字フィールド(ACBXERRB)

このフィールドは、エラー検出時に処理されていたフィールドがあれば、そのフィールドの 2 バイトの Adabas ショートネームを示します。

ACBXERRx フィールドは、レスポンスコードがダイレクトコールから返されたときにのみ設定されます。

エラーサブコード(ACBXERRC)

このフィールドには、ダイレクトコール処理中に発生したエラーのサブコードが格納されます。

ACBXERRx フィールドは、レスポンスコードがダイレクトコールから返されたときにのみ設定されます。 Entire Net-Work がインストールされている場合、レスポンスコードによってはこのフィールドに障害が発生したノードのノード ID が返されます。

エラーバッファ ID(ACBXERRD)

このフィールドには、ACBXERRA フィールドが参照するバッファの ID(ABDID フィールドから取得したもの)が格納されるため、複数のバッファが関与している場合にも、エラーが発生しているバッファを特定できます。

ACBXERRx フィールドは、レスポンスコードがダイレクトコールから返されたときにのみ設定されます。 ACBXERRA、ACBXERRD、および ACBXERRF フィールドは、レスポンスコードがバッファ処理に関連しているときにのみ設定されます。

予約(ACBXERRE)

このフィールドは将来の使用のために予約されています。 現時点ではこのフィールドを使用しないでください。

エラーバッファシーケンス番号(ACBXERRF)

ACBXERRA フィールドおよび ACBXERRD フィールドを参照するエラーがバッファセグメントに含まれている場合、このフィールドにはそのセグメントの 2 バイトのシーケンス番号が入ります。

ACBXERRx フィールドは、レスポンスコードがダイレクトコールから返されたときにのみ設定されます。 ACBXERRA、ACBXERRD、および ACBXERRF フィールドは、レスポンスコードがバッファ処理に関連しているときにのみ設定されます。

サブコンポーネントレスポンスコード(ACBXSUBR)

このフィールドには、Adabas アドオン製品が Adabas コマンドをインターセプトしたときに発生したエラーからのレスポンスコードが入ります。

サブコンポーネントレスポンスサブコード(ACBXSUBS)

このフィールドには、Adabas アドオン製品が Adabas コマンドをインターセプトしたときに発生したエラーからのレスポンスサブコードが入ります。

サブコンポーネントエラーテキスト(ACBXSUBT)

このフィールドには、Adabas アドオン製品が Adabas コマンドをインターセプトしたときに発生したエラーのエラーテキストが入ります。

圧縮レコード長(ACBXLCMP)

このフィールドには、レコード読み書き時の圧縮レコード長が返されます。

これは、正常に完了した Adabas コールが処理した圧縮データの長さです。 論理データストレージレコードが複数の物理データレコードにスパンしている場合、関連する物理レコードをすべて結合した長さがわからなくなることがあります。 この場合、Adabas はこのフィールドの下位ワードに高い値を返します。

非圧縮レコード長(ACBXLDEC)

このフィールドには、非圧縮レコード長が返されます。 これは、正常に完了したコールが処理した非圧縮データの長さです。 複数のレコードバッファセグメントを指定した場合は、バッファセグメントをすべて合計した長さになります。

コマンドタイム(ACBXCMDT)

コマンドタイム(スレッドタイムとも言う)フィールドは、ニュークリアスがコマンドを処理するのに要した経過時間を返すために、Adabas が使用します。 これには、コマンドを実行する Adabas スレッドが Adabas I/O オペレーションまたは他のリソースで待機する時間は含まれませんが、コードを実行できるよう、スレッドがプロセッサを待機する時間は含まれます。 経過時間は 1/4096 ミリ秒単位で計測され、バイナリ形式で表されます。

ユーザーエリア(ACBXUSER)

ユーザーエリアフィールドは、ユーザープログラムで使用できるように予約されています。 論理ユーザーコールを発行したとき、Adabas はユーザーエリアをいっさい読み書きしません。

予約 4(ACBXRSV4)

このフィールドは、Adabas での使用のために予約されています。 ユーザープログラムでは、この ACBX を使用して最初の Adabas コールを実行する前にこのフィールドをバイナリの 0 に設定し、以後同じ値のままにしておく必要があります。

ACBX DSECT

ACBX DSECT は、分散 Adabas SRCE ライブラリのメンバ ADACBX にあります。 また、このセクションには、参考のために ACBX フォーマット表も記載されています。

Top of page

ACB と ACBX の相違点

ACBX は多くの点で ACB と異なります。 ACBX には ACB にはないフィールドがいくつかあり、一部の ACBX フィールドのサイズは ACB の同じフィールドよりも大きくなっています。 ACBX におけるこれらの拡張は、基本的な構造を長期間にわたって変更することなく将来行われる予定の Adabas への機能強化に対応できるように、ACBX 構造に十分な柔軟性を持たせるために行われました。

このセクションでは、ACB と ACBX の相違点について説明します。

コントロールブロック長

ACBX の長さは 192(または X’C0’)バイトで、ACB の長さは 80 バイトです。

バッファ長フィールド

バッファ長フィールドは ACB に含まれていますが ACBX には含まれていません。 ACBX ダイレクトコールインタフェースを使用している場合は、このフィールドは個々の Adabas バッファ記述(ABD)に用意されます。 したがって ACBX には、ACB に含まれる ACBFBL、ACBIBL、ACBRBL、ACBSBL および ACBVBL に対応するバッファフィールドが含まれません。コールに関連付けられた ABD が代わりに使用されます。 1 つの ABD は、単独の Adabas バッファセグメントを表します。 詳細は、「Adabas バッファ記述」で説明しています。

コマンドオプションフィールド、アディションフィールド、および予約フィールド

ACBX の方が、コマンドオプション、アディション、予約済みコントロールブロックのフィールドの数が多くなっています。

単位の相違

コマンドタイム(スレッドタイム)を計測する単位は ACB と ACBX で異なります。 ACB では、コマンドタイム(ACBCMDT)を 16 マイクロ秒単位で計測します。ACBX では、コマンドタイム(ACBXCMDT)を 1/4096 マイクロ秒単位で計測します。

フィールド長の相違

多くのコントロールブロックフィールドで ACBX の方が長さが長くなっています。 次の表は、これらの変更点を要約したものです。

フィールドタイトル 長さ
ACB ACBX
ファイル番号 2 4
データベース ID 2 4
ISN 4 4
ISN 下限 4 4
ISN 数 4 4
圧縮レコード長 4 8
非圧縮レコード長 4 8
コマンドタイム 4 8
ユーザーエリア 4 16
フォーマットバッファ長 2 4(ABD 内)
レコードバッファ長 2 4(ABD 内)
サーチバッファ長 2 4(ABD 内)
バリューバッファ長 2 4(ABD 内)

ACBX に追加されたフィールド

ACBX には次のフィールドが追加されています。

ACBX DSECT 名 説明
ACBXADD6 アディション 6
ACBXCOP3 コマンドオプション 3
ACBXCOP4 コマンドオプション 4
ACBXCOP5 コマンドオプション 5
ACBXCOP6 コマンドオプション 6
ACBXCOP7 コマンドオプション 7
ACBXCOP8 コマンドオプション 8
ACBXDBID データベース ID です。 ACB では、データベース ID は X'30' コールではレスポンスコードフィールド(ACBRSP)内、その他の論理コールでは ACBFNR の 1 バイト目に格納されます。
ACBXERRA バッファ内へのエラーオフセット(32 ビット)です。
ACBXERRB エラー文字フィールド(フィールド名)です。
ACBXERRC エラーサブコードです。
ACBXERRD 複数のバッファが関連する場合のエラーバッファ ID です。
ACBXERRE 複数のバッファが関連する場合のエラーバッファシーケンス番号です。
ACBXERRG バッファ内へのエラーオフセット(64 ビット)です。このフィールドは現在サポートされていません。
ACBXLCMP 圧縮レコード長(レコード全体が読み込まれていない場合はレコードの一部)です。 ACB では、圧縮レコード長はアディション 2 フィールド(ACBADD2)に格納されます。
ACBXLDEC 非圧縮レコード長です。 ACB では、非圧縮レコード長はアディション 2 フィールド(ACBADD2)に格納されます。
ACBXLEN ACBX の長さ(現在 192)です。
ACBXRSV2 予約済みです。 このフィールドの値はゼロに設定されている必要があります。
ACBXRSV3 予約済みです。 このフィールドの値はゼロに設定されている必要があります。
ACBXRSV4 Adabas が使用するように予約済みです。
ACBXSUBR Adabas アドオン製品により使用されるサブコンポーネントレスポンスコードです。
ACBXSUBS Adabas アドオン製品により使用されるサブコンポーネントレスポンスサブコードです。
ACBXSUBT Adabas アドオン製品により使用されるサブコンポーネントエラーテキストです。
ACBXVER C'F2' に設定した場合、このフィールドは Adabas に新しい拡張 ACB(ACBX)が使用されていることを示します。

ACB 多目的フィールドの変化

複数の用途を持つ ACB フィールドが、ACBX の追加のフィールドに分割されているケースが多く見られます。

構造およびオフセットの相違点

次の表に示すように、ACBX フィールドのオフセットおよびシーケンスは、対応する ACB フィールドとは全般的に異なります。

オフセット ACB DSECT フィールド名 ACBX DSECT フィールド名
00 ACBTYPE(コールタイプ) ACBXTYPE(コールタイプ)
01 予約 ACBXRSV1(予約 1)
02 ACBCMD(コマンドコード) ACBXVER(ACBX バージョンインジケータ)
04 ACBCID(コマンド ID) ACBXLEN(ACBX 長)
06 (ACBCID の続き) ACBXCMD(コマンドコード)
08 ACBFNR(ファイル番号) ACBXRSV2(予約 2)
0A ACBRSP(レスポンスコード -- X'30' コールでデータベース ID に使用される) ACBXRSP(レスポンスコード)
0C ACBISN(ISN) ACBXCID(コマンド ID)
10 ACBISL(ISN 下限) ACBXDBID(データベース ID)
14 ACBISQ(ISN 数) ACBXFNR(ファイル番号)
18 ACBFBL(フォーマットバッファ長) ACBXISNG(8 バイト ISN)
1A ACBRBL(レコードバッファ長) (ACBXISNG の続き)
1C ACBSBL(サーチバッファ長) ACBXISN(ISN -- ACBXISNG に含まれる
1E ACBVBL(バリューバッファ長) (ACBXISN および ACBXISNG の続き)
20 ACBIBL(ISN バッファ長) ACBXISLG(8 バイト ISN 下限)
22 ACBCOP1(コマンドオプション 1) (ACBXISLG の続き)
23 ACBCOP2(コマンドオプション 2) (ACBXISLG の続き)
24 ACBADD1(アディション 1) ACBXISL(ISN 下限 -- ACBXISLG に含まれる
28 (ACBADD1 の続き) ACBXISQG(8 バイト ISN 数)
2C ACBADD2(アディション 2) ACBXISQ(ISN 数 -- ACBXISQG に含まれる
30 ACBADD3(アディション 3) ACBXCOP1(コマンドオプション 1)
31 (ACBADD3 の続き) ACBXCOP2(コマンドオプション 2)
32 (ACBADD3 の続き) ACBXCOP3(コマンドオプション 3)
33 (ACBADD3 の続き) ACBXCOP4(コマンドオプション 4)
34 (ACBADD3 の続き) ACBXCOP5(コマンドオプション 5)
35 (ACBADD3 の続き) ACBXCOP6(コマンドオプション 6)
36 (ACBADD3 の続き) ACBXCOP7(コマンドオプション 7)
37 (ACBADD3 の続き) ACBXCOP8(コマンドオプション 8)
38 ACBADD4(アディション 4) ACBXADD1(アディション 1)
40 ACBADD5(アディション 5) ACBXADD2(アディション 2)
44 (ACBADD5 の続き) ACBXADD3(アディション 3)
48 ACBCMDT(コマンドタイム) (ACBXADD3 の続き)
4C ACBUSER(ユーザーエリア) ACBXADD4(アディション 4)
54 --- ACBXADD5(アディション 5)
5C --- ACBXADD6(アディション 6)
64 --- ACBXRSV3(予約 3)
68 --- ACBXERRG(バッファ内のエラーオフセット、64 ビット -- 現在サポートされていません)
6C --- ACBXERRA(バッファ内のエラーオフセット、32 ビット)
70 --- ACBXERRB(エラー文字フィールド)
72 --- ACBXERRC(エラーサブコード)
74 --- ACBXERRD(エラーバッファ ID)
75 --- ACBXERRE(エラーバッファシーケンス番号)
78 --- ACBXSUBR(サブコンポーネントレスポンスコード)
7A --- ACBXSUBS(サブコンポーネントレスポンスサブコード)
7C --- ACBXSUBT(サブコンポーネントエラーテキスト)
80 --- ACBXLCMP(圧縮レコード長)
88 --- ACBXLDEC(非圧縮レコード長)
90 --- ACBXCMDT(コマンドタイム)
98 --- ACBXUSER(ユーザーエリア)
A8 --- ACBXRSV4(予約 4)

Top of page

コントロールブロックのロギング

コマンドログ(CLOG)には、CLOGLAYOUT=5 と CLOGLAYOUT=8 の 2 つのフォーマットがあります。 ADARUN パラメータ CLOGLAYOUT によって、使用するフォーマットを区別します。

注意:
Adabas 8 までのバージョン向けのユーザープログラムには CLOGLAYOUT=5 を使用することをお勧めします。 Adabas 8 以降向けのユーザープログラムには、CLOGLAYOUT=8 を使用してください。

Adabas ニュークリアス起動パラメータに CLOGLAYOUT=5 を指定すると、Adabas コントロールブロックフィールドがすべて基本コマンドログエリアに記録されます。 CLOGLAYOUT=8 を使用すると、各バッファとも CLOGLAYOUT=5 の場合とほとんど同じように書き出されますが、各バッファの接頭辞として、対応する Adabas バッファ記述(ABD)が付加される点が異なります。 各セグメントバッファ(フォーマット、レコード、またはマルチフェッチ)は別々に書き込まれ、一意に識別されます。

CLOGLAYOUT パラメータについては、「CLOGLAYOUT コマンドログレイアウト」を参照してください。 この 2 つのコマンドログフォーマットの詳細については、「コマンドログフォーマット」を参照してください。

Top of page