§２  ＶＩＬ概念

  あなた（以下プログラマ）が，あるソフトを作るためＢＡＳＩＣでプログラム
を作るとします。このプログラムを以後アプリケーションと呼びます。
  アプリケーション中でＶＩＬが実現している機能が必要になった場合，プログ
ラマはアプリケーション中でその機能をプログラムする代わりに，定められた設
定を行った後，ＶＩＬ内のサブルーチンにGOSUB をかけます。サブルーチンはプ
ログラマが必要とする処理を行った後，RETURNでアプリケーションに制御を戻し
ます。

  より厳密にいうと，ＶＩＬを利用したアプリケーションは次の図のようになり
ます。


      ＶＩＬ                       　　　              アプリケーション
        │                       　　 プログラム先頭にマージ │
        ├─ ローダファイル  ←───────────────┘
        │                   ────────────────┐
        │                        パッケージファイルをマージ │
        │                        汎用変数初期化             ↓
        └─ パッケージファイル                        アプリ変数等初期化
               │                                            │        
               ├─ パッケージ              呼出し           │
               │    │                  ←─────────┘
               │    ├初期化モジュール  ──────────┐
               │    ├機能モジュール    パッケージを初期化  ↓
               │    ├   :                            《メインルーチン開始》
               │    ├   :                 呼出し           │
               │    └機能モジュール    ←─────────┘
               │                        ──────────┐
               ├─ パッケージ           モジュール機能処理　↓
               ├─    :                                     :
               └─ パッケージ                               :


  ＶＩＬの実体はローダファイルとパッケージファイルからなっています。

  パッケージファイルは実現する機能（マルチウィンドウ，メニュー選択等）毎
に複数のパッケージに分かれ，各パッケージは１個の初期化モジュールと１個以
上の機能モジュールから成っています。ここでいうモジュールとは要するにサブ
ルーチンのことですが，先頭に

        *VIL_○○_××
            ○○    : パッケージ名
            ××    : モジュール名（初期化モジュールはINITM）

の形のラベルが付けられています。モジュールの呼び出しは，引数として必要な
変数値を設定した後，このラベルに対してGOSUB をかけることで行います。した
がって，行番号やモジュール内のプログラム構造を気にする必要はありません。
また，プログラマが"VIL_"で始まるラベルを付けないようにすれば，ＶＩＬとラ
ベル名が衝突する心配もありません。

  同様に，ＶＩＬ内で使用される変数（以下ＶＩＬ変数と呼びます）はプログラ
マが使用する変数名との衝突を避けるため，

    ・汎用変数
        *VIL_××
    ・パッケージ変数
        *VIL_○○_××
            ○○    : パッケージ名

の形をしています。ここで汎用変数とはＶＩＬ全体で引数の受渡しやワーク等に
使用されるものであり，パッケージ変数とはそのパッケージ内のみで使用される
変数です。
  また，ＶＩＬ変数にはプログラマのDEFINT/LNG/SNG/DBL/STR宣言の影響を避け
るため，すべて型宣言文字が付けられています。ただしほとんどはINT 型なので，
プログラマがDEFINT Vなどと宣言すれば，ＶＩＬ変数値の設定・参照の際に"%"
は省略できます。

　ローダファイルはパッケージファイルをアプリケーションにマージし，ＶＩＬ
全体の初期化を行います。このファイルをアプリケーションの先頭にマージして
おくことにより，このアプリケーションを走らせるだけで自動的にパッケージフ
ァイルが読み込まれ，その機能を利用できるようになります。

　実際に各パッケージの機能を利用するためには，それぞれ変数領域確保等の初
期設定が必要です。これらの中には画面退避バッファの確保などメモリを大幅に
消費するものもあるため，アプリケーションで使用しないパッケージの初期設定
はメモリの無駄になります。そのため，各パッケージ毎に初期設定用のサブルー
チンを独立して用意するようになっています。このサブルーチンを初期化モジュ
ールと呼びます。実際の手順としては，アプリケーションの初期化ルーチン内に
おいて，使用したいパッケージの初期化モジュールを順に呼び出します。

　アプリケーション中のメインルーチン内でパッケージの機能を利用するには，
その機能が必要な箇所で対応する機能モジュールを呼び出します。



