L1/L4 コマンド(レコード読み込み)

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


機能および使用

L1/L4 コマンドは、データストレージから 1 つのレコードを読み込むのに使用します。マルチフェッチ機能を使用して、単一の L1/L4 コマンドで複数のレコードを読むこともできます。

マルチフェッチ機能を使用しない

読みたいレコードの ISN とそのファイル番号を指定します。フォーマットバッファに読み込むフィールドを指定すると、レコードバッファには、要求されたフィールド値が返されます。

GET NEXT オプションは、ISN リスト(Sx コマンドですでに作成済み)内の ISN で識別されるレコードを読むのに使用します。このとき、各 L1/L4 コールで読むレコードの ISN を指定する必要はありません。ISN リストから ISN が選択され、ISN で識別されるレコードが読み込まれます。ISN が存在しなくなった場合、その ISN はスキップされ、ISN リストの次の ISN が読み込まれます。そのため、レスポンスコード 3(ISN リストの最後)を取得する前に読み込まれた ISN の数は、対応する Sx コマンドの ISN 数よりも小さくなる場合があります。

READ ISN SEQUENCE(I) オプションは、ISN に識別されるレコードを読み込みます。指定した ISN がファイルに存在しない場合は、次に大きな ISN のレコードが読み込まれて ISN フィールドに返されます。

L4 コマンドは、L1 コマンドと同じ機能を実行するのに加えて、レコードを共有または排他的ホールド状態にします。つまり、他のユーザーに対してレコードをロックします。L4 コマンドは、ユーザーがレコードを更新したい場合など、他のユーザーがレコードを更新できないようにする必要がある場合に使用します。詳細については、「概念および機能」の「競合更新、共有ロック」を参照してください。ユーザーがすでにレコードの共有ロックを保持していて、排他的ロックを要求した場合、ロックは排他的ロックモードにアップグレードされます。ユーザーが既にレコードの排他的ロックを保持している場合、ロックモードは変更されません。

GET NEXT オプションが使用され、かつこのコマンド ID の前のコマンドがコマンドオプション「Q」で発行され、かつその後にレコードの読み込みが共有ホールド状態から解放されていない場合、このレコードの読み込みは、次の例外を除き、再び共有ホールド状態から解放されます。

  • 複数のコマンドシーケンスで、コマンドオプション "Q" を使用して同じレコードが読み込まれたとします。この状況では、これらのすべてのコマンドシーケンスで次のレコードが読み込まれた場合、または RC が実行された場合にのみ、レコードが解放されます。

  • 別のコマンドが同じレコードを排他的にロックしている場合、またはコマンドオプション "S" を使用してレコードが共有ロックされている場合、レコードは解放されません。

マルチフェッチ機能の使用

L1/L4 コマンドはマルチフェッチ機能をサポートします。マルチフェッチ機能は、コマンドオプション 1 フィールドの M または O のいずれかの値によって表します(詳細については、コマンドオプション 1 フィールドの説明参照)。L1/L4 コマンドのマルチフェッチ機能は、次のコマンドオプション 2 の値とともに使用する場合にのみ可能です。

  • I(ISN 順読み込み)

  • N(FIND 後の get next)

マルチフェッチ機能を使用するときに 1 つの L1/L4 コールに返るレコードの最大数は、次の要因によって制限されています。

  • ISN 下限フィールドを使用すると、返されるレコードの最大数を指定できるため、必要なレコード数が限られている場合に内部オーバーヘッドを低減することができます。

  • ISN 下限フィールドの値が 0 の場合、返されるレコードの数は ISN/マルチフェッチバッファおよびレコードバッファのサイズによってのみ制限されます。

graphics/l1l4_1.png

L1/L4 Procedure Flow

graphics/l1l4_2.png

L1/L4 Procedure Flow (continued)

graphics/l1l4_3.png

L1/L4 Procedure Flow (continued)

コントロールブロック

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 F/A
ISN 下限 B F/U
フォーマットバッファ長(ACB のみ) B F/U
レコードバッファ長(ACB のみ) B F/U
ISN バッファ長(ACB のみ) B F/U
コマンドオプション 1 A F/U
コマンドオプション 2 A F/U
コマンドオプション 3(ACBX のみ) A F/U
アディション 2 A、B -/A
アディション 3 A F/A
アディション 5 A F/U
コマンドタイム B -/A
ユーザーエリア   F/U

バッファエリア

