次に、すべてのアクションのリストを機能別にグループ分けして示します。
マクロ・ランタイムによるマクロ画面の処理方法で説明したとおり、 マクロ・ランタイムが新しい現行マクロ画面を選択した場合、 マクロ・ランタイムは、そのマクロ画面の <actions> エレメントにある アクションの実行を即時に開始します。
すべてのアクションを実行した後、マクロ・ランタイムは、 次に処理するマクロ画面を判別する次のステップにすぐ進みます。
単一のマクロ画面内では、マクロ・ランタイムは <actions> エレメント内での 出現順にアクションを実行します。 この順序は、「アクション (Action)」リスト・ボックスで設定したアクションの順序と 同じです。
マクロ画面のアクションの作成は必須ではありません。 <actions> エレメントが含まれていない場合、または <actions> エレメントが空である場合、 マクロ・ランタイムはマクロ画面処理の次のセクション (次に処理する マクロ画面の選択) に直行します。
一般に、アクションのパラメーターを指定する際には、 特定の標準データ・タイプの即時値を受け入れるコンテキストはすべて、 同じデータ型のエンティティーをどれでも受け入れることに 注意してください。 例えば、ある入力フィールドがストリング値を受け入れる場合、 そのフィールドは、ストリングに評価される式、ストリングに変換される値、 ストリング変数、またはストリングを戻すインポート済みメソッドの呼び出しも 受け入れます (等価を参照)。
ただし、変数を使用できないフィールドがいくつかあります (変数が保持する値の使用を参照)。
マクロ・エディターの「画面 (Screens)」タブにある「アクション (Actions)」タブを使用して、 アクションを作成および編集できます。 「アクション (Actions)」タブでアクションを作成すると、マクロ・エディターは、 現在選択されているアクションの <actions> エレメントに新規アクションを 挿入します。図 27 に、「アクション (Actions)」タブの 例を示します。

