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

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

トップ  >  ボリュームマップの説明



ファイルディレクトリファイル、フリースペースディレクトリファイル
1行目、2行目SYS@FDF、
SYS@FSDF
それぞれファイルディレクトリファイル、フリースペースディレクトリファイルと呼ばれ、そのボリュームのファイルと空き領域の管理を担っています。この2つのファイルは磁気ディスク(ハードディスク)の場合は、ボリューム毎に必ず存在します。これは磁気ディスクを初期化(フォーマット)すると自動的に必ず作成されます。

ちなみに「SYS@xxxx」と最初にSYS@という文字列の付いたファイルは、システムファイルと呼ばれ、A−VXシステムが使用するファイルです。

この2ファイルは、システムファイルなのでTYP=SYSとなっています。ORG=RELなので相対編成ファイルです。SYS@FDFは、4096セクタから14930セクタまでの10835セクタのサイズのファイルです。SYS@FSDFは、14944セクタから15569セクタまでの626セクタの大きさのファイルとなっています。
ライブラリファイル
3行目TESTAPSULTYP=SUL、ORG=QLなので、ソースユニットライブラリファイル(SUL)です。この中には通常COBOLなどのソースユニット(SU、ソースプログラム)が入っています。この中には複数のソースユニットを入れることができます。このソースユニットの一覧表は#LBMなどを使って見ることができます。
このファイルは「SYS@」ではないので、ユーザファイルです。
4行目TESTAPCULTYP=CU、ORG=QLなので、コンパイルユニットライブラリファイル(CUL)です。
5行目TESTAPLMLロードモジュールライブラリファイル(LML)です。
6行目TESTAPJSLジョブストリームライブラリファイル(JSL)です。
8行目SYS@CULシステムファイルでかつコンパイルユニットライブラリファイルとなります。
一般のファイル
7行目DATA03TYP=DAT、ORG=SEQなので、順編成ファイルであるということがわかります。
レコード長やブロック長といった情報は、このボリュームマップから得ることはできません。#ABCなどの詳細情報表示の機能を使用することになります。

このDATA03というファイルのIDに「AA」という文字が付いています。これはカンパニIDです。このファイルは、カンパニIDがAAのユーザだけがアクセスすることができることを表しています。
9行目DATAIX以降のファイルはTYPとORGを見ていけば、そのファイルのだいたいの属性がわかるので、簡単に種類だけ書きます。

これは、索引順編成ファイル(IS)
10行目ABORTDUMPアボートダンプ
11行目MFDDATAMDFファイル
14行目FORMDATAフォームデータファイル
15行目SPOOLAP01ユーザスプールファイル
16行目TESTREL相対編成ファイル
一般のファイル(複数索引順編成ファイル)
12行目DATAMIX12行目と13行目、22行目は1セットになっています。

複数索引順編成ファイルのデータ部

複数索引順編成ファイルは、データベースのファイルも兼ねています。
13行目KEY01複数索引順編成ファイルのキー部
22行目
複数索引順編成ファイルのファイル管理ラベルです。DATAMIXのキーがKEY01であることを表しています。たいていの場合、「複数索引」なので、複数のキーファイルがあります。
一般のファイル(世代ファイル)
17行目から
20行目まで
GENFILE17行目から20行目までと23行目は、これまた1セットになっています。

順編成ファイルでかつ世代ファイルです。GEN=01のGENFILEが第1世代ファイル、GEN=02が第2世代ファイル・・・となります。
これらのファイルは名前も同じで、ファイルサイズ、ファイル編成、ファイル形式も全て同じになっています。

データファイルなら磁気ディスク上に作成する限り、何でも世代ファイルにすることができます。例えば図のGENFILEは順編成ファイルです。

ちなみにこれ以外の(上で説明したような)ファイルは、世代ファイルではないので、無世代ファイルと呼ばれます。
23行目
世代ファイルのファイル管理ラベルです。
LATEST G-NO=2なので、最古世代ファイルは第2世代ファイル、TOTAL G-NO=4なので世代ファイルは全部で4世代であることがわかります。
動的アロケートファイル
21行目DATA01図ではID、FILE-ID、TYP、ORGやSCNTの値は入っているが、FROMやTOが「*****」で決まっていません。(難しく言うとファイル仕様のみをFDFに登録した状態)
つまりファイルの名前(DATA01)や属性(TYP=DAT、ORG=SEQ、即ち順編成ファイル)、サイズ(180)は決まっているが、磁気ディスク上のどこにアロケートされているか決まっていないファイルです。
実際にこのファイルを使用する際(例えばプログラムが実際にデータを書き込む時)に、磁気ディスク上にアロケートされます。(つまりジョブ実行時に7行目や9行目のような普通のファイルになる。)ファイルとディアロケートするとまた仕様のみ登録された状態になります。

