Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報

[掲示板に戻る]


Re: ファイルの各種情報をファイルに出... ろろけい 2013-3-6 10:08
Re: ファイルの各種情報をファイルに出... TOM 2013-3-6 11:57
Re: ファイルの各種情報をファイルに出... ろろけい 2013-3-6 14:39
Re: ファイルの各種情報をファイルに出... TOM 2013-3-8 17:25
Re: ファイルの各種情報をファイルに出... ろろけい 2013-3-8 19:06

10 Re: ファイルの各種情報をファイルに出力したい
ろろけい 2013-3-6 10:08  [返信] [編集]

なんと2年ぶりのろろけいです。

引き続き、SYS@FDFから情報を取得する件なのですが。

2年前は、とりあえず「有効レコード数」を得られればそれでよしとしていました。
ですが最近になって、#MAPで表示されるその他の項目も得られるとなおよいなと感じまして、
データ管理説明書から得られる情報をもとになんとか算出しようと試みたのですが、
残念ながら答えを導き出せずにいます。

下記の情報を得るのはどのようにすればよいか、ヒントを教えていただけると助かります。

USED RECORD COUNT : 15066
DELETED RECORD COUNT : 137
UNUSED RECORD COUNT : 14797

欲しいのは、この3項目(USEDは直接得られるのでその他の2項目)だけなのです。
ファイルの種類は、MIXのデータ部だけでOKです。

ファイル名がキーになっている「使用ファイルマスタ」みたいなものを用意して、
そこに、上記3項目を入れ込むプログラムを作れば、それを定期的にチェックすることで、
オーバーフロートラブルを防げるというわけです。

まぁ、上記3つを合計した「総レコード数」は、そうそう変動するものではないのだから、
「使用ファイルマスタ」にあらかじめ入れておけばいいだろ!ですし、
削除レコードだって、たとえば毎晩バッチで#MIXGNを実行しておけば、
そうそうたまることもないだろう!ではあるのですが…(^^;

もしもSYS@FDFからこれらを得られるのであれば、それも知っておきたいなと思ったので、
質問させていただきました。

いかがでしょうか。
11 Re: ファイルの各種情報をファイルに出力したい
TOM 2013-3-6 11:57  [返信] [編集]

SYS@FDF内の項目から「あと何件入るか」は計算できます。
例えば 順編成ファイルの時のSYS@FDFからは

1.ファイル編成=S 29バイト目
2.現在アロケートされている容量を計算する
 217バイト目から257バイト目に第nエクステント終了、開始がありま す。この値はセクタ数かと思います。
3.レコード長とブロック長から2項のエクステント内に最大収容データ 件数を計算する。
4.有効レコード数 43バイト目を3項から減する。
 結果が空いているレコード数が求められます。
5.MIXのデータ部も同じように求めることができます。
 ただし、索引順編成場合は、3項にはキー部とデータ部が一緒に入っ ているため、ある程度のキー部容量を減してあげる必要があります。

昔々これらを計算し印刷するプログラムを作ったのですが、現時点で は所在が不明です。見付かればあげることが出来ますが。
12 Re: ファイルの各種情報をファイルに出力したい
ろろけい 2013-3-6 14:39  [返信] [編集]

TOMさん

早速の返信ありがとうございます。

いただいた情報で計算してみたら、#MAPと同じ情報を得られました。
ありがとうございました。

ただ、ごめんなさい、この場合、削除レコードの数も「空き」側に入ってしまいますよね。

常時使われているファイルなので、あまり#MIXGNができない状態だったりするのです。
なので、削除レコードがたまってきたころに、タイミングを見計らって、
古いデータを削除したり#MIXGNを実行したりという運用なのです。

余談ですが、最近になってやっと、#AJOBCやA-VX自動運転管理ユーティリティの存在を知ったので、
先ほども述べたように、定期的に深夜にでも自動で#MIXGNを実行すれば、
削除レコードの心配はなくなりますよね。

なので、もはや「興味」の域に入ってしまっていますが。
#MAPで瞬時に削除レコード数が表示されるということは、その情報またはそれを導きだせる情報が、
SYS@FDF等のどこかに含まれているのかな?と思い投稿させていただいたというわけです。
13 Re: ファイルの各種情報をファイルに出力したい
TOM 2013-3-8 17:25  [返信] [編集]

削除レコード数が瞬時に出力される仕掛けは
MISのデータを前提で

最終レコードアドレスが83バイト目にあります。データ部ですから、第1エクステント、第2エクステント・・と順番にデータはかかれます。
83バイト目には最終にデータを出力した位置を示しております。第1エクステントから最終にデータを出力した位置を計算すると、何レコードが作成されているかを知ることが出来ます。そこから有効レコード数を減算すれば、その差が削除レコード数となります。
14 Re: ファイルの各種情報をファイルに出力したい
ろろけい 2013-3-8 19:06  [返信] [編集]

TOMさん

なるほど!
そういうことなのですね!
よくわかりました!

まだプログラムは組んでいませんが、光が見えてきました。

助かりました。

ありがとうございました!

BluesBB ©Sting_Band