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

N1 コマンドと N2 コマンド:レコードの追加

N1 コマンドと N2 コマンドは、ファイルに新しいレコードを追加します。

N1 コマンドは、Adabas が割り当てた ISN を持つ新規データベースレコードを追加します。 N2 コマンドは、ユーザーが割り当てた ISN を持つ新規データベースレコードを追加します。

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


機能および使用

ユーザーは、レコードを追加するファイルと値を与えるフィールドを指定します。 追加レコード内で指定のないフィールドには空値が入ります。

Adabas はレコードに ISN を割り当て、レコードをデータストレージに追加し、必要に応じてアソシエータの更新を行います。

N2 コマンドは、レコードに割り当てる ISN をユーザーが指定する場合に使用します。 レコードに割り当てた ISN をそのまま維持するには、アンロードしたファイルを USERISN=YES オプション付きで再ロードする必要があります。

ユーザーが ET ロジックユーザーでありマルチユーザーモードで実行している場合、追加したレコードはホールド状態になります。

Top of page

ACB インターフェイスダイレクトコール:N1 コマンドおよび N2 コマンド

このセクションでは、N1 コマンドおよび N2 コマンドの 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 バイナリ F A/U1
ISN 下限 17~20 バイナリ -- A2
ISN 数 21~24 バイナリ -- A2
フォーマットバッファ長 25~26 バイナリ F U
レコードバッファ長 27~28 バイナリ F U
  29~44 -- -- --
アディション 2 45~48 英数字 -- A
アディション 3 49~56 英数字 F A
アディション 4 57~64 英数字 F A
アディション 5 65~72 英数字 F U
コマンドタイム 73~76 バイナリ -- A
ユーザーエリア 77~80 -- -- U

  1. N1 コマンドの場合には Adabas によりデータが設定され、N2 コマンドの場合には変更はありません。

  2. これらのフィールドは使用されますが、カップリングファイルが使用されている場合は Adabas によりリセットされません。

バッファエリア

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

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

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

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

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

コマンドコード(ACBCMD)

N1 または N2

コマンド ID(ACBCID)

複数のレコードを一連の N1 または N2 コールで追加し、各コールで同一フィールドをフォーマットバッファに指定する場合は、空白またはゼロ以外の値を設定します。 これにより各 N1 または N2 コール処理に必要な時間を削減できます。

1 レコードだけを追加する場合やフォーマットバッファを N1 または N2 コール間で変更する場合は、このフィールドを空白にしておきます。

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

ファイル番号(ACBFNR)

読み込むファイルの番号を 2 進数で指定します。 物理ダイレクトコールの場合は、次のようファイル番号を指定します。

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

レスポンスコード(ACBRSP)

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

ISN(ACBISN)

N1 コマンドを実行する場合、レコードに割り当てた ISN が Adabas から返されます。

N2 コマンドを実行する場合は、レコードに割り当てる ISN を指定する必要があります。 ファイル中のレコードにすでに割り当てられている ISN は指定できません。また、このファイルに対する制限(MAXISN)の範囲内で指定する必要があります。 MAXISN は、ファイルのロード時に DBA が指定します。

注意:
該当ファイルに MAXISN パラメータで指定された値を超える ISN は、割り当てられません。

ISN 数/下限(ACBISQ および ACBISL)

これらのフィールドは、ハードカップリングファイルが使用されない限り、N1 または N2 コマンド処理の終了後、空値に設定されます。 カップリングファイルを使用した場合、これらのフィールドは N1 または N2 コマンド処理で使用され、リセットされません。

フォーマットバッファ長(ACBFBL)

フォーマットバッファ長(バイト単位)。 ユーザープログラムに定義するフォーマットバッファエリアは、この指定長と同じか、それ以上でなければなりません。

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

レコードバッファ長(バイト単位)。 ユーザープログラムに定義するレコードバッファエリアは、この指定長と同じか、それ以上でなければなりません。

アディション 2:圧縮レコード長(ACBADD2)

コマンドが正常に処理されると、次の情報がこのフィールドに返されます。

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

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

アディション 4:サイファコード(ACBADD4)

このフィールドは、サイファコードを指定するために使用します。 ファイルを暗号化する場合は、有効なサイファコードを指定する必要があります。 ファイルを暗号化しない場合は、このフィールドに空白をセットする必要があります。