バッファ  
フォーマットバッファ F/U
レコードバッファ –/A
サーチバッファ –/–
バリューバッファ –/–
ISN バッファ –/A
フォーマット:
A 英数字
B 2 進数
x/y Adabasコール前/後 - xとyは、値を取ることができます。
A Adabas によって設定
F ユーザーによって設定
U Adabas コール後も変更なし
- 使用しません

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

コントロールブロック

コマンドコード

L1/L4

コマンド ID

一連の L1/L4 コールを使用して複数のレコードを読み、各コールでフォーマットバッファに同一フィールドを指定する場合は、「コマンド ID」は空白やゼロ以外の値にすべきです。これにより、各 L1/L4 コールに要する処理時間を削減できます。

GET NEXT オプションを使用する場合は、ISN リスト作成時のコマンドIDをこのフィールドに指定しなければなりません。GET NEXT オプションの使用時には、連続した L1/L4 コール間でフォーマットバッファを変更しないでください。

1 レコードだけを読む場合、またはフォーマットバッファを L1/L4 コール間で変更する場合は、このフィールドを空白またはバイナリのゼロにしておくべきです。

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

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

File Number

読み込むレコードをもつファイルの番号。

Response Code

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

レスポンスコード 3 は、読み込みエンド条件を示します(GET NEXT オプションまたは ISN SEQUENCE オプションを使用の場合に限ります)。

マルチフェッチ機能を使用中に最初のレコード処理時にエラーが発生すると、このフィールドにレスポンスコードが返ります。この場合、ISN バッファおよびレコードバッファの内容は未定義です。

マルチフェッチ機能の処理ループ中に 2 番目以降の ISN でエラーが検出された場合、最初のゼロ以外のレスポンスコードによってマルチフェッチ処理が終了します。この場合、レスポンスコードは、コントロールブロックのレスポンスコードフィールドではなく、ISN バッファ自体の追加エントリとして格納されます。レスポンスコードの場所は 2 つ考えられるため、アプリケーションプログラムでは、一般的な内容のエラーについて最初にコントロールブロックのレスポンスコードフィールドをチェックし、次に各 ISN バッファエントリのレスポンスコードフィールドを個々にチェックしてください。

ISN

読み込むレコードの ISN。GET NEXT オプションを指定すると、このフィールドには次の規則が適用されます。

  • Adabas は、このフィールドの設定にかかわらず、ISN リストに含まれている順序でリストから ISN を自動的に選択します。

  • リスト内の指定した ISN に位置付けたい場合は、S1/S4 コマンドを使用する必要があります。詳細については、「プログラミングの考慮事項」の「ISN リストの読み込み」を参照してください。

READ ISN SEQUENCE オプションを使用すると、当フィールドに指定した ISN で識別されるレコードが読み込まれます。ファイルにその ISN が存在しない場合は、次に大きいレコードが読み込まれます。

GET NEXT オプションと READ ISN SEQUENCE オプションは併用できません。

このフィールドには読み込んだレコードの ISN が返されます。これは、どのオプションを使用していても適用されます。

マルチフェッチ機能を使用すると、コントロールブロックに返される ISN は、返された最初のレコードの ISN になります。

ISN 下限

マルチフェッチ機能を使用する場合、1 つの L1/L4 コマンドで読み込むレコードの最大数はこのフィールドに指定された値に限ります。値を 0 にすると、ISN バッファのサイズとレコードバッファのサイズによってのみレコード数が制限されます。

コマンドオプション「L」が使用され、かつフォーマットバッファに *-position のセグメントが含まれている場合、入力値にはセグメントの現在の位置が含まれています。値は、セグメントに対して指定された長さだけ増加します。

フォーマットバッファ長(ACB のみ)

フォーマットバッファ長(バイト単位)を示します。ユーザープログラムで定義するフォーマットバッファエリアは、ここに指定する長さ以上である必要があります。

レコードバッファ長(ACB のみ)

レコードバッファ長(バイト単位)を示します。ユーザープログラムで定義するレコードバッファエリアは、ここに指定する長さ以上である必要があります。

ISN バッファ長(ACB のみ)

ISN バッファ長(バイト単位)を示します。ISN バッファの長さが 20 バイト未満の場合、マルチフェッチ機能は無視され、Adabas レスポンス 53 が返されます。

このフィールドは、マルチフェッチ機能と組み合わせてのみ使用されます。

