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

ET コマンド:トランザクションの終了

ET コマンドは、現在のトランザクションを終了して保存します。

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


機能および使用

ET コマンドは、論理トランザクションの終了を示すのに使用します。 各論理トランザクションで、ET コマンドを発行しなければなりません。 後続のトランザクションでリストアまたはバックアウトすると、最後の ET コマンドで設定したデータベースステータスに戻ります。

ET コマンドでは、次の処理を行います。

ET コマンドを正しく実行すると、後続のユーザーまたは Adabas セッションが中断しても、トランザクションで実行した更新処理がすべてデータベースに適用されます。

ET ロジックユーザーが、システムエラーの発生後またはトランザクションの最中に OP コマンドを発行すると、Adabas は BT コマンドを自動的に発行します。

Top of page

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

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

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

コントロールブロック

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

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

バッファエリア

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

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

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* ET データを格納する場合にのみ必須です。
** ISN ホールドオプションには必須、マルチフェッチオプションには任意
*** 使用されませんが、ET データを格納する場合にはコールステートメントのパラメータリストに含める必要があります。
**** データベース ID は、複数のデータベースにアクセスして、特定のデータベースに対してコマンド処理を制限する必要がある場合にのみ必要になります。
-- 未使用

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

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

コマンドコード(ACBCMD)

ET

コマンド ID(ACBCID)

Adabas はこのフィールドにバイナリの 0 またはトランザクションシーケンス番号を返します。

更新コマンド(A1、E1、N1、N2)を発行しないで、トランザクションが ET コマンドによって終了すると、バイナリの 0 が返されます。

それ以外の場合、トランザクションシーケンス番号はバイナリ形式で返されます。 この番号は、ユーザーセッションごとに 1 から順番に昇順に割り当てられます。

ファイル番号(ACBFNR)

データベース ID は、複数のデータベースにアクセスして、特定のデータベースに対してコマンド処理を制限する必要がある場合にのみ必要になります。

レスポンスコード(ACBRSP)

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

ISN 下限(ACBISL)

ISN ホールドオプションを指定した場合、6 バイトの ISN バッファエントリのカウントをこのフィールドに入れる必要があります。

ISN 数(ACBISQ)

このフィールドに Adabas は、タイマの単位として指定された値に応じた、トランザクション経過時間を返します(基本単位は 1.05 秒)。

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

ユーザーデータを Adabas システムファイルに格納する場合は、格納するデータのバイト数をこのフィールドに指定する必要があります。

Adabas は、このフィールドに指定されたバイト数だけ格納します。 指定可能な最大バイト数は、2000 バイトです。

ユーザーデータを格納しない場合、このフィールドは使用しません。

ISN バッファ長(ACBIBL)

ISN バッファ長(バイト単位)。 この長さは、ISN ホールドオプションまたはマルチフェッチオプションを使用するときのみ必要です(コマンドオプション 1 フィールドの説明を参照)。

コマンドオプション 1:ISN ホールドオプション(ACBCOP1)

注意:
ADARUN PREFETCH=YES でマルチフェッチを設定すると、ET/BT コマンドに対して P オプションが自動的に使用されます(他のすべてのコマンドに対しては M オプションが自動的に使用されます)。 このフィールドを使用して、このオプション設定を変更することはできません

デフォルトでは、ET コマンドを実行すると、Adabas はユーザーが現在ホールドしている全 ISN を解放します。

オプション 説明
P これらの ISN の全部または一部をホールド状態に戻します。 ホールド状態に戻る ISN は ISN バッファに指定する必要があります。また、ISN カウントは ISN 下限フィールドに指定する必要があります。
M(コマンドレベルのマルチフェッチ) 現在のトランザクションによってホールドされているレコードのサブセットのみを解放します。 ホールド状態から解放されたレコードを ISN バッファに指定します。 ISN バッファ内の最初のフルワードは 8 バイトの要素の数を指定し、その後に続く各 8 バイトグループは、ホールド状態から解放される 1 つのファイル番号/ISN ID として解釈されます。
コマンドオプション 2:ユーザーデータ格納(ACBCOP2)
オプション 説明
E ユーザーデータが Adabas システムファイルに格納されることを示します。

ACB の例

例 1:ユーザーデータなしの ET

コントロールブロック

コマンドコード ET  
コマンドオプション 2 b 格納するユーザーデータはなし

例 2:ユーザーデータ付きの ET

コントロールブロック

コマンドコード ET  
レコードバッファ長 25 25 バイトのユーザーデータを格納します。
コマンドオプション 2 E ユーザーデータを格納します。

バッファエリア

レコードバッファ USER DATA FOR TRANSACTION

例 3:ISN ホールドオプション付きの ET

コントロールブロック

コマンドコード ET  
ISN 下限 3  
ISN バッファ長 18  
コマンドオプション 1 P ISN をホールド状態にします。

バッファエリア

ISN バッファ
000600000001 ISN 1
000600000002 ISN 2
000600000003 ISN 3

Top of page

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

このセクションでは、ET コマンドの 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 英数字/バイナリ --- A
データベース ID**** 17~20 数値 F U
  21~36 --- --- ---