このファイルは次のような使い方をします。ジョブA、ジョブBの2つのジョブがあり、ジョブAはサイズが20セクタのファイルaを使用し、ジョブBはサイズが20セクタのファイルbを使用するとします。またジョブAとジョブBは同時には動きません。そして磁気ディスクはたったの20セクタしかないとします。もし静的アロケートを使用するとしたら、20セクタ分の磁気ディスクにファイルaとファイルbをアロケートすることはできません。動的アロケートは、ファイル名やサイズ、属性といったファイル仕様のみを登録し、実際にファイルを磁気ディスクにアロケートしません。このためにファイルaとファイルbは動的アロケートで磁気ディスクに登録することは可能です。実際にジョブAを動かしたときには、ファイルaが磁気ディスク上にアロケートされます。そしてジョブA終了時にはファイルaをディアロケートします。こうすると20セクタ分が空き領域となるので、今度はジョブBが起動されたときにファイルbをアロケートすることができます。ジョブBを終了するときにディアロケートしておけば、またジョブAを実行することが可能となります。ディスク容量が潤沢にあれば、特に必要な形式のファイルではありません。

データファイルなら磁気ディスク上に作成する限り、何でもこの動的アロケートファイルにすることができます。例えば図のDATA01は順編成ファイルです。

一方1行目から20行目のように、最初から磁気ディスク上にアロケートされているファイルのことを静的アロケートファイルと呼びます。
FREE SPACE
9行目と10行目の間
20行目と21行目の間
FREE SPACE9行目と10行目の間と20行目と21行目の間にある「FREE SPACE」は空き領域を表しています。例えば9行目と10行目の間にあるFREE SPACEの内容から、33168セクタ目から33183セクタまでの16セクタ分、どのファイルの領域にもなっていないセクタがあることがわかります。

一般的には、この領域に新しいファイルを作ることができます。例えば先ほどの9行目と10行目の間のFREE SPACEには、順編成ファイルならば16セクタ分のファイルを作ることができます。(ファイル編成によっては、データを管理する領域が必要な場合があるので、16セクタ分の空きがあっても、16セクタより少ないサイズのファイルしか作れないこともあります。)
しかし空いているからといって、そこが本当の意味で”空いている”とは限りません。まず、1つ目として、動的アロケートファイルが使用する可能性があります。動的アロケートファイルは、上記で説明したように、実際にジョブが実行されるときに空き領域にアロケートされます。ジョブが実行されるときに必要なサイズの空き領域が無いと、そのジョブは正しく動かないことになります。この場合、「FREE SPACE=空き領域」ではないということになります。
もうひとつの例としては、一時ファイルが挙げられます。これもジョブ実行時に磁気ディスク上にアロケートされ、ジョブ終了時に自動的に終了するファイルです。動的アロケートファイルと同様に、ジョブ実行時に、そのジョブが使用するサイズだけFREE SPACEが必要になります。

こういったファイルは、そのジョブを実行していなければボリュームマップ上に現れません。そうすると次のようなことが起こりがちです。サーバの管理作業中にFREE SPACEのサイズを見て、「このボリュームは空きがたくさんありそうだから、バックアップ用のファイルを作っておこうか。」と思い、ファイルを作る。そして業務でジョブを実行して、ジョブが動的アロケートファイルや一時ファイルを作ろうとしても、空き領域が足りないので、ファイルが作れずにジョブが途中でアボートする。これはまだいい方で、ジョブのエラー処理が良くないと、なんとなく最後まで動いてしまったが結果がおかしいとか最悪間違った結果でも気が付かないということが起こったりします。
もちろん動的アロケートファイルや一時ファイルを一切使用していなければ、大丈夫かもしれませんが、空き領域の管理は充分気をつける必要があります。