| 2.3.1.5 MacrosMacros Definition of the MacrosThe command syntax, 
 define macroName {script}defines a macro called macroName, and associates it with the given script.  MacroName can then be used like a command, and invokes the given script.
 For example, the following script defines a macro that uses a loop to print a text string three times.  
 def hello 
{ 
      loop (ii, 1, 3) 
            { type "$(ii). Hello World"; }
};Once the hello macro is defined, typing the word hello in the Script window results in the printout:
 1. Hello World 2. Hello World 3. Hello World Once a macro is defined, you can also see the script associated with it by typing
 define macroName; Passing Arguments to MacrosArgument, MacroPass Arguments to MacroMacros can take up to five arguments.  The %1-%5 syntax is used within the macro to access the value of each argument.  A macro can accept a number, string, variable, dataset, function, or script as an argument. Passing arguments to a macro is similar to passing arguments to a script.
 If arguments are passed to a macro, the macro can report the number of arguments using the macro.nArg object property.
 For example, the following script defines a macro named myDouble that expects a single numeric argument.  The given argument is then multiplied by 2, and the result is printed.
 def myDouble { type "$(%1 * 2)"; };If you define this macro and then type the following in the Script window:
 myDouble 5 Origin outputs the result to the Script Window:  
 10 You could modify this macro to take two arguments:
 def myDouble { type "$(%1 * %2)"; };Now, if you type the following in the Script window:
 myDouble 5 4 Origin outputs:  
 20 Macro PropertyMacro PropertyThe macro object contains one property which stores the number of arguments passed to the macro.  
 
| Property | Access | Description |  
| Macro.nArg | Read only, numeric | This property stores the number of arguments passed to the macro. |  For example:
 The following script defines a macro called TypeArgs.  If three arguments are passed to the TypeArgs macro, the macro types the three arguments to the Script window. 
 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.";
      }
};If you define the TypeArgs macro as in the example, and then type the following in the Script window:  
 TypeArgs  One; Origin returns the following to the Script window:
 Error! You must pass 3 arguments! If you define the TypeArgs macro as in the example, and then type the following in the Script window: 
 TypeArgs  One (This is argument Two) Three; Origin returns the following to the Script window:
 The first argument passed was One.
The second argument passed was This is argument Two.
The third argument passed was Three. |