トランザクション処理を行う各データ ファイルに対して、COBOL プログラムの SELECT 文を使用してデータ ファイルを定義するときに、WITH ROLLBACK 句を指定します。
select test-file assign to "test.dat" organization indexed record key prime-key lock mode manual with rollback ...
このコード例では、データ ファイル test.dat でトランザクション処理を行うように指定しています。
トランザクションによる更新を永久的なものにするには、プログラムで COMMIT 文を使用します。データ ファイルからトランザクションによる更新箇所を削除するには、ROLLBACK 文を使用します。
COMMIT 文および ROLLBACK 文は、トランザクションに関係するすべてのデータ ファイルに対して作用します。そのため、1 つのデータ ファイルのファイル状態だけでは、COMMIT 文や ROLLBACK 文の実行結果を確認することはできません。COMMIT 文や ROLLBACK 文の実行結果をチェックするには、File Handling Redirector モジュールを呼び出す必要があります。File Handling Redirector モジュールで呼び出すエントリ ポイントは、fs_status です。呼び出しの形式は次のとおりです。
call "fs_status" returning t-status end-call
01 t-status pic x(2) comp-x.
t-status で 0 以外の値が返される場合は、COMMIT 操作または ROLLBACK 操作が失敗したことを示します。
1 SELECT test-file ASSIGN TO "test.dat" 2 LOCK MODE MANUAL WITH ROLLBACK 3 ... 4 OPEN I-O test-file 5 ... 6 move 1 to prime-key 7 WRITE test-file-record 8 ... 9 COMMIT 10 call "fs_status" 11 returning t-status 12 end-call 13 if t-status < > 0 14 display "Warning - Commit operation failed" 15 end-if 16 move 2 to prime-key 17 WRITE test-file-record 18 ... 19 ROLLBACK 20 call "fs_status" 21 returning t-status 22 end-call 23 if t-status < > 0 24 display "Warning - Rollback operation failed" 25 end-if 26 WRITE test-file-record 27 ...
1 から 2 行目: |
SELECT test-file ASSIGN TO "test.dat" LOCK MODE MANUAL WITH ROLLBACK |
7 行目: |
WRITE test-file-record |
9 行目: |
COMMIT |
10 から 15 行目: |
call "fs_status" returning t-status end-call if t-status < > 0 display "Warning - Commit operation failed" end-if |
17 行目: |
WRITE test-file-record |
19 行目: |
ROLLBACK |
20 から 25 行目: |
call "fs_status" returning t-status end-call if t-status < > 0 display "Warning - Rollback operation failed" end-if |
26 行目: |
WRITE test-file-record |