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

S8 コマンド:ISN リストの処理

S8 コマンドは、同じファイルから作成された 2 つの ISN リストを AND、OR または NOT の論理演算子で結合します。 詳しくは「ISN リスト処理」を参照してください。

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


機能および使用

S8 コマンドは、先の Sx コマンドで作成された 2 つの ISN リストに論理演算処理を行います。 どちらの ISN リストも、次の条件を満たす必要があります

ISN 順に並んでない S2 コマンドまたは S9 コマンドで作成された ISN リストは使用できません。

ISN リストを作成し、S8 コマンドを実行するまでの間に、これらの ISN リストに対する処理(アクセスまたは更新)を行ってはいけません。

S8 コマンドは、次の論理演算に使用できます。

演算子 ISN 結果リストに格納される ISN の内容
AND 両方の ISN リスト
OR どちらか一方の ISN リスト
NOT 2 番目ではなく最初の ISN リスト

実行結果の ISN は、コマンドオプションの指定やコマンド ID フィールドの設定に従って、ISN バッファに返されたり、ISN 昇順で WORK データセットに格納されたりします。

Top of page

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

このセクションでは、S8 コマンドの 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 U
ISN 数 21~24 バイナリ -- A
  25~32 -- -- --
ISN バッファ長 33~34 バイナリ F U
コマンドオプション 1 35 英数字 F U
コマンドオプション 2 36 英数字 F U
アディション 1 37~44 英数字 F U
  45~48 -- -- --
アディション 3 49~56 英数字 F A
  57~72 -- -- --
コマンドタイム 73~76 バイナリ -- A
ユーザーエリア 77~80 -- -- U

バッファエリア

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

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

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* 使用しませんが、コールステートメントのパラメータリストに含める必要があります。

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

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

コマンドコード(ACBCMD)

S8

コマンド ID(ACBCID)

コマンドオプション 1 フィールドにコマンドオプションを指定した場合、このフィールドに空白およびゼロ以外のコマンド ID を指定する必要があります。

詳しくは「ISN リスト処理」を参照してください。

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

ファイル番号(ACBFNR)

処理する 2 つの ISN リストの作成元となったファイルの番号を指定します。

レスポンスコード(ACBRSP)

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

ISN(ACBISN)

Adabas はこのフィールドに、ISN 結果リストの先頭 ISN を返します。 実行結果の ISN リストがない場合、このフィールドは変更されません。 これは最初のコールでも、Adabas WORK データセットから ISN を読み取るのに使用する後続のコールでも同様です。

ISN 下限(ACBISL)

このフィールドを最初の Sx コールで使用すると、ISN 結果リストが、このフィールドに指定した ISN より大きい ISN に制限されます。 このフィールドをゼロにすると、Adabas は条件に合った ISN をすべて返します。

また、このフィールドは、Adabas WORK データセットからセーブされた ISN リストの ISN グループを取得するときにも使用します。

ISN 数(ACBISQ)

最初の S8 コールの結果として ISN リストに入る ISN の数が返されます。

また、Adabas WORK データセットから ISN を取得する後続の S8 コールの結果として、ISN バッファに返された ISN の数が表示されます。

ISN バッファ長(ACBIBL)

ISN バッファ長(バイト単位)。 この長さによって ISN バッファに配置される ISN の数が決定します。

このフィールドをゼロにすると、ISN は ISN バッファに追加されません。 L1 または L4 コマンドの GET NEXT オプションを指定して ISN 結果リストを読み込む場合、または条件に合ったレコード数を求めるためだけにコマンドを発行する場合、このフィールドはゼロにする必要があります。

ゼロ以外の値を指定する場合は、4 の倍数にする必要があります。 それ以外の場合、長さには 4 の倍数で次に小さい整数が設定されます。

