フィールド変数に対する変数更新アクション

変数更新アクションを使用したフィールド変数の更新は、ホスト端末上の 3270 フィールドまたは 5250 フィールドの内容を読み取って変数にストリングとして格納できる便利な方法です。

フィールド変数は、ストリング変数の一種です。フィールド変数はマクロ・スクリプトの <vars> エレメントで定義されますが、初期値を持ちません。次のサンプルには、フィールド変数の例が含まれています。

<vars>
<create name=$intUpdate$" type="integer" value="3"/>
<create name="$strData$" type="string" value="'hello'"/>
<create name="$fieldVar$" type="field" />
</vars>

フィールド変数は、 ストリング変数と同様にストリングを格納し、ストリング変数が有効であるすべてのコンテキストでフィールド変数を使用できます。ただし、フィールド変数にストリングが格納される方法について、フィールド変数とストリング変数は異なっています。フィールド変数に格納されるストリングは、常に、マクロ・ランタイムが現行ホスト端末上の 3270 フィールドまたは 5250 フィールドから読み取ったストリングになります。

変数更新アクションを使用してストリング変数を更新する際には、次の情報を指定します。
  • フィールド変数の名前 (例: $fldTmp$)
  • 位置ストリング (例: '5,11') (位置ストリングは、ホスト端末上の行と列の位置を示す、コンマで区切られた 2 つの整数からなるストリングです)
マクロ・ランタイムが変数更新アクションを実行すると、 マクロ・ランタイムは次の処理を行います。
  1. 変数がフィールド変数であることを認識する。
  2. フィールド変数の更新に使用する位置ストリングを検索する。
  3. 現行ホスト端末上で、位置ストリングに指定されている行と列の位置を検出する。
  4. 現行ホスト端末上で、検出した行と列の位置にある 3270 フィールドまたは 5250 フィールドを識別する。
  5. 先行ブランクと末尾ブランクを含む、3270 または 5250 フィールドの 内容全体を読み取る。
  6. フィールドの内容全体をストリングとしてフィールド変数に格納する。
その後、ストリングが有効であるすべてのコンテキストでフィールド変数を 使用できます。例えば、次のようにフィールド変数を別のストリングと連結できます。
'The field\'s contents are'+ $fldPrintOption$
例えば、次の特性を持つ 3270 フィールドまたは 5250 フィールドがホスト端末上にあるとします。
  • 行 5、列 8 から始まる。
  • 行 5、列 32 で終わる。
  • 文字列が含まれる。 'Print VTOC information'
次の値を指定して変数更新アクションをセットアップします。
  • 「変数名」フィールドに、作成したばかりのフィールド変数の名前 $fldData$ を入力する。
  • 「値」フィールドに位置ストリング '5,11' を入力する。指定する必要がある行と列の位置は 1 つだけであることと、 その位置はフィールド内にあるどの行と列の位置でもよいことに注意してください。
マクロ・ランタイムがこの変数更新アクションを実行すると、 マクロ・ランタイムはフィールドの内容全体を読み取り、内容を ストリングとして $fldData$ に格納します。これで、フィールド変数 $fldData$ にはストリング 'Print VTOC information' が格納されます。