2.3.1.5 MacrosMacros
Definition of the Macros
The 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 Macro
Macros 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 Property
The 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.
|