秀丸マクロ: 別のマクロを呼び出す

別のマクロを実行 execmacro

現在実行しているマクロから、別のマクロを実行することもできます。 その場合は execmacro 文を使用します。

// マクロの中から test2.mac を実行
execmacro "test2.mac";

引数を指定

execmacro文のファイル名の後に、カンマ区切りで引数を指定することもできます。 引数として渡せるのは文字列です。数値側を指定するとエラーとなります。

// 引数がある場合(カンマで区切る)
execmacro "test2.mac", "引数1", "引数2";

引数を取得 getarg()

「呼ばれる側」では、getarg()関数で引数を取得できます。

// 呼ばれた側は getarg関数で取得する
$para1 = getarg(0);

戻り値を指定

「呼ばれる側」で戻り値を設定する場合は、 endmacro 文の後に戻り値を指定します。

returnmacro "戻り値";

戻り値を取得 getresultex()

「呼び出し側」で戻り値を取得する場合は getresultex()関数を使い、引数に -1 を指定します。

// 戻り値を受け取る
$ret = getresultex(-1);

別マクロ起動のサンプルプログラム

別のマクロを起動して、 引数や戻り値の受け渡しをするシンプルなサンプルプログラムです。

  • test.mac: 呼び出し側
  • test2.mac: 呼ばれる側
test.mac: 呼び出し側
// 別のマクロを実行
execmacro "test2.mac", "hello", " world";

// 戻り値を取得
$ret = getresultex(-1);

message $ret; // "hello world";
test2.mac: 呼ばれる側
// 引数を2つ受け取る
// 受け取った2つの引数を連結して返す

// 引数を取得
$s1 = getarg(0);
$s2 = getarg(1);

// 戻り値を設定
endmacro $s1 + $s2;