Revive!   < Lose vailable PDS Members ... >

Partition Dataset Format 分データセットは順編成ファイルをつなぎ合わせた様な構造であり、メンバー1つ1つは順編成の形式となっています。メンバーの終わりにはEOFマークがあり、順編成ファイルであればそこで終了するのですが、区分データセットの場合、その直後から次のメンバーが開始しています。 又、データセットの先頭から1つめのEOFマークまでをディレクトリー部(Directory)と呼び、メンバーを管理する情報が保存されます。ディレクトリー部以降の部分はデータ部(Data)と呼び、この部分には実際のデータが保存されています。

ディレクトリー部:(登録簿)

さ256バイトの固定長レコードで形成されるディレクトリーはデータセットのアロケーション時に初期化され、メンバーの管理情報を保存する為に使用されます。管理情報とは、例えば“メンバー名”・“メンバーの開始アドレス”であり、ロードモジュールであれば“エントリーポイント”や“A-MODE/R-MODE”などのModule Fetchに使用する情報も保存しています。ディレクトリーのアクセスにはBLDL,FIND,STOWマクロを使用するとマニュアルには記述されていますが、これらマクロは1メンバーづつ処理する事を対象に作成されており、全てのメンバーを一度に処理する事はできません。例えば、データセット内のメンバー一覧を作成する為には、これらマクロを使用せず、順次にレコードを読み込む事が必要となります。しかし、ディレクトリー部の構造はマニュアルにも記述してあり、BSAMファイルとして読み込めばそれほど苦労せずに読む事ができます。ディレクトリー部の構造は下図の様になっています。

Format of Directory
使用済みバイト数

読み込んだレコードの先頭2バイトは有効なデータの長さが入っています。この長さはレコード先頭からの長さで、“使用済みバイト数”の長さも含んでいます。

メンバー・エントリー

1つのメンバーエントリーには1つのメンバー情報があり、必ずメンバー名称の昇順に並べられています。この長さは最短12バイトで、最大42バイトとなり、“Length of UserData”の値で異なります。

メンバー名称

メンバー名称です。メンバー名は英数字で、1バイト目は必ず英字でなければならないルールとなっていますが、STOWマクロは、その構文チェックを行わない為、現実的にはどの様な名前のメンバーでも作成する事が可能です。しかし、多くのプログラムはメンバー名の1バイト目を英字として扱うので、ルール違反の名前を登録すると、そのデータセットを扱うプログラムが正常に動かない可能性があります。例えば、先頭1バイトが空白(x'40')のメンバーを作成すると、ISPFでBrowseする事もできません。メンバー名がHighValue(x'FFFFFFFFFFFFFFFF')となっている場合、メンバーエントリーの終わりを表します。

TTR

データ部に存在するメンバーの実データ部分の先頭アドレスがあります。アドレスは相対アドレス(データセットの先頭アドレスからの相対的なアドレス指定方法)で指定され、先頭2バイトがトラック番号、最後の1バイトがレコード番号となります。区分データセットは、この相対アドレスでメンバーを管理しているので、データセット・サイズの最大は65535トラック(4396シリンダー)となります。

C

この領域には“ALIas flag”・“TTRNの数”・“ユーザーデータの長さ”があります。

ALI

Aliasフラグです。このビットに“1”が立っていると、そのメンバーはAliasとして扱われます。Aliasは既存メンバーの別名として登録しますが、オリジナルのメンバーに修正が入り、データの位置が変わったとしても、別名として登録されたメンバーは更新されず、再登録の必要があります。AliasのほとんどはLoad Moduleに使用されていますが、区分データセット全てに共通で作成する事ができます。

Number of TTRN

ユーザー・データ領域に含まれるTTRNの数。TTRNは0〜3個あります。

Length of UserData

ユーザー・データの長さがHalfWord(2バイト)単位で入っています。

ユーザー・データ

ユーザー・データには TTRN

データ部

分データセットのデータ部の管理方法は非常に単純です。一度使用した領域は再利用せず、データを書き込む場合は、必ずデータセットの最終レコード(DS1LSTAR)の次から書き込まれます。 メンバーを削除した場合は、ディレクトリー部からメンバーエントリーを削除するだけで、データ部に対して全く操作を行いません。既存メンバーを更新した場合であっても、データは最終レコード(DS1LSTAR)の次から書き込まれ、ディレクトリー部のポインターを更新するだけです。元々データが存在していた部分は、使用済みとしてIEBCOPYのCOMPRESS等を行うまで再利用される事はありません。 新規にメンバーを作成する時や、既存のメンバーを更新する場合は データ部: 実データ部分で、複数のファイルが連続して保存されています。新規メンバーは必ず










概要 導入方法 使用方法 技術情報 変更履歴 Home Tools

1998.05.23 - Kimu -