区
分データセットは順編成ファイルをつなぎ合わせた様な構造であり、メンバー1つ1つは順編成の形式となっています。メンバーの終わりにはEOFマークがあり、順編成ファイルであればそこで終了するのですが、区分データセットの場合、その直後から次のメンバーが開始しています。
又、データセットの先頭から1つめのEOFマークまでをディレクトリー部(Directory)と呼び、メンバーを管理する情報が保存されます。ディレクトリー部以降の部分はデータ部(Data)と呼び、この部分には実際のデータが保存されています。
|
長
さ256バイトの固定長レコードで形成されるディレクトリーはデータセットのアロケーション時に初期化され、メンバーの管理情報を保存する為に使用されます。管理情報とは、例えば“メンバー名”・“メンバーの開始アドレス”であり、ロードモジュールであれば“エントリーポイント”や“A-MODE/R-MODE”などのModule Fetchに使用する情報も保存しています。ディレクトリーのアクセスにはBLDL,FIND,STOWマクロを使用するとマニュアルには記述されていますが、これらマクロは1メンバーづつ処理する事を対象に作成されており、全てのメンバーを一度に処理する事はできません。例えば、データセット内のメンバー一覧を作成する為には、これらマクロを使用せず、順次にレコードを読み込む事が必要となります。しかし、ディレクトリー部の構造はマニュアルにも記述してあり、BSAMファイルとして読み込めばそれほど苦労せずに読む事ができます。ディレクトリー部の構造は下図の様になっています。 |
分データセットのデータ部の管理方法は非常に単純です。一度使用した領域は再利用せず、データを書き込む場合は、必ずデータセットの最終レコード(DS1LSTAR)の次から書き込まれます。
メンバーを削除した場合は、ディレクトリー部からメンバーエントリーを削除するだけで、データ部に対して全く操作を行いません。既存メンバーを更新した場合であっても、データは最終レコード(DS1LSTAR)の次から書き込まれ、ディレクトリー部のポインターを更新するだけです。元々データが存在していた部分は、使用済みとしてIEBCOPYのCOMPRESS等を行うまで再利用される事はありません。
新規にメンバーを作成する時や、既存のメンバーを更新する場合は
データ部:
実データ部分で、複数のファイルが連続して保存されています。新規メンバーは必ず
|
|
1998.05.23 - Kimu -
|