17.8 ロックのタイムアウト

次の注意はIBM i 以外のプラットフォームにのみ適用されます。

ロックのタイムアウト処理がオンになっていない場合、LANSAはロックのタイムアウトを致命的なエラーとして扱います。実際、省略値では、ほとんどのデータベースがロックの解決を無限に待つため、ロックのタイムアウトは発生しません。Windows上のOracleのように、グローバルにロックのタイムアウトの設定が可能なデータベースもあります。ロックのタイムアウトが設定されロックのタイムアウトが発生した場合、LANSAアプリケーションに致命的なエラーが発生します。

LANSAのロックのタイムアウトを有効にしても、LANSAはIO$STS=ERを設定します。開発者が特別な処理を提供しない場合、現在のエラー処理が実行されますが、LANSAの致命的なエラーではなく、単なるIOエラーとなります。

したがって、システム変数 *DBMS_RECORD_LOCKEDを使ったロック・エラーの確認が必要です。確認しない場合、エラーの原因を記述する追加のメッセージを取得できません。

つまり、ロックのタイムアウトをオンにした場合でもIOエラーを受け取るため、システム変数*DBMS_RECORD_LOCKEDを使ってロック・エラーを確認する必要があるということです。

以下も参照してください。

17.8.1 ロックのタイムアウトを構成

17.8.2 ロックのタイムアウトの例