第5章 エラー時の対処
D.8 COBOLアプリケーションの相違点
D.8.1 トランザクションサブルーチンの相違点
表D.12 トランザクションサブルーチンの相違点
項目 SQL Server Oracle
トランザクション開始サブルーチンの シーケンス
・ 既にトランザクションが開始されてい た場合は、エラーとなります。
・ 既にトランザクションが開始されていた 場合は、エラーとなります。
・ レコードロック獲得中に、トランザク ション開始を行ってもエラーになりま せん。
・ レコードロック獲得中に、トランザクション 開始を行うとエラーになります。
デッドロックエラー発生後の動作 ・ トランザクション確定を行うとエラー になります。
・ トランザクション確定を行ってもエラーに なりません。
D.8.2 排他制御の相違点
表D.13 トランザクション未適用時のレコードロックの相違点
項目 SQL Server Oracle
実現方法 ・ 更新可能カーソルによる1レコードのロッ ク
・ 強制的なトランザクション
1つのプログラムで、複数のファイルを 更新している場合は、すべてのファイ
ルでレコードロック解放タイミングの条 件を満たした時点で、レコードロックは 解放されます。
- ・ 複数ファイルのレコードロックが重なる と、一方のファイルのレコードロックの みを解放することはできません。
レコードロックの獲得 I-Oモードのオープン
・ START文で位置付けたレコード
(注)
-
・ READ文で読み込んだレコード ・ READ文で読み込んだレコード レコー
ドロッ クの 解放
アクセ スモー ド
SEQUENTIAL ・ START文を実行した場合 ・ START文を実行した場合
・ 次のレコードを読み込んだ(READ)場合 ・ 次のレコードを読み込んだ(READ)場 合
- ・ 更新(REWRITE)、削除(DELETE)を 行った場合
・ EOFを検出した場合 ・ EOFを検出した場合
・ CLOSE文を実行した場合 ・ CLOSE文を実行した場合
RANDOM ・ 読込み(READ)、更新(REWRITE)、削
除(DELETE)を行った場合
・ 読 込 み(READ)、 更 新(REWRITE)、
削除(DELETE)を行った場合
・ CLOSE文を実行した場合 ・ CLOSE文を実行した場合
DYNAMIC ・ START文を実行した場合 ・ START文を実行した場合
・ 次のレコードを読み込んだ(READ)場合 ・ 次のレコードを読み込んだ(READ)場 合
- ・ 更新(REWRITE)、削除(DELETE)を
行った場合
・ EOFを検出した場合 ・ EOFを検出した場合
・ CLOSE文を実行した場合 ・ CLOSE文を実行した場合
-:対応項目なし
(注)
DYNAMICモードでオープンし、START FIRST文を実行した場合は位置付けされた先頭のレコードに対するレコードロックは獲得 されません。
表
D.14トランザクション適用時のレコードロックの相違点
項目 SQL Server Oracle
レコードロックの獲得
I-Oモード、OUTPUTモード、または EXTENDモードのオープン
・ START文で位置付けたレコード -
・ READ文で読み込んだレコード ・ READ文で読み込んだレコード
・ トランザクション中にREWRITE文で更 新したレコード
・ トランザクション中にREWRITE文で更 新したレコード
・ トランザクション中にDELETE文で削除 したレコード
・ トランザクション中にDELETE文で削除 したレコード
・ トランザクション中にWRITE文で追加し たレコード
・ トランザクション中にWRITE文で追加し たレコード
レコードロックの解放 ・ トランザクションの確定または取消し(注) ・ トランザクションの確定または取消し デッドロック発生時 ・ エラーが発生した場合、SQL Serverの
トランザクションは自動的にロールバッ
・ エラーが発生したトランザクションは、継 続されています。
ランザクションは継続している状態に なっています。
この場合、以下のいずれかの対処を 行ってください。
- アプリケーションを終了する。
- トランザクション取消しサブルーチ ンを実行する。
-:対応項目なし
(注)
トランザクションの確定または取消し直前に、位置付けまたは読み込んだレコードのレコードロックは解放されません。
D.8.3 可変長項目の相違点
表D.15 可変長項目の相違点について
項目 SQL Server Oracle
データベース項目長がCOBOL項目 長より大きい場合
・ データを書き込むときは、COBOL項 目長の長さでデータが格納されま す。読み込むときは、COBOL項目 長の長さだけ読み取ります。
・ エラーとなります。
付録 E 32 ビット動作と 64 ビット動作の相違点
本章では、PowerRDBconnectorを32ビットのアプリケーションで使用する場合と、64ビットのアプリケーションで使用する場合との相違 点について説明します。
NetCOBOL、データベース、OSおよびIISなどの詳細な相違点については、それぞれのマニュアルを参照してください。