トランザクション処理を行う各データ ファイルに対して、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
ここで、t-status の定義は、次のとおりです。
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 この行では、 test-file の更新を永久的なものとし、トランザクションを終了します。 |
10 ~ 15 行目: |
call "fs_status" returning t-status end-call if t-status < > 0 display "Warning - Commit operation failed" end-if この行では、COMMIT 操作の状態を確認します。 |
17 行目: |
WRITE test-file-record この行では、新しいトランザクションを開始します。 |
19 行目: |
ROLLBACK この行では、 test-file への更新を削除し、トランザクションを終了します。 |
20 ~ 25 行目: |
call "fs_status" returning t-status end-call if t-status < > 0 display "Warning - Rollback operation failed" end-if これらの行では、ROLLBACK 操作の状態を確認します。 |
26 行目: |
WRITE test-file-record この行では、新しいトランザクションを開始します。 |
トランザクション処理を可能にするために、Fileshare クライアントの構成を変更する必要はありません。