ほとんどの場合、EGL ランタイムは最後のループの反復後に暗黙の SQL CLOSE 文を実行します。 この暗黙のステートメントは SQL システム変数を変更するため、forEach ステートメントの本文に SQL 関連のシステム変数の値を保存する必要があります。
EGL ランタイムは、forEach 文が noRecordFound 以外のエラーのために終了した場合には、 SQL CLOSE 文を実行しません。

このコンテキストで INTO 文節を作成すると、関連する open 文からすべての INTO 文節がオーバーライドされます。
vgVar.handleHardIOErrors = 1;
try
open myResults for myCustomer
with #sql{
SELECT customer_number, customer_name
FROM Customer
WHERE customer_number >= :myCustomer.customerNumber
FOR UPDATE OF customer_name
}
into myCustomer.customerNumber, myCustomer.customerName;
onException(sqlEx SQLException)
myErrorHandler(6); // プログラムを終了する
end
try
forEach (from myResults)
// 最初に姓を作成する
reverseName(myCustomer.customerName);
try
execute
#sql{
UPDATE Customer
SET customer_name = :myCustomer.customerName
WHERE CURRENT OF myResults
};
onException(sqlEx SQLException)
myErrorHandler(10); // プログラムを終了する
end
end
onException(sqlEx SQLException)
myErrorHandler(8); // プログラムを終了する
end
sysLib.commit();
onException(sqlEx SQLException)
if (sqlcode != 100) // 不要なテスト