複数パーツ・プログラム・オブジェクト
特定の場合、バインダーは複数のセグメントに渡るプログラム・オブジェクトを作成します。
このタイプのモジュールをロードする場合、各セグメントは異なるロード・ポイントを持ちます。
バインダーは、現在はクラスの RMODE およびロード時間 (初期または据え置き) を基準にしてモジュールをセグメントに分割しています。すべての入力が、従来のオブジェクト・モジュール
(XOBJ や GOFF ではない) またはロード・モジュールからである場合、複数パーツ・モジュールは
RMODE(SPLIT) が指定された場合のみ作成されます。アセンブラー
CATTR サポートを使用してユーザー定義のテキスト・クラス (GOFF オブジェクト・フォーマットでのみサポート)
を作成する場合、あるいはコンパイラーによる GOFF または XOBJ オブジェクト・モジュールが入力データの一部である場合、B_TEXT 以外のテキスト・クラス
も作成可能です。これらの追加の初期ロード・テキスト・クラスの RMODE を使用して、これらの各クラスを 2 つ以下のセグメントに割り当てます。さらに、C_WSA のような据え置きのロード・クラスは、別々のセグメントに配置されます。
セグメントの分割を無効にする外部のバインダーはありません。
複数パーツのモジュールには、一定の制限が適用されます。
高水準アセンブラーの機能を使用する場合、あるいはバインダー RMODE(SPLIT) オプションを使用
して複数パーツのプログラム・オブジェクトを作成する場合には、一定の制限があります。
- モジュールが指示されたロード (LOAD の送出側がモジュールをロードするストレージを用意して いる) のターゲットである場合、2 つのクラス・セグメントは連結され、単一の単位として ストレージにロードされます。
- すべてのエントリー・ポイント (基本および代替) は、同じクラスで定義する必要があります。
- プログラムのパーツが 16 MB より上にある場合は、モジュール全体が AMODE(31) で実行できること、 または 16 MB 境界の反対側のセクション間のリンケージでは、BASSM または同等の命令を使用して、 必要な場合には強制的に AMODE 切り替えができることを確認しておく必要があります。
- バインダー・オプション HOBSET によって、 ターゲットのアドレッシング・モードに応じて V タイプ・アドレス定数の上位ビットが設定されます。
- オーバーレイ形式は複数パーツのプログラム・オブジェクトとは互換性がありません。
複数パーツのプログラム・オブジェクトが、指示されたロード を介して、 またはバインダーによって次々とロードされる場合は、ロードされる全クラスの中で最小 の RMODE 値に従って、すべてのテキスト・クラスが連続したストレージのロケーションにロード されます。