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

S9 コマンド:ISN リストのソート

S9 コマンドは、ISN リストを昇順またはユーザー指定のディスクリプタ順にソートします。

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


機能および使用

S9 コマンドは、前の Sx コマンドを使用して作成した ISN リストや、ユーザーの与えた ISN リストをソートするのに使用します。 ソート対象の ISN リストは、ISN バッファにあるものか、または Adabas WORK データセットにあるものになります(ISN リストの作成時にそのリストに割り当てられたコマンド ID がアディション 4 フィールドに指定されている場合)。

ISN リストは次の順序でソートされます。

ソートする ISN リストには、ISN が昇順で含まれている必要があります。つまり、このリストとして、S2 コマンドまたは S9 コマンドのディスクリプタ順オプションで作成した ISN リストを使用できません。

ISN 結果リストは、ISN バッファに返されますが、オプションで Adabas WORK データセットに格納することもできます。

S9 コマンドは Adabas 拡張ファイルに対しても実行できます。

Top of page

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

このセクションでは、S9 コマンドの 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 バイナリ F 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
アディション 4 57~64 英数字 F A
  65~72 -- -- --
コマンドタイム 73~76 バイナリ -- A
ユーザーエリア 77~80 -- -- U

バッファエリア

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

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

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

コントロールブロック

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

コマンドコード(ACBCMD)

S9

コマンド ID(ACBCID)

このフィールドには、空白やゼロ以外の値を設定してもかまいません。 このコマンド ID は、I(コマンド ID の解放)オプションおよび H(SAVE ISN LIST)オプションにのみ適用されます。Adabas ワークに格納した ISN リストを取り出すためのコマンド ID は、アディション 4 フィールドに指定する必要があります。

このフィールドの第 1 バイトは、16 進数の FF であってはなりません。

ファイル番号(ACBFNR)

ソートする ISN リストの作成元となったファイルの番号。

S9 コマンドは Adabas 拡張ファイルに対しても実行できます。

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

レスポンスコード(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)

ソートする ISN リストが ISN バッファにある場合、このフィールドにはソート対象の ISN の数が指定されている必要があります。 セキュリティバイバリューを使用する場合、値 0(1 レコードを検出)または 1(複数のレコードを検出)とともにレスポンスコード 1 をこのフィールドに返します。 詳細は、『Adabas Security マニュアル』を参照してください。

Adabas は、最初の S9 コールの結果として、ISN 結果リストに含まれるレコードの数をこのフィールドに返します。 また、WORK データセットから ISN を取得するための後続の S9 コールの結果として、Adabas は、ISN バッファに配置された ISN の数を返します。

ISN バッファ長(ACBIBL)

ISN バッファ長(バイト単位)は、ISN バッファに格納する ISN の数を決めるのに使用します。

ソートする ISN が ISN バッファにある場合、このフィールドはソートする ISN の数の 4 倍以上である必要があります。 オーバフローした ISN はコマンド ID フィールドに指定したコマンド ID を使用して Adabas ワークに格納され、後続の Sx コマンドで読み込むことができます。

コマンドオプション 1:SAVE ISN LIST オプション(ACBCOP1)
オプション 説明
H(ISN リストの格納) S9 コマンドを実行して得られた全 ISN リストを、指定したコマンド ID で Adabas ワークに格納します。 正しいコマンド ID を指定する必要があります。 コマンド ID を指定しないと、ISN リストは Adabas ワークに格納されず、ISN バッファに格納されなかった ISN はすべて失われます。 L1 または L4 コマンドの GET NEXT オプションを指定して ISN 結果リストを読み込む場合、ISN バッファ長フィールドをゼロに設定してこのオプションを使用します。 このオプションを指定した場合、コマンドオプション 2 に I(コマンド ID の解放)オプションを指定することはできません
コマンドオプション 2:降順オプション(ACBCOP2)
オプション 説明
D(降順) ISN リストを降順にソートします。 このオプションは、ISN 値でソートするとき指定できません

S9 コマンドでコマンドオプション 2 を指定しないと、ISN リストは昇順でソートされます。

コマンドオプション 1 または 2:コマンド ID オプションの解放(ACBCOP1 または ACBCOP2)

コマンドオプション 1 かコマンドオプション 2 フィールドのどちらかに、"I" オプションを指定できます。

オプション 説明
I S9 コマンド実行の最初に、コマンド ID フィールドで指定されているコマンド ID(CID)値を解放します。 コマンド ID が解放されるのは ISN リストテーブル内だけなので、 同じコマンド ID が ISN 結果リストを識別するのに再度使用されます。 コマンドオプション 1 として H(SAVE ISN LIST)オプションを指定した場合、このオプションをコマンドオプション 2 として指定することはできません
アディション 1:ソート順(ACBADD1)

使用するソート順をこのフィールドに指定します。

値を ISN とすると、ソート順に "ISNbbbbb" 値が使用されることになります(bbbbb には空白が入ります)。

