サブプログラムのエントリ ポイントの呼び出し

呼び出し先のプログラムは、手続き部の先頭から開始するのではなく、指定のエントリ ポイントから実行することができます。呼び出し先のプログラムのエントリ ポイントは、ENTRY 文を使用して定義します。次に、CALL 文でそのエントリ ポイントを指定して、呼び出し先のプログラムをエントリ ポイントから開始します。

エントリ ポイントを含むプログラムをランタイム システムにロードする場合は、プログラム内のすべてのエントリ ポイントはランタイム システムへのエントリ ポイントとして識別され、その後でロードするプログラムから呼び出して使用することができます。

ただし、ランタイム システムは、まだロードされていないプログラムのエントリ ポイントを検索することはできません。たとえば、次のように CALL 文を実行します。

CALL "abc" USING ...

ランタイム システムはまず、すでにロードされているすべてのプログラムから、abc というプログラムまたはエントリ ポイントを検索します。見つからない場合は、実行可能なファイル形式 .ext である、abc.ext というファイルをディスク上で検索します。abc が、ロードされていないプログラムのエントリ ポイント名である場合、ランタイム システムはこのエントリ ポイントを検索できません。

このため、エントリ ポイントを呼び出す前に、エントリ ポイントを事前にロードしておくか、そのエントリ ポイントを含むプログラムをロードする必要があります。

エントリ ポイントを持つプログラムを含んだライブラリ ファイルを作成して、エントリ ポイントを事前にロードできます。ライブラリ ファイルを呼び出すとき、ランタイム システムは、ライブラリ ファイル内のプログラムをすべてロードするわけではありません。その代わり、ランタイム システムは、後で参照できるように、呼ばれるライブラリ ファイルに含まれるプログラムとエントリ ポイントをすべて登録します。後でこれらのプログラムの 1 つを呼び出すときに、ランタイム システムは、そのプログラムがライブラリ ファイルに含まれていることを認識し、その時点でプログラムをロードします。

注:エントリ ポイントの名前は、システムのアセンブラーとリンカーで受け入れられるものでなければなりません。 つまり、使用できる文字は、0~9、A~Z、a~z、アンダースコア、およびハイフンだけです。

エントリ ポイントは、アセンブリがロードされたときにのみ表示されます。これには、2 つ解決策があります。