説明内の変数更新アクションの処理

変数更新アクションが <description> エレメント内にあるときに、マクロ・ランタイムが 1 つ以上の変数更新アクションを処理する方法に注意してください。
  1. マクロ・ランタイムは、すべての変数更新アクションの順番が先頭であるかのように、これらのアクションをただちに実行する。
  2. その後、マクロ・ランタイムは、説明内の残りの項目 (記述子) を通常どおりに評価し、全体的なブール結果を得る。変数更新アクションは、ブール結果に影響しません。

上記で説明したように、マクロ・ランタイムは、マクロ画面をアプリケーション画面と一致させる前に、画面認識プロセスを複数回実行する場合があります (評価のやり直しを参照)。したがって、<description> エレメントに 1 つ以上の変数更新アクションが含まれている場合、マクロ・ランタイムは、<description> エレメントを評価するたびに、変数更新アクションを実行します。

例えば、マクロが再生中であり、画面名 ScreenB が有効な次画面のリスト上にあり、図 1 に表示されているような <description> エレメントが ScreenB に含まれているとします。
図 1. ScreenB の <description> エレメント
<description>
   <oia status="NOTINHIBITED" optional="false" invertmatch="false" />
   <varupdate name="$boolUpdate$" value="true" />
   <attrib value="0x4" row="1" col="1" plane="COLOR_PLANE" optional="false"
               invertmatch="false" />
</description>
マクロ・ランタイムが ScreenB を現行のアプリケーション画面と突き合わせようとするたびに、次のことを行います。
  1. マクロ・ランタイムは、<varupdate> アクションを参照し、それを実行して、値 true$boolUpdate$ に保管する。
  2. マクロ・ランタイムは、<oia> 記述子と <attrib> 記述子を評価し、<description> エレメント全体のブール結果を得る。