待機編成ファイル
- 1 待機編成ファイルとは
-
待機区分編成ファイルと待機結合編成ファイルの2つを合わせて、待機編成ファイルといいます。
今まで説明したように、この2つのファイル編成はプログラムを作って自由に読み込んだり、書き込んだり、ということはできません。あくまでもA−VXシステムが使用するためのファイルとして準備されています。
- 2 待機区分編成ファイル(QP)と待機結合編成ファイル(QL)の違い
-
両方とも待機編成ファイルで、ファイルの中に複数のメンバを格納できるという点で共通しています。
何が異なるかというと、待機区分編成ファイルはメンバを連続領域で格納しなければならず、待機結合編成ファイルはメンバが連続領域に格納されていなくてもよいという点です。
Windowsではハードディスクにファイルの書き込みや削除・更新を続けているとファイルのデータがハードディスクのあちこちに散らばってしまう「断片化」というものが発生しますが、A−VXでも同じです。待機編成ファイルは1つのファイル中に複数のメンバが入っているので、メンバの書き込みや更新を続けていると「断片化」が発生してしまいます。
違いを具体的に例を挙げて説明します。
図のように、いっぱいメンバが入っていて空きが4セクタ分しかなく、おまけに「断片化」により空きがファイル中にバラバラに存在する待機編成ファイルがあるとします。
このような状態のファイルに3セクタ分の大きさのメンバを新規に入れようとしました。
待機結合編成ファイルは、空き領域がバラバラにあっても、入れるメンバのレコード分あれば問題ないので、メンバはバラバラになって格納されます。
ところが待機区分編成ファイルの方は、空き領域が連続していないといけないので、図のように入れるメンバのサイズ分の連続領域が無い場合は、たとえ空きの合計が十分あったとしてもファイルオーバーフローになってしまいます。
待機区分編成ファイルは、「ファイルの再編成」というものが用意されており、この処理を行うことにより(最近のA−VXはオーバーフローすると自動的にやってくれる。ユーティリティを使って手作業でもできます。)連続した空き領域を作ることができます。
メンバのサイズ分の連続した空き領域を作ることができれば、無事メンバを格納することができます。
一見するといちいち「ファイルの再編成」をしなくてもよい待機結合編成ファイルだけあれば良さそうに見えます。
なぜ待機区分編成ファイルがあるかというと、読み込みで利点があるからです。
待機結合編成ファイルはバラバラにメンバが格納されているので、1つのメンバを読み込む場合、最悪あっちこっちから読み込まなくてはなりません。一方待機区分編成ファイルは連続した領域に格納されているので、一気に読み込むことができます。待機区分編成ファイルの方が読み込みが速いのです。
ロードモジュール(実行するプログラム)はすばやくロードされて実行してほしいので、ロードモジュールを格納するLMLは待機区分編成ファイルになっています。
ソースプログラムは頻繁に書き換えが行われて「断片化」しやすいので、SULは「断片化」していても再編成なしで書き込める待機結合編成ファイルになっています。
ライブラリファイルは、効率良く動けるようにQLかQPのどちらかになっています。これはシステムで決まっているので、「俺は開発効率を上げるために、作成中のソースプログラムを早く読み込みたいので、ソースユニットライブラリをQPにしたい!」とか思っても無理です。ソースユニットライブラリはQLと決まっています。
- 3 ライブラリファイル
-
待機編成ファイルがどのように使われるかというと、A−VXではライブラリファイルとして使用しています。ライブラリファイルとは、ソースファイルやロードモジュール、ジョブストリームといったものを種類別に格納するためのファイルです。 A−VXの世界では、Windowsでxxx.exeというような実行する形式の物を「ロードモジュール(LM)」とよびます。このロードモジュールは、ロードモジュールライブラリファイルの中に入れています。
同じようにCOBOLなどのソース(ソースユニット(SU))はソースユニットライブラリファイル(SULファイル)、コンパイルユニットはコンパイルユニットライブラリファイル(CULファイル)、ジョブストリーム(JS)はジョブストリームライブラリファイル(JSLファイル)、パラメータメンバ(PM)はパラメータメンバライブラリファイル(PMLファイル)に入っています。
Windowsは、ソース(.cppとか.bas、.frmなど)や実行形式のプログラム(.exeや.comなど)がそれぞれ独立した1つのファイルとなっていますが、A−VXのファイルの場合、ソースはソースユニットライブラリファイルの中のメンバの1つ、ロードモジュールはロードモジュールライブラリファイルの中のメンバの1つになっています。ロードモジュール、ソースユニットなどのメンバは最大6文字までの名前を付けます。
さきに書いたように待機区分編成ファイルや待機結合編成ファイルがライブラリとなります。
ライブラリファイルは用途によってさらにいろいろな種類に分けられています。
主要なものを表にしました。表に示したものの他にもいくつか種類があります。
ライブラリファイルの主な種類(説明書などに使われている略称、ファイル編成) 名称 略称 編成 概 要 ロードモジュールライブラリ LML QP ロードモジュールを入れるライブラリファイル ソースユニットライブラリ SUL QL ソースユニットを入れるライブラリファイル コンパイルユニットライブラリ CUL QL コンパイルユニットを入れるライブラリファイル ジョブストリームライブラリ JSL QL ジョブストリームを入れるライブラリファイル フォームオブジェクト FO QP フォームを入れるライブラリファイル 音声単語ファイル VOW QP 音声認識で使われるファイル 音声パターンファイル VOP QP 音声認識で使われるファイル パラメータライブラリ PML QL パラメータメンバを入れるライブラリファイル ドキュメントファイル DOC QL PRISMのドキュメントを入れるライブラリファイル 表データ定義ファイル DBDIR QL 表データ定義を入れるライブラリファイル ユーザスプールファイル SPOOL QL ユーザ用のスプールファイル
ライブラリファイルの中に入れるものをサブファイルといったりもします。例えばロードモジュールライブラリの中に入っている1つ1つのロードモジュールが、それぞれ1つ1つのサブファイルでもあり、メンバでもあります。
サブファイルとメンバという用語の呼び分けはあまりよくわかりませんが、おそらくファイル管理上はファイル、サブファイル、レコード・・・となり、ジョブ管理やプログラム開発作業上ではメンバと呼び分けているのでしょう。