Adabas は、コマンド処理時に、サイファコードに空白をセットし、バージョンコードとデータベース ID をフィールドの下位 3 バイトに返します。 詳細については「コントロールブロックフィールド」を参照してください。

アディション 5:フォーマット ID、グローバルフォーマット ID(ACBADD5)

このコマンド用の内部フォーマットバッファを識別する別のフォーマット ID を表示したり、全ユーザーが内部フォーマットバッファを使用できるようにグローバルフォーマット ID を表示したりします。

アディション 5 フィールドの左端のビットに 0 が指定されていると、コマンド ID フィールドに指定された値がフォーマット ID として使用されます。

このビットに 1 がセットされていると、アディション 5 フィールドの 5 バイト目から 8 バイト目までがフォーマット ID として使用されます。

さらに、アディション 5 フィールドの第 1 バイトの最上位(左端)2 ビットに、1(B'11')がセットされると、アディション 5 フィールドの全 8 バイトが、グローバルフォーマット ID として使用されます(つまり、複数ユーザーがこのフォーマット ID を同時に使用できます)。

詳細と例については、「コマンド ID、フォーマット ID、グローバルフォーマット ID」を参照してください。

ACB の例

例 1

1 つのレコードをファイル 1 に追加します。 レコードの ISN は Adabas が割り当てます。 指定するフィールド値は、次のとおりです。

フィールド
AA ABCD
MF(値 1) AAA
MF(値 2) BBB
BA(第 1 オカレンス) 5
BA(第 2 オカレンス) 6

コントロールブロック

コマンドコード N1  
コマンド ID bbbb(空白) 1 レコードのみを追加します。
ファイル番号 1  
フォーマットバッファ長 15 またはそれ以上
レコードバッファ長 16 またはそれ以上
アディション 3 bbbbbbbb(空白) ファイル 1 はセキュリティ保護されていません
アディション 4 bbbbbbbb(空白) ファイルは暗号化されない

バッファエリア

フォーマットバッファ AA,MF1-2,BA1-2.
レコードバッファ X'C1C2C3C440404040C1C1C1C2C2C20506'

例 2

1 つのレコードをファイル 2 に追加します。 レコードの ISN はユーザーが指定します。 指定するフィールド値は次のとおりです。

フィールド
RA 12345678
RB ABCD

コントロールブロック

コマンドコード N2  
コマンド ID bbbb(空白) 1 レコードのみを追加します。
ファイル番号 2  
ISN 20 ISN 20 をレコードに割り当てます。
フォーマットバッファ長 6 またはそれ以上
レコードバッファ長 18 またはそれ以上
アディション 3 パスワード ファイル 2 はセキュリティ保護されています。
アディション 4 bbbbbbbb(空白) ファイルは暗号化されない

バッファエリア

フォーマットバッファ RA,RB.
レコードバッファ X'F1F2F3F4F5F6F7F8C1C2C3C4404040404040'

Top of page

ACBX インターフェイスダイレクトコール:N1 コマンドおよび N2 コマンド

このセクションでは、N1 コマンドおよび N2 コマンドの 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 バイナリ F A/U1
  33~36 --- --- ---
ISN 下限 37~40 バイナリ --- A2
  41~44 --- --- ---
ISN 数 45~48 バイナリ --- A2
  49~64 --- --- ---
アディション 2 65~68 バイナリ --- A
アディション 3 69~76 英数字/バイナリ F A
アディション 4 77~84 英数字 F A
アディション 5 85~92 英数字/バイナリ F U
  93~114 --- --- ---
エラーサブコード 115~116 バイナリ --- A
  117~144 --- --- ---
コマンドタイム 145~152 バイナリ --- A
ユーザーエリア 153~168 該当なし --- U
--- 169~193 操作不可 --- ---

  1. N1 コマンドの場合には Adabas によりデータが設定され、N2 コマンドの場合には変更はありません。

  2. これらのフィールドは使用されますが、カップリングファイルが使用されている場合は Adabas によりリセットされません。

ABD とバッファ

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

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

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

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

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

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

F2

コマンドコード(ACBXCMD)

N1 または N2

レスポンスコード(ACBXRSP)

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