コマンドオプション 1:SAVE ISN LIST オプション、コマンド ID 解放オプション(ACBCOP1)
オプション 説明
H(ISN リストの格納) S8 コマンドを実行して得られた全 ISN リストを、指定したコマンド ID で Adabas ワークに格納します。 正しいコマンド ID を指定する必要があります。 コマンド ID を指定しないと、ISN リストは Adabas ワークに格納されず、ISN バッファに格納されなかった ISN はすべて失われます。
I S8 コマンド実行中の最初の処理として、コマンド ID フィールドに指定されているコマンド ID(CID)値とすべての関連 ISN リストを解放します。 コマンド ID が解放されるのは ISN リストテーブル内だけなので、 同じコマンド ID が ISN 結果リストを識別するのに再度使用されます。
コマンドオプション 2:論理演算(ACBCOP2)

このフィールドに入力された値は、ISN リストに行う論理演算を示します。

オプション オペレーション ISN 結果リストに格納される ISN の内容
D AND 両方の ISN リスト
O OR いずれかの ISN リスト
N NOT 2 番目ではなく最初の ISN リスト
アディション 1:コマンド ID(ACBADD1)

このフィールドには、処理対象の ISN リストを識別するコマンド ID を(コマンド ID ごとに 4 バイト)指定しなければなりません。 各 ISN リストは、現在 Adabas WORK データセットに格納されていて、同一ファイルの ISN で構成されている必要があります。

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

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

ACB の例

2 つの ISN リストのいずれかに属する ISN を持つ第 3 の ISN リストを生成するために、2 つのリスト間に論理 OR 演算を行います。 処理する ISN リストは、コマンド ID U020 と U021 の下で Adabas WORK データセットに格納したものです。 ISN 結果リストはコマンド ID U999 の下で Adabas ワークに格納します。 SAVE ISN LIST オプションを使用します。

コントロールブロック

コマンドコード S8  
コマンド ID U999 ISN 結果リストをコマンド ID U999 の下で格納します。
ISN 下限 0 実行結果の全 ISN を選択します。
ISN バッファ長 0 ISN バッファには ISN は返されません
コマンドオプション 1 H SAVE ISN LIST オプション使用
コマンドオプション 2 O OR 演算を行います。
アディション 1 U020U021 コマンド ID U020 と U021 で識別される ISN リストを処理します。
アディション 3 bbbbbbbb(空白) ファイルはセキュリティ保護されていません

Top of page

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

このセクションでは、S8 コマンドの 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 U
  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~114 --- --- ---
エラーサブコード 115~116 バイナリ --- A
  117~144 --- --- ---
コマンドタイム 145~152 バイナリ --- A
ユーザーエリア 153~168 該当なし --- U
--- 169~193 操作不可 --- ---

ABD とバッファ

ABD とバッファ Adabas コール前 Adabas コール後
ISN --- A

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

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
--- 未使用

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

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

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

F2

コマンドコード(ACBXCMD)

S8

レスポンスコード(ACBXRSP)

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

コマンド ID(ACBXCID)

コマンドオプション 1 フィールドにコマンドオプションを指定した場合、このフィールドに空白およびゼロ以外のコマンド ID を指定する必要があります。

詳しくは「ISN リスト処理」を参照してください。

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

データベース ID(ACBXDBID)

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

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

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

ファイル番号(ACBXFNR)

このフィールドは、処理する 2 つの ISN リストの作成元となったファイルの番号を指定するのに使用します。

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

ISN(ACBXISN)

Adabas はこのフィールドに、ISN 結果リストの先頭 ISN を返します。 実行結果の ISN リストがない場合、このフィールドは変更されません。 これは最初のコールでも、Adabas WORK データセットから ISN を読み取るのに使用する後続のコールでも同様です。

ISN 下限(ACBXISL)

このフィールドを最初の Sx コールで使用すると、ISN 結果リストが、このフィールドに指定した ISN より大きい ISN に制限されます。 このフィールドをゼロにすると、Adabas は条件に合った ISN をすべて返します。

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

