境界の範囲内および境界の範囲外のメモリを使用するプログラム

プログラムで両方のタイプのメモリ (境界の範囲内のメモリを使用するモジュールと、境界の範囲外のメモリを使用するモジュールの両方) に対処する必要がある場合、次の操作を行う必要があります。

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