コマンド ID(ACBXCID)

複数のレコードを一連の N1 または N2 コールで追加し、各コールで同一フィールドをフォーマットバッファに指定する場合は、空白またはゼロ以外の値を設定します。 これにより各 N1 または N2 コール処理に必要な時間を削減できます。

1 レコードだけを追加する場合やフォーマットバッファを N1 または N2 コール間で変更する場合は、このフィールドを空白にしておきます。

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

データベース ID(ACBXDBID)

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

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

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

ファイル番号(ACBXFNR)

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

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

ISN(ACBXISN)

N1 コマンドを実行する場合、レコードに割り当てた ISN が Adabas から返されます。

N2 コマンドを実行する場合は、レコードに割り当てる ISN を指定する必要があります。 ファイル中のレコードにすでに割り当てられている ISN は指定できません。また、このファイルに対する制限(MAXISN)の範囲内で指定する必要があります。 MAXISN は、ファイルのロード時に DBA が指定します。

注意:
該当ファイルに MAXISN パラメータで指定された値を超える ISN は、割り当てられません。

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

ISN 下限(ACBXISL)

このフィールドは、ハードカップリングファイルが使用されない限り、N1 または N2 コマンド処理が終了後、空値にセットされます。 カップリングファイルが使用されている場合は、このフィールドは N1 または N2 コマンドの処理に使用され、リセットされません。

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

ISN 数(ACBXISQ)

このフィールドは、ハードカップリングファイルが使用されない限り、N1 または N2 コマンド処理が終了後、空値にセットされます。 カップリングファイルが使用されている場合は、このフィールドは N1 または N2 コマンドの処理に使用され、リセットされません。

アディション 2:圧縮レコード長(ACBXADD2)

コマンドが正常に処理され、かつ少なくとも 1 つの有効なフィールド値がレコードバッファにある場合、先頭 2 バイトには、新たに追加した圧縮レコードの長さがバイナリ形式で格納されます。

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

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

アディション 4:サイファコード(ACBXADD4)

このフィールドは、サイファコードを指定するために使用します。 ファイルを暗号化する場合は、有効なサイファコードを指定する必要があります。 ファイルを暗号化しない場合は、このフィールドに空白をセットする必要があります。

Adabas は、コマンド処理時に、サイファコードに空白をセットし、バージョンコードとデータベース ID をフィールドの下位 3 バイトに返します。 詳細については「コントロールブロックフィールド」を参照してください。

アディション 5:フォーマット ID、グローバルフォーマット ID(ACBXADD5)

このコマンド用の内部フォーマットバッファを識別する別のフォーマット ID を表示したり、全ユーザーが内部フォーマットバッファを使用できるようにグローバルフォーマット ID を表示したりします。

アディション 5 フィールドの左端のビットに 0 が指定されていると、コマンド ID フィールドに指定された値がフォーマット ID として使用されます。

このビットに 1 がセットされていると、アディション 5 フィールドの 5 バイト目から 8 バイト目までがフォーマット ID として使用されます。

さらに、アディション 5 フィールドの第 1 バイトの最上位(左端)2 ビットに、1(B'11')がセットされると、アディション 5 フィールドの全 8 バイトが、グローバルフォーマット ID として使用されます(つまり、複数ユーザーがこのフォーマット ID を同時に使用できます)。

詳細と例については、「コマンド ID、フォーマット ID、グローバルフォーマット ID」を参照してください。

エラーサブコード(ACBXERRC)

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

Top of page

バッファ

フォーマットバッファ

レコードバッファに指定する値と対応するフィールドを、このバッファに指定しなければなりません。 N1 コマンドを実行する場合、フォーマットバッファ内に下記のものがあってはいけません。

フォーマットバッファ内に上記のいずれかが含まれていると、N1 コマンドに対してニュークリアスレスポンス 44 が返されます。 フォーマットバッファに指定されていないフィールドには、追加レコード内では空値がセットされます。 フォーマットバッファ構成の構文および例は別途示します。

N1 コマンドまたは N2 コマンドの場合、フォーマットバッファに指定されない非 NU ディスクリプタには、次のルールが適用されます。

