S8 コマンド(ISN リストの集合演算)

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


機能および使用

S8 コマンドは、先の Sx コマンドで作成された 2 つの ISN リストに論理演算処理を行うために使用します。

処理を行う 2 つの ISN リストは、ISN 順に並んでいなければなりません。S2 または S9 コマンドで作成された ISN 順に並んでない ISN リストは使用できません。

使用する ISN リストには、単一 Adabas ファイルの ISN が含まれていなければなりません。

S8 コマンドは、以下の論理演算を行うのに使用できます。

  • AND(論理積)実行結果の ISN リストには、両方の ISN リストに共通に存在する ISN が含まれます。

  • OR(論理和)実行結果の ISN リストには、両方の ISN リストのうちどちらかに存在する ISN が含まれます。

  • NOT実行結果の ISN リストには、第 1 の ISN リストに属し、第 2 の ISN リストには属さない ISN が含まれます。

実行結果の ISN は、昇順で ISN バッファに返されます。

1 つまたは両方の元 ISN リストが SAVE ISN LIST オプションを指定しないで格納された場合は、そのリスト(複数可)が S8 コマンド終了時に自動的に解放されます。

graphics/s8.png

S8 Command, Procedure Flow

コントロールブロック

Field フォーマット  
コールタイプ B F/U
予約(内部使用)   -/-
コマンドコード A F/U
コマンド ID B F/U
File Number B F/U (1)
Response Code B F/A (1)
ISN B -/A
ISN 下限 B F/A
ISN 数 B -/A
ISN バッファ長(ACB のみ) B F/U
コマンドオプション 1 A F/U
コマンドオプション 2 A F/U
アディション 1 A F/U
アディション 2 A、B -/A
アディション 3 A F/A
コマンドタイム B -/A
ユーザーエリア   F/U

バッファエリア

バッファ  
フォーマットバッファ *
レコードバッファ *
サーチバッファ *
バリューバッファ *
ISN バッファ –/A
フォーマット:
A 英数字
B 2 進数
x/y Adabasコール前/後 - xとyは、値を取ることができます。
A Adabas によって設定
F ユーザーによって設定
U Adabas コール後も変更なし
- 使用しません
* 使用せず。ただし、コールステートメントのパラメータリストに含まれていなければならない。

(1)このフィールドの意味は、Call タイプに指定された値によって異なります。詳細については、「Adabas の呼び出し」の「コントロールブロック」を参照してください。

コントロールブロック

コマンドコード

S8

コマンド ID

このフィールドは、結果の ISN リストを Adabas 一時ワークスペースに格納する場合に、ISN リストを識別する値を指定するために使用します。

SAVE ISN LIST オプションを使用する場合、またはオーバーフローした ISN を格納する場合には、このフィールドに空白以外でゼロ以外の値を指定する必要があります。

コマンド ID の自動生成を使用するとき以外、このフィールドの上位バイトを 16 進数の FF に設定しないでください(詳細については、「プログラミングの考慮事項」の「コマンド ID の使用」を参照)。

このフィールドの上位バイトには 16 進数 "FF" をセットしないでください。

File Number

処理対象 ISN リストを取得するファイルの番号。

Response Code

このフィールドには、コマンドに対するレスポンスコードが返されます。レスポンスコード 0 は、このコマンドが正しく実行されたことを示します。

ISN

このフィールドには、ISN 結果リストの先頭 ISN が返されます。実行結果の ISN リストがない場合、このフィールドは変更されません。これは最初のコールでも、その後の Adabas 一時ワークスペースから ISN を取得するためのコールでも同様です。

ISN 下限

このフィールドを最初の Sx コールで使用すると、このフィールドに指定した ISN より大きい ISN だけが ISN 結果リストに含まれるように制限されます。このフィールドをゼロに設定すると、該当するすべての ISN が返されます。

また、このフィールドは、Adabas 一時ワークスペースに保存された ISN リストから ISN グループを取得するときにも使用します。

ISN 数

Adabas はこのフィールドに、最初の S8 コールの結果として実行結果の ISN リストに入るレコード数を返します。

また、Adabas 一時ワークスペースから ISN を取得するための後続の S8 コールの結果として、Adabas は ISN バッファに格納した ISN の数を返します。

ISN バッファ長(ACB のみ)

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

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

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

コマンドオプション 1

このフィールドを H にすると、SAVE ISN LIST オプションを呼び出します。このオプションを使用すると、Adabas は実行結果の ISN リスト全体を Adabas 一時ワークスペースに格納します。

コマンドオプション 2

このフィールドは、ISN リストに行う論理演算を示すのに使用します。

D は、AND(論理積)演算を行います。実行結果の ISNリスト には、両 ISN リストに共通の ISN だけが入ります。

O は、OR(論理和)演算を行います。実行結果の ISN リストには、両 ISNリストのうち、どちらかに存在する ISN がすべて入ります。

N は、NOT演算を行います。実行結果の ISN リストには、第 1 リストにあって、第 2 リストにない ISN が入ります。

I は、コマンド実行時に最初に行うアクションとして、コマンド ID フィールドに指定された CID 値を解放します。

アディション 1

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

アディション 2

このフィールドには、一部のレスポンスコードについて詳細情報が返されます。詳細については、『Adabas メッセージおよびコードマニュアル』を参照してください。

アディション 3

セキュリティ保護のためのパスワードを指定します。

使用するファイルがセキュリティ保護されていない場合、このフィールドは空白にしておきます。ファイルがセキュリティ保護されている場合は、ユーザーは該当するパスワードを指定する必要があります。

指定したパスワードを保護するため、このフィールドはコマンド処理時に空白にセットされます。

ISN バッファ

このバッファには、ISN 結果リストが格納されます。各 ISN は 4 バイトの 2 進数で返されます。

ISN バッファ長がゼロでなく、ISN バッファが実行結果の全 ISN を格納するのに充分な大きさがなく、しかも空白やゼロ以外のコマンド ID を使用した場合には、Adabas はオーバーフローした ISN を Adabas 一時ワークスペースに格納します。これらの ISN は、その後、同一コマンド ID の Sx コールで読み込むことができます。詳細については、「プログラミングの考慮事項」の「ISN リスト処理」を参照してください。

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

コントロールブロック:

Command Code          S8
Command ID            U999  (the  resulting  ISN  list is to be
                             stored under the command ID U999)
ISN Lower Limit       0 (all of the resulting  ISNs  are to  be
                         selected)
ISN Buffer Length     0  (no ISNs are to be returned in the ISN
                          Buffer)
Command Option 1      H (Save ISN List option to be used)
Command Option 2      O (an OR operation is to be performed)
Additions 1           U020U021 (the ISN lists identified by the
                                command  IDs  U020  and  U021  are  to be
                                processed)
Additions 3           bbbbbbbb (file is not security protected)