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

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

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

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

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

CALL "abc" USING ...

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

このため、エントリポイントを呼び出す前に、そのエントリポイントを含むプログラムをロードするか、またはエントリポイントをあらかじめロードしておく必要があります。 エントリポイントをあらかじめロードするには、エントリポイントを持つプログラムを含むライブラリファイルを作成します。

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

Note: リンク時に呼び出し先のプログラムの名前は、システムのアセンブラーとリンカーで受け入れられるものでなければなりません。つまり、使用できる文字は、0~9、A~Z、a~z、アンダースコア、およびハイフンのみです。