High-level, textual flow of macro engine processing

  1. ScreenX is recognized.
  2. ScreenX actions are completed. Note that there is the addition of pausetimevalue /2 (or pauseattributevalue /2) after each action if the action is a <prompt> or <insert> and is not the last action in the set of actions.
  3. Macro play stops here if the current screen is an exit screen.
  4. ScreenX pausetimevalue delay (set by the pausetime attribute or overridden by a local pause attribute for this screen) is completed.
  5. Register nextscreens.
  6. Start a timeout clock for nextscreens.
  7. Recognition processing of nextscreens loops, doing a new recognition based on each PSEVENT or OIAEVENT, the arrival of which might be controlled or affected by contention resolution if it is active, until...
  8. A nextscreen is recognized, in which case the timeout timer is stopped. The process returns to the top of the sequence and starts again, or the timeout timer (timeout attribute of the <HAScript> element) expires and the macro ends with a timeout error.