また、このフィールドは、Adabas WORK データセットからセーブされた ISN リストの ISN グループを取得するときにも使用します。

ISN 数(ACBXISQ)

最初の S8 コールの結果として ISN リストに入る ISN の数が返されます。

また、Adabas WORK データセットから ISN を取得する後続の S8 コールの結果として、ISN バッファに返された ISN の数が表示されます。

コマンドオプション 1:SAVE ISN LIST オプション、コマンド ID 解放オプション(ACBXCOP1)
オプション 説明
H(ISN リストの格納) S8 コマンドを実行して得られた全 ISN リストを、指定したコマンド ID で Adabas ワークに格納します。 正しいコマンド ID を指定する必要があります。 コマンド ID を指定しないと、ISN リストは Adabas ワークに格納されず、ISN バッファに格納されなかった ISN はすべて失われます。
I S8 コマンド実行中の最初の処理として、コマンド ID フィールドに指定されているコマンド ID(CID)値とすべての関連 ISN リストを解放します。 コマンド ID が解放されるのは ISN リストテーブル内だけなので、 同じコマンド ID が ISN 結果リストを識別するのに再度使用されます。
コマンドオプション 2:論理演算(ACBXCOP2)

このフィールドに入力された値は、ISN リストに行う論理演算を示します。

オプション オペレーション ISN 結果リストに格納される ISN の内容
D AND 両方の ISN リスト
O OR いずれかの ISN リスト
N NOT 2 番目ではなく最初の ISN リスト
アディション 1:コマンド ID(ACBXADD1)

このフィールドには、処理対象の ISN リストを識別するコマンド ID を(コマンド ID ごとに 4 バイト)指定しなければなりません。 各 ISN リストは、現在 Adabas WORK データセットに格納されていて、同一ファイルの ISN で構成されている必要があります。

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

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

エラーサブコード(ACBXERRC)

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

Top of page

バッファ

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

フォーマットバッファ

これが ACB インターフェイスダイレクトコールであり、フォーマットバッファが指定されていない場合は、処理エラーが発生します。ACB インターフェイスダイレクトコールはセットシーケンスにバッファが指定されていることを要求します。 ACBX インターフェイスダイレクトコールの場合は、フォーマットバッファを指定する必要はありません。

レコードバッファ

ACB インターフェイスダイレクトコールの場合は、レコードバッファを指定しないと、処理エラーが発生します。ACB インターフェイスダイレクトコールの処理では、セットシーケンスにバッファが指定されていることが前提になっています。 ACBX インターフェイスダイレクトコールの場合は、レコードバッファを指定する必要はありません。

サーチバッファ

ACB インターフェイスダイレクトコールの場合は、サーチバッファを指定しないと、処理エラーが発生します。ACB インターフェイスダイレクトコールの処理では、セットシーケンスにバッファが指定されていることが前提になっています。 ACBX インターフェイスダイレクトコールの場合は、サーチバッファを指定する必要はありません。

バリューバッファ

ACB インターフェイスダイレクトコールの場合は、バリューバッファを指定しないと、処理エラーが発生します。ACB インターフェイスダイレクトコールの処理では、セットシーケンスにバッファが指定されていることが前提になっています。 ACBX インターフェイスダイレクトコールの場合は、バリューバッファを指定する必要はありません。

ISN バッファ

Adabas は、このバッファに ISN 結果リストを配置します。 各 ISN は 4 バイトの 2 進数で返されます。 ISN は ISN 順に返されます。

ISN バッファが実行結果の全 ISN を入れるのに十分な大きさでなく、しかも空白やゼロ以外のコマンド ID を使用した場合、Adabas はオーバーフローした ISN を WORK データセットに格納します。 これらの ISN は、その後同じコマンド ID の Sx コールで読み込むことができます。 詳しくは「ISN リスト処理」を参照してください。

Top of page