そのため、フォーマットバッファでは非 NU ディスクリプタフィールドをすべて参照するか、または(FDT 順の)すべての非 NU ディスクリプタより後ろにあるフィールドを 1 つ以上指定してください。 これにより、非 NU ディスクリプタのインバーテッドリストに、空値が正しくエントリされます。

ピリオディックグループ内の非 NU ディスクリプタについては、フォーマットバッファに指定された最高オカレンス番号の前に位置する空値オカレンスについてのみインバーテッドリストに空値がエントリされます。

N1 コマンドまたは N2 コマンドを使用するとき、次のフォーマットバッファに関する事項を考慮しなければなりません。

  1. サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、およびフォネティックディスクリプタはフォーマットバッファに指定できません。 このようなディスクリプタの親フィールドをフォーマットバッファに指定した場合、Adabas は自動的にこれらのディスクリプタ値を正しく作成します。

  2. 圧縮前の最大レコード長は、理論上は 32,767 バイトですが、 実際にはブロックサイズによって制限されます。 また、この値は、Adabas セッションの LU パラメータの大きさによっては、それより小さくなります。この場合の最大レコード長は、LU 値 - フォーマットバッファ長 - 108 になります。 圧縮後の最大レコード長は、データストレージブロックサイズ - 4 バイトまたは WORK ブロックサイズ - 110 バイトのどちらか小さい方です。

  3. フィールドに標準長を超える長さを使用している場合(フィールドを固定ストレージオプションで定義している場合には許可されません)、このフィールドを後で参照するときは、ここで使用した長さを指定します。 後でそれを標準長で参照すると、英数字フィールドでは値の桁落ちが発生し、数値フィールドではゼロ以外のレスポンスコードが返されます。

  4. マルチプルバリューフィールドだけはフォーマットバッファに複数指定できます。

  5. フォーマットバッファに指定したマルチプルバリューカウントフィールド、ピリオディックグループカウントフィールド、またはリテラル値は無視されます。 レコードバッファ内の対応値も無視されます。

  6. マルチプルバリューフィールドをフォーマットバッファに指定する場合、Adabas は次のルールに従って、マルチプルバリューカウントフィールドを設定します。

  7. ピリオディックグループまたはピリオディックグループ内のフィールドをフォーマットバッファに指定すると、ピリオディックグループカウントはフォーマットバッファに指定された最高オカレンス番号と同じです。 最高オカレンス値で空値が省略される場合は、カウントはそれに応じて調整されます。

    フィールド定義 01,GB,PE
    02,BA,1,B,DE,NU
    02,BB,5,P,NU
    フォーマットバッファ GB1-2.
    レコードバッファ X'08000000500F09000000600F'
    追加後の結果 GB(第 1 オカレンス)BA = 8 BB = 500
    GB(第 2 オカレンス)BA = 9 BB = 600
    GB カウント = 2
    フォーマットバッファ GB1-2.
    レコードバッファ X'00000000000F00000000000F'
    追加後の結果 GB(第 1 オカレンス)値は省略
    GB(第 2 オカレンス)値は省略
    GB カウント = 0

    ピリオディックグループでは、最大 191 個のオカレンスが許可されています。

  8. 8. 可変長(標準長がない)に定義されたフィールドをフォーマットバッファに指定する場合、対応するレコードバッファ内の値の前に、値の長さを示す 1 バイトの 2 進数(長さバイトを含む)を指定する必要があります。

    フィールド定義 01,AA,3,A
    01,AB,A
    フォーマットバッファ AA,AB.
    レコードバッファ X'F1F2F306F1F2F3F4F5'

    フィールド AA と AB が更新されます。 AA の値は 123 です。 AB(可変長フィールド)の値は 12345 です。

レコードバッファ

フォーマットバッファに指定した各フィールドの値をこのレコードバッファに指定する必要があります。

各値は、フォーマットバッファに標準長以外の長さやフォーマットを指定する場合を除いて、フィールドの標準長および標準フォーマットに従って指定する必要があります。

フィールドが可変長フィールド(標準長なし)として定義されている場合、フィールドの長さ(長さバイトも含む)を持つ 1 バイトのバイナリフィールドを値の直前に指定する必要があります。

値の入るフィールドがユニークディスクリプタとして定義されている場合、指定した値がすでにディスクリプタに存在しない必要があります。存在すると、コマンドは拒否されます。

Top of page