次のコード・フラグメントは、ユーザーに入力を促します。入力ストリングが true ストリングの場合、コード・フラグメントにより「You typed TRUE」というメッセージがホスト画面に表示されます。入力ストリングがそれ以外のストリングの場合は、コード・フラグメントにより「You typed FALSE」というメッセージが表示されます。この例では、次のアクションが使用されています: 「プロンプト」アクション、「条件」アクション、「入力」アクション。

本書のコードをシステム・クリップボードにコピーして、システム・クリップボードから ソース表示にコピーできます。このコードは該当する部分のみであり、既存のマクロ・スクリプトのマクロ画面にコピーする必要があります。また、ストリング変数 $strData$ も作成する必要があります。変数を作成するには、<HAScript> 開始タグの後、最初の <screen> エレメントの前に次の行を追加します。
<vars>
   <create name="$strData$" type="string" value="" />
</vars>
スクリプトはマクロ・エディターで保存した後、マクロ・エディターまたはソース表示で編集できます。
この例については、次の点に注意してください。
  • この例は、<actions> エレメントを含むコードの部分とその中にあるアクションから構成されています。
  • 最初のアクションは、メッセージ・ウィンドウを表示し、ユーザーの入力をセッション・ウィンドウの 入力フィールドに書き込むことなく、その入力を変数 $strData$ にコピーするプロンプト・アクションです。
  • 条件アクション (<if> エレメント) の最初の部分には、条件があります。条件は単に $strData$ です。
  • $strData$ はブール・コンテキストのストリング変数なので、 マクロ・ランタイムはストリングのブール値への変換を試行します (自動データ型変換を参照)。ユーザーの入力がストリング 'true' (小文字、大文字、または大/小文字混合) であれば、変換は正しく完了し、条件にはブール値 true が入ります。ユーザーの入力が他のストリングであれば、変換は失敗し、条件にはブール値 false が入ります。
  • 条件が true の場合、マクロ・ランタイムは <if> エレメントの内部でアクションを実行します。これは、ホスト画面に「You typed TRUE」というメッセージを表示する入力アクションです。<if> エレメント内部のアクションすべてが実行されると、マクロ・ランタイムは <else> アクションをスキップしてマクロ処理を続行します。
  • 条件が false の場合、マクロ・ランタイムは <if> エレメント内のアクションをスキップオーバーし、<else> エレメント内のアクションを実行し始めます。これには、ホスト画面に「You typed FALSE」というメッセージを表示する入力アクションが 1 つ含まれています。<else> アクションにあるアクションをすべて実行した後、マクロ・ランタイムはマクロ処理を続行します。
図 1. 条件アクションを示す サンプル・コード
<actions>
   <prompt name="'Type true or false'" description="" row="0" col="0"
               len="80" default="" clearfield="false" encrypted="false"
               movecursor="true" xlatehostkeys="true" assigntovar="$strData$"
               varupdateonly="true" />
   <if condition="$strData$" >
       <input value="'You typed TRUE'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false"/>
   </if>
   <else>
       <input value="'You typed FALSE'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false"/>
   </else>
</actions>

詳しくは、<if> エレメントを参照してください。