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

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

エントリ ポイントを含むプログラムがロードされると、そのプログラム内のすべてのエントリ ポイントがランタイム システムによって認識され、それ以降にロードされたプログラムから呼び出せるようになります。

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

CALL "abc" USING ...

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

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

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

注: エントリ ポイントの名前は、システムのアセンブラーおよびリンカーで使用できる名前にする必要があります。つまり使用できる文字は、0 から 9、A から Z、a から z、アンダースコア、およびハイフンのみです。

エントリ ポイントは、アセンブリがロードされている場合にのみ表示されます。アセンブリを事前にロードするには、次の 2 つの方法があります。