マクロ

マクロの定義

コマンドシンタックス

define macroName {script}

このコマンドは、macroNameと呼ばれるマクロを定義し、それを指定したスクリプトに関連づけます。 この操作により、macroNameはコマンドとして利用でき、スクリプトを呼び起こすこともできます。

下記のスクリプトは、指定した文字列を3回出力するマクロhelloを定義しています。

def hello 
{ 
      loop (ii, 1, 3) 
            { type "$(ii).Hello World"; }
};

マクロhelloを定義した後、スクリプトウィンドウに文字列helloを入力すると、次の結果が出力されます。

1.Hello World
2.Hello World
3.Hello World

マクロを定義したら、次のように入力することで、マクロとして定義されているスクリプトを表示することができます。

define macroName;

マクロに引数を渡す

マクロには最高5つまで引数を含むことができます。 各引数に対して、スクリプトの中で%1-%5を使用します。 マクロの引数には、数値、文字列、変数、データセット、関数、及びスクリプトが使用可能です。マクロに引数を渡すことは、スクリプトに引数を渡すことに似ています。

マクロに引数が渡される場合、オブジェクトのプロパティmacro.nArgを使用して、引数の数を調べることができます。

下記のスクリプトは、数値の引数を1つ持つmyDoubleというマクロを定義します。 このマクロにより、入力した引数の2倍の値が出力されます。

def myDouble { type "$(%1 * 2)"; };

上記のマクロを定義した後、スクリプトウィンドウに下記のように入力します。

myDouble 5

Originはスクリプトウィンドウに下記の結果を出力します。

10

このマクロを2つの引数を取るように修正します。

def myDouble { type "$(%1 * %2)"; };

マクロの定義後、スクリプトウィンドウに下記のように入力します。

myDouble 5 4

Originは、次のように出力します。

20

マクロのプロパティ

macroオブジェクトは、マクロに渡された引数の数を保持するプロパティをもちます。

プロパティ アクセス 説明
Macro.nArg 読み込みのみ,数値 マクロ中では、このプロパティは、引数の総数を保持しています。

例えば、

次のスクリプトは、TypeArgsと呼ばれるマクロを定義します。 マクロTypeArgsに3つの引数が渡されると、このマクロはそれらの引数をスクリプトウィンドウに表示します。

Def TypeArgs 
{
      if (macro.narg != 3)
      {
            type "Error!You must pass 3 arguments!";
      }
      else
      {
            type "The first argument passed was %1.";
            type "The second argument passed was %2.";
            type "The third argument passed was %3.";
      }
};

上述した例のようにマクロTypeArgsを定義して、下記をスクリプトウィンドウに入力すると、

TypeArgs One;

下記の結果がスクリプトウィンドウに表示されます。

Error!You must pass 3 arguments!

上述した例のようにマクロTypeArgsを定義して、下記をスクリプトウィンドウに入力すると、

TypeArgs  One (This is argument Two) Three;

下記の結果がスクリプトウィンドウに表示されます。

The first argument passed was One.
The second argument passed was This is argument Two.
The third argument passed was Three.