ISN 下限 37~40 バイナリ F U
  41~44 --- --- ---
ISN 数 45~48 バイナリ --- A
コマンドオプション 1 49 英数字 F U
コマンドオプション 2 50 英数字 F U
  51~114 --- --- ---
エラーサブコード 115~116 バイナリ --- A
  117~144 --- --- ---
コマンドタイム 145~152 バイナリ --- A
ユーザーエリア 153~168 該当なし --- U
--- 169~193 操作不可 --- ---

ABD とバッファ

ABD とバッファ Adabas コール前 Adabas コール後
フォーマット * *** --
レコード * F U
ISN ** F U

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

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* ET データを格納する場合にのみ必須です。
** ISN ホールドオプションには必須、マルチフェッチオプションには任意
*** 使用しませんが、ET データを格納する場合には Adabas コールに含める必要があります。 指定しない場合は、自動的に生成されます。
**** データベース ID は、複数のデータベースにアクセスして、特定のデータベースに対してコマンド処理を制限する必要がある場合にのみ必要になります。
--- 未使用

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

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

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

F2

コマンドコード(ACBXCMD)

ET

レスポンスコード(ACBXRSP)

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

コマンド ID(ACBXCID)

Adabas はこのフィールドにバイナリの 0 またはトランザクションシーケンス番号を返します。

更新コマンド(A1、E1、N1、N2)を発行しないで、トランザクションが ET コマンドによって終了すると、バイナリの 0 が返されます。

それ以外の場合、トランザクションシーケンス番号はバイナリ形式で返されます。 この番号は、ユーザーセッションごとに 1 から順番に昇順に割り当てられます。

データベース ID(ACBXDBID)

このフィールドは、複数のデータベースにアクセスして、特定のデータベースに対するコマンド処理を制限する必要がある場合にのみデータベース ID を指定します。 Adabas コールはこのデータベースに送られます。

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

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

ISN 下限(ACBXISL)

ISN ホールドオプションを指定した場合、6 バイトの ISN バッファエントリのカウントをこのフィールドに入れる必要があります。

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

ISN 数(ACBXISQ)

このフィールドに Adabas は、タイマの単位として指定された値に応じた、トランザクション経過時間を返します(基本単位は 1.05 秒)。

コマンドオプション 1:ISN ホールドオプション(ACBXCOP1)

デフォルトでは、ET コマンドを実行すると、Adabas はユーザーが現在ホールドしている全 ISN を解放します。

オプション 説明
P これらの ISN の全部または一部をホールド状態に戻します。 ホールド状態に戻る ISN は ISN バッファに指定する必要があります。また、ISN カウントは ISN 下限フィールドに指定する必要があります。
M(コマンドレベルのマルチフェッチ) 現在のトランザクションによってホールドされているレコードのサブセットのみを解放します。 ホールド状態から解放されたレコードを ISN バッファに指定します。 ISN バッファ内の最初のフルワードは 8 バイトの要素の数を指定し、その後に続く各 8 バイトグループは、ホールド状態から解放される 1 つのファイル番号/ISN ID として解釈されます。
コマンドオプション 2:ユーザーデータ格納(ACBXCOP2)
オプション 説明
E ユーザーデータが Adabas システムファイルに格納されることを示します。
エラーサブコード(ACBXERRC)

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

Top of page

バッファ

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

フォーマットバッファ

フォーマットバッファは ET コマンドでは使用されませんが、ET データを格納する場合には Adabas コールに含める必要があります。 これが ACB インターフェイスダイレクトコールであり、フォーマットバッファが指定されていない場合は、処理エラーが発生します。ACB インターフェイスダイレクトコールはセットシーケンスにバッファが指定されていることを要求します。 これが ACBX インターフェイスダイレクトコールであり、フォーマットバッファが指定されていない場合は、バッファが自動的に生成されます。

レコードバッファ

ET データを格納する場合、このバッファには Adabas システムファイルに格納されるユーザーデータが入ります。

このデータは、ET データ付きの次の ET コマンドまたは CL コマンドを発行するまで保持されます。 ユーザーデータは、空白以外のユニークなユーザー ID を指定した OP コマンドを発行した場合にのみ、ユーザーセッション終了時に保存されます。

ISN バッファ

コマンドオプション 1 フィールドが "P" の場合は、ホールド状態にする各 ISN に 6 バイトのバイナリエントリを指定する必要があります。先頭 2 バイトにはレコードが存在するファイル番号を指定し、残り 4 バイトにはホールド状態にするレコードの ISN を指定します。 ファイル番号および ISN の整合チェックは行われません。

コマンドオプション 1 フィールドに "M" をセットした場合、現在のトランザクションによってホールドされているレコードのサブセットだけが解放されます。 ISN バッファ内の最初のフルワードは、8 バイトのエレメントの数になります。後続の各 8 バイトグループは、ホールド状態から解放されるレコードのファイル番号/ISN ID であると解釈されます。 詳細については、「BT/ET のマルチフェッチ処理」を参照してください。

Top of page