GETMAIN

GETMAINは、メモリー領域(仮想記憶域)を割り当てる、MVSのアセンブラー・サービス(API)の1つです。C言語におけるmalloc関数に相当します。

プログラムが、プログラム・モジュールの外側に動的にメモリーを獲得する時に使います。このサービスの名前から、メモリー領域を割り当てることそのものを、GETMAINとも言います。例えば、「サブルーチンが使うワークエリアをGETMAINする」のようにです。

GETMAINの反対に、獲得した領域を解放するのがFREEMAINです。

プログラムで使うと言っても、GETMAINサービスを直接使うことが出来るのはアセンブラー言語に限ります。GETMAINサービスは、GETMAINマクロを使いSVC命令によって呼び出します。z/OSでは、GETMAINの他にSTORAGEマクロによるサービスも利用できます。クロスメモリー・モードのプログラムなど、SVC命令が発行できない場合は、GETMAINではなくSTORAGEマクロを利用します。STORAGEではSVCではなく、PC命令によってサービスが呼び出されます。

  • GETMAINマクロ

GETMAINマクロの使用例です。RUは、GETMAINサービスのタイプの1つを示し、LVパラメーターによって獲得したい領域の長さを指定します。GETMAINが成功すると、獲得された領域のアドレスは汎用レジスター1に設定されます。GETMAINサービスとGETMAINマクロの詳細は、マニュアル「z/OS MVSプログラミング:アセンブラー・サービスガイド」(SA88-7092)の「仮想ストレージの管理」の章およびマニュアル「z/OS MVSプログラミング:アセンブラー・サービス解説書 第1巻(ABE-HSP)」(SC43-4143)に解説されています。