TOP命令一覧その他命令>MACRO[]
 LABEL[]  LABELINFO[]  MACRO[]  DIALOG[]  TRAY[]

■マクロ定義命令 MACRO[ ]

マクロを定義します。 この命令は、「macro.yst」ファイル内でのみ使用できます。 YU-RIS のマクロは基本的に「置換処理をするマクロ」ですが、 パラメータを利用することにより「疑似関数マクロ」として使うことも出来ます。 キーワード
NAME〜NAME8 = 文字列定義するマクロ名を記述 ※名前を複数定義する際はNAME2以降を使用
STR = 文字列マクロが実行された時に置換される文字列を記述
DEF〜DEF10 = 文字列パラメータが省略された場合にデフォルトで格納される文字列
[1] 「\ABC」という名前のマクロを定義します。   このマクロがスクリプト上で記述されると、その場所は「テスト」という文字列に置換されます。     MACRO[ NAME=ABC STR="テスト" ]   例えば上のように定義して、スクリプト上の任意の場所に、     あいう\ABCえお。   という記述をすると、実際にはスクリプトに     あいうテストえお。   と記述したのと同じことになります。   文字通り、マクロを指定した文字列に『置き換える』わけです。   これが YU-RIS での基本的なマクロの機能になります。 [2] 「\ABC」という名前のマクロを定義します。   このマクロがスクリプト上でパラメータ付きで記述されると、$_M , $_M2 の部分が   そのパラメータ文字列に変換されてから、置換されます。     MACRO[ NAME=ABC STR="GOSUB[#=SUB1 PINT=$_M PINT2=$_M2]" ]   例えば上のように定義しておいて、     \ABC(50,100)   上のようにマクロを記述すると、それぞれ $_M → 50 に、$_M2 → 100 に変換され、     GOSUB[#=SUB1 PINT=50 PINT2=100]   と、置換されることになり、結果的に \ABC マクロは、   『ラベルSUB1 へGOSUBジャンプし、パラメータとして 50 と 100 の値を渡す』働きを持つ命令となります。   ※パラメータ受け渡しの仕組みに関しては [制御系命令] → [GOSUB〜RETURN] の項目をご覧ください。   同様に、     MACRO[ NAME=ABC STR="GOSUB[#=SUB1 PSTR=$_M PFLT2=$_M2]" ]   と定義して、     \ABC("あいう",1.23)   と記述すれば、     GOSUB[#=SUB1 PSTR="あいう" PFLT2=1.23]   と、置換されます。   マクロのパラメータは、記述を省略することができます。     MACRO[ NAME=ABC STR="GOSUB[#=SUB1 PINT=$_M PINT2=$_M2 PINT3=$_M3]" ]   例えば、上のようにマクロ定義し、そのうえで     \ABC(10, 20, 30)   通常はこのように使用しているとき、     \ABC(10, 20)   と、パラメータを省略して書くことも出来ます。(この場合は第3パラメータを省略)   ただ上の例の場合、実際に置換されると下のようになります。     GOSUB[#=SUB1 PINT=10 PINT2=20 PINT3=]   PINT3 の部分を見てください。   第3パラメータが省略されたので、$_M3 には何も格納されず、   上のように置換されてしまい、結果として正しくない文法になりコンパイルエラーとなってしまいます。   その対策(マクロのパラメータを省略しても問題なくするための方法)として、   DEF〜DEF8 キーワードを使用します。このキーワードにより、   『パラメータが省略された際、$_M〜$_M8 にデフォルトで格納される文字列を設定する』ことができます。     MACRO[ NAME=ABC STR="GOSUB[#=SUB1 PINT=$_M PINT2=$_M2 PINT3=$_M3]" DEF3="0" ]   このようにマクロ定義することで、   第3パラメータが省略された場合に、$_M3 には 0 という文字列が格納されるようになります。   ですので、さきほどと同様に     \ABC(10, 20)   このように書いた場合、     GOSUB[#=SUB1 PINT=10 PINT2=20 PINT3=0]   第3パラメータが省略されたため、DEF3 によって設定されたデフォルト文字列「0」が$_M3に格納されることになり、   上のように文法として正しくなるので、コンパイルが通るようになります。   補足として、パラメータ省略の記述仕様ですが、     \ABC(,20)   や、     \ABC(,20,)   などと記述することもでき、この場合、第1,第3パラメータを省略した事になります。   また、     \ABC(,,,)     \ABC(,,)     \ABC(,)     \ABC   と記述することもでき、この場合、全てのパラメータを省略した事になります。 [3] 「\ABC」「\DEF」「\GHI」という名前のマクロを定義します。(※マクロの中身は全て同じ)     MACRO[ NAME=ABC NAME2=DEF NAME3=GHI STR="テスト" ]   上のように定義した場合、     MACRO[ NAME=ABC STR="テスト" ]     MACRO[ NAME=DEF STR="テスト" ]     MACRO[ NAME=GHI STR="テスト" ]   と定義したのと同じことになります。