上の図では、マクロ・エディターの「画面 (Screens)」タブが選択されています。 現在選択されている画面の名前 (Screen1) が、「画面 (Screens)」タブの 「画面名 (Screen Name)」フィールドに表示されています。 「画面名 (Screen Name)」フィールドの下には、「一般 (General)」、「記述 (Description)」、 および「アクション (Actions)」のサブタブがあります。 「アクション (Actions)」タブが選択されています。
上の図の「アクション (Actions)」タブに注目すると、「記述 (Description)」タブと同様、 上部領域と下部領域があることが分かります。
上部領域には、単一のアクション・エレメントを全体と見なして作用する コントロールがあります。 具体的には、「アクション (Actions)」タブの左上隅にある「アクション (Action)」リスト・ボックスに、 現在選択されているアクションの名前が表示されます。 上の図では、まだアクションが作成されていないので、現在選択されている アクションはありません。
「アクション (Actions)」タブの下部領域には、現在選択されているアクション (あれば) の 内容が表示されます。 現在選択されているディスクリプターが入力アクションの場合、 「アクション (Actions)」タブの下部領域にはそのタイプのアクションに該当する 内容が表示されます。 抽出アクションなど、別のタイプのアクションをユーザーが作成または選択した場合、 下部領域には抽出アクションに該当する内容が表示されます。
図 27 の「アクション (Actions)」リスト・ボックスに もう一度注目すると、このリスト・ボックスにはまだアクションが入っていない ことが分かります。不等号括弧で囲まれ、「新規 (new)」という語で始まる 選択項目は、すべて新規アクションの作成用です。 図 27でも分かるように、 「アクション (Actions)」リスト・ボックスの表示可能部分は、 リスト全体を一度に表示するには高さが不足しています。 リストの全体は次のとおりです。
<新規の入力アクション> (<new input action>)
<新規の抽出アクション> (<new extract action>)
<新規のプロンプト・アクション> (<new prompt action>)
<新規のメッセージ・アクション> (<new message action>)
<新規の休止アクション> (<new pause action>)
<新規の転送アクション> (<new xfer action>)
<新規の通信待機アクション> (<new comm wait action>)
<新規のトレース・アクション> (<new trace action>)
<新規のマウス・クリック・アクション> (<new mouse click action>)
<新規のボックス選択アクション> (<new box select action>)
<新規のプログラム実行> (<new run program>)
<新規の変数更新アクション> (<new variable update action>)
<新規のマクロ再生アクション> (<new play macro action>)
<新規の実行アクション> (<new perform action>)
<新規の条件アクション> (<new conditional action>)
<新規の印刷開始アクション> (<new print start action>)
<新規の印刷抽出アクション> (<new print extract action>)
<新規の印刷終了アクション> (<new print end action>)
<new sql query action>
<new file upload action>例えば、「<新規の入力アクション> (<new input action>)」をクリックすると、マクロ・オブジェクト は新規の入力アクションを作成し、リストの一番上に配置します。 「アクション (Actions)」タブの下部領域では、入力アクションに属する各種フィールド (入力 キー・シーケンスなど) に入力できます。 「アクション (Actions)」リスト・ボックスの選択領域に新規の入力項目が 表示され、リスト・ボックスのリスト部分は次のようになります。
Input action1(0,0)
<新規の入力アクション> (<new input action>)
<新規の抽出アクション> (<new extract action>)
<新規のプロンプト・アクション> (<new prompt action>)
<新規のメッセージ・アクション> (<new message action>)
<新規の休止アクション> (<new pause action>)
<新規の転送アクション> (<new xfer action>)
<新規の通信待機アクション> (<new comm wait action>)
<新規のトレース・アクション> (<new trace action>)
<新規のマウス・クリック・アクション> (<new mouse click action>)
<新規のボックス選択アクション> (<new box select action>)
<新規のプログラム実行> (<new run program>)
<新規の変数更新アクション> (<new variable update action>)
<新規のマクロ再生アクション> (<new play macro action>)
<新規の実行アクション> (<new perform action>)
<新規の条件アクション> (<new conditional action>)
<新規の印刷開始アクション> (<new print start action>)
<新規の印刷抽出アクション> (<new print extract action>)
<新規の印刷終了アクション> (<new print end action>)
<new sql query action>
<new file upload action>マクロ・ランタイムがこのマクロ画面を処理する際には、 「アクション (Actions)」リスト・ボックスのリスト順と同じ順序で アクションが実行されます。 実際のアクションの順序を変更するには、「アクション (Actions)」リスト・ボックスの 右側にある「順序変更 (Change Order)」ボタンをクリックします。
ボックス選択アクションは、セッション・ウィンドウにマーキング長方形を描画 します。このアクションは、実際のユーザーがセッション・ウィンドウをクリックし、 マウス・ボタン 1 を押したまま、マウスをドラッグしてマーキング長方形を作成する アクションをシミュレートします。
「アクション (Actions)」タブの下部領域で、作成または編集するマーキング長方形 の四隅の位置を行と列によって指定します。 また、ボックス選択アクションが「アクション (Actions)」リスト・ボックスで現在選択 されているアクションならば、セッション・ウィンドウの上でマウスを クリックしてドラッグし、目的のマーキング長方形を作成できます。 セッション・ウィンドウ上でマーキング長方形を完成させると、マクロ・エディターは、マーキング長方形の隅の行と列の値を ボックス選択アクションの「行 (Row)」と「列 (Column)」の入力フィールドに書き込みます。
「行 (下隅) (Row (Bottom Corner))」入力フィールドと「列 (下隅) (Column (Bottom Corner))」 入力フィールドに負の数値 (-1 など) を入力すると、 セッション・ウィンドウの最後の行と最後の行からの相対オフセットを 指定できます。例えば、セッション・ウィンドウが 24 x 80 で、 隅を (1, 1) と (-4, -10) に指定した場合、座標 (1, 1) と (21, 71) の マーキング長方形がマクロ・ランタイムによって描画されます (行または列の負の値の意味を参照)。
マーキング長方形を描画してから、セッション・ウィンドウ内で マーキング長方形の境界の外側をクリックすると、セッション・ウィンドウ からマーキング長方形が消去されます。 ただし、マクロ・ランタイムがマクロを実行しているときに、 マウス・クリック・アクションは既存のマーキング長方形を消去しません。
マクロ内でマーキング長方形を消去するには、次の 2 つの方法を選択できます。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
コピーと貼り付けの例を参照してください。
通信待機アクションは、セッションの通信状況がアクションに指定した 状態に変わるまで待ちます。例えば、セッションが完全に接続状態になるまで 待つ通信待機アクションを作成できます。
マクロ・ランタイムが通信待機アクションの実行を開始すると、 ランタイムは通信待機アクションに指定された通信状況を注視し、 セッションの実際の通信状況と比較します。2 つの状況が一致した場合、 マクロ・ランタイムは通信待機アクションが完了したと判断し、 マクロ・ランタイムは次のアクションの実行に進みます。
ただし、2 つの状況が一致しない場合、マクロ・ランタイムは他の処理を 行わず、通信待機アクションに指定された通信状況がセッション内で実際に 発生するまで単に待ちます。
タイムアウト値の有効期間が切れるとマクロ・ランタイムが通信待機アクション を終了するように、通信待機アクションにミリ秒単位のタイムアウト値を指定できます。 つまり、マクロ・ランタイムが待っている通信状況にならなくても、 タイムアウト値の有効期限が切れるとマクロ・ランタイムは アクションを終了します。
通信待機アクションの後、抽出アクションなど他のアクションを 使用してアプリケーション画面の特性を検査し、 セッションが実際に目的の通信状況になったのか、それとも通信待機アクション がタイムアウトのために終了したのかを判別する必要が生じることがあります。
通常、セッションの接続または切断時には、通信状況はいくつかの状態を素早く 通過してから (例えば、保留アクティブ、アクティブ、レディーの順に)、 安定した状態を一定期間保つ特定の状態 (ワークステーション ID レディーなど) に 達します。 ほとんどの場合、その永続的な終了状態を通信待機アクションに指定する必要 があります。 永続状態のリストについては、次のセクションを参照してください。
(代わりに保留アクティブなどの過渡的な状態を指定した場合、 マクロ・ランタイムが通信待機アクションを実行する機会を得る前に、 セッションがその状態を通過して次の状態に進む可能性があります。 このため、マクロ・ランタイムが通信待機アクションを実行すると、 すでに発生した状態をいつまでも待つことになります。)
「通信状況 (Connection Status)」リスト・ボックスにリストした 状況のいずれかを指定できます。表 15 に、それぞれの状態の名前と意味をリスト します。
| 通信状態: | 意味: |
|---|---|
| 通信開始 (Connection Initiated) | 初期状態。通信の開始が実行された。 |
| 接続保留アクティブ (Connection Pending Active) | ソケット接続の要求。 |
| 接続アクティブ (Connection Active) | ソケット接続済み。ホストとの接続。 |
| 接続レディー (Connection Ready) | Telnet 折衝が開始された。 |
| 接続装置名レディー (Connection Device Name Ready) | 装置名が折衝された。 |
| 接続ワークステーション ID レディー (Connection Workstation ID Ready) | ワークステーション ID が折衝された。 |
| 接続保留非アクティブ (Connection Pending Inactive) | 通信の停止が実行された。 |
| 接続非アクティブ (Connection Inactive) | ソケットがクローズされた。ホストとの接続なし。 |
安定状態 (つまり、通常は数秒間よりも長く持続する状態) には次のものがあります。
「接続状況 (Connection Status)」リスト・ボックスで 「<式> (<Expression>)」を選択した場合は、 <commwait> エレメントの value 属性に指定されている ことをマクロ・ランタイムが予期する、いずれかのキーワードに解決される式を 指定する必要があります (<commwait> エレメントを参照)。 例えば、CONNECTION_READY に解決される変数 $strCommState$ を指定できます。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
<commwait value="CONNECTION_READY" timeout="10000" />条件アクションには次の項目があります。
条件アクションには、if 文または if-else 文の機能があります。
「条件 (Condition)」フィールドに、マクロ・ランタイムが評価する 条件式を入力する必要があります。 条件式には論理演算子と条件演算子を指定でき、 また演算式、即時値、変数、および Java メソッドの呼び出しを含む 項を指定できます (条件演算子と論理演算子および式を参照)。
条件が真として評価された場合に実行するアクションを指定するには、 「条件が真 (Condition is True)」タブを使用します。
「条件が真 (Condition is True)」タブには、「アクション (Actions)」タブ のコントロールとほとんど同一のコントロールがあります。 具体的には、次のとおりです。
「条件が真 (Condition is True)」タブにあるこれらのコントロールを使用して、 条件が真の場合にマクロ・ランタイムが実行するアクションを作成および編集します。
例えば、「条件 (Condition)」フィールドを $boolResult$ のような 変数の名前に設定できます。この変数には、前の操作が結果を保管しています。 $boolResult$ の値が真ならば、状況メッセージをユーザーに表示する メッセージ・アクションを実行したいとします。 この場合は、「条件が真 (Condition is True)」タブでメッセージ・アクションを 作成し、表示したい状況メッセージを指定できます。
マクロの再生時に、マクロは条件 $boolResult$ を評価します。 値が真ならば、マクロ・ランタイムは「条件が真 (Condition is True)」 タブで定義したメッセージ・アクションを実行します。 値が偽ならば、マクロ・ランタイムはメッセージ・アクションをスキップし、 また「条件が真 (Condition is True)」タブで定義した他のすべての メッセージ・アクション (あれば) をスキップします。
条件が偽として評価された場合に実行するアクションを指定するには、 「条件が偽 (Condition is False)」タブを使用します。
「条件が真 (Condition is True)」タブと同様、「条件が偽 (Condition is False)」タブには、「アクション (Actions)」タブ のコントロールとほとんど同一のコントロールがあります。 「条件が偽 (Condition is False)」タブにあるこれらのコントロールを使用して、 条件が偽の場合にマクロ・ランタイムが実行するアクションを作成および編集します。
マクロ・エディターの「条件が真 (Condition is True)」タブまたは 「条件が偽 (Condition is False)」タブ内では、条件アクションを作成 できません。 このため、別の if 文の中にネストされた if 文や、else 文の中に ネストされた if 文に相当するものは使用できません。 コード・エディターにも同じ規則があります。
次のコード・フラグメントは、ユーザーに入力を促します。 入力ストリングがストリング true ならば、 コード・フラグメントはメッセージ・ウィンドウに メッセージ "You typed TRUE" を表示します。 入力ストリングが他のストリングならば、 コード・フラグメントはメッセージ・ウィンドウに メッセージ "You typed FALSE" を表示します。 この例では、プロンプト・アクション、条件アクション、およびメッセージ・アクション を使用します。
このコード・フラグメントを本書からシステム・クリップボードにコピーし、 システム・クリップボードからコード・エディターにコピーできます。 このコードはフラグメントなので、マクロ画面内で既存のマクロ・スクリプト の中にコードをコピーする必要があります。 また、$strData$ という名前のストリング変数を作成する必要があります。 変数を作成するには、<HAScript> 開始タグの後、最初の <screen> エレメント の前に次の行を追加します。
<vars>
<create name="$strData$" type="string" value="" />
</vars>スクリプトをマクロ・エディターに保管した後、マクロ・エディターまたはコード・エディターを使用してスクリプトを編集できます。
この例については、次の点に注意してください。
<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$" >
<message title="" value="’You typed TRUE’" />
</if>
<else>
<message title="" value="’You typed FALSE’" />
</else>
</actions>抽出アクションは、セッション・ウィンドウからテキストを抽出し、 変数にテキストを格納します。このアクションは非常に有用で、 アプリケーション・データを読み取るためにマクロ・オブジェクトが 提供している基本方式です (ツールキットのプログラミング API を 使用する場合を除けば)。
IBM Host Access Toolkit 製品を使用している場合は、 抽出アクションを使用して、使用可能なデータ・プレーンのいずれか からデータを読み取ることができます。詳しくは、 Toolkit を使用したデータ・プレーンからのデータのキャプチャーを参照してください。
抽出アクションの最も一般的な用途は、セッション・ウィンドウに 表示されているテキストのキャプチャーです。 この操作のために IBM Host Access Toolkit は必要ありません。
次に、行う手順の概要を示します。その後のサブセクションで、各ステップ について詳しく説明します。
テキストの長方形ブロックをキャプチャーする場合は、 「連続抽出 (Continuous Extract)」オプションを false に 設定します (これがデフォルト値です)。詳しくは、セッション・ウィンドウの長方形領域のキャプチャーを参照してください。
これに対し、行から行に折り返すテキストの連続シーケンスをキャプチャーする 場合は、「連続抽出 (Continuous Extract)」オプションを true に設定します。 詳しくは、セッション・ウィンドウからのテキスト・シーケンスのキャプチャーを参照してください。
キャプチャーするセッション・ウィンドウの領域を指定するには、 マーキング長方形を使用して行と列の座標を取り込むことができます。また別の方法として、 「抽出アクション (Extract action)」ウィンドウの「行 (Row)」フィールドと 「列 (Column)」フィールドに、テキスト域の行と列の座標を入力することもできます。
どちらの方式を使用する場合も、マクロ・ランタイムは、 「連続抽出 (Continuous Extract)」オプションが false または true の いずれに設定されているかによって、値を異なった方法で解釈します (「連続抽出 (Continuous Extract)」オプションを設定するを参照)。
マーキング長方形を使用する場合 (マーキング長方形の使用を参照)、 マクロ・ランタイムは、マーキング長方形の左上隅の行と列の座標を 1 組目の行と列の値 (「抽出アクション (Extract action)」ウィンドウ の「上隅 (Top Corner)」) に書き込み、 右下隅の行と列の座標を 2 組目の行と列の値 (「下隅 (Bottom Corner)」) に 書き込みます。
行と列の値をユーザー自身が入力する場合は、1 組目の行と列の座標を 1 組目の 行と列の値 (「抽出アクション (Extract action)」ウィンドウ の「上隅 (Top Corner)」) に入力し、2 組目の座標のセットを 2 組目の 行と列の値 (「下隅 (Bottom Corner)」) に入力します。 必要な座標を判別するための補助として、セッション・ウィンドウ でテキスト・カーソルを使用できます (セッション・ウィンドウのテキスト・カーソルの使用を参照)。
「行 (下隅) (Row (Bottom Corner))」入力フィールドに -1 を 入力すると、セッション・ウィンドウのデータ域の最終行を示すことができます。 この機能は、ユーザーが高さの異なる (25、43、50 など) セッション・ウィンドウを使用していて、 最終行までデータをキャプチャーしたい場合に便利です。 同様に、「列 (下隅) (Column (Bottom Corner))」入力フィールド に -1 を入力すると、セッション・ウィンドウのデータの最終列 を示すことができます (行または列の負の値の意味を参照)。
'Extract1' などの抽出名を指定できます。 ただし、IBM Host Access Toolkit 製品を使用していないかぎり、いかなる目的でもこの名前を使用することはできません。
「データ・プレーン (Data Plane)」リスト・ボックスの「TEXT_PLANE」 をクリックします。これはデフォルトです。
チェック・ボックス「テキスト・プレーンを変数に割り当てる (Assign Text Plane to a Variable)」 を設定し、テキストを格納する変数の名前を入力します。 IBM Host Access Toolkit 製品を使用していない場合は、 この方式を使用してキャプチャーしたテキストを格納する必要があります。
テキストはストリングとして戻されます。ほとんどの場合、 マクロ内の他のアクションがストリングを処理できるように、 ストリングはストリング変数に格納する必要があります。
ただし、他の標準データ型 (boolean、integer、double) を指定した場合、 マクロ・ランタイムは (可能であれば) ストリングを変数のフォーマットに変換します。 例えば、画面のテキストが 1024 で、変数が整変数の場合、 マクロ・ランタイムはストリング 1024 を整数の 1024 に変換し、 整変数に値を格納します。 フォーマットが無効でストリングを変数のデータ型に変換できない場合、 マクロ・ランタイムはランタイム・エラーを出してマクロを終了します。 データ変換について詳しくは、自動データ型変換を参照してください。
TEXT_PLANE からキャプチャーしたテキストには、ヌル (0x00) などの 表示不可文字は含まれていません。ブランク・スペース文字が入って 表示されている表示画面の文字セルは、ブランク・スペース文字として キャプチャーされます。
「連続抽出 (Continuous Extract)」オプションが false の 場合 (これがデフォルト値です)、マクロ・ランタイムは、2 組の列と行の値 をテキストの長方形ブロックの左上隅と右下隅 (隅を範囲に含む) と して扱います。 長方形ブロックは、最小で 1 文字、最大でアプリケーション・ウィンドウ全体 にすることができます。
マクロ・ランタイムは、次の処理を行います。
一例として、セッション・ウィンドウの行 16、17、18 の先頭 40 文字 が次のとおりであるとします。
.8..Outlist.....Display, delete, or prin
.9..Commands....Create/change an applica
.10.Reserved....This option reserved forさらに、マクロ・ランタイム が次の設定値を指定して抽出アクションを実行するとします。
「連続抽出 (Continuous Extract)」オプションが false なので、 マクロ・ランタイムは行と列の組をテキストのマーキング長方形ブロック として扱い、左上隅は行 16、列 5、右下隅は行 18、列 12 とします。
マクロ・ランタイムは、結果ストリングを空ストリングに初期化します。 その後、マクロ・ランタイムはテキストの長方形ブロックを 一度に 1 行ずつ読み取り ('Outlist.'、'Commands'、'Reserved')、 それぞれの行を結果ストリングに連結します。 最後に、マクロ・ランタイムは結果ストリング全体を結果変数 $strTmp$ に 格納します。これにより、変数 $strTmp$ には次のストリングが格納されます。
'Outlist.CommandsReserved'
「連続抽出 (Continuous Extract)」オプションが true の場合、 マクロ・ランタイムは、2 組の行と列の値を、テキストの連続シーケンスの 開始位置と終了位置 (これらの位置を範囲に含む) として扱います。 テキストは、開始位置から終了位置に至るまでに必要ならば行間で折り返します。 テキストのシーケンスは、最小で 1 文字、最大でアプリケーション・ウィンドウ全体 にすることができます。
マクロ・ランタイムは、次の処理を行います。
例えば、セッション・ウィンドウの行 21 と 22 に次のテキストが あるとします (各行は 80 文字)。
........Enter / on the data set list command field for the command prompt pop-up
or ISPF line command............................................................さらに、マクロ・ランタイム が次の設定値を指定して抽出アクションを実行するとします。
「連続抽出 (Continuous Extract)」オプションが true なので、 マクロ・ランタイムは行と列の組をテキスト・シーケンスの 開始と終了のマーキングとして扱い、開始位置は (21, 9)、 終了位置は (22, 20) とします。
マクロ・ランタイムは、結果ストリングを空ストリングに初期化します。 その後マクロ・ランタイムは、テキスト・シーケンスを 最初から最後まで読み取り、行 21 の最後の文字から行 22 の 最初の文字に折り返します。 最後に、マクロ・ランタイムは結果ストリング全体を結果変数 $strTmp$ に 格納します。変数 $strTmp$ には、次に示す 92 文字のストリングが格納 されます (次に示すテキストは、本書のページに収めるために行末ハイフン 付けが行われていますが、実際にはハイフンなしの 1 つのストリングを 表します)。
'Enter / on the data set list command field for the com-
mand prompt pop-up or ISPF line command'
これに対し、この例で「連続抽出 (Continuous Extract)」オプションを false に 設定した場合、$strTmp$ には 24 文字のストリング 'Enter / on tline command' が格納されます。
このオプションは、元は IBM Host Access Toolkit 製品と組み合わせて、 「連続抽出 (Continuous Extract)」オプションが false に設定されている 場合にのみ使用するものです。 ただし、ツールキットがなくてもこのオプションを使用でき、 「連続抽出 (Continuous Extract)」オプションが false または true の どちらに設定されていても使用できます。
「テキストのアンラップ (Unwrap Text)」を true に設定すると、 マクロ・ランタイムは、「抽出 (Extract)」ウィンドウの行と列の組だけでなく セッション・ウィンドウのフィールド境界も使用して、収集するデータを 判別します。マクロ・ランタイムは、ストリングの配列 (ツールキットを 使用している場合)、または単一の連結ストリング (ツールキットを使用しない 場合) を戻します。
「テキストのアンラップ (Unwrap Text)」オプションを、 ストリング・ディスクリプターの「折り返し (Wrap)」オプション と混同しないでください。こちらのオプションは、フィールドでなく テキストの長方形ブロックを基にしています (マクロ・ランタイムが長方形域を検索する方法 (折り返しオプション)を参照)。
「連続抽出 (Continuous Extract)」が false の場合、 行と列の組はテキストの長方形ブロックの隅を表します。 「テキストのアンラップ (Unwrap Text)」を true に設定すると、 マクロ・ランタイムはテキストの長方形ブロックの各行を読み取り、 行内の各フィールドを次のように処理します。
「テキストのアンラップ (Unwrap Text)」オプションの目的は、フィールドが行と行の間で折り返している場合でも、フィールドの内容全体を 1 つのストリングとしてキャプチャーすることです。
例えば、セッション・ウィンドウの幅が 80 文字で、セッション・ウィンドウの行 9、10、11、および 12 が次のとおりであるとします。
...............................................Compress or print data set.......
..............................................................Reset statistics..
..............................................................Catalog or display
information of an entire data set...............................................さらに、上記の行の中で次のテキスト域がフィールドであるとします。
Compress or print data set
Reset statistics
Catalog or display information of an entire data set最後に、次のように仮定します。
IBM Host Access toolkit を使用している場合、マクロ・ランタイム は toolkit メソッドの戻り値として、ストリングの配列 'Reset statistics'、'Catalog or display information of an entire data set' を戻します。 マクロ・ランタイムは、次の処理を行います。
toolkit を使用していない場合、マクロ・ランタイムは 個々のストリングを連結し、単一のストリングとして 「抽出 (Extract)」ウィンドウで指定した変数に格納します。 この例では、マクロ・ランタイムはストリング 'Reset statisticsCatalog or display information of an entire data set' を 変数に格納します。
「連続抽出 (Continuous Extract)」が true の場合、2 組の行と列は、 行間で折り返す (必要な場合) 連続したテキスト・シーケンスの開始位置と終了位置 を表します。このときに「テキストのアンラップ (Unwrap Text)」を true に設定すると、 マクロ・ランタイムは連続したテキスト・シーケンスを次のように処理します。
IBM Host Access Toolkit 製品の Java API を使用して、TEXT_PLANE など 任意のデータ・プレーンからのデータにアクセスできます。
データ・プレーンと各プレーンに関連したデータのタイプは、次のとおりです。
Toolkit を使用して抽出したデータにアクセスするには、 MacroRuntimeListener クラスをインプリメントし、マクロ Bean に ユーザー自身を登録する必要があります。 抽出アクションが実行されるたびに、マクロ Bean は ユーザーの macroExtractEvent() メソッドを呼び出して、 データをユーザーに発信します。 データにアクセスするには、MacroExtractEvent の get メソッドを使用します。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
FileUpload アクションは、ホスト・データベース内のテーブルの作成、テーブルへのデータの追加、テーブルの置換、 テーブルの更新を行える強力で有用なアクションです。これは、 ホスト・データベースに SQL ステートメントを送信する SQLQuery アクションと対になるアクションです (SQLQuery アクション (<sqlquery> エレメント)を参照)。
FileUpload アクションは、マクロをサポートする任意のタイプの Host On-Demand セッションで使用できます (3270 ディスプレイ、5250 ディスプレイ、VT ディスプレイ、または CICS ゲートウェイ)。
接続先のデータベース・サーバーは、エミュレーター・セッションを実行しているホストとは別のホストにあってもかまいません。
「データベース URL (Database URL)」フィールドに、 データベースへのアクセスを提供するデータベース・サーバーの URL を入力します。データベース URL の形式は、 データベースへのアクセスに使用する Java Database Connectivity (JDBC) ドライバーのタイプによって異なります (JDBC ドライバーについて詳しくは、ドライバー ID とドライバー・クラスを参照)。表 16 は、Host On-Demand に組み込まれている JDBC ドライバーのデータベース URL を示しています。
| Host On-Demand で提供されるドライバー: | データベース URL の形式: | 例えば、次のとおりです。 |
|---|---|---|
| AS/400 Toolbox for Java | jdbc:as400://[host] |
|
実際のデータベース URL (jdbc:as400://myISeries など) では、 上記の形式例に示されている大括弧は使用しない でください。
リモート・サーバーは、Host On-Demand エミュレーター・セッションの接続先のホストとは別のホストに 配置することができます。例えば、FileUpload アクションは iSeries ホストを指定できます。 これは、同じ FileUpload アクションが、zSeries ホストに接続されている 3270 ディスプレイ・セッションで実行中のマクロの一部であっても同様です。
Host On-Demand で提供されるドライバー以外の JDBC ドライバーを使用する場合、 データベース URL の正しい形式については、ドライバー・ベンダーの提供する資料を調べてください。
FileUpload アクションがデータベースにアクセスするために使用する JDBC ドライバーは、Java クライアント・パッケージです。 これは、リモート・ホスト上のサーバー・プログラムと通信する Host On-Demand クライアント・ワークステーション上にあります。リモート・ホスト上のこのサーバー・プログラムを使用すると、 データベースへのアクセスを行うことができます。
Host On-Demand クライアントには、AS/400 Toolbox for Java の JDBC ドライバーが すでに組み込まれています。このドライバーは、エミュレーター・クライアントの一部として 自動的にダウンロードされます。このドライバーにより、クライアントは、 正しく構成された iSeries または AS/400 上の、DB2/400 データにアクセスできます。
別の JDBC ドライバーが必要な場合は、 リモート・データベース・サーバーの管理者と連絡を取ってドライバーを取得してください。ドライバーを Host On-Demand クライアント・ワークステーションにデプロイするには、いくつかのアクションを実行する必要があります。
マクロ・エディターの「FileUpload アクション (FileUpload action)」ウィンドウの 「ドライバー ID (Driver Identifier)」リスト・ボックスで Host On-Demand で提供されるドライバーを選択するか、 別のドライバーを使用する場合は「その他 (Other)」を選択します。
「ドライバー・クラス (Driver Class)」フィールドには、 ドライバーの完全修飾 Java クラス名が入ります。Host On-Demand で提供されるドライバーを選択する場合、マクロ・エディターは 「ドライバー・クラス (Driver Class)」フィールドにクラス名 (com.ibm.as400.access.AS400JDBCDRIVER) を表示します。 このクラス名を変更することはできません。一方、「ドライバー ID (Driver Identifier)」リスト・ボックスで「その他 (Other)」を選択する場合は、 「ドライバー・クラス (Driver Class)」フィールドにドライバーの完全修飾クラス名を入力する必要があります。完全修飾クラス名が分からない場合は、 ドライバーのプロバイダーにお問い合わせください。名前を入力する場合は、大/小文字に注意してください (例えば、com と COM は異なります)。
「ドライバー ID (Driver Identifier)」リスト・ボックスの選択可能なドライバーのリストにドライバーを追加する場合 (毎回「その他 (Other)」を選択してクラス名を入力しないようにする場合) は、 ドライバーを Host On-Demand に登録できます (オンライン・ヘルプの『JDBC ドライバーの登録 (Registering a JDBC driver)』を参照)。
データベース接続でユーザー ID とパスワードが必要な場合は、 「ユーザー ID (User ID)」フィールドにユーザー ID、「パスワード (Password)」フィールドにパスワードを入力します。
Host On-Demand は、「パスワード (Password)」フィールドに入力するキー・シーケンスを暗号化します。この暗号化は、 入力アクションで「パスワード (Password)」チェック・ボックスを選択する場合に使用される暗号化とまったく同じ方法で機能します (パスワードを参照)。 要確認:
ファイルのアップロードに必要な接続情報 (前述のデータベース URL、ドライバー ID、ドライバー・クラス、ユーザー ID、およびパスワード) に加えて、 特定のファイル・アップロード操作についての情報も提供する必要があります。この情報には、次のものが含まれます。
また、2 つのタイプのファイル・アップロードには追加情報 (作成操作の場合はフィールド記述テーブル、更新操作の場合はキー欄) を指定する必要があります。表 17 に、この情報の要約を示します。
| ファイル・アップロードのタイプ: | ホスト・テーブルの名前: | ソース・ファイルの名前: | その他の情報: |
|---|---|---|---|
| 作成 | 必要 | 必要 | フィールド記述テーブル |
| 置換 | 必要 | 必要 | (なし) |
| 付加 | 必要 | 必要 | (なし) |
| 更新 | 必要 | 必要 | キー欄 |
「ファイル名」フィールドに、 ホスト・データベース内のテーブルに追加するデータが含まれているローカル・ファイルのパスを入力します。 (ファイル・パスはストリングであるため、 適切なマクロ形式 (基本または拡張) でストリングを入力してください)。または、「ブラウズ (Browse)」をクリックしてファイルを参照します。 注: このフィールドには、ドライブ名 (ある場合) を含めた完全なファイル・パスおよびファイル名を指定する必要があります (例えば、c:¥Documents and Settings¥User1¥input.txt)。
「ファイル・タイプ」リスト・ボックスで、ファイルのタイプをクリックします。このリスト・ボックスには、Database On-Demand クライアントで サポートされるのと同じデータベース・ファイル・タイプがリストされます。
「テーブル名 (Table Name)」フィールドに、 更新するホスト・データベース内のテーブルの名前 (hodtest など) を入力します。ホスト・データベースにスキーマがある場合は、 テーブル名に加えてスキーマ名も含めてください (hod.hodtest)。
新規テーブルを作成するには、「アップロードのタイプ (Upload Type)」リスト・ボックスを展開して「作成 (create)」をクリックします。
「フィールド記述テーブル (Field Description Table)」フィールドに、 データベース・サーバーが新規テーブルの列 (フィールド) 名および列幅を読み取るホスト・データベースのスキーマおよびテーブルの名前 (hod.hodmodel など) を入力します。このテーブルには、 作成するテーブルと同じ数の列が含まれている必要があります。また、 このテーブルの列名および列幅は、新規テーブルで使用するものと同じでなければなりません。
同様に、「ファイル名」フィールドに指定するファイルの列数および列幅は、 作成するテーブルと同じでなければなりません。
マクロ・ランタイムが作成操作を実行すると、 データベース・サーバーは、指定したファイルのデータと指定したフィールド記述テーブルの列名および列幅を使用して、新規テーブルを作成します。
既存のテーブルの内容を置換するには、「アップロードのタイプ (Upload Type)」リスト・ボックスを展開して「置換 (replace)」をクリックします。
「ファイル名」フィールドに指定するファイルの列数および列幅は、内容を置換するテーブルと同じである必要があります。
マクロ・ランタイムが置換操作を実行すると、 データベース・サーバーは、指定したファイルのデータと既存のテーブルにすでに定義されている列名および列幅を使用して、 指定したテーブルの内容を置換します。例えば、テーブル hodtest には、 置換操作前に 8 列と 300 行のデータが含まれていますが、置換操作後は 8 列と 250 行 (すべて新規データ) のデータだけを含むことができます。
既存のテーブルの最後に行を付加するには、「アップロードのタイプ (Upload Type)」リスト・ボックスを展開して「付加 (append)」をクリックします。
「ファイル名」フィールドに指定するファイルの列数および列幅は、付加の対象となるテーブルと同じである必要があります。
マクロ・ランタイムが付加操作を実行すると、 データベース・サーバーはデータの行を指定したファイルから指定したテーブルの最後に付加します。例えば、 テーブル hodtest には、付加操作前に 8 列と 300 行のデータが含まれていますが、 付加操作後は 8 列と 320 行のデータ (元の 300 行に 20 行が付加) が含まれます。
既存のテーブルの一部を選択的に更新するには、「アップロードのタイプ (Upload Type)」リスト・ボックスを展開して「更新 (update)」をクリックします。
「キー欄 (Key Columns)」フィールドに、更新する列の名前を入力します。
「ファイル名」フィールドに指定するファイルのデータ列数は、 「キー欄 (Key Columns)」フィールドに指定する名前の数と同じである必要があります。例えば、 「キー欄 (Key Columns)」フィールドに 3 つの列名を入力する場合は、テーブルには 3 つのデータ列が含まれている必要があります。
マクロ・ランタイムが更新操作を実行すると、 データベース・サーバーは指定したデータ列を指定したファイルのデータで置換します。 例えば、テーブル hodtest に 8 行と 250 列が含まれている場合は、 テーブルの最初の列、2 番目の列、および 7 番目の列を更新できます。
デプロイメント・ウィザードで、データベースにアクセスするために Host On-Demand クライアントがプリロードする マクロ・コンポーネントを指定できます。オンライン・ヘルプの『プリロード・オプション (Features1) (Preload Options (Features1))』 を参照してください。
入力アクションは、キー・ストロークのシーケンスをセッション・ウィンドウに 送ります。 シーケンスには、文字を表示するキー (a、b、c、#、& など) だけでなく、 アクション・キー ([enterreset]、[copy]、[paste] など) も含めることができます。
このアクションは、実際のユーザーからのキーボード入力をシミュレートします。
「行 (Row)」フィールドと「列 (Column)」フィールドを使用して、 入力シーケンスを開始するセッション・ウィンドウ内の行と列の位置を指定します。 例えば、入力アクションに行 23、列 17 を指定し、 入力アクションのストリング値として Hello world を 指定した場合、(指定した位置が入力フィールド内にあると仮定して) マクロ・ ランタイムは、キー・シーケンス Hello world をセッション・ウィンドウに行 23、列 17 から入力します。
行または列の位置を 0 に指定した場合、入力アクションが実行されると、 マクロ・ランタイムはセッション・ウィンドウのテキスト・カーソルが ある実際の行と列の位置からキー・シーケンスを入力します。 テキスト・カーソルの位置が関係ないコンテキストの場合 (例えば、[copy] アクション・キー)、 またはテキスト・カーソルの位置が予測可能な場合 (例えば、直前のマウス・クリック・ アクションによってテキスト・カーソルが特定の位置に移動した場合や、 アプリケーションがアプリケーション画面を表示するときにテキスト・カーソル の位置を指定した場合) を除いては、行または列に 0 を指定しないでください。
マクロの再生中に、セッション・ウィンドウは実際のユーザーが キーを入力した場合と同様にキー入力エラーに対応します。
例えば、入力アクションが文字を表示するキー (a、b、c、#、& など) を 送った場合に、テキスト・カーソルが 3270 または 5250 入力フィールドの中に なければ、セッションはキー入力を禁止し、オペレーター情報域に エラー・シンボルを表示します。この対応は、実際のユーザーが 入力したキー・ストロークに対するものとまったく同じです。
「ストリング (String)」フィールドは、アクションに実行させるキー・シーケンスを 指定するための入力フィールドです。
文字を表示するキー (a、b、c、#、& など) を指定するには、 そのキー自体を入力します。
キーを「アクション・キー (Actions Keys)」リスト・ボックスから 指定するには、目的のキー ([backspace] など) までリストを スクロールし、「アクション・キーの挿入 (Insert Action Key)」をクリックします。 「ストリング (String)」フィールドの次の入力位置に、キーの名前が 大括弧で囲まれて表示されます。 「アクション・キー (Action Keys)」リスト・ボックスにあるキーは、 アルファベット順にリストされていないので注意してください。 必要なキーを見つけるために、リストをスクロールし続ける必要が生じる ことがあります。
別の方法として、単に名前自体を大括弧で囲んで「ストリング (String)」入力 フィールドに入力する (例: [backspace]) ことにより、 アクション・キーを指定することもできます。
3270 ディスプレイ・セッションの「アクション・キー (Action Keys)」リストには、 次のコピー・アンド・ペースト・キーが表示されます。
[copy] [mark right]
[copyappend] [mark up]
[cut] [paste]
[mark down] [pastenext]
[mark left] [unmark]
その他のキーについては、入力アクションの略号キーワードを参照してください。
「ホスト・アクション・キーの変換 (Translate Host Action Keys)」 フィールドは、入力シーケンスにあるアクション・キー名 ([copy]、[enterreset]、[tab] など) を アクション・キーとして解釈するか、リテラル文字シーケンスとして 解釈するかをマクロ・ランタイムに指示します。 デフォルトは true です (アクション・キー名をアクション・キーとして解釈)。
例えば、入力キー・シーケンスが '[up][up]Hello world' で、テキスト・カーソルが行 4、列 10 にあるとします。 「ホスト・アクション・キーの変換 (Translate Host Actions Keys)」の 値が true の場合は、この入力シーケンスを実行すると、マクロ・ランタイム はテキスト・カーソルを上方向に 2 行移動した後、行 2、列 10 から Hello world を入力します。一方、「ホスト・アクション・キーの 変換 (Translate Host Actions Keys)」の値が false の場合、 マクロ・ランタイムは行 4、列 10 から [up][up]Hello World を入力します。
「ホスト・アクション・キーの変換 (Translate Host Action Keys)」フィールド が true (デフォルト) に設定されている場合、マクロ・エディターは「カーソルを入力の最後に移動 (Move Cursor to End of Input)」リスト・ボックス も true に設定し、このリスト・ボックスを使用不可にします。 リスト・ボックスが使用不可になっていても、値は true に設定されています。
「ホスト・アクション・キーの変換 (Translate Host Action Keys)」リスト・ボックス を false に設定した場合は、「カーソルを入力の最後に移動 (Move Cursor to End of Input)」リスト・ボックスが使用可能になり、 このリスト・ボックスを false、 true、または実行時に評価される式に 設定できます。
リスト・ボックスの値が true (デフォルト) の場合、 マクロ・ランタイムは、実際のユーザーがキーボード入力を行っている場合と 同じようにテキスト・カーソルを移動します。 例えば、キーが 'a' などのテキスト文字の場合、 マクロ・ランタイムは文字をセッション・ウィンドウに入力し、 テキスト・カーソルを 'a' の後にある最初の文字位置に移動します。 同様に、キーが [tab] の場合、マクロ・ランタイムは テキスト・カーソルを次のタブ位置に移動します。
これに対し、「カーソルを入力の最後に移動 (Move Cursor to End of Input)」 リスト・ボックスが false の場合、マクロ・ランタイムはテキスト・カーソル をまったく移動しません。テキスト・カーソルは、マクロ・ランタイムが 入力アクションを実行する前にあった同じ位置に残ります。
「パスワード (Password)」チェック・ボックスを使用して、 「ストリング (String)」フィールドの入力キー・シーケンスを暗号化できます。「ストリング (String)」フィールドの 内容を暗号化すると、Host On-Demand は暗号化された入力キー・シーケンスのバージョンを マクロ・スクリプト (<input> エレメント) に格納し、 プレーン・テキスト (暗号化されていない) 入力シーケンスのバージョンは保存しません。
例えば、図 32 は、 入力キー・シーケンスが暗号化されていない ('myPassword') <input> エレメントを示しています。
input value="’myPassword’" row="20" col="16" movecursor="true"
xlatehostkeys="true" encrypted="false" />一方、図 33 は、 入力キー・シーケンスが暗号化された (I7xae6rSVlVFF6qzhWRfKw==) 同じ <input> エレメントを 示しています。この例では、<input> エレメントの encrypted 属性が true に設定されていることに注意してください。
input value="I7xae6rSVlVFF6qzhWRfKw==" row="20" col="16"
movecursor="true" xlatehostkeys="true" encrypted="true" />マクロ・エディターでは、暗号化された入力キー・シーケンスはアスタリスクで表示されます (例えば、暗号化された 'myPassword' は「ストリング (String)」フィールドに I7xae6rSVlVFF6qzhWRfKw== ではなく、************************ と表示されます)。
暗号化により、機密データを不用意に公開することなく、 入力アクションに機密データ (パスワードなど) を含めることができます。 許可されていないユーザーは、テキスト・エディター、マクロ・エディター、 またはコード・エディターでマクロ・スクリプトを表示しても機密データを見ることはできません。
入力キー・シーケンスの暗号化後、Host On-Demand は、マクロ・エディターまたはコード・エディターを使用して入力キー・シーケンスを 暗号化解除することを誰にも許可しません。 Host On-Demand は、マクロ・ランタイムがマクロ再生中に入力アクションを処理するまで、 入力アクションの入力キー・シーケンスを暗号化解除しません。 マクロ・ランタイムが入力アクションを処理すると、 マクロ・ランタイムは暗号化された入力キー・シーケンスを暗号化解除し、 暗号化されていない入力キー・シーケンスをセッション・ウィンドウの指定された行および列の位置に入力します。
一般に 3270 または 5250 環境では、パスワードなどの機密入力キー・シーケンス用に、 ホスト・アプリケーションは入力キー・シーケンスの宛先として非表示の入力フィールドを作成し、 プレーン・テキストではなくブランクまたはアスタリスク (*) が表示されるようにします。
ただし、マクロ・スクリプトを不用意に公開すると、機密漏れの危険性があります。マクロ・スクリプトのコピーにアクセスできれば、 巧妙な手口で元の暗号化されていない入力キー・シーケンスが見られる可能性があります。つまり、 入力アクションの「行 (Row)」「列 (Column)」フィールドを編集して、 マクロ再生中にマクロ・ランタイムが暗号化解除された入力キー・シーケンスを通常の表示可能なフィールドに入力するようにすることができます。
より高いセキュリティーを実現するには、入力アクションではなくプロンプト・アクションを使用します。 プロンプト・アクションでは、入力キー・シーケンスは暗号化された形式によっても、 マクロ・スクリプトに格納されることはありません。マクロ再生中にマクロ・ランタイムがプロンプト・アクションを処理する場合、 マクロ・ランタイムは、入力フィールドと、入力キー・シーケンスを入力するようエンド・ユーザーに促すメッセージが表示されたウィンドウをポップアップします。 エンド・ユーザーが入力キー・シーケンスを入力して「OK」をクリックすると、 マクロ・ランタイムはポップアップ・ウィンドウを除去し、入力キー・シーケンスをセッション・ウィンドウの指定した行および列の位置に送信します。
入力アクションを使用する場合は、エンド・ユーザーが介入しなくても マクロ再生中にマクロ・スクリプトが自動的に実行されるという利点があります。 ただし、機密データが変更される場合 (例えば、パスワードが失効して新規の別のパスワードが必要になる場合) は、 入力アクションを新規入力キー・シーケンスで更新する必要があります。
マクロ記録中に、「パスワードの記録」オプションは、3270 または 5250 の非表示のフィールドに入力される 入力キー・シーケンスを Host On-Demand が記録する方法を制御します (3270 ディスプレイ・セッションおよび 5250 ディスプレイ・セッションの場合のみ)。
「パスワードの記録」が使用可能になっている場合 (デフォルト)、Host On-Demand は、 暗号化された入力キー・シーケンスを入力アクションとして自動的に記録します。「パスワードの記録」が使用不可になっている場合、Host On-Demand は、 入力キー・シーケンスをプロンプト・アクションとして記録します。詳しくは、パスワードの記録を参照してください。
マクロ記録中に入力キー・シーケンスが自動的に暗号化される場合、マクロ・エディターで入力アクションを表示すると、 「パスワード (Password)」チェック・ボックスが選択されていて (チェックマークが付いている)、 暗号化されたキー・シーケンスを表すいくつかのアスタリスク (******) が「ストリング (String)」フィールドに表示されています。
一方、マクロ記録中に入力キー・シーケンスが自動的に暗号化されない場合 (原因としてセッションが 3270 または 5250 セッションではない、または入力フィールドが非表示の入力フィールドであることが考えられる)、 「パスワード」チェック・ボックスはクリアされていて (チェックマークが付いていない)、 暗号化されていない入力キー・シーケンスが「ストリング (String)」フィールドに表示されています。
マクロ記録中に入力キー・シーケンスが自動的に暗号化されない場合は、マクロ・エディターで暗号化することができます。入力キー・シーケンスを暗号化するには、 次のステップを実行します。始める前に、「パスワード」チェック・ボックスがクリアされていない場合はクリアしてください (チェックマークを外す)。
暗号化された入力キー・シーケンスを作成して、 「ストリング (String)」フィールドへの入力時に入力キー・シーケンスを暗号化されていない形式で表示しない場合は、 次の方法を使用します。
入力キー・シーケンスの暗号化後に、入力キー・シーケンスを暗号化しないようにするか、訂正することができます。
入力キー・シーケンスの暗号化後に、入力キー・シーケンスを暗号化しないようにするには、次のステップを実行します。
入力キー・シーケンスの暗号化後に、入力キー・シーケンスを訂正するには、次のステップを実行します。
「ストリング (String)」フィールド内のアスタリスクのストリング (*******) を上書きしたり、 ストリングに文字を挿入することによって、暗号化された入力キー・シーケンスを訂正しないでください。そのようにすると、暗号化されていない訂正によって暗号化された入力キー・シーケンスが破壊されます。その後、マクロ・エディターは、 暗号化されていないストリングが入力されたものと見なし、破壊されたシーケンスを再暗号化します。その結果、 マクロ再生中にマクロ・ランタイムが入力アクションを処理すると、 暗号化解除されたシーケンスは期待したものとは異なる入力キー・シーケンスになります。(また、拡張マクロ形式を使用しており、 破壊された入力キー・シーケンスを単一引用符で囲まない場合には、マクロ・エディターはエラー・メッセージを生成します。)
コード・エディターは、マクロ・エディターと同じ規則に従って入力キー・シーケンスを暗号化します。
コード・エディターでは、常に次のいずれかのアクションを実行できます。
また、コード・エディターの使用中に、encrypted 属性 (暗号化を活動化または非活動化する) の値を true から false、または false から true に変更することもできます。
ただし、コード・エディターを使用して value 属性 (暗号化されたまたは暗号化されていない入力キー・シーケンスを含む) の値を変更する場合で、encrypted 属性が true に設定されている場合は、暗号化された入力キー・シーケンスを完全に削除してから (value="" にする)、 暗号化する新規入力キー・シーケンスを入力します。
value 属性の暗号化された入力キー・シーケンスを上書きしたり、 キー・シーケンスに文字を挿入することによって、暗号化された入力キー・シーケンスを訂正しないでください。そのようにすると、暗号化されていない訂正によって暗号化された入力キー・シーケンスが破壊されます。
変数名 ($var1$ など) を、マクロ・エディターで「ストリング (String)」フィールドに (または、コード・エディターで value 属性の値の部分に) 入力して、 変数の名前を暗号化できますが (通常の入力キー・シーケンスを暗号化する場合と同じステップを使用する)、 通常これは実用的ではありません。変数名を暗号化すると、変数名を構成する文字だけが暗号化されるからです。 変数自体の内容は暗号化されません。
マクロ再生中に、マクロ・ランタイムは、 暗号化されたテキストを暗号化解除してプレーン・テキスト ($var1$) を取得し、 プレーン・テキストが変数名であることを認識してから、通常の方法で変数を評価します。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
コピーと貼り付けの例を参照してください。
メッセージ・アクションは、タイトル、メッセージ、および「OK」ボタン があるポップアップ・ウィンドウを表示します。 マクロ・ランタイムは、ユーザーが「OK」をクリックするまでアクションを 終了しません。
このメッセージは、次のようにさまざまなシナリオで使用できます。
メッセージ・ウィンドウの表題バーに表示する表題は、 「メッセージ表題 (Message Title)」入力フィールドに指定します。
メッセージ・ウィンドウの中に表示するテキストは、 「メッセージ・テキスト (Message Text)」入力フィールドに指定します。
両方の入力フィールドは入力値としてストリングを予期するので、 ストリングとして評価される任意のエンティティーを 指定できます (等価を参照)。 演算式を使用する場合は、式自体に即時値、変数、演算式、 および Java メソッドの呼び出しを含めることができます (算術演算子および式を参照)。
また、データ型変換規則 (自動データ型変換を参照) と ストリング連結記号 (ストリング連結演算子 (+)を参照) を 使用することもできます。 例えば、$intResult$ という名前の整変数の値を表示する場合は、 「メッセージ・テキスト (Message Text)」入力フィールドに次のストリングを 指定できます。
'The result is ' + $intResult$ + '.'$intResult$ の 値が 204 ならば、マクロ・ランタイムはメッセージ・ボックスに次のテキストを 表示します。
The result is 204.
マウス・クリック・アクションは、ユーザーによるセッション・ウィンドウの マウス・クリックをシミュレートします。 実際のマウス・クリックと同様に、クリックが行われたときに マウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャンプします。
「アクション (Actions)」ウィンドウの下部領域で、 マウス・クリックを発生させるセッション・ウィンドウ上の行と列の位置を 指定します。 または、セッション・ウィンドウ自体をクリックすると、 テキスト・カーソルの新しい位置を反映して、マクロ・エディターの 「行 (Row)」フィールドと「列 (Column)」フィールドの値が更新されます。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
次の例では、セッション・ウィンドウ内でテキストのブロックにマークを付け、 システム・クリップボードにコピーして、セッション・ウィンドウ内の新しい 位置に再度貼り付ける方法を示します。 この例では、ボックス選択アクション、入力アクション、 マウス・クリック・アクション、および休止アクションの 各アクション・エレメントを使用します。
このマクロ・スクリプトのテキストを本書からシステム・クリップボードにコピーし、 システム・クリップボードからコード・エディターにコピーできます (本書からコード・エディターへのスクリプトのコピー・アンド・ペーストを参照)。 このスクリプトをマクロ・エディターに保管した後、マクロ・エディターまたはコード・エディターを使用してスクリプトを編集できます。
この例については、次の点に注意してください。
<HAScript name="COPY PASTE" description=" " timeout="60000" pausetime="300"
promptall="true" author="" creationdate="" supressclearevents="false"
usevars="false" >
<screen name="Screen1" entryscreen="true" exitscreen="true"
transient="false">
<description>
<oia status="NOTINHIBITED" optional="false" invertmatch="false" />
</description>
<actions>
<boxselection type="SELECT" srow="18" scol="19"
erow="18" ecol="51" />
<pause value="500" />
<input value="[copy]" row="0" col="0" movecursor="true"
xlatehostkeys="true" encrypted="false" />
<mouseclick row="4" col="15" />
<input value="[paste]" row="0" col="0" movecursor="true"
xlatehostkeys="true" encrypted="false" />
</actions>
<nextscreens timeout="0" >
</nextscreens>
</screen>
</HAScript>休止アクションは、指定されたミリ秒数の間だけ待機した後、終了します。
具体的には、マクロ・ランタイムは <pause> エレメントを検出し、 期間の値を読み取って、指定されたミリ秒数だけ待機します。 その後、マクロ・ランタイムは次の項目の実行に進みます。
このアクションは次の場合に使用します。
「期間 (Duration)」入力フィールドには、ミリ秒数を入力する必要があります。 デフォルトは 10000 ミリ秒 (10 秒) です。
実行アクションは、インポートした Java クラスに属するメソッドを 呼び出します (Java クラスのインポート型の作成を参照)。
実行アクション以外にも、さまざまなコンテキストでメソッドを呼び出すことができます。 ただし実行アクションは、例えば値を戻さないメソッドを呼び出したい 場合などのシナリオでは便利です。
実行アクションのほかに、メソッドを呼び出すことができるコンテキストは 次のとおりです。
一般に、実行アクションの外部では、メソッドから戻される値が有効である すべてのコンテキストでメソッドを呼び出すことができます。
「実行するアクション (Action to Perform)」フィールドにメソッド呼び出しを 入力します。変数と同じように、メソッド呼び出しをドル記号 ($) で囲む必要があります (メソッド呼び出しの構文を参照)。 マクロ・ランタイムがメソッドを呼び出します。 マクロ・ランタイムが呼び出し先メソッドを検索する方法も参照してください。
次の例では、実行アクションを使用してメソッドを呼び出す方法を示します。 これらの例については、次のことについて注意してください。
<actions>
<!-- Example 1 -->
<perform value="$importedVar.update( 5, 'Application', $str$)$" />
<!-- Example 2 -->
<perform value="$MyClass.myInit('all')$" />
<!-- Example 3 -->
<perform value="$fip.close()$" />
<!-- Example 4 -->
<perform value="$zis.createZipEntry( $name$ )$" />
<!-- Example 5 -->
<perform value="$ht.clear()$" />
</actions>PlayMacro アクションは、別のマクロを起動します。
マクロ・ランタイムが PlayMacro アクションを実行すると、 現行マクロ (PlayMacro アクションを指定したマクロ) は終了し、 ターゲット・マクロの指定されたマクロ画面の処理が開始されます。 この処理はチェーニングと呼ばれ、 呼び出し側マクロをターゲット・マクロに「チェーニングする」といいます。 呼び出し側マクロへの戻りはありません。
PlayMacro アクションには、ターゲット・マクロの名前を指定する必要があり、 またオプションで、マクロ・ランタイムが最初に処理する ターゲット・マクロ内のマクロ画面の名前を指定します。
呼び出し側マクロからターゲット・マクロにすべての変数とその内容を 転送するように、マクロ・ランタイムに指示できます。
条件エレメントの外に追加する場合:
条件エレメントの中に追加する場合:
マクロには必要な数の条件エレメントを使用でき、 それぞれの条件エレメントの「条件は真 (Condition is True)」ブランチ に 1 つの PlayMacro アクション、「条件は偽 (Condition is False)」ブランチ に 1 つの PlayMacro アクションを指定できます。
マクロ・エディターとコード・エディターは、これらの規則を適用します。
「マクロ名 (Macro Name)」フィールドを使用して、ターゲット・マクロの 名前を指定します。サーバー・ライブラリー内のマクロをチェーニングする場合は、 マクロの名前ではなくマクロ・ファイルの名前を指定する必要があります。 マクロ名は大/小文字が区別されることに注意してください。例え ば、mymacro は、myMacro、 myMACRO、MyMacro などとは異なる名前です。
呼び出し側マクロと異なる場所にあるマクロを呼び出すことはできません。 具体的には、次のとおりです。
「開始画面名 (Start Screen Name)」リスト・ボックスは、 マクロ・ランタイムがターゲット・マクロ内で最初に処理する マクロ画面を選択するために使用します。
「変数の転送 (Variable Transfer)」リスト・ボックスを「転送 (Transfer)」 に設定することにより (デフォルトは「転送なし (No Transfer)」)、 呼び出し側マクロに属する変数すべて (これらの変数の内容を含む) を ターゲット・マクロに転送するようにマクロ・ランタイムに指示できます。
このように変数とその内容を転送することにより、 変数を使用して呼び出し側マクロからターゲット・マクロにパラメーターを 渡すことができます。
ターゲット・マクロに制御が渡された後、ターゲット・マクロは、 自身が宣言した変数の読み書きと同じように、転送変数を読み書き できます。
例えば、MacroA に 2 つの整変数 StartRow と StartCol があり、 その値が 12 と 2 である場合に、MacroA が PlayMacro アクションを 使用して MacroB を起動すると、MacroB には 12 と 2 の値を持つ 変数 StartRow と StartCol が最初に与えられます。
転送変数がインポート型に属していて Java オブジェクトを 含んでいる場合でも、ターゲット・マクロは転送変数を 参照して Java オブジェクトのメソッドを呼び出すことができ、 またその転送変数に他のオブジェクトを書き込むこともできます。
ターゲット・マクロは、拡張マクロ形式を選択している必要が あります (マクロ形式の選択を参照)。
転送される変数のすべての型に、次の制限が適用されるので注意してください。
ターゲット・マクロが、転送変数と同名、同型の変数を作成した 場合、マクロ・ランタイムは転送変数ではなく作成された変数を 使用します。
ターゲット・マクロ内で、インポート型に属する 転送変数を使用したい場合は、同じ型をターゲット・マクロにインポート する必要はありません。 型をインポートする必要がない操作の例は、次のとおりです。
ただし、インポート型の名前をターゲット・マクロ内で使用したい 場合は、その型をインポートする必要があります。 型をインポートする必要がある操作の例は、次のとおりです。
次に、PlayMacro アクションの例を示します。
<actions>
<playmacro name="TargetMacro" startscreen="*DEFAULT*"
transfervars="Transfer" />
</actions> 印刷アクションを使用して、3270 ディスプレイ・セッションのセッション・ウィンドウ からテキストを印刷できます。 アプリケーション画面を印刷でき、またアプリケーション画面から テキストの長方形領域を印刷することもできます。 3270 プリンター・セッションに対して使用できるものと同じプリンター・セットアップ・ オプション、およびほとんど同じページ・セットアップ・オプションを使用できます。
印刷アクションは、3270 ディスプレイ・セッションに対してのみ使用できます。
印刷アクションは、ホスト印刷セッションを作成しません。 代わりに、印刷アクションは 3270 ディスプレイ・セッション・ウィンドウに表示された データを印刷します (画面印刷)。
印刷アクションには次のものがあります。
印刷開始アクションは、現行マクロの印刷 Bean オブジェクトのインスタンス を生成し、Bean の印刷セットアップ・オプションとページ・セットアップ・オプションを 設定します。印刷抽出アクションは、テキストを印刷 Bean に送ります。 印刷終了アクションは、印刷 Bean を終了します。
マクロ・エディターは、印刷開始、印刷抽出、および印刷終了の 各アクションを別々のタイプのアクションとして表示しますが、 実際にはマクロ・オブジェクトは <print> エレメントを使用して 3 つ のアクションすべてを保管します。
印刷開始アクションは、ユーザーが指定した印刷セットアップ・オプション とページ・セットアップ・オプションを使用して、 現行マクロの印刷 Bean オブジェクトのインスタンスを生成します。
印刷開始アクションを実行する前に、マクロ・ランタイムは 現行マクロの印刷 Bean がすでに存在するかどうか確認します。 存在する場合、マクロ・ランタイムは既存の印刷 Bean を終了し、 印刷開始アクションを実行して新規印刷 Bean のインスタンスを生成します。
新規印刷 Bean のプリンター・セットアップ・オプションを設定するには、 「プリンター・セットアップ (Printer Setup)」をクリックします。 制御できるプリンター・セットアップ・オプションは、3270 プリンター・セッション に対して使用できるものと同じです。これらのオプションには、 プリンター出力先 (Windows プリンター、その他のプリンター、またはファイル)、 プリンター定義テーブル、ファイル出力先の Adobe PDF 出力などがあります。
新規印刷 Bean のページ・セットアップ・オプションを設定するには、 「ページ・セットアップ (Page Setup)」をクリックします。 制御できるページ・セットアップ・オプションは、3270 プリンター・セッション に対して使用でき、また 3270 表示データ・ストリーム (LU2) にも 適用できるものと同じです。これらのオプションには、フォント、ヌル (0x00) の処理、 プリンター・フォントのコード・ページなどがあります。
現行マクロの印刷 Bean に対して指定したプリンター・セットアップ・オプション とページ・セットアップ・オプションは、以下に対するプリンター・セットアップ・オプション とページ・セットアップ・オプションには影響しません。
ただし、印刷出力先が Windows プリンターで、Microsoft Windows の プリンター・セットアップ・ダイアログでその Windows プリンターの 構成を変更した (横長方向から縦長方向への変更など) 場合は、 その Windows プリンターを使用する Host On-Demand 印刷アクティビティー すべてに、その構成変更の影響が及びます。これには以下も含まれます。
印刷開始アクションが正常に行われたことを確認するには、 「変数に戻りコードを割り当てる (Assign Return Code to a Variable)」を クリックし、印刷開始アクションからの戻りコードを格納する変数を 選択します。
印刷抽出アクションは、指定した 3270 ディスプレイ・セッション・ウィンドウの 長方形領域からテキストをコピーし、現行印刷 Bean を使用してその テキストを印刷します。
印刷抽出アクションを実行する前に、マクロ・ランタイムは 現行マクロの印刷 Bean がすでに開始されているかどうか確認します。 開始されていない場合、マクロ・ランタイムは、 デフォルト・プリンター・セットアップ・オプションと デフォルト・ページ・セットアップ・オプションを指定して 印刷開始アクションを実行し、その後で印刷抽出アクションを実行します。
印刷するセッション・ウィンドウの領域を指定するには、 マーキング長方形を使用して行と列の座標を取り込むことができます。また別の方法として、 「抽出アクション (Extract action)」ウィンドウの「行 (Row)」フィールドと 「列 (Column)」フィールドに、テキスト域の行と列の座標を入力することもできます。
マーキング長方形を使用する場合 (マーキング長方形の使用を参照)、 マクロ・ランタイムは、マーキング長方形の左上隅の行と列の座標を 1 組目の行と列の値 (「抽出アクション (Extract action)」ウィンドウ の「上隅 (Top Corner)」) に書き込み、 右下隅の行と列の座標を 2 組目の行と列の値 (「下隅 (Bottom Corner)」) に 書き込みます。
行と列の値をユーザー自身が入力する場合は、1 組目の行と列の座標を 1 組目の 行と列の値 (「抽出アクション (Extract action)」ウィンドウ の「上隅 (Top Corner)」) に入力し、2 組目の座標のセットを 2 組目の 行と列の値 (「下隅 (Bottom Corner)」) に入力します。 必要な座標を判別するための補助として、セッション・ウィンドウ でテキスト・カーソルを使用できます (セッション・ウィンドウのテキスト・カーソルの使用を参照)。
「行 (下隅) (Row (Bottom Corner))」入力フィールドに -1 を 入力すると、セッション・ウィンドウのデータ域の最終行を示すことができます。 この機能は、ユーザーが高さの異なる (25、43、50 など) セッション・ウィンドウを使用していて、 最終行までデータをキャプチャーしたい場合に便利です。 同様に、「列 (下隅) (Column (Bottom Corner))」入力フィールド に -1 を入力すると、セッション・ウィンドウのデータの最終列 を示すことができます (行または列の負の値の意味を参照)。
印刷抽出アクションが正常に行われたことを確認するには、 「変数に戻りコードを割り当てる (Assign Return Code to a Variable)」を クリックし、印刷抽出アクションからの戻りコードを格納する変数を 選択します。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
印刷終了アクションは、現行印刷 Bean が存在すれば、その Bean を終了します。 現行印刷 Bean が存在しない場合、このアクションの効果はありません。
印刷終了アクションが正常に行われたことを確認するには、 「変数に戻りコードを割り当てる (Assign Return Code to a Variable)」を クリックし、印刷終了アクションからの戻りコードを格納する変数を 選択します。
プロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 また は 5250 アプリケーションに送るか、変数に格納するための強力な機能を 備えています。
プロンプト・アクションは、セッション・ウィンドウの前面に プロンプト・ウィンドウを表示します。このウィンドウには、メッセージ、 入力フィールド、および 3 つのボタン (「OK」、「取り消し (Cancel)」、「ヘルプ」) があります。 ユーザーが入力フィールドにテキストを入力して「OK」をクリックした後、 プロンプト・アクションはその入力データを使用して、次のどちらかまたは両方を 行います。
このアクションの代表的な用途は (ただしこの用途だけではありません)、 ユーザーによるパスワードの入力を可能にすることです。 マクロがホストにログオンしたり、アクセスにパスワードを必要とする アプリケーションを開始したりしなければならないシナリオはよくあります。 パスワードは機密データであり、また通常はときどき変更されるため、 パスワードを即時値としてマクロにコーディングすることは適切でない ことがよくあります。
プロンプト・アクションを使用して、ユーザーにパスワードの入力を促し、 入力フィールドにパスワードを入力するようにユーザーに指示するメッセージを 表示できます。 ユーザーが「OK」をクリックした後、マクロ・ランタイムは、 セッション・ウィンドウ内の指定した行と列の位置に入力データを入力します。 入力シーケンスには、[enterreset] などのアクション・キーを含めることが できるので、ユーザーが MyPassword[enterreset] と 入力した場合、マクロ・ランタイムはパスワードをパスワード・フィールドに 入力できるだけでなく、ログオンまたはアクセスのアクションを完了する キーを入力することもできます。 (また、プロンプト・アクションの直後の入力アクションに アクション・キーを組み入れることもできます。)
プロンプト・テキスト ('Please type your password:' など) は、「プロンプト・テキスト (Prompt Text)」フィールドではなく 「プロンプト名 (Prompt Name)」フィールドに入力する必要があります (「プロンプト・テキスト (Prompt Text)」フィールドは、特定のプロンプト・アクション の詳細を説明するメモの保管に使用できるオプションのフィールドです)。
マクロ・ランタイムが表示するプロンプト・ウィンドウには、 次の特性があります。
「デフォルト応答 (Default Response)」フィールド (オプション) には、 プロンプト・ウィンドウが表示されたときに、 プロンプト・ウィンドウの入力フィールドに表示したいデフォルト応答のテキスト を入力できます。ユーザーがプロンプト・ウィンドウの入力フィールドに キーボードで入力せず、単に「OK」をクリックして入力完了を指示した場合、 マクロ・ランタイムは入力フィールドに入っているデフォルト応答を処理します。
例えば、ユーザーが通常は ApplicationA を使用し、ときどき ApplicationB を 使用する場合は、「デフォルト応答 (Default Response)」フィールド に ApplicationA と入力できます。 マクロ・ランタイムがプロンプト・アクションを実行すると、 入力フィールドにテキスト ApplicationA が すでに表示された状態で、プロンプト・ウィンドウが表示されます。 ユーザーは「OK」をクリックするか (この場合、マクロは入力フィールドの 内容として ApplicationA を処理する)、 入力フィールドに ApplicationB と入力して「OK」をクリックします (この場合、 マクロは入力フィールドの内容として ApplicationB を処理する)。
「パスワードの応答」リスト・ボックスで true を選択する場合 (デフォルトは false)、 ユーザーがプロンプト・ウィンドウの入力フィールド にキー入力するたびに、マクロ・ランタイムはそのキーに関連した文字の代わりに アスタリスク (*) を表示します。
例えば、「パスワードの応答」リスト・ボックス を true に設定すると (または実行時に true に解決されると)、 ユーザーが 'Romeo' と入力した場合に、マクロ・ランタイムは 入力フィールドに ***** を表示します。
「応答の要求 (Require Response)」リスト・ボックスで true を選択する場合 (デフォルトは false)、次のようになります。
したがって、「応答の要求 (Require Response)」を true に設定すると、 先に進む前に応答が必要であることをエンド・ユーザーに気付かせ (入力フィールドの右に「(必要 (required))」を表示する)、 「OK」をクリックする前に入力フィールドにテキストを入力するようエンド・ユーザーに要求することができます (入力フィールドにテキストが入力されるまで「OK」を使用不可にする)。ただし、 プロンプト・アクションにデフォルトの応答が含まれる場合は、「OK」が使用可能になり、デフォルトの応答が入力フィールドに表示されます。
「応答の要求 (Require Response)」リスト・ボックスで false を選択する場合、次のようになります。
したがって、「応答の要求 (Require Response)」を false に設定すると、 プロンプトの入力フィールドがブランクの場合でも、ユーザーが「OK」をクリックしてマクロの処理を継続できるようになります。
<HAScript> エレメント (または <actions> エレメント) の promptall 属性が true に設定されている場合で、 マクロ (またはマクロ画面) に複数のプロンプト・アクションがあり、 「応答の要求 (Require Response)」を true に設定してある場合、 マクロ再生の開始時 (またはマクロ画面再生の開始時) にマクロ・ランタイムが単一のプロンプト・ウィンドウにすべてのプロンプト入力フィールドを表示すると、 すべての必要入力フィールドにテキストが入力されるまで、マクロ・ランタイムは「OK」ボタンを使用可能にしません (promptall 属性を参照)。
「応答の長さ (Response Length)」フィールドの値は、 入力フィールドのサイズではなく、マクロ・ランタイムが ユーザーに許可する入力フィールドへの入力文字数を指定します。
例えば、「応答の長さ (Response Length)」フィールドを 10 に設定すると、 マクロ・ランタイムは、入力フィールドへの入力を 10 文字のみユーザーに許可します。
マクロ作成者 (「デフォルト応答 (Default Response)」入力フィールド) と ユーザー (「プロンプト (Prompt)」ウィンドウの入力フィールド) の両方が、 入力アクションの「ストリング (String)」フィールドの場合と同様に (入力ストリングを参照)、 アクション・キー ([enterreset]、[copy] など) を使用できます。
「ホスト・アクション・キーの変換 (Translate Host Action Keys)」リスト・ボックス とその効果は、入力アクションの「ホスト・アクション・キーの変換 (Translate Host Action Keys)」リスト・ボックスとまったく同じです (ホスト・アクション・キーの変換を参照)。 このリスト・ボックスを true (デフォルト値) に設定すると、 マクロ・ランタイムはアクション・キー・ストリング ([copy] など) を リテラル・ストリングとしてではなくアクション・キーとして解釈します。
「行 (Row)」フィールドと「列 (Column)」フィールドを使用して、 マクロ・ランタイムによる入力シーケンスの入力を開始する セッション・ウィンドウの行と列の位置を指定します。 マクロ・ランタイムがテキスト・カーソルの現在位置から入力シーケンスの 入力を開始するようにするには、「行 (Row)」フィールドと「列 (Column)」 フィールドのどちらかまたは両方を 0 に設定します。 入力アクションと同様に、行と列の位置は 3270 または 5250 入力フィールド の中にあることが必要で、そうでなければセッション・ウィンドウは入力を 禁止してエラー・シンボルをオペレーター情報域に表示します。 この応答は、実際のユーザーからのキーボード入力に対する応答とまったく同じです。
「ホスト・フィールドの消去 (Clear Host Field)」リスト・ボックスを true に 設定すると、マクロ・ランタイムは入力開始前に入力フィールドの内容を 消去します。
「カーソルを入力の最後に移動 (Move Cursor to End of Input)」フィールドには、 入力アクションの同名のボタンと同じ機能と効果があります (カーソルを入力の最後に移動を参照)。
「画面に書き込まない (Don't Write to Screen)」リスト・ボックスを true に 設定すると、入力フィールドに入力シーケンスを表示しないように マクロ・ランタイムに指示できます。 このフィールドは、「変数に割り当てる (Assign to a Variable)」チェック・ボックス が選択されている場合にのみ使用可能になります。
「変数に割り当てる (Assign to a Variable)」チェック・ボックスにチェックマークを付けると、 入力シーケンスを変数に格納するようにマクロ・ランタイムに指示できます。
新規変数を作成するには、リスト・ボックスで「<新規変数> (<New Variable>)」項目をクリックします。新規変数を指定するためのポップアップ・ウィンドウで、 現行マクロが別のマクロから継承する変数の名前を指定し、 また現行マクロ内で作成する新規変数の名前を指定することもできます。 現行マクロ内で新規変数を作成する場合は、「このマクロで変数を作成 (Create variable in this macro)」チェック・ボックスを選択し、新規変数の 型を選択します。
マクロ・ランタイムは入力シーケンスをストリングとして保管するので、 入力を受け取る変数としてストリング変数を指定できます。 ただし、変数がストリング以外の型である場合、マクロ・ランタイムは 通常の規則に従って、入力データをターゲット変数のデータ型に変換することを 試みます (自動データ型変換を参照)。
すべての <prompt> エレメントのポップアップ・ウィンドウ を 1 つの大きなプロンプト・ウィンドウに結合し、 マクロの再生開始時にこの大きなプロンプト・ウィンドウを表示するように、 マクロ・ランタイムに指示できます。このためには、 <HAScript> エレメントの promptall 属性を true に 設定します (<HAScript> エレメントを参照)。
<actions> エレメントの promptall 属性 も同様に機能します (<actions> エレメントを参照)。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
プログラム実行アクションは、ネイティブ・アプリケーションを起動し、 オプションでその終了を待ちます。アプリケーションの入力パラメーター を指定でき、変数に戻りコードを格納できます。
システム・ランタイムによって実行できる任意のアプリケーションを起動できます。
プログラム実行アクションには、次のようにさまざまな用途があります。
ネイティブ・アプリケーションを起動するファイルの完全なパスと名前 を「プログラム (Program)」入力フィールドに指定する必要があります。 例を次に示します。
'c:¥¥Program Files¥¥MyApp¥¥bin¥¥myapp.exe'上の例の中で、単一の円記号 (¥) が 2 つの円記号 (¥¥) によって 表されている点に注意してください。 この理由は、拡張マクロ形式では円記号が特殊記号であるため、 円記号 + 文字自体として表現する必要があることです (拡張マクロ形式のストリング表記規則を参照)。
「パラメーター (Parameters)」フィールドには、ネイティブ・アプリケーション に渡す必要があるパラメーターすべてを指定します。
ネイティブ・アプリケーションが終了するまで待機するようにマクロ・ランタイム に指示する場合は、「プログラムの待機 (Wait for Program)」リスト・ボックス を true に設定します。デフォルトは false (マクロ・ランタイムは 待機しない) です。
「終了コードを変数に割り当てる (Assign Exit Code to Variable)」 チェック・ボックスを選択し、変数名を指定することによって、 ネイティブ・アプリケーションから戻された状況コードを変数に取り込むことが できます。
次の例では、ネイティブ・アプリケーションを起動し、終了するまで 待機し、アプリケーションからの戻りコードをメッセージ・ウィンドウに 表示します。 この例では、プログラム実行アクション、メッセージ・アクションの アクション・エレメントを使用します。
このマクロ・スクリプトのテキストを本書からシステム・クリップボードにコピーし、 システム・クリップボードからコード・エディターにコピーできます (本書からコード・エディターへのスクリプトのコピー・アンド・ペーストを参照)。 このスクリプトをマクロ・エディターに保管した後、マクロ・エディターまたはコード・エディターを使用してスクリプトを編集できます。
この例については、次の点に注意してください。
<HAScript name="g1" description=" " timeout="60000" pausetime="300"
promptall="true" author="" creationdate="" supressclearevents="false"
usevars="true" ignorepauseforenhancedtn="false"
delayifnotenhancedtn="0">
<vars>
<create name="$intReturn$" type="integer" value="0" />
</vars>
<screen name="Screen1" entryscreen="true" exitscreen="true" transient="false">
<description>
<oia status="NOTINHIBITED" optional="false" invertmatch="false" />
</description>
<actions>
<runprogram exe=
"%ProgramFiles%¥Windows NT¥Accessories¥wordpad.exe"
param="’c:¥¥tm¥¥new_file.doc’" wait="true"
assignexitvalue="$intReturn$" />
<message title="" value="’Return value is ’+$intReturn$" />
</actions>
<nextscreens timeout="0" >
</nextscreens>
</screen>
</HAScript>SQLQuery アクションは、非常に便利で強力なアクションです。 このアクションにより、SQL ステートメントをホスト・データベースに送信し、SQL ステートメントで生成されるデータを検索し、 データをグローバル変数に書き込むか、データをファイルに書き込むか、 データを表示することができます。(対になるアクション FileUpload では、 ファイルのアップロード・コマンドをホスト・データベースに送信できます。FileUpload アクション (<fileupload> エレメント)を参照してください。)
SQLQuery アクションは、マクロをサポートする任意のタイプの Host On-Demand セッションで使用できます (3270 ディスプレイ、5250 ディスプレイ、VT ディスプレイ、または CICS ゲートウェイ)。
接続先のデータベース・サーバーは、エミュレーター・セッションを実行しているホストとは別のホストにあってもかまいません。
SQL ステートメントを手動で作成し、SQL ウィザードを使用して SQL ステートメントを構成およびテストし、 現行セッションまたは SQL ステートメントのライブラリーから SQL ステートメントをインポートできます。
SQLQuery アクションでは、タイプが Select の SQL ステートメントのみサポートされています。タイプが Insert、Update、 または Delete の SQL ステートメントはサポートされていません。
SQLQuery アクション・ウィンドウには、2 つの主なセクション (ステートメント・セクションと結果セクション) があります。
ステートメント・セクションはウィンドウの上部にあり、 「データベース URL (Database URL)」、「ドライバー ID (Driver Identifier)」、「ドライバー・クラス (Driver Class)」、 「ユーザー ID (User ID)」、「パスワード (Password)」、 および「ステートメント (Statement)」フィールドが含まれています。このセクションの情報は、次の 3 つの方法で変更できます。
これらのフィールドは、入力することによっていつでも編集することができます。
結果セクションはウィンドウの下部にあり、 「結果の出力先 (Output Result To)」、「ファイル名」、「Web ブラウザーで表示 (Show in Web browser)」、 「ファイル・タイプ」、「出力ダイアログで待機 (Hold on output dialog)」、「上書き (Overwrite)」、 および「付加 (Append)」フィールドが含まれています。
SQL ウィザードを使用して、SQL ステートメントを作成しテストできます。マクロ・エディターの 「ステートメント (Statement)」に SQL ステートメントのテキスト全体を入力する場合と比較して、SQL ウィザードの グラフィカル・ユーザー・インターフェースを使用すると、SQL ステートメントを より簡単に作成できます。また、SQL ウィザードでは、作業中の SQL ステートメントを実行して結果を表示することができます。
「照会のインポート (Import Query)」をクリックして、SQL ステートメントをインポートします。現行セッションまたは クライアント・ワークステーションの個人用ライブラリーから SQL ステートメントをインポートできます。
後でインポートできるように SQL ステートメントを保管するには、SQL ウィザードを開始し、SQL ステートメントを 作成またはオープンして SQL ステートメントを実行し、 「結果 (Results)」タブに移動して「SQL を保管 (Save SQL)」をクリックします。SQL ステートメントを現行セッションまたは 個人用ライブラリーに保管するには、「保管されたステートメント (Saved statements)」ダイアログを使用します。
SQL ステートメントをインポートすると、マクロ・エディターは インポートされた SQL ステートメントの内容をステートメント・セクションのフィールドに書き込みます。また、マクロ・エディターは、 新規情報を基礎マクロ・タイプに合わせて自動的に正しくフォーマット設定します (基本マクロ形式と拡張マクロ形式の比較を参照)。ステートメント・セクションのフィールドにすでに情報が含まれている場合は 上書きされます。
SQL ウィザードを使用して SQL ステートメントを作成したり、SQL ステートメントをインポートする代わりに、 ステートメント・セクションのフィールドに情報を直接入力することができます。SQL ステートメントの作成またはインポート後に、 どのフィールドにも入力できます。
「データベース URL (Database URL)」フィールドに、 データベースへのアクセスを提供するデータベース・サーバーの URL を入力します。データベース URL の形式は、 データベースへのアクセスに使用する Java Database Connectivity (JDBC) ドライバーのタイプによって異なります (ドライバーについて詳しくは、ドライバー ID とドライバー・クラスを参照)。表 18 は、Host On-Demand に組み込まれている ドライバーのデータベース URL を示しています。
| Host On-Demand で提供されるドライバー: | データベース URL の形式: | 例えば、次のとおりです。 |
|---|---|---|
| AS/400 Toolbox for Java | jdbc:as400://[host] |
|
実際のデータベース URL (jdbc:as400://myISeries など) では、 上記の形式例に示されている大括弧は使用しない でください。
リモート・サーバーは、Host On-Demand エミュレーター・セッションの接続先のホストとは別のホストに 配置することができます。例えば、SQLQuery アクションは iSeries ホストを指定できます。 これは、同じ SQLQuery アクションが、zSeries ホストに接続されている 3270 ディスプレイ・セッションで実行中のマクロの一部であっても同様です。
Host On-Demand で提供されるドライバー以外の JDBC ドライバーを使用する場合、 データベース URL の正しい形式については、ドライバー・ベンダーの提供する資料を調べてください。
SQLQuery アクションがデータベースにアクセスするために使用する JDBC ドライバーは、Java クライアント・パッケージです。 これは、リモート・ホスト上のサーバー・プログラムと通信する Host On-Demand クライアント・ワークステーション上にあります。リモート・ホスト上のこのサーバー・プログラムを使用すると、 データベースへのアクセスを行うことができます。
Host On-Demand クライアントには、AS/400 Toolbox for Java の JDBC ドライバーが すでに組み込まれています。このドライバーは、エミュレーター・クライアントの一部として 自動的にダウンロードされます。このドライバーにより、クライアントは、 正しく構成された iSeries または AS/400 上の、DB2/400 データにアクセスできます。
別の JDBC ドライバーが必要な場合は、 リモート・データベース・サーバーの管理者と連絡を取ってドライバーを取得してください。ドライバーを Host On-Demand クライアント・ワークステーションにデプロイするには、いくつかのアクションを実行する必要があります。
マクロ・エディターの「SQLQuery アクション (SQLQuery action)」ウィンドウの 「ドライバー ID (Driver Identifier)」リスト・ボックスで Host On-Demand で提供されるドライバーを選択するか、 別のドライバーを使用する場合には「その他 (Other)」を選択します。
「ドライバー・クラス (Driver Class)」フィールドには、 ドライバーの完全修飾 Java クラス名が入ります。Host On-Demand で提供されるドライバーを選択する場合、マクロ・エディターは 「ドライバー・クラス (Driver Class)」フィールドにクラス名 (com.ibm.as400.access.AS400JDBCDRIVER) を表示します。 このクラス名を変更することはできません。一方、「ドライバー ID (Driver Identifier)」リスト・ボックスで「その他 (Other)」を選択する場合は、 「ドライバー・クラス (Driver Class)」フィールドにドライバーの完全修飾クラス名を入力する必要があります。完全修飾クラス名が分からない場合は、 ドライバーのプロバイダーにお問い合わせください。名前を入力する場合は、大/小文字に注意してください (例えば、com と COM は異なります)。
「ドライバー ID (Driver Identifier)」リスト・ボックスの選択可能なドライバーのリストにドライバーを追加する場合 (毎回「その他 (Other)」を選択してクラス名を入力しないようにする場合) は、 ドライバーを Host On-Demand に登録できます (オンライン・ヘルプの『JDBC ドライバーの登録 (Registering a JDBC driver)』を参照)。
データベース接続でユーザー ID とパスワードが必要な場合は、 「ユーザー ID (User ID)」フィールドにユーザー ID、「パスワード (Password)」フィールドにパスワードを入力します。
Host On-Demand は、「パスワード (Password)」フィールドに入力するキー・シーケンスを暗号化します。この暗号化は、 入力アクションで「パスワード (Password)」チェック・ボックスを選択する場合に使用される暗号化とまったく同じ方法で機能します (パスワードを参照)。 要確認:
「ステートメント (Statement)」フィールドに、SQL ステートメントを入力するか貼り付けます。「ステートメント (Statement)」フィールドに SQL ステートメントがすでに含まれている場合は、(SQL ウィザードを使用して SQL ステートメントがインポートまたは作成されている場合でも) 編集できます。
マクロ・エディターは、SQL ステートメントの形式の妥当性をチェックしません。 形式が無効の場合、マクロ・ランタイムが SQLQuery アクションを処理するときにランタイム・エラーが発生します。
SQL ステートメントに精通していない場合は、Database On-Demand セッションでステートメントを作成およびテストしてから、 そのステートメントを「ステートメント (Statement)」フィールドにコピーして貼り付けると良いでしょう。これにより、SQL ステートメントの構文 および内容が正しいものになります。
SQL ステートメントは、複数行にまたがって書き込むことも (Database On-Demand セッションの「検討 (Review)」タブに表示される場合のように)、1 行に書き込むこともできます。図 38 および図 39 は、 複数行にまたがって書き込まれた SQL ステートメントと、1 行に書き込まれた SQL ステートメントを示しています。どちらも正しい方法です。
SELECT
*
FROM
HODTEST.EX01
WHERE
(
( HODTESET.EX01.DESCRIPT is not null )
)SELECT * FROM HODTEST.EX01 WHERE((HODTESET.EX01.DESCRIPT is not null))拡張マクロ形式を使用する場合、SQL ステートメントを単一引用符で囲み、 特殊文字の規則に従う必要があります (基本マクロ形式と拡張マクロ形式の比較を参照)。下記の図 40 および 図 41 は、 基本マクロ形式用と拡張マクロ形式用の同じ SQL ステートメントを示しています。
select * from hodtest.ex01 where
((hodtest.ex01.descript='Edit Products'))'select * from hodtest.ex01 where
((hodtest.ex01.descript=¥'Edit Products¥'))'予約語 (select など) や、データベース名およびフィールド (hodtest.ex01.descript など) には 大文字でも小文字でも使用できますが、マッチング・ストリング ('Edit Products' など) には 大/小文字をその通りに使用する必要があります。したがって、図 42 の 2 つの SQL ステートメントは同等です。
select * from hodtest.ex01 where
((hodtest.ex01.descript='Edit Products'))
SELECT * FROM HODTEST.EX01 WHERE
((HODTEST.EX01.DESCRIPT='Edit Products'))結果セクションのフィールドは、SQL ステートメントで生成されるデータを SQLQuery アクションが使用する方法を制御します。データはグローバル変数に書き込んだり、 ファイルに書き込んだり、表示することができます。
SQLQuery アクションで生成されるデータのデフォルト宛先は、 グローバル変数 $HMLSQLUtil$ です。「結果の出力先 (Output Result To)」リスト・ボックスで 「ファイル」または「モニター (Display)」を宛先に指定した場合でも、Host On-Demand ランタイムは、常に 正常な SQLQuery アクションの結果でこの変数を更新します。 例えば、「ファイル」を宛先に指定すると、Host On-Demand は次のようにします。
したがって、同じデータベース照会を 2 回行うことなく、データをファイルに書き込む (または表示する) と同時に、 データをマクロで使用することができます。
データを $HMLSQLUtil$ だけに 格納するには、 「結果の出力先 (Output Result To)」リスト・ボックスを展開して、「$HMLSQLUtil$」をクリックします。
後続のマクロ・アクションで、$HMLSQLUtil$ に格納されたデータを使用するには、$HMLSQLUtil$ に関連付けられた Host On-Demand マクロ・ユーティリティー・ライブラリー (HML ライブラリー) から メソッドを起動する必要があります。$HMLSQLUtil$を参照してください。
データをファイルに書き込むには、「結果の出力先 (Output Result To)」リスト・ボックスを展開して「ファイル」をクリックします。
「ファイル名」リスト・ボックスに、ファイル・パスを入力します。 (ファイル・パスはストリングであるため、 適切なマクロ形式 (基本または拡張) でストリングを入力してください)。または、「ブラウズ (Browse)」をクリックしてファイルを参照します。 注: このフィールドには、ドライブ名 (あれば) を含めた完全なファイル・パスおよびファイル名を指定する必要があります (例えば、c:¥Documents and Settings¥User1¥output.txt)。
「ファイル・タイプ」リスト・ボックスで、 データを格納するファイルのタイプをクリックします。このリスト・ボックスには、Database On-Demand クライアントで 使用できるのと同じデータベース・ファイル・タイプがリストされます。
「上書き (Overwrite)」をクリックして既存ファイルの内容を上書きするか、 「付加 (Append)」をクリックして既存ファイルにデータを付加します。ファイルが存在しない場合は、 上書きまたは付加操作で新規ファイルが作成されます。
「Web ブラウザーで表示 (Show in Web browser)」チェック・ボックスを選択すると、Host On-Demand は データをファイルに書き込んでファイルを閉じてから、 ファイルをデフォルトのブラウザーで表示します。ブラウザーには、 ファイル・タイプ用の (Microsoft Excel BIFF3 または BIFF4 など) プラグイン (例えば、Excel プラグイン) が必要です。 一部のブラウザーでは、ブラウザーのセキュリティー設定を構成し、Java アプレットまたはアプリケーションがブラウザーのインスタンスを起動して ローカル・ファイルを表示できるようにする必要があります (オンライン・ヘルプの 『ローカル・ファイルを表示するブラウザーの構成 (Configuring a browser to display a local file)』を参照)。
データを表示するには、「結果の出力先 (Output Result To)」リスト・ボックスを展開して 「モニター (Display)」をクリックします。このオプションを選択すると、 マクロ・ランタイムはデータを「照会結果 (Query Results)」ダイアログ内に表示します。
「出力ダイアログで待機 (Hold on output dialog)」チェック・ボックスは、 「照会結果 (Query Results)」ダイアログの表示後に、マクロ・ランタイムが次のマクロ・アクションの処理に即時に進むかどうかを制御します。
どちらの場合も、「照会結果 (Query Results)」ダイアログは、 エンド・ユーザーが閉じる (「閉じる (Close)」または「閉じてから継続 (Close and Continue)」をクリックする) まで開いたままです。
表 19 は、各ボタンごとに名前、機能、 およびボタンの表示に影響を与える「出力ダイアログで待機 (Hold on output dialog)」チェック・ボックスの設定を 示しています。
| ボタン名: | 機能: | 「出力ダイアログで待機 (Hold on output dialog)」チェック・ボックスの設定: |
|---|---|---|
| 結果の保管 (Save Results) |
|
選択またはクリア |
| 閉じる (Close) |
|
クリア |
| 継続 (Continue) |
|
選択 |
| 閉じてから継続 (Close & Continue) |
|
選択 |
デプロイメント・ウィザードで、データベースにアクセスするために Host On-Demand クライアントがプリロードする マクロ・コンポーネントを指定できます。オンライン・ヘルプの『プリロード・オプション (Features1) (Preload Options (Features1))』 を参照してください。
トレース・アクションは、Java コンソールなど、指定したトレース宛先に トレース・メッセージを送ります。
「トレース・ハンドラー (Trace Handler)」リスト・ボックスを使用して、 トレース・メッセージを送信するトレース宛先を指定します。
トレース宛先に送るストリングを指定するには、「トレース・テキスト (Trace Text)」入力フィールドを使用します。
次の例では、トレース・メッセージを Java コンソールに送る方法を 示します。 この例では、トレースと変数更新のアクション・エレメントを使用します。
このマクロ・スクリプトのテキストを本書からシステム・クリップボードにコピーし、 システム・クリップボードからコード・エディターにコピーできます (本書からコード・エディターへのスクリプトのコピー・アンド・ペーストを参照)。 このスクリプトをマクロ・エディターに保管した後、マクロ・エディターまたはコード・エディターを使用してスクリプトを編集できます。
この例については、次の点に注意してください。
<HAScript name="TRACE" description=" " timeout="60000" pausetime="300"
promptall="true" author="" creationdate="" supressclearevents="false"
usevars="true" ignorepauseforenhancedtn="false"
delayifnotenhancedtn="0">
<vars>
<create name="$strData$" type="string" value="’Original value’" />
</vars>
<screen name="Screen1" entryscreen="true" exitscreen="false" transient="false">
<description>
<oia status="NOTINHIBITED" optional="false" invertmatch="false" />
</description>
<actions>
<trace type="SYSOUT" value="’The value is ’+$strData$" />
<varupdate name="$strData$" value="’Updated value’" />
<trace type="SYSOUT" value="’The value is ’+$strData$" />
</actions>
<nextscreens timeout="0" >
</nextscreens>
</screen>このスクリプトにより、マクロ・ランタイムは次のデータを Java コンソール に送ります。
The value is +{$strData$ = Original value}
The value is +{$strData$ = Updated value}上記のトレース出力の 中で、$strData$ の値を単に表示する代わりに、デバッグ・アクションが変数の 名前とその値の両方を中括弧 {} の中に表示している点に注意してください。
ユーザー・トレース・イベントの設定を利用するには、Host Access Toolkit 製品が 別途必要です。 MacroRuntimeListener インターフェースをインプリメントする必要があります。 マクロ・ランタイムは、次のタイプの発生に関するイベント を MacroRuntimeListeners に送ります。
<varupdate> エレメントは、変数に値を格納します。 次の項目を指定する必要があります。
マクロの再生中に、マクロ・ランタイムは変数更新アクションを 実行して、指定の値を指定の変数に格納します。
<description> エレメント内で変数更新アクションを使用することも できます (記述内の変数更新アクションの処理を参照)。
値には演算式を使用でき、また変数とインポートしたメソッドの呼び出しを 値に含めることができます。 値が式の場合、マクロの再生中にマクロ・ランタイムは式を評価し、 結果の値を指定の変数に格納します。
変数更新アクションは、プログラミング言語の代入ステートメントと 同様に機能します。 Java プログラムでは、次のような代入ステートメントを書くことができます。
boolVisitedThisScreen = true;
intVisitCount = intVisitCount + 1;
dblLength = 32.4;
strAddress ="123 Hampton Court";変数更新アクションでは、「変数更新 (Variable Update)」ウィンドウ の「名前 (Name)」フィールドに式の左側 (変数) を入力し、 同じウィンドウの「値 (Value)」フィールドに式の右側 (値) を 入力します。 上記の Java 代入ステートメントに相当するものを作成するには、 次のように入力します。
| 「名前 (Name)」入力フィールド: | 「値 (Value)」入力フィールド: |
|---|---|
| $boolVisitedThisScreen$ | true |
| $intVisitCount$ | $intVisitCount$+1 |
| $dblLength$ | 32.4 |
| $strAddress$ | '123 Hampton Court' |
指定する値は、コンテキストに応じた正しいデータ型、またはその 型に変換可能なデータ型 (自動データ型変換を参照) に 属している必要があります。
変数更新アクションは、次の点で非常に便利です。
式について詳しくは、データ型、演算子、および式を参照してください。
変数更新アクションを使用したフィールド変数の更新は、 セッション・ウィンドウ内の 3270 または 5250 フィールド の内容を読み取り、フィールドの内容をストリングとして変数に 格納するために便利な方法です。
フィールド変数は、ストリング変数の一種です。フィールド変数は、 ストリング変数と同様にストリングを格納し、ストリング変数が有効である すべてのコンテキストでフィールド変数を使用できます。 ただし、フィールド変数にストリングが格納される方法について、 フィールド変数とストリング変数は異なっています。 フィールド変数に格納されるストリングは常に、マクロ・ランタイム が現行セッション・ウィンドウ内の 3270 または 5250 フィールドから 読み取ったストリングです。
変数更新アクションを使用してストリング変数を更新する際には、 「変数更新 (Variable update)」ウィンドウに次の情報を指定します。
マクロ・ランタイムが変数更新アクションを実行すると、 マクロ・ランタイムは次の処理を行います。
その後、ストリングが有効であるすべてのコンテキストでフィールド変数を 使用できます。例えば、次のようにフィールド変数を別のストリングと 連結できます。
'The field¥'s contents are'+ $fldPrintOption$
例として、次の特性を持つ 3270 または 5250 フィールド がセッション・ウィンドウに含まれているとします。
次の値を指定して変数更新アクションをセットアップします。
マクロ・ランタイムがこの変数更新アクションを実行すると、 マクロ・ランタイムはフィールドの内容全体を読み取り、内容を ストリングとして $fldData$ に格納します。 これで、フィールド変数 $fldData$ にはストリング 'Print VTOC information' が格納されます。
変数更新アクションにフィールド変数を使用する場合に、2 つの位置を 含む位置ストリングを指定できます。 この機能は、フィールドの内容の一部のみを読み取りたい場合に使用します。
「値 (Value)」フィールドに、最初の位置と 2 番目の位置をコロン (:) で 区切って入力します。 例えば、最初の位置が 5,14 で 2 番目の位置が 5,17 ならば、'5,14:5,17' と 入力します。
2 つの位置を指定する場合には、次のようになります。
例として、次の特性を持つ 3270 または 5250 フィールド がセッション・ウィンドウに含まれているとします。
また、次の値を指定して変数更新アクションをセットアップしたとします。
マクロ・ランタイムがこの変数更新アクションを実行すると、 マクロ・ランタイムはストリング 'VTOC' をフィールド から読み取り (最初の位置ストリングによって指定した位置から始まり、2 番目の 位置ストリングによって指定した位置まで続く)、ストリング 'VTOC' を $fldData$ に格納します。
2 番目の位置がフィールドの最後を越えている場合、マクロ・ランタイムは 最初の位置からフィールドの最後までストリングを読み取ります。 その後マクロ・ランタイムは、このストリングをフィールド変数に格納します。
Xfer アクション (「転送アクション」または「ファイル転送アクション」と 読む) は、ワークステーションからホストに、またはホストからワークステーション にファイルを転送します。
「転送方向 (Tranfer Direction)」リスト・ボックスには、 ファイルをワークステーションからホストに転送するか (「送信 (Send)」)、 ホストからワークステーションに転送するか (「受信 (Receive)」) を 指定する必要があります。 「式 (Expression)」を選択した場合は、実行時に Send また は Receive に解決される式を指定する必要があります (例えば、 変数 $strDirection$)。
表 21 に、「ホスト・ファイル名 (Host-File Name)」フィールドと 「ローカル・ファイル名 (Local-File Name)」フィールドで使用する必要がある値を示します。
| 転送方向: | 「ホスト・ファイル名 (Host-File Name)」フィールド: | 「ローカル・ファイル名 (Local-File Name)」フィールド: |
|---|---|---|
| 送信 (Send) | ファイルがホストに着信したときにファイルに割り当てる名前。 例えば、3270 ディスプレイ・セッションの場合は、 'trace1 txt a' | ホストに送信するファイルの名前。 例えば、'e:¥¥tm¥¥trace1.txt' |
| 受信 (Receive) | ワークステーション側で受け取るファイルの名前。 例えば、'january archive a' | ファイルがクライアントに着信した後でファイルに割り当てる名前。 例えば、'd:¥¥MyData¥¥january.arc' |
拡張マクロ形式を使用する場合、円記号 ¥ は特殊記号なので '¥¥' と 入力する必要があります (拡張マクロ形式のストリング表記規則を参照)。
通常、「転送前にクリア (Clear Before Transfer)」フィールドでは、3270 ディスプレイ・セッションの場合は true、5250 ディスプレイ・セッション の場合は false を使用する必要があります。
「タイムアウト (Timeout)」フィールドには、マクロ・ランタイム が転送を終了する前に待機するミリ秒数を設定する必要があります。 デフォルトは 10000 ミリ秒 (10 秒) です。この「タイムアウト (Timeout)」 フィールドにより、ファイルの転送に使用しているセッションが 突然切断されたためにマクロ・ランタイムがハングする状況を防止できます。 ファイルが非常に大きい場合や接続が低速の場合は、値を大きくする 必要が生じることがあります。
ご使用のホストが必要とする追加パラメーターがある場合は、 「オプション (Options)」フィールドを使用する必要があります。 これらのパラメーターは、ホスト・システムのタイプごとに異なります。 ホストが iSeries の場合、次のパラメーターを「オプション (Options)」フィールドに追加する必要があります。
USERID(myuserid) PASSWORD(mypassword)
ワークステーションの文字セットからホストの文字セットへの変換、 およびその逆の変換を行うためにマクロ・ランタイムが使用するコード・ページ (マッピング・ テーブル) を選択するには、「ローカル・コード・ページ (Local Code-page)」フィールド を使用する必要があります。 セッション構成に指定されているものと同じコード・ページ番号 (例: 437) を 選択する必要があります。
コード・エディターを使用して設定できる、BIDI セッション (アラビア語またはヘブライ語) 用の追加パラメーター があります (属性)。
「ホスト ID (Host ID)」フィールドを使用して、このアクションを実行するセッションを指定します。
参照されたセッションがアクティブである場合は、このセッションに任意の自動編集機能を使用できます (異なるセッションでの自動編集機能の使用を参照)。
次に、Xfer アクションの例を示します。
<actions>
<filexfer direction="send" pcfile="'c:¥¥myfile.txt'" hostfile="'myfile text A0'"
clear="true" timeout="10000" pccodepage="437" />
</actions>