トランザクション処理 - Fileshare クライアント

トランザクション処理を行う各データ ファイルに対して、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 クライアントの構成を変更する必要はありません。