3:Re: CBLTCLS tahrayan 10/10 00:17 仮クローズですが、 「データ管理説明書」−「3.5 ファイルの保全と復旧」−「(1)ファイルの保全法」−「(a)仮クローズ機能」 に説明が書いてあります。 簡単に書くと ファイルには、データを書くレコードとは別に、そのファイルのいろいろな情報を保存する「ファイルラベル」というものがあり、そこにそのファイルは何レコード書きこまれているとか最後に書いたレコードはどこかなどの情報が書いてあります。ファイルの諸々の情報を一括管理しているところですね。 で、通常はこの「ファイルラベル」の情報を更新するのはクローズしたときになります。 ファイルにデータをどんどん書いている途中で何らかの原因でシステムが落っこちると、クローズしないままになるので、例えば実際に書きこんだレコード数と「ファイルラベル」に書いてあるレコード数が違ってしまう。 仮クローズすると、そこで「ファイルラベル」の情報を更新するので、そこで実際に書きこんだレコード数と「ファイルラベル」の情報が一致して、その後システムが落っこちても仮クローズしたところまでに書きこんだ情報は保障される。 データベースでいうところのCOMMITとよく似たものです。 「排他制御」についてですが、おそらく「ファイルの共用/排他制御」と「レコードの排他制御」を混同しているのではないかと思います。 これも、 「データ管理説明書」−「3.4 ファイルの共用/排他制御」 を読んでいただくとわかると思います。 ファイルの共用/排他制御ですが、これはご存じの通り、EXCLUSIVE(排他モード)、PROTECTED(保護モード)、SHARED(共用モード)の3種類あります。 そのうち、同時に複数のプログラムから同時に読み込み/書き込みが入る可能性があるSHAREDについては、あるプログラムがレコードを処理している間に別のプログラムがアクセスしないようにそのレコードがロックされるという機能があります。これがレコード排他制御です。 仮クローズで解除されるのは「レコード排他制御」です。 ちょっと違うかもしれませんが、データベースでいうところのisolation levelのREPEATABLE READ的なレベルを実現するための機能かなと私は思っています。 |