この COBOL システムでは、トランザクション処理は Fileshare を使用している場合にのみ実行できますが、Btrieve ユーザーは、トランザクション処理を実行するために Fileshare は必要ありません。
Fileshare を使ってトランザクションでファイル内のレコードを更新する場合は、ファイル内の個々のレコードはロックされ、他のユーザーがレコードを読み取れないようにします。これは、ファイルからレコードを削除した際に ROLLBACK 操作が行われる可能性があるためです。ただし、トランザクション内から Xfh2btr を介して Btrieve ファイルにアクセスする場合は、他のユーザーが同時にファイルにアクセスすることを防ぐために、ファイル全体に一時的な排他ロックがかかります。Btrieve v6.x 以降では、並行トランザクションが使用され、トランザクション内でファイルを共有できます。
Btrieve トランザクションは、処理中のトランザクションがなく ROLLBACK を使って開かれているファイルに対して、REWRITE、WRITE、または DELETE 操作が行われるたびに開始されます。この時点では、Btrieve はファイルに排他ロックをかけます。このファイル ロックは、並行トランザクションを使用している場合 (Btrieve v6.x 以降) を除き、トランザクションが終了するまで維持されます。
CLOSE 操作ではトランザクションは再開されません。これは、トランザクションがアクティブでない場合にのみ Btrieve CLOSE 操作が行われるためです。
ファイル ロック エラーは、ファイルが開かれた時点で Xfh2btr によって返されます。これは、この COBOL システムが、ファイルを開く際にのみファイル ロック エラーを返すためです。Btrieve は、トランザクション内でファイルにアクセスする際にファイル ロック エラーを返す場合があります。ただし、このエラーは、Xfh2btr によってレコード ロック エラーに変換されます。これは、トランザクション内でファイルにアクセスする際にこの COBOL システムが正当にレコード ロック エラーを返せるためです。