
リソースがリカバリー可能である場合 (SQL データベースのケースのように)、レコードは forUpdate オプションによってロックされるため、コミットが発生するまで他のプログラムから変更することはできません。コミット処理の詳細については『作業論理単位』を参照してください。
ファイル・アクセスの例を次に示します。
try
open record1 forUpdate;
onException
myErrorHandler(8);
return;
end
try
get next record1;
onException
myErrorHandler(12);
return;
end
while (record1 not endOfFile)
makeChanges(record1); // レコードのプロセス
try
replace record1;
onException
myErrorHandler(16);
return;
end
try
get next record1;
onException
myErrorHandler(12);
return;
end
end // end while
sysLib.commit();
get next 文の詳細は、レコード・タイプによって異なります。SQL 処理の詳細については、『SQL 処理』を参照してください。
1, 2, 2, 2, 3, 4
以下の各表は、同じ索引付きレコードに対して一連の EGL 文を実行する場合の効果を示しています。
次に示す 2 つの表は、EGL で生成された COBOL コードに適用されます。
| EGL 文 (実行順) | 索引付きレコード内のキー | 文によって検索されるファイル・レコード内のキー | COBOL の場合の EGL エラー値 |
|---|---|---|---|
| get | 2 | 2 (3 つある内の最初のもの) | duplicate |
| get next | any | 3 | -- |
| EGL 文 (実行順) | 索引付きレコード内のキー | 文によって検索されるファイル・レコード内のキー | COBOL の場合の EGL エラー値 |
|---|---|---|---|
| set record position 書式の set | 2 | 検索されない | duplicate |
| get next | any | 2 (3 つある内の最初のもの) | duplicate |
| get next | any | 2 (2 番目のもの) | duplicate |
| get next | any | 2 (3 番目のもの) | -- |
| get next | any | 3 | -- |
次に示す 2 つの表は、EGL で生成された Java™ コードに適用されます。
| EGL 文 (実行順) | 索引付きレコード内のキー | 文によって検索されるファイル・レコード内のキー | Java の場合の EGL エラー値 |
|---|---|---|---|
| get | 2 | 2 (3 つある内の最初のもの) | duplicate |
| get next | any | 2 (2 番目のもの) | duplicate |
| get next | any | 2 (3 番目のもの) | -- |
| get next | any | 3 | -- |
| EGL 文 (実行順) | 索引付きレコード内のキー | 文によって検索されるファイル・レコード内のキー | Java の場合の EGL エラー値 |
|---|---|---|---|
| set record position 書式の set | 2 | 検索されない | duplicate |
| get next | any | 2 (3 つある内の最初のもの) | -- |
| get next | any | 2 (2 番目のもの) | duplicate |
| get next | any | 2 (3 番目のもの) | -- |
| get next | any | 3 | -- |
get next が MQ レコードに対して操作を行う場合は、キュー内の最初のレコードが MQ レコードに読み込まれます。この追加処理は、get next で、以下に示す 1 つ以上の MQSeries® 呼び出しが呼び出されることによって行われます。
CICS® for z/OS® では、同じスプール・ファイルに関する add 文と get next 文を組み合わせて 1 つのプログラムに組み込むことはできません。この制限は、get next 文と add 文が別々のプログラムにあり、一方のプログラムが他方のプログラムを呼び出す場合にも適用されます。
SQL FETCH 文は、生成されたコードでは EGL get next 文を表します。生成される SQL 文の形式は、INTO 文節の設定以外は変更できません。
最終的に、SQL COMMIT または sysLib.commit が指定された場合、open 文で hold オプションを使用したときにのみ、open 文で宣言されていたカーソル内の位置がコードにより保存されます。