呼び出し先のプログラムは、手続き部の先頭から開始するのではなく、指定のエントリ ポイントから実行することができます。呼び出し先のプログラムのエントリ ポイントは、ENTRY 文を使用して定義します。次に、CALL 文でそのエントリ ポイントを指定して、呼び出し先のプログラムをエントリ ポイントから開始します。
エントリ ポイントを含むプログラムをランタイム システムにロードする場合は、プログラム内のすべてのエントリ ポイントはランタイム システムへのエントリ ポイントとして識別され、その後でロードするプログラムから呼び出して使用することができます。
ただし、ランタイム システムは、まだロードされていないプログラムのエントリ ポイントを検索することはできません。たとえば、次のように CALL 文を実行します。
CALL "abc" USING ...
ランタイム システムはまず、すでにロードされているすべてのプログラムから、abc というプログラムまたはエントリ ポイントを検索します。見つからない場合は、実行可能なファイル形式 .ext である、abc.ext というファイルをディスク上で検索します。abc が、ロードされていないプログラムのエントリ ポイント名である場合、ランタイム システムはこのエントリ ポイントを検索できません。
このため、エントリ ポイントを呼び出す前に、エントリ ポイントを事前にロードしておくか、そのエントリ ポイントを含むプログラムをロードする必要があります。
エントリ ポイントを持つプログラムを含んだライブラリ ファイルを作成して、エントリ ポイントを事前にロードできます。ライブラリ ファイルを呼び出すとき、ランタイム システムは、ライブラリ ファイル内のプログラムをすべてロードするわけではありません。その代わり、ランタイム システムは、後で参照できるように、呼ばれるライブラリ ファイルに含まれるプログラムとエントリ ポイントをすべて登録します。後でこれらのプログラムの 1 つを呼び出すときに、ランタイム システムは、そのプログラムがライブラリ ファイルに含まれていることを認識し、その時点でプログラムをロードします。
エントリ ポイントは、アセンブリがロードされたときにのみ表示されます。これには、2 つ解決策があります。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="MicroFocus.COBOL.Application"> <section name="Switches" type="System.Configuration.NameValueSectionHandler" /> <section name="Environment" type="System.Configuration.NameValueSectionHandler" /> <sectionGroup name="Interop"> <section name="PreLoad" type="System.Configuration.NameValueSectionHandler" /> </sectionGroup> </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></Switches> <Environment></Environment> <Interop> <PreLoad> <add key="b.dll" value="managed" /> </PreLoad> </Interop> </MicroFocus.COBOL.Application> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-om:asm.v1"> <probing privatePath="bin"/> </assemblyBinding> </runtime> </configuration>