ネイティブ COBOL のプログラムのロード順およびランタイム システムの使用

注: 次の説明はネイティブ コードにのみ該当します。

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

.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 ファイルの作成時に動的バインドを使用する場合は、それらのファイルをロード済みで互換性のあるランタイム システムのいずれかにバインドするか、通知用の診断メッセージを出力してクリーンに異常終了させるかを指定できます。