ソート順を 1 つ以上のディスクリプタ値にする場合、使用ディスクリプタをこのフィールドに指定しなければなりません。 ディスクリプタは 3 つまで指定できます。ディスクリプタ、サブディスクリプタ、およびスーパーディスクリプタを指定できます。 フォネティックディスクリプタとピリオディックグループ内のディスクリプタは指定できません。 マルチプルバリューフィールドは指定できますが、この場合、指定レコード内の最低値に基づいて ISN がソートされます。 ディスクリプタはバイト 1 から開始して(左詰めで)指定し、 残りの桁は空白でなければなりません。

ソートできる ISN の数は、DBA が設定した ADARUN パラメータのサイズに依存します。 この制限を超えると、ソートは実行されずレスポンスコード 1 が返されます。

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

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

アディション 4:コマンド ID(ACBADD4)

ソートする ISN リストが Adabas WORK データセットにある場合は、リストが格納されているコマンド ID を、このフィールドの最初の 4 バイトに指定しなければなりません。

ソートする ISN リストが ISN バッファにある場合、このフィールドは空白にしなければなりません。

Adabas はコマンド処理中にアディション 4 フィールドを空白に設定し、このフィールドの右端(下位)3 バイトにバージョンコードおよびデータベース ID を返します。 詳細については「コントロールブロックフィールド」を参照してください。

ACB の例

例 1

ISN バッファ内の ISN リストを、ISN 順でソートします。 622 個の ISN をソートします。

コントロールブロック

コマンドコード S9  
コマンド ID S901 空白およびゼロ以外のコマンド ID が必要
ファイル番号 1 ソートする ISN リストはファイル 1 から派生
ISN 数 622 622 個の ISN をソートします。
ISN 下限 0 ISN をすべて選択
ISN バッファ長 2488 またはそれ以上。ソートする ISN につき 4 バイトが必要です。
コマンドオプション 1 H SAVE ISN LIST オプション使用
コマンドオプション 2 b(空白) 昇順を使用します。
アディション 1 ISNbbbbb ISN 値をソート順に使用します(bbbbb には空白が入ります)。
アディション 3 bbbbbbbb(空白) ファイルはセキュリティ保護されていません
アディション 4 bbbbbbbb(空白) ソートする ISN リストは ISN バッファにあります。

バッファエリア

ISN バッファ ソートする ISN をこのバッファに格納しておきます。 各 ISN は 4 バイトの 2 進数である必要があります。

例 2

Adabas ワークに格納されている ISN リストをソートします。 ISN リストを格納するためのコマンド ID は U066 です。 主および副シーケンスフィールドとしてディスクリプタ AA および AB を使用してリストをソートします。 降順ソートとします。

コントロールブロック

コマンドコード S9  
コマンド ID S902 空白およびゼロ以外のコマンド ID が必要
ファイル番号 1 ソートする ISN リストはファイル 1 から派生
ISN 下限 0 ISN をすべて選択
ISN バッファ長 0 ISN バッファには ISN は返されません
コマンドオプション 1 H SAVE ISN LIST オプション使用
コマンドオプション 2 D 降順を使用します。
アディション 1 AAABbbbb AA を主シーケンスフィールド、AB を副シーケンスフィールドとして使用します(bbbb には空白が入ります)。
アディション 3 bbbbbbbb(空白) ファイルはセキュリティ保護されていません
アディション 4 U066bbbb ソートする ISN リストは、コマンド ID "U066" で Adabas ワークに格納されています(bbbb には空白が入ります)。

Top of page

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

このセクションでは、S9 コマンドの 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 バイナリ F A
コマンドオプション 1 49 英数字 F U
コマンドオプション 2 50 英数字 F U
  51~56 --- --- ---
アディション 1 57~64 英数字/バイナリ F U
  65~68 --- --- ---
アディション 3 69~76 英数字/バイナリ F A
アディション 4 77~84 英数字 F A
  85~114 --- --- ---
エラーサブコード 115~116 バイナリ --- A
  117~144 --- --- ---
コマンドタイム 145~152 バイナリ --- A
ユーザーエリア 153~168 該当なし --- U
--- 169~193 操作不可 --- ---

ABD とバッファ

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

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

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

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

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

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

F2

コマンドコード(ACBXCMD)

S9

レスポンスコード(ACBXRSP)

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

コマンド ID(ACBXCID)

このフィールドには、空白やゼロ以外の値を設定してもかまいません。 このコマンド ID は、"I"(コマンド ID の解放)オプションおよび "H"(SAVE ISN LIST)オプションにのみ適用されます。Adabas ワークに格納した ISN リストを取り出すためのコマンド ID は、アディション 4 フィールドに指定する必要があります。

このフィールドの第 1 バイトは、16 進数の FF であってはなりません。

データベース ID(ACBXDBID)

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

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

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

ファイル番号(ACBXFNR)

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

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

S9 コマンドは Adabas 拡張ファイルに対しても実行できます。

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)

