MACRO

From STX Wiki
< Programmer Guide‎ | Command Reference
Revision as of 17:16, 5 April 2011 by Christian (talk | contribs) (Created page with '{{DISPLAYTITLE:{{SUBPAGENAME}}}} MACRO <var>macroname macroarguments</var> Run a macro <var>macroname</var> with the arguments <var>macroarguments</var>. The macro will be star…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
MACRO macroname macroarguments

Run a macro macroname with the arguments macroarguments. The macro will be started in its own variable environment. Any changes the macro does to the environment will get lost after its execution.

MACROX macroname macroarguments

Run the macro macroname with the arguments macroarguments using the current variable environment. Any changes the macro does to the environment will persist after its execution. This includes any unwanted changes, so be careful.

The macro source code macroname must be loaded (see LOAD)The macroarguments passed to the macro are stored in the variable #ARGV of the called macro. Because of the special command-line processing in STx, all string replacements are applied to and all special parsing information (e.g. quotation marks) are removed from macroarguments before it is assigned to #ARGV.

For information about macro definitions (header) and argument parsing see the Script Programming in STx. Many macros use the call-format: name command arguments (e.g. MSGBOX MSG text). If you want to pass quoted arguments to such a macro, use the format MSGBOX 'MSG text' instead of MSGBOX MSG 'text'. This is necessary because the argument string MSG 'text' is passed (after command-line processing) as MSGtext to the macro.If a new shell is called to run a macro, the id (8 hex digits) is assigned to the variable #SHELL of the caller. In the new shell, the variable SHELL is set to 'this_shellid caller_shellid'. The two variables can be used to identify the shells in communication messages.It is not necessary to use the command MACRO explicitly, because the interpreter tries to execute all 'non-shell' commands as a macro. This means the command line MACRO macroname is equivalent to command line macroname.

Navigation menu

Personal tools