コマンドオプション 1

このフィールドに R を指定すると、RETURN オプションを使用することを示します。L4 コマンドを発行し、読み込んでホールドするレコードが現在他のユーザーにホールドされている場合は、Adabas が、レコードが使用可能になるまでユーザーを待ち状態にしないでレスポンスコード 145 を返します。

このフィールドが M または O のときは、マルチフェッチ機能が呼び出されます。マルチフェッチ機能に関する詳細については、「プログラミングの考察」の「マルチフェッチ機能の使用」を参照してください。マルチフェッチ機能は、コマンドオプション 2 フィールドに I または N が設定されているときにだけ使用できます。

コマンドオプション 2

このフィールドに N を指定すると、GET NEXT オプションを使用することを示します。このオプションは、ISN リスト中の ISN で識別されるレコードを読み込むのに使用され、各々の L1/L4 コールで読むレコードの ISN を指定する必要はありません。コマンド ID フィールドに ISN リストを作成したときのコマンド ID を指定しなければなりません。ISN リスト内の ISN をすべて選択すると、レスポンスコード 3 が返されます。

このフィールドに I を指定すると、READ ISN SEQUENCE オプションを使用することを示します。Adabas は、ISN がファイルにある場合は、ISN フィールドに指定した ISN で識別されるレコードを読み込みます。ISN がファイルにない場合は、次に大きな ISN を持つレコードが読み込まれます。指定 ISN がなく、より高い ISN もない場合は、レコードは読み込まれず、レスポンスコード 3 が返されます。

このフィールドの「L」は、フォーマットバッファに *-position のセグメントが含まれている場合にのみ使用できます。次に、ISN 下限フィールドが使用されて、*-position のセグメントの現在の位置が判断されます。コマンドオプション「L」を指定しない場合、*-position のあるセグメントの現在の位置は、フィールド値の最初の(左端の)バイトになります。「L」オプションは、マルチフェッチ機能とともには使用できません。

コマンドオプション 3(ACBX のみ)

コマンドオプション 3 フィールドは、L4 コマンドにのみ関係します。

このフィールドの「C」は、コマンドがアクティブな間のみ、このレコードの共有ロックを取得することを示します。レコードがすでにロックされている場合は、レコードはロックされたままになります。このオプションを使用すると、ダーティリードが回避され、レコードのコミット済みの状態のみが表示されます。

このフィールドの "S" は、レコードが共有ホールド状態になることを示しています。現在のトランザクションがコミットまたはバックアウトされたときにロックは再び解除されます。コマンドがサブトランザクションに属している場合、現在のサブトランザクションがバックアウトされたときにロックも解除されます。RI コマンドを使用してロックを解除することもできます。

このフィールドの "Q" は、レコードが共有ホールド状態になることを示しています。この読み込みシーケンスの次の順次読み込みコマンドの開始時か、「S」オプションを使用したレコードの読み込みを解放するイベントの発生時か、どちらかが先に発生したときに、ロックが再び解放されます。「Q」オプションを使用した複数のコマンドによって同じレコードが読み込まれた場合、これらのすべてのコマンドシーケンスで、次のレコードが読み込まれるか、RC コマンドが発行されたときにのみレコードが解放されます。"S" オプションが指定された別のコマンドによって同じレコードが読み込まれた場合またはレコードが排他的にロックされた場合は、コマンドシーケンスの次のレコードを読み込んでもレコードは解放されません。「Q」オプションは、コマンドオプション 1 = ‘M’(マルチフェッチ機能)と組み合わせて指定することはできません。

このフィールドが空白のときは、レコードが排他的にロックされていることを示します。

アディション 2

コマンドが正しく実行され、かつ少なくとも 1 つの Adabas フィールドがフォーマットバッファで要求されている場合、Adabas は、アクセスしたデータストレージレコードの圧縮レコード長を、このフィールドの先頭 2 バイトに返します。下位 2 バイトには、フォーマットバッファで選択した非圧縮フィールドの長さがバイナリ形式で格納されます。マルチフェッチ機能を使用している場合、この情報は最初に読み込まれたレコードを示します。

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

アディション 3

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

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

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

アディション 5

このフィールドには、このコマンド用の内部フォーマットバッファを識別する別のフォーマットバッファ ID を指定するか、グローバルフォーマットバッファ ID を指定します。

アディション 5 フィールドの先頭バイトが英数字でなければ、コマンド ID フィールドに指定された値をフォーマットバッファ ID としても使用できます。

