ファイルシステム・区分データセットのディレクトリー構造

By 神居 - Posted: 2017/01/10 Last updated: 2017/01/12 - Leave a Comment

区分データセットのディレクトリー構造

区分データセットのしくみについては、以前に「z/OS(MVS),MSP,VOS3のしくみ\基礎編\07.データセットの種類とアクセス法」のディレクトリ部の構造でも解説しましたが、各ディレクトリー・ブロック内のデータ構造についてもう少し詳細を補足します。z/OSでは、拡張区分データセット(PDSE)も使用できますが、ここで解説するディレクトリー・ブロック構造は、従来からある区分データセットについてのものです。

メンバー・ディレクトリ部の構造

メンバー・ディレクトリ部の構造



ディレクトリー・ブロックの構造

ディレクトリー・ブロックは、256バイトの長さを持ちます。ディレクトリー内では、256バイトのディレクトリー・ブロックが、区分データセット作成時に指定されたディレクトリー・ブロックの数だけ順番に並んでいます。区分データセットのディレクトリー部だけを抜き出せば、256バイトの固定長非ブロック化レコードの順次データセットと同様の構造になっています。
実際のディスク・トラック上では、256バイトのレコード・データの前に8バイトのキーが付加されています。このキー部には、そのディレクトリーブロックに格納されている最後のメンバー名が格納されています。どのディレクトリー・ブロックに目的メンバーのインデックス・データが書かれているかを探索する際のキーとして利用されます。

pdsdirectory

区分データセットのディレクトリーブロック数はどのくらいにすればいいか?

PDSEデータセットではディレクトリーブロック数を考える必要はないですが、従来のPDS(区分)データセットを作る場合はディレクトリーブロック数を指定しなければなりません。ディレクトリー・ブロック内のデータ構造とユーザー・データ部の長さがわかれば、1つのディレクトリー・ブロックにいくつのメンバーが格納できるかが計算できます。1つのメンバーは、メンバー名の8バイト、TTR(メンバーのレコード・データが区分データセット内のどの位置にあるかを示す)の3バイト、インジケーター・バイトの1バイトの計12バイトを最小でも使用します。これにユーザー・データ部が加わります。ディレクトリー・ブロック内で、メンバー・ディレクトリー・データ用に使用できる最大長は、256バイトから先頭にある有効データ長フィールドの長さ2バイトを引いた254バイトです。したがって、254÷1メンバーあたりのディレクトリー・データ長が、1つのディレクトリー・ブロックに格納できるメンバー数です。ただし、最後のディレクトリー・ブロックには最終エントリーを示すデータ12バイトが予約されるので、1メンバー分少なくなる場合があります。

代表的なユーザー・データ部の長さ
ソフトウェアユーザー・データの長さメンバー・ディレクトリー・データの合計長
ISPFエディター30byte42byte
PFDエディター28byte40byte
ASPENエディター30byte42byte
バインダー(z/OS)
リンケージ・エディター(MSP)
24byte36byte
バインダー(z/OS)別名メンバー34byte46byte
リンケージ・エディター(VOS3)28byte40byte

区分データセットにメンバーを格納する代表的なソフトウェアは、ソース・プログラムやJCLならISPFエディター、ロード・モジュールならバインダー(リンケージエディター)です。上記のテーブルには主なソフトウェアがメンバー保管時に付加するメンバー・ディレクトリーのユーザー・データの長さを示しました。このテーブルからメンバーが使用するディレクトリー・データの長さを求め、その値で254を割れば1DIRブロックあたりのメンバー数を求められます。区分データセットに格納する予定(あるいは格納したい)のメンバー数を、そのメンバー数で割れば必要なディレクトリー・ブロック数のおおよその数を求めることができます。
z/OSでは、ソース・プログラムやJCLの格納データセット(ISPFエディター使用)なら1DIRブロックあたり6メンバー、ロード・モジュールの格納データセットなら1DIRブロックあたり7メンバー(別名なしの場合)です。ディレクトリー・ブロック数を10個にした場合、ソース・プログラムやJCLライブラリーなら60メンバー、ロード・モジュール・ライブラリーなら70メンバー程度が格納できることになります。
業務用プログラムのロード・モジュールを格納する場合は、別名を付けたりすることもあるので少し多めにしておく方がいいでしょう。データセット自体のスペースは不足しても2次数量で拡張することができますが、ディレクトリーは後で拡張することはできません。

Posted in .z/OS(MVS),MSP,VOS3のしくみ • • Top Of Page