プログラムで両方のタイプのメモリ (境界の範囲内のメモリを使用するモジュールと、境界の範囲外のメモリを使用するモジュールの両方) に対処する必要がある場合、次の操作を行う必要があります。
- 16MB の境界下位の最大メモリを、プログラムで必要な境界の範囲内のメモリの最大量に設定します。 デフォルトは 3MB、最大は 16MB です。
- 16MB の境界上位の最大メモリを、プログラムで必要な境界の範囲外のメモリの最大量に設定します。 デフォルトは 3MB、最大は 2GB です。
- 境界の下位のメモリを使用する、ロード対象のプログラムごとにアドレス指定モードを AMODE (24) に設定します。
- 境界の上位のメモリを使用する、ロード対象のプログラムごとにアドレス指定モードを AMODE (31) に設定します。
- 境界の下位のメモリを割り当てるには、モジュールが発行する GETMAIN と STORAGE OBTAIN のすべてのマクロの LOC パラメーターを省略します。
- 境界の上位のメモリを割り当てるには、モジュールが発行する GETMAIN と STORAGE OBTAIN のすべてのマクロで LOC=ANY を設定します。
- アセンブラーの命令 BASSM または BSM を使用して、さまざまなアドレス指定モードを使用するプログラム間の制御を転送します。
注:
- 31 ビット アドレス指定を使用するプログラムで 24 ビット アドレスを操作する必要がある場合、レジスタを新しいアドレスに設定する命令の前に、アドレスの未使用のバイトをクリアするコードをインクルードする必要があります。 これらの命令には、LA、BAL、BALR、EDMK および TRT などがあります。
- GETMAIN マクロの RU および RC フォーマットで設定できるのは LOC=ANY のみです。 GETMAIN の R フォーマットは、境界の下位のメモリに制限されます。