先頭バイトが小文字の場合は、アディション 5 フィールドの 5 バイト目から 8 バイト目までが別のローカルフォーマットバッファ ID として使用されます。

先頭バイトが数字または大文字の場合は、アディション 5 フィールド(8 バイト)が別のグローバルフォーマットバッファ ID として使用されます。つまり、フォーマットバッファ ID は、複数のユーザーが同時に使用できます。

詳細および例については、「プログラミングの考慮事項」の「コマンド ID の使用」を参照してください。

フォーマットバッファ

ユーザーはこのバッファの読み込むフィールドを指定します。フォーマットバッファの構文および例については、「Adabas コール」の「フォーマットバッファとレコードバッファ」を参照してください。

レコードバッファ

このバッファには、要求されたフィールド値が返されます。すべての値は、ユーザーがフォーマットバッファで標準とは異なる長さやフォーマットを要求しない限り、フィールドの標準フォーマットと標準長で返されます。

マルチフェッチ機能を使用しているときは、レコードバッファに、複数のレコードから返されるデータを含めることができます。レコードバッファは複数のエントリで構成され、それぞれのエントリには、単一レコードからの要求フィールド値が格納されます。返されるエントリの数、および各エントリの長さは、ISN バッファ内の対応するエントリに格納されます。

ISN バッファ/マルチフェッチバッファ

マルチフェッチ機能を ACB インターフェイスで使用すると、ISN バッファにはレコードバッファに返されるエントリの説明が格納されます。マルチフェッチ機能を ACBX インターフェイスで使用する場合は、マルチフェッチバッファが代わりに使用されます。

各バッファの最初の 4 バイトは、そのバッファに続く 16 バイトのエントリ数を指定します。16 バイトの各エントリは、コードバッファに返されるエントリに対応し、次の符号なし整数値(各 4 バイト長)を含みます。

  • レコードバッファ内のエントリの長さ

  • レコードバッファ内のエントリのレスポンスコード(コントロールブロックのレスポンスコードフィールドの値とは異なることがあります)
    この値が 0 以外の場合、マルチフェッチ処理終了の原因となるエラーが発生したことを意味します。この場合、レコードバッファに対応するエントリはありません。

  • ISN

  • 未使用フィールド

その他の考慮事項

コマンドで指定したコマンド ID は、Adabas により内部的に保存され、使用されます。この ID は、エンドオブファイル条件を満たすときか、RC または CL コマンドを発行するときか、または Adabas セッションが終了するときに、解放されます。同じコマンド ID は、解放されるまで他の読み込みシーケンシャルコマンドでは使用できません。

グローバルトランザクションの終了時には、コマンド ID は解放されません。

注意:
ここで記述する例はすべて、付録 A の Adabas ファイル定義を使用しています。

例 1:単一レコードを読み込む

ファイル 1 の ISN 4 を読み込みます。フィールド AA と AB の値が返されます。

コントロールブロック:

Command Code          L1
Command ID            bbbb (only 1 record is to be read)
File Number           1
ISN                   4
Format Buffer Length  6 (or larger)
Record Buffer Length  10 (or larger)
Command Option 2      b (Get Next or Read ISN Seq.  options  not
                         used)
Additions 3           bbbbbbbb (file is not security protected)

バッファエリア:

Format Buffer         AA,AB.

例 2:ISN バッファの FIND コマンドで返された ISN リストから、ISN を含むレコードを読み込む

FIND コマンドですでに ISN がわかっているレコードの集合をファイル 2 から読みます。フィールド RA および XB の値を返します。ただし、フィールド XB の値は、長さ 3、フォーマット U で返すものとします。

コントロールブロック:

Command Code          L1
Command ID            ABCD (a non-blank CID  is recommended for
                            a series  of  reads  in  which  the  same
                            fields are being read  in  each  record).
File Number           2
ISN                   n (ISNs  are  taken from  the  ISN  list
                          created by the Find command).
Format Buffer Length  10 (or larger)
Record Buffer Length  11 (or larger)
Command Option 2      b  (Get Next or Read ISN Seq. options not
                          used)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer         RA,XB,3,U.

注意:
n は、FIND コマンドで作成された ISN リストからの ISN を示します。ISN リストの各 ISN に対して L1 コールを繰り返します。

例 2a:GET NEXT オプションを使用して一組のレコードを読み込む

