ネットワーク サーバーから .NET COBOL アプリケーションを実行するには

ネットワーク サーバーに .NET COBOL アプリケーションをディプロイして、各ワークステーションに Enterprise Server をローカルにインストールしなくとも、サーバーにマップされているすべてのワークステーションでアプリケーションを実行できます。

.NET COBOL アプリケーションを構成する前に、次のことを確認してください。

アプリケーションでネイティブ コード コンポーネントも使用する場合は、ライセンスを設定し、共有フォルダーを作成する必要があります。「ネットワーク サーバーからネイティブ COBOL アプリケーションを実行するには」を参照してください。

注: サーバー上の Enterprise Server のインストールに含まれるフォルダーは次のとおりです。
  • %ProgramFiles(x86)%\Micro Focus\Enterprise Server\bin には、32 ビット マシンのネイティブ ランタイム ファイルが格納されています。
  • %ProgramFiles(x86)%\Micro Focus\Enterprise Server\bin64 には、64 ビット マシンのネイティブ ランタイム ファイルが格納されています。
  • %ProgramFiles(x86)%\Micro Focus\Enterprise Server\redist\v4.0 には、.NET Framework バージョン 4.0 のランタイム アセンブリが格納されています。
  • %ProgramFiles(x86)%\Micro Focus\Enterprise Server\redist\v2.0 には、.NET Framework バージョン 2.0 のランタイム アセンブリが格納されています。

.NET アセンブリの検索

ネットワーク サーバーから .NET COBOL アプリケーションを実行する場合は、適切な .NET ランタイム アセンブリをアプリケーションで使用できるようにする必要があります。

実行時に .NET アセンブリを検索してロードするメカニズムは、ネイティブ .dll に使用されるメカニズムとは異なります。ネイティブ アプリケーションでは、PATH システム環境変数を使用して、従属アセンブリを検索します。.NET COBOL アプリケーションの場合、必要な COBOL ランタイム アセンブリは、アプリケーションで検索できるように、アプリケーション ファイルを含むフォルダーと同じフォルダー内にある必要があります。それには、次の手順を実行します。

  1. Enterprise Server のインストール先の redist\v4.0 または redist\v2.0 フォルダーから適切なランタイム アセンブリをアプリケーション フォルダーにコピーするか、アプリケーション ファイルを Enterprise Server のインストール先の適切な redist\* フォルダーにコピーします。
  2. アプリケーション ファイルおよび COBOL ランタイム アセンブリを含むフォルダーのネットワーク共有を作成し、ネットワーク共有をワークステーションで使用できるようにします。

    たとえば、%ProgramFiles(x86)%\Micro Focus\Enterprise Server\redist\v4.0 がアプリケーションのコピー先である場合は、このフォルダーを共有します。アプリケーションが .NET Framework v2.0 をターゲットとしている場合は、\redist\v2.0 フォルダーを共有します。

この方法は、アプリケーションで標準の COBOL CALL メカニズムを使用して従属アセンブリをロードするシナリオ (set <procedure-pointer> to entry "progname" または call "progname" など) には適用できません。この方法でロードされるプログラムは、PATH 環境変数を使用して検索します。ディプロイが容易になるように、すべての従属 .NET アセンブリを同じフォルダー内に保持することをお勧めします。

この際、呼び出し先のアセンブリを検索するように PATH 環境変数を設定する場合は、システム レベルではなく、app.config ファイルに直接変数を設定することをお勧めします。たとえば、app.config ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!--The following code declares a section group for application configuration -->
    <sectionGroup name="MicroFocus.COBOL.Application">
      <section name="Switches" type="System.Configuration.NameValueSectionHandler" />
      <section name="Environment" type="System.Configuration.NameValueSectionHandler" />
    </sectionGroup>
    <!--The following code declares a section group for run-time configuration -->
    <sectionGroup name="MicroFocus.COBOL.Runtime">
      <section name="Tunables" type="System.Configuration.NameValueSectionHandler" />
      <section name="Switches" type="System.Configuration.NameValueSectionHandler" />
    </sectionGroup>
  </configSections>
  <MicroFocus.COBOL.Application>
    <Switches />
    <Environment>
      <add key="PATH" value="F:\myappfiles;%PATH%" />
    </Environment>
  </MicroFocus.COBOL.Application>
</configuration>

ネットワーク セキュリティに関する考慮事項

デフォルトでは、ネットワーク ドライブには「ローカル イントラネット」のパーミッションしかなく、必要となる可能性がある多くの操作が制限されます。このため、ネットワーク共有から .NET COBOL アプリケーションを実行する場合は、セキュリティ レベルを昇格する必要があります。これは、次の方法のいずれかで可能です。

  • app.config ファイルをアプリケーションに追加します。このファイルには、ネットワーク共有上のアセンブリに対して完全な信頼を提供する次のコードが含まれています。
    <runtime>
        <loadFromRemoteSources enabled="true"/>
    </runtime>
    

    次に例を示します。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <!--The following code declares a section group for application configuration -->
        <sectionGroup name="MicroFocus.COBOL.Application">
          <section name="Switches" type="System.Configuration.NameValueSectionHandler" />
          <section name="Environment" type="System.Configuration.NameValueSectionHandler" />
        </sectionGroup>
        <!--The following code declares a section group for run-time configuration -->
        <sectionGroup name="MicroFocus.COBOL.Runtime">
          <section name="Tunables" type="System.Configuration.NameValueSectionHandler" />
          <section name="Switches" type="System.Configuration.NameValueSectionHandler" />
        </sectionGroup>
      </configSections>
      <runtime>
          <!--The following line provides Full Trust for assemblies loaded from a network share -->
          <loadFromRemoteSources enabled="true"/>
       </runtime>
    </configuration>
    
  • または、アプリケーションを含む共有に対して Microsoft の caspol (Code Access Security Policy) ツールを使用します。これを行う方法の詳細については、Microsoft の MSDN を参照してください。