プログラムのロード順とランタイム・システムの使用

動的バインドされるアプリケーションの場合、プログラムのロード順は、検索するランタイム・システムおよびランタイム・システムの使用方法に影響します。 次に例を示します。


.exe ファイルと 1 番目の .dll ファイル

「1 番目」の COBOL .dll ファイルとは、実行時に COBOL ランタイム・システムを必要とするアプリケーションの、最初にロードされるコンポーネントのことです。以下の説明に出現する「.exe ファイル」は、「1 番目の .dll ファイル」と読み替えることもできます。

アプリケーションを実行すると、アプリケーションのリンク方法に応じて、.exe ファイルが互換性のあるランタイム・システムを検出し、ロードします。


  • アプリケーションが (動的バインドを使用せずに) 通常の方法でリンクされている場合、.exe ファイルが PATH 環境変数に登録されている各パスでランタイム・システムを検索します。このため、複数のランタイム・システムがインストールされている場合は、競合が発生する可能性があります。
  • アプリケーションが動的バインドを使用してリンクされている場合は、.exe ファイルは、インストールされている互換性のあるランタイム・システムを Windows のレジストリ内で照会し、検出したランタイム・システムに動的にバインドします。ランタイム・システムを検出できなかった場合は、PATH 環境変数の現在の設定を使用して、デフォルトのランタイム・システムをロードします。

互換性のあるランタイム・システム

動的バインドされる実行可能ファイルを作成する際、実行可能ファイルで使用できるランタイム・システムのレベルを指定できます。これによって、実行可能ファイルがリンクしたランタイム・システムより新しいバージョンのランタイム・システムも使用できるようにするか、または現在のリリースのランタイム・システムしか使用できないように限定するかを選択できます。

ランタイム・システムのレベルとスレッド・モードに対して、次のチェックが行われます。


  • ランタイム・システムのレベルは、レジストリ内のバージョン番号と見なされます。例えば、バージョン 6.0 の COBOL 開発システムの場合、ランタイム・システムのレベルは 6.0 となります。
  • ランタイム・システムのロードに使用するパスは、次のレジストリ値から決定されます。
    \HKEY_LOCAL_MACHINE\SOFTWARE
    \Micro Focus\Visual COBOL\x.y\COBOL\Environment\PATH

    ここで、

    x.y
    インストールされている COBOL システムのバージョン

    実行可能ファイルで使用できるランタイム・システムが作成時のリリース・レベルだけに限定されている場合、x.y は実行可能ファイルを作成した開発システムのバージョンと同じかそれ以降である必要があります。

  • 上記のいずれの方法でもパスが決定できなかった場合、ランタイム・システムは PATH のデフォルト設定に基づいてロードされます。

いずれの場合も、ランタイム・システムのロード完了時にバージョンとタイプがチェックされ、互換性がなければ通知されます。

2 番目以降の .dll ファイル

同じプロセスに 2 番目以降にロードされる .dll ファイルは、プロセス内の既存のランタイム・システムにバインドする必要があります。動的バインドを使用しないアプリケーションを作成する場合は、アプリケーション内のすべてのプログラムを必ず同じランタイム・システムにリンクしてください。別のランタイム・システムにリンクされるプログラムがあると、競合によってアプリケーションが異常終了するおそれがあります。

アプリケーション内の 2 番目以降の .dll ファイルの作成時に動的バインドを使用する場合は、それらのファイルをロード済みで互換性のあるランタイム・システムのいずれかにバインドするか、通知用の診断メッセージを出力してクリーンに異常終了させるかを指定できます。