例 2 の記述にある条件は、GET NEXT オプションを使用して解決することもできます。

コントロールブロック:

Command Code          L1
Command ID            ABCD (CID of ISN list to be used)
File Number           2
ISN                   0  (the entire ISN list is to be selected
                          starting with the first ISN in the list)
Format Buffer Length  10 (or larger)
Record Buffer Length  11 (or larger)
Command Option 2      N (Get Next option to be used)
Additions 3           Password (file 2 is security protected)
Additions 5           APL3FB01 (a global format buffer ID is
                                recommended for series of reads in
                                which the same fields are read in each
                                record for several users using the same
                                application)

バッファエリア:

Format Buffer         RA,XB,3,U.

ISN リストの各 ISN に対して L1 コールを繰り返します。L1 コール間でコントロールブロックの内容を変更する必要はありません。ISN リスト内の ISN をすべて選択すると、レスポンスコード 3 が返されます。

例 3:読み込んでホールド

ファイル 2 の ISN 5 を読み込み、更新のためホールドします。フィールド XC および XD の値を返します。

コントロールブロック:

Command Code          L4 (Read With Hold)
Command ID            bbbb (only 1 record to be read)
File Number           2
ISN                   5
Format Buffer Length  6 (or larger)
Record Buffer Length  14 (or larger)
Command Option 1      b (Return option not used)
Command Option 2      b (Get Next or Read ISN Seq. options not
                         used)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer         XC,XD.

例 4:READ ISN SEQUENCE オプションを使用して読み込む

ファイル 1 を READ ISN SEQUENCE オプションを使って読みます。フィールド AA、AB、および AC の値が返されます。

コントロールブロック:

Command Code          L1
Command ID            BCDE (non–blank CID is recommended when a
                            series  of  records  for  which  the same
                            fields are to be returned is to be read)
File Number           1
ISN                   1  (If  ISN 1  is not present, the record
                          with the next higher ISN will be read)
Format Buffer Length  6 (or larger)
Record Buffer Length  30 (or larger)
Command Option 2      I (Read ISN Sequence option is invoked)
Additions 3           bbbbbbbb (file is not security protected)

バッファエリア:

Format Buffer         GA,AC.

コントロールブロックの ISN フィールドには、読み込んだレコードの ISN が返されます。ISN フィールドに 1 を加え、L1 コマンドをくり返すと、次に大きい ISN のレコードを読むことができます。

例 5:マルチプルバリューフィールドおよびピリオディックグループを読み込む

ファイル 1 の ISN 2 のレコードを読み込みます。フィールド AA の値、マルチプルバリューフィールド MF のすべての値、およびピリオディックグループ GB の全オカレンスが返されます。

  1. MF に存在する値の個数、および GB の最高オカレンスカウントを得るために L1 コールを出します。

    コントロールブロック:

    Command Code          L1
    
    Command ID            bbbb (only 1 record is to be read)
    
    File Number           1
    
    ISN                   2
    
    Format Buffer Length  8 (or larger)
    
    Record Buffer Length  2 (or larger)
    
    Command Option 2      b (Get Next or Read ISN Seq. option not
                             used)
    

    バッファエリア:

    Format Buffer         MFC,GBC.
    
  2. 上述の L1 コールの結果、レコードは MF の値の数が 4、GB のオカレンスが 6 個であったとします。この場合、以下のフォーマットバッファを使って L1 コールをくり返します。

    AA,MF1-4,GB1-6
    

    どちらのコールでも、フォーマットバッファおよびレコードバッファの長さは全エントリおよび値を収容できるだけの充分な長さでなければなりません。

一連のレコードを読むのにこの手順を使うときは、ステップ 1 では空白でないコマンド ID を用い、ステップ 2 では空白のコマンド ID を使うべきです。フォーマットバッファの内容がステップ 2 を呼び出すごとに変わる可能性があるためです。

例 5 の別解として、値/オカレンスの数が小さい(6 より少)レコードが大部分を占めるときは、以下のような場合に効率が良くなります。

  1. MF および GB の数の他に、MF と GB の値とオカレンスの予想数、それにフィールド AA を指定し、L1 コールを行います。

    MF の値の予想個数を 2、GB のオカレンスの予想個数を 3 とすると、ステップ 1 ではフォーマットバッファは次のようになります。

    AA,MFC,GBC,MF1-2,GB1-3
    

    この指定で、90% のレコードからすべての値/オカレンスが取り出せる場合には、一般的に効率が最高となります。

  2. 返された MF の個数が 2 を超えている、または GB の個数が 3 を超えている場合、不足の値/オカレンスを得るには、前述のステップ 2 のフォーマットバッファを使用しなければなりません。それ以外の場合、2 回目のコールは必要ありません。

