[b-free 536] Re: ファイル名の長さ

Takanori Hayashi (takanori@ohsaki.meidensha.co.jp)
Thu, 18 Sep 1997 16:18:04 +0900

林です。

In message <199709171459.XAA07959@bfree.rim.or.jp>
"[b-free 532] ファイル名の長さ"
"Naitoh Ryuichi <night@bfree.rim.or.jp>" wrote:
night> BTRON1 の場合だと 20 文字が最大なわけですが、これだといかにも短い気がします。
night> あまり長くてもしょうがないのですが、多言語に対応した場合、言語切替コードの
night> 分も入ってくるので、もう少し長いファイル名を許すようにすべきだと思います。
night>
night> BTRON のファイル名を長くするようにした場合、問題となってくるのがファイル名
night> の収容場所です。
night> BTRON の場合、ファイル名はファイルの属性の一部になっています。そのため、
night> BTRON1 の FD のフォーマットでは、ファイル名はファイルの属性情報の領域に入っ
night> ています。素直にこの方法を踏襲してしまうと、ファイル名を長くすればするほど
night> 属性情報の領域が大きくなってしまい問題になるような気がします。

BTRON2では、実身属性は属性レコードという負のレコード番号を持つ
レコードで表されます(レコード番号ごとに属性が割り当てられている)。
これを素直に実装すると、ファイルヘッダにはレコードインデックス
だけを置いてレコードはデータレコードも属性レコードも別ブロック
に入れることになります。これだと実身名の長さはほとんど無制限に
伸ばせます。(さすがに効率が悪そうですが)
もう少しましな実装は、属性レコードが固定サイズのもの、および
可変サイズの属性でサイズが小さい場合はファイルヘッダ内に置き、
大きいサイズの場合だけ外部に出す方法です。属性レコードの処理が
多少複雑になりますが、現実的な実装と思います。
# データレコードにも同じ方法を取ると、1実身最低2ブロック使う
# 現状のものよりかなり効率を上げられそうですが…。

以上、2点は新たにファイルフォーマットを作った場合の方法です。
そうでない場合、標準FDと互換性を持たせたまま長い実身名を付ける
方法としては、長い実身名を特定のレコードタイプ、サブタイプの
データレコードとして表す方法があります。この場合、通常の実身名
の領域には長い実身名の初めの部分だけを入れます。長い実身名に
対応していないシステムでは長い実身名は扱えませんが、それ以外に
特に問題はないでしょう。

以上、どの案も長い実身名を効率的に扱うことは考えていません。

---
    林(takanori@ohsaki.meidensha.co.jp)