変数に値を代入するには、=を使います。
変数名の例#number $top_string_1 #x100
数値型変数に文字列を代入したり、文字列型変数に数値を代入しようとするとエラーになります。
値の代入例#num = 100; $str = "斉藤秀夫";
エラーになる例#num = "ABC"; $str = 100 / 4;
例call Sub; call Sub; endmacro; Sub: message str(##a); //常に0 ##a = 1; message str(##a); //1 return;
角カッコを連ねて添え字を増やせば、何次元の配列でも作ることができます。
例#a[0] = 1; #a[1] = 2; #a[ #b + 1 ] = 5; #b = #a[2];
まだ代入していない変数や、代入していない配列でも、参照してエラーになることはありません。
例#a[0][0] = 1; #a[5][2] = 1;
例message str(#a); message str(#b[10]); message $c; message $d[20];
execmacroで別のマクロを実行する場合は、変数は共有されず、別の空間で扱われます。
例message str(#a); //常に0 #a = 1; message str(#a); //1 newfile; message str(#a); //実行対象が変わっても1 endmacro;
マクロが終了しても保持させたい場合は、setstaticvariableで記憶し、getstaticvariableで取り出す方法があります。
test.mac#a = 1; message str(#a); //1 execmacro "test2.mac"; message str(#a); //test2.macとは別の空間で1のまま endmacro;
test2.mac#a = 2; endmacro;