例 6:LOB 値の読み込み

ISN 6 のレコードの LOB フィールド L1 が読み込まれます。LOB 値に 1,000,000 バイトの領域を定義したとします。LOB 値は次のコマンドで読み込むことができます。

コントロールブロック(ACBX):

Command Code          L1 
Command ID            EFGH
File Number           2
ISN                   6
Command Option 1      b (Return option not used)
Command Option 2      b (Get Next or Read ISN Seq. options not used)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer 1         L1L.
Record Buffer 1 Length  4
Format Buffer 2         L1,*.
Record Buffer 2 Length  1000000

LOB 値が 1,000,000 バイトを超える場合は、LOB 値に十分な大きさの新しいメモリ領域を割り当て、レコードバッファ 2 の長さを新しい値に設定して、コールを繰り返すことができます。

例 7:LOB 値の段階的な読み込み

フォーマットと ISN バッファなしのコマンド ID 「ABCD」を持つ S1 コマンドによって、以前に一連のレコードが見つかりました。

LOB フィールド L1 は、1,000,000 バイトのセグメントで段階的に読み込まれます。レコードの最初のコールでは、Get Next オプションを使用して ISN リストの次のレコードをフェッチし、LOB 値の最初のセグメントを読み込みます。

コントロールブロック(ACBX):

Command Code          L4 (read with hold)
Command ID            ABCD
File Number           2
ISN                   unchanged from S1 command
ISN Lower Limit       0
Command Option 1      b (Return option not used)
Command Option 2      N (Get Next option)
Command Option 3      Q (Shared hold until next record read)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer 1         L1L.
Record Buffer 1 Length  4
Format Buffer 2         L1(*,1000000).
Record Buffer 2 Length  1000000

LOB フィールドの長さが 1.000.000 を超える場合は、次のコマンドを使用して LOB 値の次のセグメントを読み込むことができます。

コントロールブロック(ACBX):

Command Code          L1
Command ID            ABCD
File Number           2
ISN                   unchanged from L4 command
ISN Lower Limit       unchanged from previous call
Command Option 1      b (Return option not used)
Command Option 2      L (*-position determined by ISN Lower Limit)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer 1         L1L.
Record Buffer 1 Length  4
Format Buffer 2         L1(*,1000000).
Record Buffer 2 Length  1000000

LOB 値全体を読み込むには、LOB 長で示される回数か、レスポンスコード 3 が得られるまで、コール間の ISN 下限を変更せずに、この L1 コールを繰り返す必要があります。

例 7a:LOB 値およびその他のフィールドの段階的な読み込み

前の例で追加のフィールドを読み込む場合は、これらの他のフィールドを複数回読み込むことになりますが、これは本来不要な動作です。このような場合に、LOB 以外のフィールドには L4 コマンド用のフォーマットバッファ、LOB フィールドセグメントには L1 コマンド用のフォーマットバッファのように、異なるフォーマットバッファを使いわけることができます。

コントロールブロック(ACBX):

Command Code          L4 (Read with Hold)
Command ID            ABCD
File Number           2
ISN                   unchanged from S1 command
Command Option 1      b (Return option not used)
Command Option 2      N (Get Next option)
Command Option 3      Q (Shared hold until next record read)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer 1         L1L,RG.
Record Buffer 1 Length  53 (or larger)

LOB フィールドは、次のコマンドを使用して、1.000.000 バイトのセグメントで段階的に読み込まれます。

コントロールブロック(ACBX):

Command Code          L1
Command ID            EFGH
File Number           2
ISN                   unchanged from L4 command
ISN Lower Limit       0
Command Option 1      b (Return option not used)
Command Option 2      L (*-position determined by ISN Lower Limit)
Additions 3           Password (file is security protected)

バッファエリア:

Format Buffer 1         L1L,(*,1000000).
Record Buffer 1 Length  1000000 (or larger)

LOB 値全体を読み込むには、LOB 長で示される回数か、レスポンスコード 3 が得られるまで、コール間の ISN 下限を変更せずに、この L1 コールを繰り返す必要があります。