[掲示板に戻る]
CBLTCLS gai 2014-10-7 16:57 |
Re: CBLTCLS gai 2014-10-9 10:44 |
Re: CBLTCLS ターラヤン 2014-10-10 0:17 |
Re: CBLTCLS 名無しさん 2014-10-15 13:44 |
1 | CBLTCLS |
gai 2014-10-7 16:57
[返信] [編集] こんにちは。 聞ける人がいなくて困っています。 CBLTCLSが PGにあったりなかったりしています。 仮クローズとのことですが、 COBOL85システムサブルーチン説明書を読んでも いまいち意味がわかりません。 どういった役目なのでしょうか? 手動でOPEN/CLOSEするのと 何が違うのでしょうか? |
|
2 | Re: CBLTCLS |
gai 2014-10-9 10:44
[返信] [編集] 自己レスです。 トラブル防止のため、実クローズはせずとも、ファイルの更新をしてくれるというのはわかったのですが、 CALLしても、排他制御が解除されません。 CBLTCLSをCALL直後、そのファイルがロックしたままです。 実CLOSE命令、実OPEN命令を施すと、解除されるのですが。 COBOL85システムサブルーチン説明書では、 排他制御が解除されます、と書いてあるのですが・・・ 私がどこか勘違いをしてるのでしょうか。 |
|
3 | Re: CBLTCLS |
ターラヤン 2014-10-10 0:17
[返信] [編集] 仮クローズですが、 「データ管理説明書」−「3.5 ファイルの保全と復旧」−「(1)ファイルの保全法」−「(a)仮クローズ機能」 に説明が書いてあります。 簡単に書くと ファイルには、データを書くレコードとは別に、そのファイルのいろいろな情報を保存する「ファイルラベル」というものがあり、そこにそのファイルは何レコード書きこまれているとか最後に書いたレコードはどこかなどの情報が書いてあります。ファイルの諸々の情報を一括管理しているところですね。 で、通常はこの「ファイルラベル」の情報を更新するのはクローズしたときになります。 ファイルにデータをどんどん書いている途中で何らかの原因でシステムが落っこちると、クローズしないままになるので、例えば実際に書きこんだレコード数と「ファイルラベル」に書いてあるレコード数が違ってしまう。 仮クローズすると、そこで「ファイルラベル」の情報を更新するので、そこで実際に書きこんだレコード数と「ファイルラベル」の情報が一致して、その後システムが落っこちても仮クローズしたところまでに書きこんだ情報は保障される。 データベースでいうところのCOMMITとよく似たものです。 「排他制御」についてですが、おそらく「ファイルの共用/排他制御」と「レコードの排他制御」を混同しているのではないかと思います。 これも、 「データ管理説明書」−「3.4 ファイルの共用/排他制御」 を読んでいただくとわかると思います。 ファイルの共用/排他制御ですが、これはご存じの通り、EXCLUSIVE(排他モード)、PROTECTED(保護モード)、SHARED(共用モード)の3種類あります。 そのうち、同時に複数のプログラムから同時に読み込み/書き込みが入る可能性があるSHAREDについては、あるプログラムがレコードを処理している間に別のプログラムがアクセスしないようにそのレコードがロックされるという機能があります。これがレコード排他制御です。 仮クローズで解除されるのは「レコード排他制御」です。 ちょっと違うかもしれませんが、データベースでいうところのisolation levelのREPEATABLE READ的なレベルを実現するための機能かなと私は思っています。 |
|
4 | Re: CBLTCLS |
名無しさん 2014-10-15 13:44
[返信] [編集] 大変ご丁寧にありがとうございます。 いま一度頭を整理して理解してみます。 |
BluesBB ©Sting_Band