ソートする ISN リストが ISN バッファにある場合、このフィールドにはソート対象の ISN の数が指定されている必要があります。 セキュリティバイバリューを使用する場合、値 0(1 レコードを検出)または 1(複数のレコードを検出)とともにレスポンスコード 1 をこのフィールドに返します。 詳細は、『Adabas Security マニュアル』を参照してください。

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

Adabas は、最初の S9 コールの結果として、ISN 結果リストに含まれるレコードの数をこのフィールドに返します。 また、WORK データセットから ISN を取得するための後続の S9 コールの結果として、Adabas は、ISN バッファに配置された ISN の数を返します。

コマンドオプション 1:SAVE ISN LIST オプション(ACBXCOP1)
オプション 説明
H(ISN リストの格納) S9 コマンドを実行して得られた全 ISN リストを、指定したコマンド ID で Adabas ワークに格納します。 正しいコマンド ID を指定する必要があります。 コマンド ID を指定しないと、ISN リストは Adabas ワークに格納されず、ISN バッファに格納されなかった ISN はすべて失われます。 L1 または L4 コマンドの GET NEXT オプションを指定して ISN 結果リストを読み込む場合、ISN バッファ長フィールドをゼロに設定してこのオプションを使用します。 このオプションを指定した場合、コマンドオプション 2 に "I"(コマンド ID の解放)オプションを指定することはできません
コマンドオプション 2:降順オプション(ACBXCOP2)
オプション 説明
D(降順) ISN リストを降順にソートします。 このオプションは、ISN 値でソートするとき指定できません

S9 コマンドでコマンドオプション 2 を指定しないと、ISN リストは昇順でソートされます。

コマンドオプション 1 または 2:コマンド ID 解放オプション(ACBXCOP1 および ACBXCOP2)

コマンドオプション 1 かコマンドオプション 2 フィールドのどちらかに、"I" オプションを指定できます。

オプション 説明
I S9 コマンド実行の最初に、コマンド ID フィールドで指定されているコマンド ID(CID)値を解放します。 コマンド ID が解放されるのは ISN リストテーブル内だけなので、 同じコマンド ID が ISN 結果リストを識別するのに再度使用されます。 コマンドオプション 1 として "H"(SAVE ISN LIST)オプションを指定した場合、このオプションをコマンドオプション 2 として指定することはできません
アディション 1:ソート順(ACBXADD1)

使用するソート順をこのフィールドに指定します。

値を ISN とすると、ソート順に "ISNbbbbb" 値が使用されることになります(bbbbb には空白が入ります)。

ソート順を 1 つ以上のディスクリプタ値にする場合、使用ディスクリプタをこのフィールドに指定しなければなりません。 ディスクリプタは 3 つまで指定できます。ディスクリプタ、サブディスクリプタ、およびスーパーディスクリプタを指定できます。 フォネティックディスクリプタとピリオディックグループ内のディスクリプタは指定できません。 マルチプルバリューフィールドは指定できますが、この場合、指定レコード内の最低値に基づいて ISN がソートされます。 ディスクリプタはバイト 1 から開始して(左詰めで)指定し、 残りの桁は空白でなければなりません。

ソートできる ISN の数は、DBA が設定した ADARUN パラメータのサイズに依存します。 この制限を超えると、ソートは実行されずレスポンスコード 1 が返されます。

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

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

アディション 4:コマンド ID(ACBXADD4)

ソートする ISN リストが Adabas WORK データセットにある場合は、リストが格納されているコマンド ID を、このフィールドの最初の 4 バイトに指定しなければなりません。

ソートする ISN リストが ISN バッファにある場合、このフィールドは空白にしなければなりません。

Adabas はコマンド処理中にアディション 4 フィールドを空白に設定し、このフィールドの右端(下位)3 バイトにバージョンコードおよびデータベース ID を返します。 詳細については「コントロールブロックフィールド」を参照してください。

エラーサブコード(ACBXERRC)

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

Top of page

バッファ

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

フォーマットバッファ

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

レコードバッファ

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

サーチバッファ

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

バリューバッファ

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

ISN バッファ

ユーザーは、ソートする ISN リストをこのバッファに指定できます。

Adabas は、このバッファに ISN 結果リストを配置します。 各 ISN は 4 バイトの 2 進数で返されます。 ISN ソートオプションを有効にした(アディション 1 フィールドに「"ISNbbbbb"」と入力した)場合、ISN は昇順で返されます。 それ以外の場合、ISN はユーザーがディスクリプタに指定した値の順で返されます。

ISN バッファ長がゼロでなく、また、実行結果の全 ISN を入れるだけの十分な大きさでもなく、かつ有効なコマンド ID が指定された場合、Adabas ではオーバーフローした ISN を Adabas WORK データセットに格納します。 これらの ISN は、その後同じコマンド ID をアディション 4 フィールドに指定した S9 コールで読み込むことができます。 詳細については、「ISN リスト処理」セクションを参照してください。

Top of page