## Run

This function is used to run an action from within an action. This can be used to make complicated actions easier to understand and also makes it easier to reuse common action sequences.

While running actions, a stack is maintained with the name of every action currently running. It is not permitted to have the same action on the stack more than once. This means, for you programmers out there, that recursion and cyclic references are not permitted.

When a new action is run, the current execution mode is maintained. This means that if the current action is being run stepwise, the new action will run stepwise. If the current action is being run grouped, the new action will run grouped. The Run grouped option can be used to force the specified action to run grouped.

When Run Grouped is selected, you can choose to run the action only once. The effect is that only a single file is processed. This is useful when the action is processing data which is independent of the metadata in the tracks. For example you might be processing a query database or a list. This combination of options is similar to the Constrain Execution to a Single File statement.

The Run statement can specify that the named action is inline. When Run Inline is specified there must be a Start function inside the current action with the specified name.

The Indirect option enables the use of Escape Sequences in the text field where you specify the name of the action to be run. This enables you to choose the action to be run based on the contents of Variable fields or any other constructed pattern. The action name is only validated at run time. If the evaluated name is empty, the Run statement is ignored. You can setup lists using the various list functions to contain the names of actions; inline or not. By using the List Item At Index function, you can pull an action name and place it in a variable which can then be specified in the Run statement.