IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202 エレメント ........

250
IBM Host Access Transformation Services 拡張マクロ・ガイド バージョン 9.6 SA88-5381-02 IBM

Transcript of IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202 エレメント ........

Page 1: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

IBM Host Access Transformation Services

拡張マクロ・ガイド

バージョン 9.6

SA88-5381-02

IBM

Page 2: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203
Page 3: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

IBM Host Access Transformation Services

拡張マクロ・ガイド

バージョン 9.6

SA88-5381-02

IBM

Page 4: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

お願い

本書および本書で紹介する製品をご使用になる前に、 227 ページの『付録 B. 特記事項』に記載されている情報をお読みく

ださい。

お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示されたりする場合があります。

 

原典: SC27-5450-02IBM Host Access Transformation ServicesAdvanced Macro GuideVersion 9.6Eighth Edition (November 2017)

発行: 日本アイ・ビー・エム株式会社

担当: トランスレーション・サービス・センター

© Copyright IBM Corporation 2003, 2015.

Page 5: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

目次

図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv

第 1 部 マクロの開発 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

第 1 章 拡張マクロの紹介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3HATS で使用する場合の Host On-Demand マクロの適応 . . . . . . . . . . . . . . . . . . . . 3HATS でのマクロの操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7用語の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

第 2 章 マクロの構造. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11マクロ・スクリプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

XML エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11マクロ・スクリプトの概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

マクロ画面とそのサブコンポーネント . . . . . . . . . . . . . . . . . . . . . . . . . . 14アプリケーション画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14マクロ画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15マクロ画面の概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

第 3 章 データ・タイプ、演算子、および式 . . . . . . . . . . . . . . . . . . . . 17基本マクロ形式と拡張マクロ形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

ストリングと非英数字文字の表記 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17別の形式へのマクロの変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

標準データ・タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ブール・データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19整数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19倍精度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20ストリング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

フィールド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20値 null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20算術演算子および式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

演算式の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21ストリング連結演算子 (+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22条件演算子と論理演算子および式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22自動データ・タイプ変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

コンテキストの影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23ブールへの変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23整数への変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23倍精度への変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24ストリングへの変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24変換エラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

等価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24行または列の負の値の意味 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 . . . . . . . . . . . . . . . 27マクロ・ランタイム処理の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

例として使用されるシナリオ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27マクロ画面の処理ステージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

© Copyright IBM Corp. 2003, 2015 iii

Page 6: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ステージ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29プロセス全体の 3 ステージすべての概要 . . . . . . . . . . . . . . . . . . . . . . . . 30

ステージ 1: 次に処理するマクロ画面を決定する . . . . . . . . . . . . . . . . . . . . . . . 30ステップ 1(a): 有効な次画面のリストへのマクロ画面名の追加 . . . . . . . . . . . . . . . . . 31ステップ 1(b): 画面認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32ステップ 1(c): 有効な次画面のリストからの候補マクロ画面の名前の除去. . . . . . . . . . . . . . 34

ステージ 2: 選択された候補を新しい現行マクロ画面にする . . . . . . . . . . . . . . . . . . . 34ステージ 3: 新しい現行マクロ画面のアクションを実行する . . . . . . . . . . . . . . . . . . . 35

アクション後の遅延の挿入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35処理サイクルの繰り返し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36マクロの終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

第 5 章 画面記述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37用語の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37説明の記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

記録された説明が機能する理由 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38記録された記述子が提供するフレームワーク . . . . . . . . . . . . . . . . . . . . . . . 39

記述子の評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39プロセスの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39個々の記述子の評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40デフォルト結合メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40uselogic 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

記述子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43OIA 記述子 (<oia> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . . . 44「フィールド数」記述子 (<numfields> エレメント) . . . . . . . . . . . . . . . . . . . . . 44「入力フィールド数 (Number of Input Fields)」記述子 (<numinputfields> エレメント) . . . . . . . . 45ストリング記述子 (<string> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . 45カーソル記述子 (<cursor> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . 48属性記述子 (<attrib> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . . . 48条件記述子 (<condition> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . 48カスタム記述子 (<customreco> エレメント) . . . . . . . . . . . . . . . . . . . . . . . 49

変数更新アクション (<varupdate> エレメント) . . . . . . . . . . . . . . . . . . . . . . . 49説明内の変数更新アクションの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . 49uselogic 属性を使用した変数更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

第 6 章 画面認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51有効な次画面の認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51エントリー画面、終了画面、および一時画面 . . . . . . . . . . . . . . . . . . . . . . . . 51

エントリー画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51終了画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52一時画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

画面認識のタイムアウト設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54画面認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<HAScript> エレメントの timeout 属性 . . . . . . . . . . . . . . . . . . . . . . . . 54<nextscreens> エレメントの timeout 属性 . . . . . . . . . . . . . . . . . . . . . . . . 55

認識限界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55認識限度に達したことの判別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56認識限度に達したときのアクション . . . . . . . . . . . . . . . . . . . . . . . . . . 56

第 7 章 マクロ・アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . 59機能別のアクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59アクションの実行方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

ランタイムのコンテキスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59マクロ画面のコンテキスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59アクションのパラメーターの指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

iv IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 7: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

通信待機アクション (<commwait> エレメント) . . . . . . . . . . . . . . . . . . . . . . 60条件アクション (<if> エレメントおよび <else> エレメント) . . . . . . . . . . . . . . . . . . 61抽出アクション (<extract> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . 63入力アクション (<input> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . 66マウス・クリック・アクション (<mouseclick> エレメント) . . . . . . . . . . . . . . . . . . 72一時停止アクション (<pause> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . 72実行アクション (<perform> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . 72PlayMacro アクション (<playmacro> エレメント) . . . . . . . . . . . . . . . . . . . . . 74プロンプト・アクション (<prompt> エレメント). . . . . . . . . . . . . . . . . . . . . . 76SQLQuery アクション (<sqlquery> エレメント) . . . . . . . . . . . . . . . . . . . . . . 78トレース・アクション (<trace> エレメント) . . . . . . . . . . . . . . . . . . . . . . . 79変数更新アクション (<varupdate> エレメント) . . . . . . . . . . . . . . . . . . . . . . 80

第 8 章 タイミングの問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85マクロのタイミングおよび遅延特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

各エレメントおよび属性の役割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85HATS マクロ処理エンジンがこれらのタイミング・エレメントと属性を使用する方法. . . . . . . . . . 86画面のアクションの完了後に発生するもの . . . . . . . . . . . . . . . . . . . . . . . . 88マクロ・エンジン処理の高水準なテキスト・フロー . . . . . . . . . . . . . . . . . . . . . 88

アクション後の一時停止 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89アクションの処理速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89pausetime 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89pause 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90特定のアクションの後に一時停止を追加する . . . . . . . . . . . . . . . . . . . . . . . 90

画面の完了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90次のマクロ画面の認識が早すぎる . . . . . . . . . . . . . . . . . . . . . . . . . . . 90画面の完了に関係する属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

第 9 章 変数とインポートした Java クラス . . . . . . . . . . . . . . . . . . . . 97HATS 変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

グローバル変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97マクロ変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

マクロ変数とインポート済みタイプの概要 . . . . . . . . . . . . . . . . . . . . . . . . . 98拡張マクロ形式が必要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98変数の有効範囲 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98変数の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Java クラスのインポート済みタイプを作成 . . . . . . . . . . . . . . . . . . . . . . . . 99

一般的な問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Java ライブラリーまたはクラスの配置 . . . . . . . . . . . . . . . . . . . . . . . . . 100変数名とタイプ名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101マクロ間での変数の転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101フィールド変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

変数の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102標準タイプに属する変数の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 102インポート済みタイプに属する変数の使用 . . . . . . . . . . . . . . . . . . . . . . . . 103同じインポート済みタイプの変数の比較 . . . . . . . . . . . . . . . . . . . . . . . . 104

Java メソッドの呼び出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105メソッド呼び出しを使用できる個所 . . . . . . . . . . . . . . . . . . . . . . . . . . 105メソッド呼び出しの構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105マクロ・ランタイムが呼び出し先メソッドを検索する方法 . . . . . . . . . . . . . . . . . . 105

Macro Utility Libraries (HML ライブラリー) . . . . . . . . . . . . . . . . . . . . . . . 106HML ライブラリーに属するメソッドの呼び出し . . . . . . . . . . . . . . . . . . . . . 107HML で始まる変数名は予約済み . . . . . . . . . . . . . . . . . . . . . . . . . . . 107$HMLFormatUtil$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107$HMLPSUtil$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109$HMLSessionUtil$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

目次 v

Page 8: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

$HMLSQLUtil$. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116FormatNumberToString() および FormatStringToNumber() . . . . . . . . . . . . . . . . . . 118

第 10 章 Visual Macro Editor . . . . . . . . . . . . . . . . . . . . . . . . . 119新規マクロの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119エディターの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

設計タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121パレット・ビュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123統合端末 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124ソース・タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

マクロの操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125マクロのプロパティーの編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125マクロの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

画面の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126マクロ画面のプロパティーの編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . 126マクロ画面の追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128マクロ画面を画面キャプチャーに関連付ける . . . . . . . . . . . . . . . . . . . . . . . 128画面のプレビュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129デフォルト画面認識基準 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129画面の切り取り、削除、コピー、貼り付け . . . . . . . . . . . . . . . . . . . . . . . . 129

アクションの操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132アクションの追加と編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132アクションの非表示および表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . 133アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134カスタム・アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Evaluate (If) アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134抽出アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135「すべて抽出」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139「入力」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140「一時停止」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141「実行」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141「マクロを実行」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141「プロンプト」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142「すべてにプロンプト」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . 145「カーソル位置を設定」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . 145「トレース」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145「マクロ変数の更新」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

次の画面接続の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146次の画面接続をパレットから追加する . . . . . . . . . . . . . . . . . . . . . . . . . 146次の画面接続の再配列と変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

VME の設定の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

第 11 章 拡張マクロ・エディター . . . . . . . . . . . . . . . . . . . . . . . . 149エディターの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

マクロ・タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150「画面」タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152リンク・タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163「変数 (Variables)」タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

アクションの操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169通信待機アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170条件付きアクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170抽出アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171「入力」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173マウス・クリック・アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . 173「一時停止」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174「実行」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

vi IBM Host Access Transformation Services: 拡張マクロ・ガイド

||

Page 9: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

Playmacro アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174「プロンプト」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175SQLQuery アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178「トレース」アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184変数更新アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

第 2 部 Host On-Demand マクロ言語 . . . . . . . . . . . . . . . . . . . . 185

第 12 章 マクロ言語の機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . 187構文と編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

Host On-Demand マクロ言語の XML 構文 . . . . . . . . . . . . . . . . . . . . . . . 187ソース表示編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

エレメントの階層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188マクロ・スクリプトへのコメントの挿入 . . . . . . . . . . . . . . . . . . . . . . . . . 189

コメント・エラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190コメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

<trace> エレメントを使用したマクロ・スクリプトのデバッグ . . . . . . . . . . . . . . . . . . 190

第 13 章 マクロ言語エレメント . . . . . . . . . . . . . . . . . . . . . . . . . 193属性の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

XML 要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193属性値の拡張形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193タイプ付きデータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

<actions> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

<attrib> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

<comment> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196コメントを挿入する代替方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

<commwait> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

<condition> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

<create> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

<cursor> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

<custom> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

<customreco> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

<description> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

<else> エレメント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

目次 vii

Page 10: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202<extract> エレメント. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

<HAScript> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

<if> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

<import> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

<input> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

<mouseclick> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

<nextscreen> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

<nextscreens> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

<numfields> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

<numinputfields> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

<oia> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

<pause> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

<perform> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

<playmacro> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

<prompt> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

<recolimit> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

<screen> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

<sqlquery> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

<string> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

viii IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 11: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

<trace> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

<type> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

<vars> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

<varupdate> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

付録 A. 追加情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2231 つのマクロ画面における複数の記述子のデフォルト規則 . . . . . . . . . . . . . . . . . . . 223入力アクションの略号キーワード . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

付録 B. 特記事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227プログラミング・インターフェース情報 . . . . . . . . . . . . . . . . . . . . . . . . . 228商標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

目次 ix

Page 12: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

x IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 13: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

1. 単純なマクロ構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62. サンプル XML エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123. 省略形式で書かれたサンプル XML エレメント . . . . . . . . . . . . . . . . . . . . . 124. マクロ・スクリプトの概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . . 135. サンプル・アプリケーション画面「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option

Menu)」 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146. <screen> エレメントの概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . 167. 「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」. . . . . . . . . 278. 「Utility Selection Panel」アプリケーション画面 . . . . . . . . . . . . . . . . . . . . . 289. <description> エレメントの uselogic 属性の例 . . . . . . . . . . . . . . . . . . . . . 42

10. アプリケーション画面の行 14 から 18 . . . . . . . . . . . . . . . . . . . . . . . . 4711. ScreenB の <description> エレメント . . . . . . . . . . . . . . . . . . . . . . . . 5012. 画面認識タイムアウトのエラー・メッセージ . . . . . . . . . . . . . . . . . . . . . . 5513. ホスト端末に表示されるエラー・メッセージ . . . . . . . . . . . . . . . . . . . . . . 5514. 通信待機アクションの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6115. 条件アクションを示すサンプル・コード . . . . . . . . . . . . . . . . . . . . . . . . 6316. 暗号化されていない入力キー・シーケンスが入っている <input> エレメント . . . . . . . . . . . 6817. 暗号化された入力キー・シーケンスが入っている <input> エレメント . . . . . . . . . . . . . . 6818. 実行アクションの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7419. PlayMacro アクションの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7620. サンプル・コード TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8021. pausetimevalue の例 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8722. pausetimevalue の例 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8723. 注意喚起メッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9824. サンプル <vars> エレメント. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9925. インポート済みタイプとそのタイプの変数 . . . . . . . . . . . . . . . . . . . . . . . 10026. HML メソッドを呼び出す場合の例 . . . . . . . . . . . . . . . . . . . . . . . . . 10727. numberToString() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10828. stringToNumber() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10929. 表示スペースでの行と列の位置の対応 . . . . . . . . . . . . . . . . . . . . . . . . 11030. 行 1、列 1 に「Message」が表示される場合のレイアウト . . . . . . . . . . . . . . . . . 11131. convertPosToCol() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11232. convertPosToRow() の例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11233. enableRoundTrip() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11234. getCursorCol() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11235. getCursorPos() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11336. getCursorRow() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11337. getSize() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11338. getSizeCols() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11339. getSizeRows() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11440. getString() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11441. searchString() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11442. getHost() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11543. getLabel() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11544. getName() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11645. getColumnSize() の例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11746. getDataByIndex() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11747. getDataByName() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11848. getRowSize() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11849. Visual Macro Editor のパーツ. . . . . . . . . . . . . . . . . . . . . . . . . . . 120

© Copyright IBM Corp. 2003, 2015 xi

Page 14: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

50. Visual Macro Editor の設計タブ . . . . . . . . . . . . . . . . . . . . . . . . . . 12151. Visual Macro Editor のパレット・ビュー . . . . . . . . . . . . . . . . . . . . . . . 12352. Visual Macro Editor の統合端末 . . . . . . . . . . . . . . . . . . . . . . . . . . 12453. 画面の削除の例 - 切り取りまたは削除前 . . . . . . . . . . . . . . . . . . . . . . . 13054. 画面の削除の例 - 切り取りまたは削除後 . . . . . . . . . . . . . . . . . . . . . . . 13055. 画面コピーの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13156. 画面の貼り付けの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13257. Visual Macro Editor のアクション . . . . . . . . . . . . . . . . . . . . . . . . . 13358. 画面アクションを非表示にする . . . . . . . . . . . . . . . . . . . . . . . . . . 13359. 画面アクションの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13460. 拡張マクロ・エディター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15061. AME のマクロ・タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15162. サンプル <HAScript> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . 15263. 「画面」タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15364. <screen> エレメントの開始タグと終了タグ . . . . . . . . . . . . . . . . . . . . . . 15465. サンプル XML <screen> エレメント . . . . . . . . . . . . . . . . . . . . . . . . 15566. 「説明」タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15667. 実際の記述子が 1 つある「記述子 (Descriptor)」リスト・ボックスの内容 . . . . . . . . . . . . 15768. 実際の記述子が 2 つある「記述子 (Descriptor)」リスト・ボックスの内容 . . . . . . . . . . . . 15769. 3 つのディスクリプターを持つ <description> エレメント . . . . . . . . . . . . . . . . . 15970. アクション・タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16171. 作成済みアクションがない状態での「アクション」リスト・ボックスのリストの内容 . . . . . . . . 16272. 実際のアクションが 1 つある状態での「アクション」リスト・ボックスのリストの内容 . . . . . . . 16373. リンク・タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16374. <nextscreens> エレメントがあるマクロ画面 ScreenR . . . . . . . . . . . . . . . . . . . 16575. 「変数 (Variables)」タブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16676. インポート済みタイプを宣言した後の「タイプ」リスト・ボックスの内容 . . . . . . . . . . . . 16777. 複数行にまたがって書き込まれた SQL ステートメント . . . . . . . . . . . . . . . . . . 18178. 1 行に書き込まれた同じ SQL ステートメント . . . . . . . . . . . . . . . . . . . . . 18179. 基本マクロ形式で作成された SQL ステートメント . . . . . . . . . . . . . . . . . . . . 18280. 拡張マクロ形式用の同じ SQL ステートメント . . . . . . . . . . . . . . . . . . . . . 18281. 同等の大文字および小文字の例 . . . . . . . . . . . . . . . . . . . . . . . . . . 18282. HATS でサポートされる Host On-Demand マクロ言語のエレメントの階層 . . . . . . . . . . . 18983. <trace> エレメントの使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19184. <trace> エレメントの使用例の出力 . . . . . . . . . . . . . . . . . . . . . . . . . 19185. <actions> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19586. <attrib> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19587. <comment> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19688. <commwait> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19789. <condition> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19890. <create> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19891. <cursor> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19992. <custom> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20093. <customreco> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20194. <description> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20195. <else> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20296. <extract> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20397. <HAScript> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20598. <if> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20699. <import> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

100. <input> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208101. <mouseclick> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 208102. <nextscreen> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 209103. <nextscreens> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 209104. <numfields> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 210105. <numinputfields> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . 211

xii IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 15: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

106. <oia> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211107. <pause> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212108. <perform> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212109. <playmacro> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 213110. <prompt> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215111. <recolimit> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 215112. <screen> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216113. <sqlquery> エレメントの例. . . . . . . . . . . . . . . . . . . . . . . . . . . . 217114. <string> エレメントの例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218115. <trace> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219116. <type> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220117. <vars> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220118. <varupdate> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

図 xiii

Page 16: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

xiv IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 17: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

1. 用語の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82. 算術演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213. 条件演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224. 論理演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225. 行の負の値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256. 列の負の値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257. マクロ画面 Screen1 の内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288. マクロ画面 Screen2 の内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299. uselogic 属性の論理演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

10. 記述子のタイプ、各タイプで使用できる数 . . . . . . . . . . . . . . . . . . . . . . . 4311. 変数名と値の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8112. マクロ・ランタイムがマクロのデータ・タイプを Java データ・タイプにマップする方法 . . . . . . . 10513. HML 変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10614. $HMLFormatUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . 10715. $HMLPSUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . . . 10916. 表示スペースに関連する値を計算するための公式 . . . . . . . . . . . . . . . . . . . . 11117. $HMLSessionUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . 11518. $HMLSQLUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . . 11619. 結果を含む 2 次元配列の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11620. 3 つのタイプの <description> エレメント記述子 . . . . . . . . . . . . . . . . . . . . 15821. 「OIA が禁止解除になるのを待つ (Wait for OIA to Become Uninhibited)」ディスクリプターの有効な設

定値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16022. 変数のデフォルト初期値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16723. 通信状態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17024. 入力アクションのキーワード . . . . . . . . . . . . . . . . . . . . . . . . . . . 22325. 入力アクションの双方向キーワード . . . . . . . . . . . . . . . . . . . . . . . . . 225

© Copyright IBM Corp. 2003, 2015 xv

Page 18: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

xvi IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 19: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 1 部 マクロの開発

© Copyright IBM Corp. 2003, 2015 1

Page 20: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

2 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 21: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 1 章 拡張マクロの紹介

開発者は、Host Access Transformation Services (HATS) Toolkit を使用して、HATS アプリケーションにマクロを組み込むことができます。「HATS ユーザーと管理者のガイド」では、HATS でのマクロの使用法を紹介し、基本マクロの作成および変更方法を説明しています。このマニュアルでは、Visual Macro Editor(VME) と 拡張マクロ・エディター (AME) を使用してマクロに組み込むことが可能な拡張マクロ機能について説明します。これらのツールにはグラフィカル・ユーザー・インターフェースが組み込まれており、これを使用してユーザーは、各画面のホスト・アプリケーションとの対話を変更したり、機能を追加したりすることができます。

これらのエディターを使用して、HATS マクロに対して次の変更のいずれかを行います。

v 新規プロンプト、マウス・クリック、条件付きアクションなどのアクションを追加する。

v マクロの画面認識動作とユーザー入力を編集および拡張する。

v マクロへのより高度な動作 (1 つのアプリケーションでの複数の代替パスからの選択など) を追加する。

注: Macro Editor および Advanced Macro Editor のサポートは、HATS V9.6 では非推奨になりました。現在までサポートされていましたが、IBM はこれ以降の製品リリースでこの機能を削除することができます。このサポートは VisualMacro Editor で置き換えられました。

HATS で使用する場合の Host On-Demand マクロの適応本資料では、Host On-Demand マクロ言語とその使用法について説明します。本資料は「Host On-Demand マクロ・プログラミング・ガイド バージョン 10」からの抜粋であり、マクロの実装および HATS 内でのエディターの使用に合わせてセクションが変更されています。このセクションでは、HATS 内で使用するために HostOn-Demand マクロを適合させる方法について説明します。

Host On-Demand 環境でのマクロは通常、ユーザーのワークステーションで実行されます。マクロは、HATS リッチ・クライアント環境では一般的にユーザーのワークステーションで実行されますが、HATS Web 環境では一般的に中央サーバーで実行されます。 このような違いにより、HATS ではマクロで使用するデータについてのプロンプトを出す方法も別にする必要があります。このマニュアルでは、ユーザーのワークステーションでプロンプト・パネルを開く方法について説明しますが、HATS では行われません。代わりに HATS は、HATS グローバル変数、ユーザー・リスト、HATS 統合オブジェクトの入力プロパティー、またはユーザーのワークステーションに送信される HTML 入力フォームを使用してユーザーから、マクロ・プロンプトのデータを検索します。同様に、ホスト画面から抽出されたデータは、HATS ユーザーのワークステーション上に即座に表示することはできません。その代わりデータは、HATS グローバル変数にコピー、HATS 統合オブジェクトの

© Copyright IBM Corp. 2003, 2015 3

Page 22: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

出力プロパティーにコピー、または HTML ページ内でユーザーのワークステーションに送信されます。 HATS ランタイムのマクロ・エンジンによってこれら追加のマクロ対話機能を提供できるようにするため、HATS Toolkit は、HATS Toolkitとランタイムにマクロ・スクリプトについての追加情報を提供する XML の別のレイヤーで各 Host On-Demand マクロ・スクリプトをカプセル化します。

このマニュアルで説明する Host On-Demand マクロ・スクリプトは、<HAScript>タグで始まり、</HAScript> タグで終わります。HATS では、各 HostOn-Demand マクロ・スクリプトが <macro> 開始タグと </macro> 終了タグの内側にラップされます。<macro> タグには、次の 4 つのエレメントがあります。

v <associatedConnections> タグは、このマクロに関連付ける接続定義を定義します。

– これにより、HATS アプリケーションをビルドおよび構成するときに、Toolkit でマクロ名のドロップダウン・リストを作成できるようにします。

– このエレメントは、HATS ランタイム・マクロ・エンジンにより無視されます。

v <extracts> タグは、HATS マクロ・エンジンに対して、マクロの実行中にホスト画面から抽出されるデータの処理方法を定義します。このエレメント内の情報は、マクロを使用して統合オブジェクトを作成する場合に、作成される統合オブジェクトの出力プロパティーのサイズとタイプを示すためにも使用されます。

– マクロを実行アクションまたはマクロ・トランザクションを実行アクションによってマクロが再生される場合は、このエレメントによって、抽出データをグローバル変数に保管するか、または HTML ページによりユーザーのワークステーションに送信するかどうかが制御されます。

– このマクロが HATS ランタイムのマクロ・エンジンの外部で再生される場合、このエレメントは無視されます。例えばマクロを、HATS 統合オブジェクトを介して Web サービスとして、EJB として、または JSP ページのセットとして実行する場合、抽出されたデータは統合オブジェクトの出力プロパティーにコピーされ、これにより、それぞれ Web サービス、EJB AccessBean、または JSP ページで使用可能になります。

– <extracts> タグはランタイムに統合オブジェクトによって使用されることはありませんが、<extracts> タグを使用して HATS マクロから統合オブジェクトを作成する方法を選択できます。特に、統合オブジェクトの出力プロパティーの構造は、このエレメントによって決まります。<extracts> エレメント内の情報は、Host On-Demand マクロ・スクリプト自体に含まれる実際の<extract> アクションと一致している必要があります。それ以外の場合は、ランタイムに抽出されるデータが統合オブジェクトの出力プロパティーに正しく適合せず、データを失う可能性があります。<extracts> タグには、データの各列の名前、幅、およびエレメント数が記録されるので、この点はデータのテーブルを抽出する場合に特に重要になります。Host On-Demand マクロの <extract> タグは同じ領域を示し、列出力プロパティーへのデータの構文解析が正しく実行されるようにする必要があります。

v <prompts> タグには、HATS マクロ・エンジン用として、マクロの実行を完了するために必要なデータの処理方法が記述されます。このエレメント内の情報は、マクロを使用して統合オブジェクトを作成する場合に、作成される統合オブジェクトの入力プロパティーのサイズとタイプを示すためにも使用されます。

4 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 23: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

– HATS マクロ・エンジンが画面のカスタマイズ中に (マクロを実行アクションかマクロ・トランザクションを実行アクションを使用して) マクロを実行している場合、このエレメントは、必要なデータをグローバル変数から取得するか、指定されたストリング・リテラルから取得するか、または HTML ページによりエンド・ユーザーから要求されるようにするかどうかを制御します。

– このマクロが HATS ランタイムのマクロ・エンジンの外部で再生される場合、このエレメントは無視され、必要とされるすべてのデータはマクロが実行されている環境 (例えば、Web サービス、EJB、または統合オブジェクト)によって供給されます。

– <prompts> タグはランタイムに統合オブジェクトによって使用されることはありませんが、HATS マクロから統合オブジェクトを作成する方法を選択する場合には、<prompts> タグを使用します。特に、統合オブジェクトの入力プロパティーの構造はこのエレメントによって決まります。<prompts> エレメント内の情報は、Host On-Demand マクロ・スクリプト自体に含まれる実際の <prompts> アクションと一致している必要があります。それ以外の場合は、ランタイムに統合オブジェクトによって供給されるデータは、HostOn-Demand マクロの <prompt> アクションで必要とされるデータとしては不十分となり、マクロが正しく再生されなくなります。

v <HAScript> タグは、このマニュアルで説明する Host On-Demand マクロのスクリプトです。

次の例は、2 つの prompts と 1 つの extracts を含む単純なマクロの構造を示しています。

第 1 章 拡張マクロの紹介 5

Page 24: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 1 のサンプル・マクロは、マクロを実行するエンジンに応じて異なる方法でその環境と対話します。

<?xml version="1.0" encoding="UTF-8"?><macro>

<associatedConnections default="main"><connection name="main"/>

</associatedConnections><extracts>

<extract handler="default.jsp" index="-1" indexed="false"name="displayID" overwrite="true" save="true" separator=""showHandler="false" variableName="displayID"/>

</extracts><prompts>

<prompt handler="default.jsp" name="password" separator=""source="handler" value="" variableIndex="0"variableIndexed="false" variableName="" welApplID="" welIsPassword="false"/>

<prompt handler="default.jsp" name="userID" separator=""source="handler" value="" variableIndex="0"variableIndexed="false" variableName="" welApplID="" welIsPassword="false"/>

</prompts><HAScript author="" blockinput="false" creationdate=""

delayifnotenhancedtn="0" description=""ignorepauseforenhancedtn="false" name="SignOn" pausetime="300"promptall="true" supressclearevents="false" timeout="60000" usevars="false"><screen entryscreen="true" exitscreen="false" name="Screen1" transient="false">

<description uselogic="1 and 2"><oia invertmatch="false" optional="false" status="NOTINHIBITED"/><string casesense="false" col="35" invertmatch="false"

optional="false" row="1" value=" Sign On "/></description><actions>

<extract assigntovar="" continuous="false" ecol="79"erow="4" name="displayID" planetype="TEXT_PLANE"scol="70" srow="4" unwrap="false"/>

<prompt assigntovar="" clearfield="false" col="53"default="" description="" encrypted="false" len="10"movecursor="true" name="userID" required="false"row="6" title="" varupdateonly="false" xlatehostkeys="true"/>

<mouseclick col="53" row="7"/><prompt assigntovar="" clearfield="false" col="53"

default="" description="" encrypted="true" len="10"movecursor="true" name="password" required="false"row="7" title="" varupdateonly="false" xlatehostkeys="true"/>

<input col="0" encrypted="false" movecursor="true"row="0" value="[enter]" xlatehostkeys="true"/>

</actions><nextscreens timeout="0">

<nextscreen name="Screen2"/></nextscreens>

</screen><screen entryscreen="false" exitscreen="true" name="Screen2" transient="false">

<description uselogic="1 and (2 and 3 and 4)"><oia invertmatch="false" optional="false" status="NOTINHIBITED"/><cursor col="7" invertmatch="false" optional="false" row="20"/><numinputfields invertmatch="false" number="1" optional="false"/><string casesense="false" col="32" invertmatch="false"

optional="false" row="1" value=" i5/OS Main Menu " wrap="false"/></description><actions/><nextscreens timeout="0"/>

</screen></HAScript>

</macro>

図 1. 単純なマクロ構造

6 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 25: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v このマクロが、接続イベントにおいてマクロを実行アクションとしてランタイム・マクロ・エンジンにより再生される場合は、例えば、HTML 入力フォームによりユーザー ID とパスワードの入力を求めるプロンプトがユーザーに対して出され、5250 ワークステーションのディスプレイ ID が HATS グローバル変数displayID に保管されます。マクロの再生アクションについて詳しくは、「HATS ユーザーと管理者のガイド」を参照してください。

v 代わりにマクロが、JSP ページ、Web サービス、EJB Access Bean、または開発者が提供するビジネス・ロジックを使用して HATS 統合オブジェクトにより実行される場合は、実行されるときに統合オブジェクトの getUserID メソッドおよび getPassword メソッドに必要な値が存在していなければ、そのマクロは失敗します。これは、統合オブジェクトがそれ自体のマクロ・エンジンを供給し、そこにおいて、すべての prompts が統合オブジェクトの getter からデータを取得し、すべての extracts がデータを統合オブジェクトの setter に配置するためです。統合オブジェクトの入力プロパティーと出力プロパティーの名前とタイプは、それぞれ <prompts> エレメントと <extracts> エレメント内のデータによって決まります。統合オブジェクトについて詳しくは、「HATS ユーザーと管理者のガイド」を参照してください。

v また、上述のマクロは、接続エディターのマクロ・タブにある HATS 接続に関連付けられた接続マクロとしては実行されません。これは、接続マクロと切断マクロが、ランタイム・マクロ・エンジンではなく、HATS 接続管理サブシステムによって自動実行される特殊なマクロだからです。接続マクロで使用できるのは、その prompts のユーザー・リストのみです。接続マクロと切断マクロについて詳しくは、「HATS ユーザーと管理者のガイド」を参照してください。

HATS でのマクロの操作HATS Toolkit では、複数の異なる方法でマクロを操作できます。

v ホスト端末を使用して HATS Toolkit にマクロを記録できます。記録したマクロは、「マクロ」フォルダーの HATS プロジェクト表示にリストされます。詳しくは、「Host Access Transformation Services ユーザーと管理者のガイド」の章『マクロとホスト端末』を参照してください。

v マクロを編集するには、「HATS プロジェクト表示」でマクロ名をダブルクリックし、そのマクロのデフォルト・エディターを開きます。HATS マクロのデフォルト・エディターは Visual Macro Editor です。詳しくは、 119 ページの『第10 章 Visual Macro Editor』を参照してください。

v 基本 HATS マクロ・エディターを使用するには、マクロ名を右クリックし、「オープン先を指定」>「マクロ・エディター」を選択します。この方法でマクロの基本マクロ・エディターをオープンすると、基本マクロ・エディターがそのマクロのデフォルト・エディターになります。このエディターでは、下部にあるタブを使用して、マクロを何通りかの方法で操作できます。例えば、ソース表示を使用してマクロの XML ソースを編集できます。詳しくは、「Host AccessTransformation Services ユーザーと管理者のガイド」の章『マクロとホスト端末』を参照してください。

v 基本 HATS マクロ・エディターの「概要」ページで「拡張エディター」をクリックし、拡張マクロ・エディターを使用して、マクロを操作します。

第 1 章 拡張マクロの紹介 7

Page 26: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

用語の定義表 1 に、このマニュアルで使用されている用語をいくつか定義します。

表 1. 用語の定義

用語 定義

アクション アクションは、マクロの再生時にマクロ・ランタイムが実行しなければならないアクティビティー (ホストへの一連のキーの送信、ポップアップ・ウィンドウでのプロンプトの表示、画面からのテキスト・ブロックの取り込みなど) を指定した命令です。59 ページの『第 7 章 マクロ・アクション』を参照してください。注: マクロに含まれるアクションは、HATS イベントによって起動されるアクションと同じものではありません。

アプリケーション画面 アプリケーション画面は、ホスト・アプリケーションによってホスト端末上に表示される、意味のある文字配置です。 14 ページの『アプリケーション画面』を参照してください。

記述子 記述子は、アプリケーション画面の 1 つの特性を記述する命令です。記述子は、画面認識基準とも呼ばれています。 37 ページの『第 5 章 画面記述』を参照してください。

ホスト端末 マクロの記録や実行に使用される、HATS Toolkit からホスト・アプリケーションへの接続です。

マクロ・ランタイム マクロ・ランタイムは、マクロが開始時にマクロを再生するプログラム・モジュールです。具体的には、マクロ・ランタイムは、現行のマクロ・スクリプトの内容を読み取り、マクロの再生を生成します。

マクロ画面 マクロ画面は、特定のアプリケーション画面の個々のアクセスを管理する方法をマクロ・ランタイムに指示する、1 組の命令です。 15 ページの『マクロ画面』を参照してください。

マクロ・スクリプト マクロ・スクリプトは、マクロが保管される先の XML スクリプトです。マクロを再生すると、マクロ・ランタイムがスクリプト内の命令を実行します。 11 ページの『マクロ・スクリプト』を参照してください。

ソース表示 ソース表示は、マクロの XML ソースを表示するものです。

有効な次画面 有効な次画面は、マクロの再生時に処理対象の次のマクロ画面になる、有効なマクロ画面候補です。 29 ページの『マクロ画面の処理ステージ』を参照してください。

サンプル本書に記載されているマクロ・スクリプトをコピーして、新しいマクロを作成することができます。このセクションでは、開始指定子 <HAScript> から開始し、終了指定子 </HAScript> で終了する、マクロ・スクリプト全体をコピーすることを想定しています。この方法で新しいマクロを作成するには、次のステップを実行します。

1. HATS Toolkit で、HATS プロジェクトを選択し、ホスト端末をオープンする。

2. スクリプトのホルダーとして使用する単純なマクロを記録する。

8 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 27: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

a. 「マクロの記録」アイコンをクリックする。「マクロの記録」ウィザードが開く。

b. 「完了」をクリックしてデフォルト値を受け入れる。「画面認識基準の定義」ウィザードが開く。

c. 「完了」をクリックしてデフォルト値を受け入れる。ホスト端末ウィンドウのタイトル・バーに、「記録中...」と表示される。

d. 「マクロの停止」アイコンをクリックする。「画面認識基準の定義」ウィザードが開く。

e. 「完了」をクリックしてデフォルト値を受け入れる。

f. 「マクロを保存」アイコンをクリックする。

3. 記録したマクロを編集する。

a. HATS プロジェクト表示の「マクロ」フォルダーで、記録したマクロの名前をダブルクリックする。

b. エディターの下部にある「ソース (Source)」タブをクリックして、ソース表示をオープンする。

c. ソース表示で、<HAScript> で始まり </HAScript> で終わる行を削除する。

d. このマニュアルから、マクロ・スクリプトのテキスト全体をシステムのクリップボードにコピーする。

e. コピーしたマクロ・スクリプトをソース表示に貼り付ける。

f. 「ファイル」 > 「保存」をクリックして (または Ctrl+S を押して)、マクロ・スクリプトを保存する。

マクロは、どの HATS マクロ・エディターを使用しても、さらに編集できます。

注: このマニュアルのサンプルの中には、不完全なマクロ・スクリプトもあります。完全なマクロ・スクリプトは、<HAScript> エレメントで開始および終了し、省略符号は含まれていません (省略符号は、サンプル内の未表示情報を示します)。他のサンプルはマクロ・コード・スニペットであり、既存の完全なマクロ内部の適切な場所に貼り付ける必要があります。

第 1 章 拡張マクロの紹介 9

Page 28: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

10 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 29: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 2 章 マクロの構造

この章では、 XML マクロ・スクリプト内に見られるマクロの全般的な構造について説明します。

マクロ・スクリプトマクロ・スクリプトは、マクロの保管に使用される XML スクリプトです。マクロ・スクリプトの XML テキストは、VME または基本マクロ・エディターの「ソース」ビューを使用することによって表示および編集できます。

マクロ言語の XML エレメントについて少し学習すると、次のものを含めて、重要なトピックの理解がはるかに深まります。

v マクロ・エディターの使用方法

v マクロ再生の働き

v 有効なマクロの作成方法

このマニュアルでは、マクロ・エディターが提供する入力フィールド、ボタン、およびリスト・ボックスだけでなく、同じ情報が保管されている対応する XML エレメントも頻繁に言及します。

XML エレメントマクロ・スクリプトを理解するには、XML について多くを学習する必要はありません。構文の基本だけで十分です。 XML 構文の知識を復習する必要がある場合は、187 ページの『Host On-Demand マクロ言語の XML 構文』で詳しく学習できます。しかし、必要な情報はほとんどすべて、このサブセクションに記載されています。

XML スクリプトは、XML エレメントの集合から構成されます。XML エレメントの一部には、他の XML エレメントが含まれています。これは、一部の HTML エレメントに他の HTML エレメントが含まれているのとほぼ同じです。しかし、HTML の場合と異なり、XML では、プログラム開発者が、保管したい情報の構造を表す新しい XML エレメントを定義できます。 Host On-Demand マクロ言語には、マクロの記述に必要な情報を保管するために、約 35 種類の XML エレメントが含まれています。このマクロ言語については、 185 ページの『第 2 部 HostOn-Demand マクロ言語』で詳しく説明しています。

XML マクロ・エレメント名は、不等号括弧によって囲まれています。例えば、<HAScript> エレメント、<screen> エレメントなどです。

12 ページの図 2 は、XML エレメントの例を示しています。

© Copyright IBM Corp. 2003, 2015 11

Page 30: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 2 に示されるエレメント <SampleElement>には、すべてのマクロ・エレメントのキー・コンポーネントが含まれています。最初の行は、開始タグです。開始タグは、左不等号括弧 (<) の後に、XML エレメントの名前 (SampleElement)、属性定義、右不等号括弧 (>) の順に続きます。2 行目は省略符号 (...) で構成されています。この省略記号は、XML 構文の一部ではありませんが、上の図では、<SampleElement> エレメント内部に他のエレメントが存在する可能性を示すために使用されています。3 行目は、終了タグです。終了タグでは、エレメント名が不等号括弧で囲まれ、最初の不等号括弧の後にスラッシュが付きます (</SampleElement>)。

開始タグでは、属性を指定するのに、属性名 (例えば、attribute1) の後に、等号(=)、引用符で囲まれた属性値 (例えば、"value1") の順に続きます。開始タグの内部には、任意の数の属性が存在する可能性があります。

マクロ・エレメントに他の XML エレメントが含まれていない場合、図 3 のように、省略形式で書き込むことができます。

図 3 では、<SampleElement> エレメントは左不等号括弧 (<) の後に、名前(SampleElement)、属性、スラッシュ、右不等号括弧 (/>) の順に続けて書き込まれています。このように、XML エレメント全体が 1 対の不等号括弧内に書き込まれます。

マクロ・スクリプトの概念視点Host On-Demand マクロ・スクリプトは、最大 3 つの主なタイプのサブエレメントを含むことが可能な、1 つの <HAScript> エレメントから構成されます。

v 1 つの <import> エレメント (オプション)

v 1 つの <vars> エレメント (オプション)

v 1 つ以上の <screen> エレメント

13 ページの図 4 は、サンプル・マクロ・スクリプトの概念視点を示しています。

<SampleElement attribute1="value1" attribute2="value2">...</SampleElement>

図 2. サンプル XML エレメント

<SampleElement attribute1="value1" attribute2="value2" />

図 3. 省略形式で書かれたサンプル XML エレメント

12 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 31: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 4 は、主なタイプのサブエレメントのインスタンスを含む <HAScript> エレメントを示しています。これらのサブエレメントは、<import> エレメント (インポート)、<vars> エレメント (変数)、および 3 つの <screen> エレメント(Screen1、Screen2、および Screen3) です。

すべてのマクロ・スクリプトは、上記のような構造を持っています。ただし、大部分のマクロ・スクリプトには、もっと多くの screen があります。上記のマクロで50 個の screen がある場合、図 4 の外観はほぼ同じですが、Screen3 の後に、追加の screen (Screen4、Screen5 から、Screen50 まで) が続きます。ただし、screenが格納される順序は、必ずしも、マクロの実行時に screen が実行される順序を表しているわけではありません。 27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』を参照してください。

<HAScript> エレメントは、マクロ・スクリプトのマスター・エレメントです(HAScript は、Host Access Script を意味します)。このエレメントは、マクロ全体を囲み、その開始タグには、マクロ全体に適用できる情報 (例えば、マクロの名前)を含む属性が入っています。 <HAScript> エレメントの例については、 6 ページの図 1 を参照してください。

<import> エレメントは、Java™ クラスのインポートに使用されるオプションです。Java クラスのインポートは、上級トピックであり、 97 ページの『第 9 章 変数とインポートした Java クラス』で説明します。

<vars> エレメントは、標準データ・タイプ (boolean、integer、double、string、または field) のいずれかに属する変数を宣言し、初期化するのに使用されます。標準変数の使用は、上級トピックであり、 97 ページの『第 9 章 変数とインポートした Java クラス』で説明します。

<screen> エレメントは、マクロ画面の定義に使用されます。 <screen> エレメントは、<HAScript> エレメント内にある最も重要なエレメントです。 図 4 で理解できるように、マクロ・スクリプトは、主に <screen> エレメント (例えば、図中のScreen1、 Screen2、および Screen3) から構成されます。また、マクロ・スクリプト内のその他の種類の XML エレメントの大部分も、<screen> エレメント内で指定されます。

インポート

Screen1

&'

HAScript

Screen3

Screen2

図 4. マクロ・スクリプトの概念視点

第 2 章 マクロの構造 13

Page 32: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ画面とそのサブコンポーネントここでは、マクロ画面とその主なサブコンポーネントについて説明します。マクロ画面の定義は、別の条件であるアプリケーション画面によって決まります。

アプリケーション画面アプリケーション画面は、ホスト・アプリケーションによってホスト端末上に表示される、意味のある文字配置です。アプリケーション画面の一例は、図 5 に表示されている「OS/390® ISPF 基本オプション・メニュー (OS/390 ISPF PrimaryOption Menu)」です。

図 5 で、このアプリケーション画面には、一番上の行にメニュー選択項目 (Menu、Utilities、Compilers、Options など)、上部付近にタイトル (OS/390 Primary

Option Menu)、左側にオプションのリスト (0 から DAT)、およびオプション番号または文字を入力する入力フィールド (Option ===>) が表示されています。ユーザーが入力すると (例えば、3 (Utilities を表す) を入力した後、Enter キーを入力すると)、ISPF アプリケーションは、ホスト端末からこれらの表示項目をすべて除去し、別のアプリケーション画面を表示します。

M U C O S Henu tilities ompilers ptions tatus elp

More: +

Option ===>

01234567891011121314DDAT

SettingsViewEditUtilitiesForegroundBatchCommandDialog TestLM FacilityIBM ProductsSCLMWorkplaceOS/390 SystemOS/390 UserDb2SDSFDB2 TOOL

Terminal and user parametersDisplay source data or listingsCreate or change source dataPerform utility functionsInteractive language processingSubmit job for language processingEnter TSO or Workstation commandsPerform dialog testingLibrary administrator functionsIBM program development productsSW Configuration Library ManagerISPF Object/Action WorkplaceOS/390 system programmer applicationsOS/390 user applicationsDB2 V9 SubsystemSDSFDB2 Administration Tool Version 7.2

OS/ 390 Primary Option Menu

User ID . :Time . . . :Terminal . :Screen . . :Language :Appl ID . . :TSO logon :TSO prefix :

:MVS acct. :System ID

Release . :

TODD12:5432781ENGLISHISROS390D9TODDRALNS31**NONE**ISPF 5.9

Enter to Terminate using log/list defaultsX

Host Terminal Host Screen Preview

main - Host Terminal

MA* a 04/014

PF2

PF8

PF4

PF10

PF1

PF7

PF6

PF12

PA1

PA2

PF5

PF711

Enter

Clear

Attn

SysReq

NewLine

NextPad

PF3

PF9

図 5. サンプル・アプリケーション画面「OS/390 ISPF 基本オプション・メニュー (OS/390ISPF Primary Option Menu)」

14 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 33: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ画面マクロ画面は、特定のアプリケーション画面へのアクセスを管理する方法をマクロ・ランタイムに指示する、1 組の命令です。マクロ画面には、次のものが含まれています。

v 特定のアプリケーション画面の記述

v この特定のアプリケーション画面にアクセスするときに取ることができるアクション

v この特定のマクロ画面の後に表示されるマクロ画面のリスト

この時点での概念はそれほど直感的ではありませんが、同じマクロ内には、同じアプリケーション画面を参照するマクロ画面が数個存在する場合もあります。マクロ画面が相互にリンクされる方法によって、マクロ・ランタイムは、マクロの再生時に、同じアプリケーション画面に複数回アクセスして、アクセスごとに異なるマクロ画面を処理する場合があります。

また、1 つのマクロ画面が、複数のアプリケーション画面を参照する場合もあります。複数のアプリケーション画面が互いに類似している場合、ユーザー自身で、類似したすべてのアプリケーション画面を処理するマクロ画面を作成することができます。

それにもかかわらず、各マクロ画面は、何らかのアプリケーション画面に対応します。マクロを記録する際には、マクロ・オブジェクトは、記録中にユーザーがアクセスするアプリケーション画面ごとにマクロ画面を作成し、保管します。同じアプリケーション画面に複数回アクセスする場合、マクロ・オブジェクトは、アクセスごとにマクロ画面を作成し、保管します。

記録されたマクロを再生する場合、マクロ・ランタイムは、一連の再生中にアクセスするアプリケーション画面ごとに 1 つ以上のマクロ画面を処理します。通常は、指定されたアプリケーション画面で 1 つのマクロ画面が実行されます。ただし、最初のマクロ画面のアクションによってアプリケーション画面が先に進まず、2 番目のマクロ画面が同じアプリケーション画面に一致するような方法で、マクロを編集することが可能です。

マクロ画面の概念視点マクロ画面は、次の 3 つの必須サブエレメントを含む 1 つの <screen> エレメントから構成されます。

v 1 つの <description> エレメント (必須)

v 1 つの <actions> エレメント (必須)

v 1 つの <nextscreens> エレメント (必須。ただし、終了画面を除く)

これらのサブエレメントは必須であり、それぞれ 1 つしか指定できません。

16 ページの図 6 は、<screen> エレメントの概念視点を示しています。

第 2 章 マクロの構造 15

Page 34: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 6 は、3 つの必須サブエレメント (<description> エレメント (説明)、<actions>エレメント (アクション)、および <nextscreens> エレメント (有効な次画面 (ValidNext Screens))) を含む <screen> エレメント (Screen1) を示しています。

すべての <screen> エレメントは、これらの 3 つのサブエレメントを使用して上記のような構造を持っています。 (4 番目のオプションのサブエレメント <recolimit>エレメントについては、本書のこれ以降の部分で説明します。)

<screen> エレメントは、マクロ画面のマスター・エレメントです。このエレメントには、その特定のマクロ画面に属している他のすべてのエレメントが含まれています。また、開始タグには、マクロ画面全体に適用できる情報 (例えば、マクロ画面の名前) が入っている属性も含まれています。

<description> エレメントには、<description> エレメントが属している <screen>エレメントが、特定のアプリケーション画面に関連していることを、マクロ・ランタイムが認識できるようにする記述子が含まれています。この記述子と<description> エレメントについては、 37 ページの『第 5 章 画面記述』に説明があります。

<actions> エレメントには、マクロ・ランタイムがアプリケーション画面で実行する各種アクション (例えば、アプリケーション画面からのデータの読み取りや、キー・ストロークの入力) が含まれています。これらのアクションと <actions> エレメントについては、 59 ページの『第 7 章 マクロ・アクション』で説明しています。

<nextscreens> エレメント (図 6 内の「有効な次画面 (Valid Next Screens)」) には、現行マクロ画面の後に表示される可能性があるすべての <screen> エレメントの画面名のリストが含まれています。 <nextscreens> エレメントと、そのエレメントの中に入っているエレメントについては、 51 ページの『第 6 章 画面認識』で説明しています。

!"

#$な&'(

アクション

Screen1

図 6. <screen> エレメントの概念視点

16 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 35: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 3 章 データ・タイプ、演算子、および式

基本マクロ形式と拡張マクロ形式マクロは、基本マクロ形式または拡張マクロ形式で保管することができます。ホスト端末を使用してマクロを記録した場合、そのマクロは基本マクロ形式で保管されます。マクロを編集し、変数と演算式に対するサポートを追加すると、マクロは拡張マクロ形式に切り替えられます。

基本マクロ形式により、整数、倍精度、ブール (true または false)、およびストリングを含むリテラル値を入力できます。

拡張マクロ形式では、基本マクロ形式の機能に加えて、次の追加機能が提供されます。

v 正符号 (+) ストリング演算子を使用してストリング連結を許可する

v 演算式を許可する

v 条件式を許可する

v 変数を許可する

v インポートされた Java 変数タイプとメソッドを許可する

ストリングと非英数字文字の表記基本マクロ形式を選択したか、拡張マクロ形式を選択したかに応じて、マクロ内でストリングと 2 つの特殊文字 (単一引用符 (') と円記号 (¥)) の書き込み方法が異なります。また、基本マクロ形式では通常の文字である一部の文字を、拡張マクロ形式では演算子として使用します。これらの文字には例えば、正符号 (+) や大なり記号 (>) があります。

ただし、これらの規則は、画面 (名前は除く)、画面アクション、および変数とタイプの定義に使用される、エディターのタブ上に配置されている入力フィールドのみに影響します。

その他の入力フィールドの場合は、常に基本マクロ形式の規則を使用してください。

以下のセクションで、こうした規則の違いについて説明します。

基本マクロ形式の規則基本マクロ形式を選択した場合は、画面 (名前は除く)、画面アクション、および変数とタイプの定義に使用される、エディターのタブ上に配置されている入力フィールドに対しては、次の規則を使用します。

v ストリングは、単一引用符で囲まずに書き込まれなければならない。例えば、次のとおりです。

applebananaTo be or not to beJohn Smith

© Copyright IBM Corp. 2003, 2015 17

Page 36: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 単一引用符 (') と円記号 (¥) は、先行する円記号なしに、その文字自体によって表される。例えば、次のとおりです。

New Year's Dayc:¥Documents and Settings¥User

v 次の文字または文字シーケンスは、演算子として扱われない。 +、-、*、/、%、==、!=、>、<、>=、<=、&&、||、!

拡張マクロ形式の規則拡張マクロ形式を選択した場合は、画面 (名前は除く)、画面アクション、および変数とタイプの定義に使用される、エディターのタブ上に配置されている入力フィールドに対しては、次の規則を使用します。

v すべてのストリングは、単一引用符で囲まれなければならない。例えば、次のとおりです。

'apple''banana''To be or not to be''John Smith'

v 単一引用符 (') と円記号 (¥) は、その文字自体に円記号を先行させて表記される。例えば、次のとおりです。

'New Year¥'s Day'c:¥¥Documents and Settings¥¥User

v 次の文字または文字シーケンスは、演算子として扱われる。

– ストリング連結演算子: +

– 算術演算子: +、-、*、/、%

– 条件演算子: ==、!=、>、<、>=、<=

– 論理演算子: &&、||、!

別の形式へのマクロの変換基本または拡張のどちらかの形式のマクロは、他方の形式に変換することができます。変換プロセスは、基本形式から拡張形式に変換する場合には自動的に行われますが、拡張形式から基本形式に変換する場合には手動で行う必要があります。両方の変換について次に説明します。

基本形式マクロから拡張形式への変換マクロ形式は、VME のマクロ・プロパティーの「変数およびタイプ」タブ上にある「変数および演算式のサポート可能」チェック・ボックス、または AME の「マクロ」タブ上にある「マクロで変数と演算式を使用する」チェック・ボックスを選択することにより、簡単に基本マクロ形式から拡張マクロ形式に変換できます。その結果、マクロ・オブジェクトは次のことを行います。

v マクロのすべての拡張機能を使用可能にする。

v 変換が必要なすべての入力フィールドで、マクロ内のすべてのストリング、および 2 つの特殊文字 (単一引用符 (') と円記号 (¥)) のすべてのオカレンスを、基本表記から拡張表記に自動的に変換する。

つまり、マクロ・オブジェクトは、マクロ内のすべてのストリングを検出し、それらを単一引用符で囲み、存在するすべての ' と ¥ を、¥' と ¥¥ に変更します。また、演算子文字はすべて演算子として扱われます。

18 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 37: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

拡張形式マクロから基本形式への変換拡張マクロ形式から基本マクロ形式へのマクロの変換は、非常に困難な場合があります。変数と演算式を使用するためのオプションのチェックマークを外しても、自動変換は行われません。このとき自動的に起こるのは、マクロの拡張機能が使用不可になることだけです。

ストリング表示のすべてと 2 つの特殊文字を、一度に 1 つずつ手動で変更して、元の基本表示に戻す必要があります。さらにそのマクロ内にある、拡張機能が使用されているインスタンスすべてを削除する必要があります。削除しないと、スクリプトを保管または実行しようとするときに、エラーまたは予期しない結果を検出する場合があります。残っている拡張マクロ形式の演算子文字は、演算子ではなくリテラル文字として処理されます。

標準データ・タイプマクロ・オブジェクトは、次の標準データ・タイプをサポートします。

v ブール値

v 整数

v 倍精度

v ストリング

これらのタイプについては、以降のサブセクションで説明します。

ブール・データブール値 true と false は、大文字と小文字の任意の組み合わせで書き込むことができます (例えば、True、TRUE、FALSE、falsE など)。

ブール値を必要とするフィールドの例は、マクロ画面定義用の「エントリー画面」、「終了画面」、および「一時画面」フィールドです。条件を true に設定するには true を入力し、false に設定するには false を入力してください。

ブール値はストリングではないブール値はストリングではないため、決して単一引用符で囲まないでください。例えば、基本マクロ形式と拡張マクロ形式のいずれを使用するとしても、ブール値は必ず true および false と記述し、'true' や 'false' とは記述しません。

ただし、ブールのコンテキスト内では、ストリング値がブール値に変換されます( 23 ページの『ブールへの変換』を参照)。したがって、拡張マクロ形式を使用する場合は、ブール・フィールド内にストリング 'true' を入力できます。これは、マクロ・エディターにより、'true' ストリングがブール値 true に変換されるからです。

整数整数は、コンマまたはその他の区切り文字なしに書き込まれます。例えば、次のとおりです。

100000-140

第 3 章 データ・タイプ、演算子、および式 19

Page 38: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

整数定数マクロ・エディターには、すべて大文字を使用して書き込まれる複数の整数定数があります。これらの値は、ストリングとしてではなく、整数として扱われます。例えば、次のとおりです。

v NOTINHIBITED

v FIELD_PLANE

v COLOR_PLANE

倍精度倍精度は、コンマまたはその他の区切り文字なしに書き込まれます。例えば、次のとおりです。

3.14164.557e5-119.0431

ストリングストリングは任意の一連の文字であり、ブランク文字を先行させたり、末尾に付けたり、間に入れたりすることができます。マクロが使用するように設定されている形式が基本マクロ形式か、拡張マクロ形式かに応じて、一部の入力フィールド内のストリングの表記が異なります。 17 ページの『ストリングと非英数字文字の表記』を参照してください。

次の例では、拡張マクロ形式表記を使用します。

'apple''User4''Total number of users'' This string has 3 leading blanks.''This string has 3 trailing blanks. '

次に、基本マクロ形式表記を使用した同じ例を示します。

appleUser4Total number of users

This string has 3 leading blanks.This string has 3 trailing blanks.

基本マクロ形式では、末尾ブランクを使用できますが、検出が困難であることに注意してください。末尾ブランクがあるかどうか分からない場合は、ソース表示でストリングの表記を確認してください。

フィールド101 ページの『フィールド変数』を参照してください。

値 null値 null は予約語であり、ストリングではありません。インポートされた Java クラスに属するオブジェクトの代わりに使用される場合、Java 言語における意味と同じです。

20 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 39: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

空ストリングを表すために null を使用しないでください。空ストリングを表すには、拡張マクロ形式では 1 対の単一引用符 ('') を使用し、基本マクロ形式では何も使用しないでください。 (例えば、ストリング変数に割り当てることによって) ストリング・コンテキストで値 null を使用する場合、マクロ・エディター またはマクロ・ランタイムは、値 null をストリング 'null' に変換します。

算術演算子および式演算式を使用するには、最初に VME のマクロ・プロパティーの「変数およびタイプ」タブ上にある「変数および演算式のサポート可能」チェック・ボックス選択するか、AME の「マクロ」タブ上にある「マクロで変数と演算式を使用する」チェック・ボックスを選択する必要があります。詳しくは、 17 ページの『ストリングと非英数字文字の表記』を参照してください。

算術演算子を表 2 に示します。

表 2. 算術演算子

演算子 働き

+ 加算

- 減算

* 乗算

/ 割り算

% モジュロ

演算式では、条件は左から右に評価されます。演算子の優先順位は *、/、%、+、-です。例えば、次の式の結果は 8 です。

4 * 2 + 16 / 8 - 1 * 2

次のように小括弧を使用すると、式が評価される順序を指定できます。

(4 * 2) + (16 / 8) - (1 * 2) は 8 になります。4 * (( 2 + 16) / (8 - 1)) * 2 は 20.571 になります。

演算式の使用演算式は、算術値を使用できる場所であれば、ほとんどどこでも使用できます。例えば、次のとおりです。

v 画面のパラメーターとしては、例えば次の処理を行います。

– 画面の認識限界を指定する。

– 画面の一時停止時間を指定する。

v 記述子のパラメーターとしては、例えば次の処理を行います。

– カーソル記述子の行または列を指定する。

– 数値フィールド・カウント記述子内のフィールド数を指定する。

– 属性記述子の行、列、または属性値を指定する。

– 条件記述子の条件として。

v アクションのパラメーターとしては、例えば次の処理を行います。

– マウス・クリック・アクションで行または列を指定する。

第 3 章 データ・タイプ、演算子、および式 21

Page 40: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

– 一時停止アクションのミリ秒数として。

– 変数更新アクションで値を指定する。

– 条件アクションの条件として。

v 変数の初期値として

ストリング連結演算子 (+)ストリング連結演算子の正符号 (+) は、マクロ内で変数と演算式を使用する場合にのみ、使用できます。 17 ページの『基本マクロ形式と拡張マクロ形式』を参照してください。

複数の連結が入っているストリング式を作成することができます。次の例では、拡張形式に必要なストリング表記を使用します ( 17 ページの『ストリングと非英数字文字の表記』を参照)。

式: 評価結果:

'Hello ' + 'Fred' + '!' 'Hello Fred!''Hi' 'There' (エラー。ストリングを連結するには、

1 つの + 演算子が必要です)'Hi' + 'There' 'HiThere'

条件演算子と論理演算子および式条件演算子を表 3 に示します。

表 3. 条件演算子

演算子 働き

== 等しい

!= 等しくない

> より大

< より小

>= より大か等しい

<= より小か等しい

論理演算子を表 4 に示します。

表 4. 論理演算子

演算子 働き

&& AND

|| OR

! NOT

HTML または XML エディターで && と入力する場合は、&amp;&amp; と入力する必要がある場合があります。

条件式では、条件は左から右に評価されます。演算子の優先順位は、上記の表にリストされている順序と同じです。次のように小括弧を使用すると、式が評価される順序を指定できます。例えば、次のとおりです。

22 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 41: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

式: 評価結果:

(4 > 3) true!(4 > 3 ) false(4 > 3) && (8 > 10) false(4 > 3) || (8 > 10) true

条件式には、演算式、変数、およびインポートされた Java クラスのメソッドの呼び出しを含むことができます。

条件演算子と論理演算子は、次の 2 つのコンテキストでしか使用できません。

v 条件記述子の「条件」フィールド

v 条件アクションの「条件」フィールド

自動データ・タイプ変換

コンテキストの影響データの項目が 1 つの標準データ・タイプ (ブール、整数、倍精度、またはストリング) に属しているが、コンテキストが別の標準データ・タイプを必要とする場合、データの評価時 (マクロ・エディター がデータを保存するとき、またはマクロ・ランタイムがマクロを再生するときのいずれか) に、可能な場合は、コンテキストが必要とする標準データ・タイプに自動的に変換されます。

コンテキストの例は次のとおりです。

v 条件記述子の「条件」フィールド (ブール値を期待する)

v 変数がフィールド変数である場合、変数更新アクションの「値」フィールド (ロケーション・ストリングを期待する)

v 入力アクションの「行」値 (整数値を期待する)

しかし、データを新しいデータ・タイプに変換できない (例えば、ストリング123apple を整数に変換できない) 場合は、エラーが発生します。マクロ・エディターがエラー・メッセージを表示します。マクロ・ランタイムは、マクロの再生を停止し、エラー・メッセージを表示します。

次のサブセクションでは、各標準データ・タイプに対して行われる変換について説明します。

ブールへの変換ブール・コンテキスト内のストリング 'true' (または 'TRUE'、'True' など) は、ブール true に変換されます。ブール・コンテキスト内のその他のすべてのストリング ('false'、'1'、'apple' など) は、ブール false に変換されます。

'true' (ブール値が必要な入力フィールド内の値) は true に変換されます。'apple' (ブール値が必要な入力フィールド内の値) は false に変換されます。

整数への変換整数コンテキスト内の有効な整数形式のストリングは、整数に変換されます。

'4096' は 4096 に変換されます。'-9' は -9 に変換されます。

第 3 章 データ・タイプ、演算子、および式 23

Page 42: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

倍精度への変換倍精度コンテキスト内の有効な倍精度形式のストリングは、倍精度に変換されます。

'148.3' は 148.3 に変換されます。

倍精度と結合された整数は、倍精度になります。

10 + 6.4 は 16.4 に評価されます。

ストリングへの変換ストリング・コンテキスト内のブール、整数、または倍精度は、ストリングに変換されます。 (ブール値の true および false はストリングではありません。 19 ページの『ブール・データ』を参照。) ストリング値を入力する必要がある入力フィールド (入力アクションの「ストリング」フィールドなど) に次の値が指定された場合、それらの値は指定された結果を評価します。

'The result is ' + true は 'The result is true' に評価されます。FALSE (in an input field that requires a string) は 'false' に変換されます。'The answer is ' + 15 は 'The answer is 15' に評価されます。22 (ストリングが必要な入力フィールド内の値) は '22' に変換されます。14,52 (ストリングが必要な入力フィールド内の値) は '14,52' に評価されます。

変換エラーコンテキストに変換が必要であるが、データの形式がその変換に有効でない場合、マクロ・エディターはエラー・メッセージを表示します。例えば、入力アクションの「行」フィールドに「123apple」と入力すると、エラー・メッセージが表示され、前の値に復元されます。

等価特定の標準データ・タイプの即時値を受け入れるコンテキストはいずれも、同じデータ・タイプの任意のエンティティーも受け入れます。

例えば、入力フィールドがストリング値 (例えば、'Standard Dialog') を受け入れる場合、次のものも受け入れます。

v ストリングに評価される式

v ストリングに変換される値

v ストリング変数

v ストリングを戻すインポート・メソッドの呼び出し

同様に、入力フィールドがブール値 (true または false) を受け入れる場合、次のものも受け入れます。

v ブール値に評価される式

v ブール値に変換される値

v ブール変数

v ブールを戻すインポート・メソッドの呼び出し

マクロ機能におけるこうした柔軟性を認識すると、さらに強力なマクロを作成するのに役立ちます。

24 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 43: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

行または列の負の値の意味ストリング記述子や、その他のいくつかの記述子とアクションでは、行または列の負の値は、ホスト端末の最後の行または最後の列からのオフセットを示します。マクロ・ランタイムは、行または列の位置を次のように計算します。

actual row = (number of rows in text area) + 1 + (negative row offset)actual column = (number of columns in text area) + 1 + (negative column offset)

例えば、ホスト画面に 24 行のテキストがある場合、行座標 -1 は、実際の行座標24 を示します (24 + 1 - 1 として計算)。同様に、ホスト画面に 80 列のテキストがある場合、列座標 -1 は、実際の列座標 80 を示します (80 + 1 - 1 として計算)。

上記の行の計算では、OIA 行は無視されます。例えば、ホスト画面が 25 行である場合、24 行のテキストしかありません。

この規則の利点は、ホスト端末の下部で長方形を指定する必要がある場合に、ホスト画面が 25 行、43 行、50 行のいずれであるかに関係なく、ここで示した計算方法を基に意図したとおりの結果が得られることです。同様に、ホスト端末の右側で長方形を指定する必要がある場合にも、ホスト画面が 80 列であるか 132 列であるかに関係なく、ここで示した計算方法を基に意図したとおりの結果が得られます。

表 5 および表 6 に、計算結果をいくつか示します。

表 5. 行の負の値

行の負の値 24 行のテキストがあるホスト端末での実際の値 (OIA 行は無視):

42 行のテキストがあるホスト端末での実際の値 (OIA 行は無視):

49 行のテキストがあるホスト端末での実際の値 (OIA 行は無視):

-1 24 42 49

-2 23 41 48

-3 22 40 47

表 6. 列の負の値

列の負の値 80 列のホスト端末での実際の値

132 列のホスト端末での実際の値

-1 80 132

-2 79 131

-3 78 130

この規則を使用するかどうかに関係なく、少なくとも座標が (1,1) と (-1,-1) の長方形域は、ホスト端末のテキスト領域全体を意味することを忘れないでください。

第 3 章 データ・タイプ、演算子、および式 25

Page 44: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

26 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 45: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 4 章 マクロ・ランタイムによるマクロ画面の処理方法

このセクションでは、マクロ・ランタイムがマクロ画面を処理するときに発生するアクティビティーについて説明します。

マクロ・ランタイム処理の概要

例として使用されるシナリオこの章では、例としてマクロからのシナリオを使用します。このマクロには、Screen1 と Screen2 の 2 つのマクロ画面のみが含まれています。

シナリオは、マクロ・ランタイムが Screen1 ですべてのアクションを実行し、次に処理するマクロ画面を検索する準備ができた時点から始まります。

Screen1 は、「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF PrimaryOption Menu)」(図 7 を参照) を処理するマクロ画面です。

28 ページの表 7 は、Screen1 の内容の概念ビューを示しています。

M U C O S Henu tilities ompilers ptions tatus elp

More: +

Option ===>

01234567891011121314DDAT

SettingsViewEditUtilitiesForegroundBatchCommandDialog TestLM FacilityIBM ProductsSCLMWorkplaceOS/390 SystemOS/390 UserDb2SDSFDB2 TOOL

Terminal and user parametersDisplay source data or listingsCreate or change source dataPerform utility functionsInteractive language processingSubmit job for language processingEnter TSO or Workstation commandsPerform dialog testingLibrary administrator functionsIBM program development productsSW Configuration Library ManagerISPF Object/Action WorkplaceOS/390 system programmer applicationsOS/390 user applicationsDB2 V9 SubsystemSDSFDB2 Administration Tool Version 7.2

OS/ 390 Primary Option Menu

User ID . :Time . . . :Terminal . :Screen . . :Language :Appl ID . . :TSO logon :TSO prefix :

:MVS acct. :System ID

Release . :

TODD12:5432781ENGLISHISROS390D9TODDRALNS31**NONE**ISPF 5.9

Enter to Terminate using log/list defaultsX

Host Terminal Host Screen Preview

main - Host Terminal

MA* a 04/014

PF2

PF8

PF4

PF10

PF1

PF7

PF6

PF12

PA1

PA2

PF5

PF711

Enter

Clear

Attn

SysReq

NewLine

NextPad

PF3

PF9

図 7. 「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」

© Copyright IBM Corp. 2003, 2015 27

Page 46: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 7. マクロ画面 Screen1 の内容

<screen> エレメント Screen1 に含まれるXML エレメント:

XML エレメントの内容:

<description> 記述子:

v 入力禁止標識がクリアされています (入力が禁止されていません)。

<actions> アクション:

1. テキスト・カーソルを行 4、列 14 に移動します。

2. '3[enter]' を入力します。

<nextscreens> このマクロ画面の後に表示されるマクロ画面の名前:

v Screen2

Screen2 は、「Utility Selection Panel」(図 8 を参照) を処理するマクロ画面です。

29 ページの表 8 は、Screen2 の内容の概念ビューを示しています。

Fi E V C A Hle dit iew ommunication ctions elp

Host Terminal Host Screen Preview

main - Host Terminal

PF1 PF2 PF3 PF4 PF5 PF6 Enter PA1 Attn NewLine

PF7 PF8 PF9 PF10 PF11 PF12 Clear PA2 SysReq NextPad

M Henu elp

Option ===>

1

2

34

5678911121314151617

Library

Data Set

Move/CopyDslist

ResetHardcopyTransferOutlistCommandsFormatSuperCSuperCESearch-ForSearch-ForETablesUdlist

Compress or print data set. Print index listing. Print,rename, delete, browse, edit or view members

Allocate, rename, delete, catalog, uncatalog, or displayinformation of an entire data set

Move, or copy members or data setsPrint or display (to process) list of data set names.

Print or display VTOC informationReset statistics for members of ISPF libraryInitiate hardcopy outputDownload ISPF Client/Server or Transfer data setDisplay, delete, or print held job outputCreate/change an application command tableFormat definition for formatted data Edit/BrowseCompare data setsCompare data sets ExtendedSearch data sets for strings of dataSearch data sets fro strings of data ExtendedISPF Table UtilityPrint or display (to process) z/OS UNIX directory list

Utility Selection Panel

M Henu elp

(Standard Dialog)(Extended Dialog)(Standard Dialog)(Extended Dialog)

MA* a 04/014

図 8. 「Utility Selection Panel」アプリケーション画面

28 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 47: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 8. マクロ画面 Screen2 の内容

<screen> エレメント Screen2 に含まれるXML エレメント:

XML エレメントの内容:

<description> 記述子:

v 入力禁止標識がクリアされています (入力が禁止されていません)。

v 80 のフィールドがあります。

v 3 つの入力フィールドがあります。

<actions> アクション (ホスト・アプリケーションは正しい入力フィールドにテキスト・カーソルを配置します):

1. '4[enter]' を入力します。

<nextscreens> このマクロ画面の後に表示されるマクロ画面の名前:

v (なし。これはマクロ内の最後のマクロ画面です。)

マクロ画面の処理ステージマクロ・ランタイムは、以下に示すように、マクロ再生中に、マクロが終了するまでアクティビティーの 3 つの同一ステージ全体を何度もループします。ステージ 1内には 3 つのステップがあります。

1. 次に処理するマクロ画面を決定する。

ステップ a. 候補のマクロ画面の名前を、有効な次画面のリストに追加する。

ステップ b. 画面認識を行って、候補のマクロ画面の 1 つを、ホスト端末に現在表示されている実際のアプリケーション画面と一致させる。

ステップ c. 候補のマクロ画面の名前を、有効な次画面のリストから除去する。

2. 選択したマクロ画面を新しい現行マクロ画面にする。

3. 新しい現行マクロ画面の <actions> エレメントのアクションを実行する。

ステージ 1上述のとおり、ステージ 1 には 3 つのステップがあるため、ステージ 2 または 3よりも詳細な説明が必要です。これらのステップそれぞれには、有効な次画面のリストが関係しています。

有効な次画面のリストは、マクロ画面名を保持できるリストです。マクロ・ランタイムは、マクロ再生の始め (最初のマクロ画面を再生する前) にこのリストを作成し、マクロ再生が完了した後、このリストを破棄します。リストは最初空になっています ( 31 ページの『マクロ・ランタイムによる候補マクロ画面名の選択方法』で説明される一時画面の場合を除く)。

マクロの実行中、マクロ・ランタイムが次に処理するマクロ画面を決定する必要が生じるたびに、マクロ・ランタイムは、有効な次画面のリストを使用して、3 つのステップ 1(a)、1(b)、および 1(c) を実行します。

第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 29

Page 48: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

プロセス全体の 3 ステージすべての概要ステージ 1 では、マクロ・ランタイムは、次に処理するマクロ画面を決定します。上記のセクションで説明したように、ステージ 1 には 3 つのステップがあります。

ステップ 1(a) では、マクロ・ランタイムは、現行のマクロ画面の次に表示される可能性があるマクロ画面の名前を収集し、これらの名前を有効な次画面のリストに追加します。リストには、そのような画面が 1 つだけ、または数個ある可能性があります。この例のシナリオでは、マクロ・ランタイムは Screen1 の <nextscreens> エレメントを検索し、ある名前 (Screen2) を見つけて、リストにその名前を追加します ( 28 ページの表 7 を参照)。

ステップ 1(b) では、マクロ・ランタイムは、リスト上の各マクロ画面を定期的に調べて、その画面がアプリケーション画面と一致するかどうかを判別します。

タイミングはこのステップにおける要因です。 マクロ・ランタイムが (Screen1 では、<actions> エレメントの最後のアクションとして '3[enter]' と入力して) 現行のマクロ画面のいずれかのアクションを実行すると、ホスト・アプリケーションは、ホスト端末を変更する処理を実行して、古いアプリケーション画面 (「ISPF 基本オプション・メニュー (ISPF Primary Option Menu)」) の代わりに新しいアプリケーション画面 (「Utility Selection Panel」) を表示します。しかし、この変更は、即時に行われるわけではありません。この変更には数百ミリ秒かかり、ホストから数パケット分のデータが必要になる場合があります。

そのため、マクロ・ランタイムは、ステップ 1(b) では、OIA 行またはホスト端末の表示スペースが更新されるたびに、有効な次画面のリストに含まれるマクロ画面を調べ、それらのいずれかがアプリケーション画面の現在の状態に一致するかどうかを確認します。

最終的にはホスト端末は、マクロ・ランタイムがリスト上のマクロ画面のいずれかをアプリケーション画面に一致させることができる程度まで、更新されます。

ステップ 1(c) では、マクロ・ランタイムは、有効な次画面のリストからすべてのマクロ画面名を除去します (一時画面がある場合は、それを除く)。

ステージ 2 では、マクロ・ランタイムは、選択されたマクロ画面 (ステップ 1(b)でアプリケーション画面と一致した画面) を新しい現行マクロ画面にします。

最後にステージ 3 では、マクロ・ランタイムは、Screen2 の <actions> エレメントのアクションを実行します。

この章の残りの部分では、上述の概要にあるステージとステップについての詳細な情報を提供します。

ステージ 1: 次に処理するマクロ画面を決定する前述のように、ステージ 1 には 3 つのステップがあります。すなわち、有効な次画面のリストへのマクロ画面名の追加、画面認識の実行、および有効な次画面のリストからのマクロ画面名の除去です。

30 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 49: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ステップ 1(a): 有効な次画面のリストへのマクロ画面名の追加このステップでは、マクロ・ランタイムは、候補のマクロ画面の名前を、有効な次画面のリストに入れます。

有効な次画面ホスト・アプリケーションによってホスト端末にアプリケーション画面が表示され、続いてユーザー入力が行われると、通常、次に表示される可能性があるアプリケーション画面は数個 (多くの場合は 1 つ) のみになります。

例のシナリオでは、現行のマクロ画面は Screen1 で、現行のアプリケーション画面は「ISPF 基本オプション・メニュー (ISPF Primary Option Menu)」で、入力は'3' と Enter キーです ( 28 ページの表 7 を参照)。この状況では、次に表示される可能性があるアプリケーション画面は「Utility Selection Panel」の 1 つのみです。したがって、有効な次画面のリストに追加する必要があるのは、1 つのマクロ画面の名前 (Screen2) だけです。

これははじめ、直観的ではないように思える場合があります。最終的に ISPF 基本オプション・メニュー (ISPF Primary Option Menu) は、約 30 種類の入力 (オプション 15 種類、メニュー選択 6 種類、およびファンクション・キー 8 種類) で構成される可能性があります。その場合、リストには、マクロ画面の名前が 1 つだけでなく 30 個はあるはずです。いかがでしょうか。

有効な次画面のリストに通常は 1 つまたは少数の名前しかないのは、何らかの特定タスクを達成することを目的とする一連の命令をマクロが実行しているためです。Screen1 では、命令は、「ISPF 基本オプション・メニュー (ISPF Primary OptionMenu)」の次に「Utility Selection Panel」を表示することを目的としています。これは、次画面の表示に必要なアクション ('3[enter]') が既に実行されており、予想したアプリケーション画面が表示されるのをマクロ画面が待機している状態です。

マクロ・ランタイムによる候補マクロ画面名の選択方法このセクションでは、マクロ・ランタイムが、有効な次画面のリストに入れるマクロ画面名を選択する方法を説明します。次の 2 つの場合があります。

v 最初のマクロ画面が再生される場合、マクロ・ランタイムは、エントリー画面のマークが付いている、マクロ内の任意のマクロ画面の名前を選択します。

v 後続のすべてのマクロ画面が再生される場合、マクロ・ランタイムは、現行マクロ画面の <nextscreens> エレメントで検出する名前を使用します。

最初のマクロ画面: マクロの再生が始まるときには、有効な次画面のリストは空です (一時画面を除く。 32 ページの『一時画面』を参照)。

最初に処理されるマクロ画面の候補を見つけるために、マクロ・ランタイムは、マクロ全体を検索し、エントリー画面のマークが付いている各マクロ画面を見つけ、これらのマクロ画面の名前をリストに追加します。

エントリー画面の設定 (<screen> エレメントの属性) は、この目的のために存在し、最初に処理される画面として表示可能なマクロ画面にマークを付けます。

マクロが記録されるときに、マクロ・オブジェクトは、デフォルトで、最初に記録されるマクロ画面のみにエントリー画面のマークを付けます。記録が完了した後、

第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 31

Page 50: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ユーザーは、任意のマクロ画面にエントリー画面のマークを付けたり、マークを解除したりすることができます。複数のエントリー画面が存在できます。

エントリー画面については、 51 ページの『エントリー画面』で詳しく説明しています。

エントリー画面のマークが付いているマクロ画面がない場合、マクロ・ランタイムは、マクロ内のすべてのマクロ画面を、最初に処理するマクロ画面の候補として使用します。

後続のマクロ画面: 後続のマクロ画面 (最初のマクロ画面の直後の画面を含む) については、マクロ・ランタイムは、現行マクロ画面の <nextscreens> エレメントにリストされた候補マクロ画面の名前を見つけます。

例のシナリオでは、Screen1 は現行のマクロ画面であり、<nextscreens> エレメントに 1 つのマクロ画面の名前 Screen2 を持ちます ( 28 ページの表 7 を参照)。そのため、マクロ・ランタイムは Screen2 をリストに追加します。

エレメントのリストにあるマクロ画面名すべては、マクロ・ランタイムによって有効な次画面のリストに追加されます。

マクロの記録時に、マクロ・オブジェクトが新しいマクロ画面の記録を開始すると、その新しいマクロ画面の名前 (例えば、Screen2) を、記録が終了したばかりのマクロ画面 (Screen1) の <nextscreens> エレメントに保管します。したがって、記録されたマクロの各マクロ画面 (最後の画面を除く) は、<nextscreens> エレメントに保管されている 1 つのマクロ画面の名前を持ちます。

以後、ユーザーは、マクロ内の任意のマクロ画面の名前を、任意のマクロ画面の<nextscreens> エレメントに追加したり、そのエレメントから削除したりすることができます。

<nextscreens> エレメントの詳細については、 51 ページの『有効な次画面の認識』で説明しています。

一時画面: 一時画面は、マクロの任意のポイントで生じる画面であり、予期せず発生し、常にクリアする必要がある画面です。一時画面の例は、無効な入力に応答して表示されるエラー画面です。

マクロ・オブジェクトは、マクロの記録時にマクロ画面に一時画面のマークを付けることはありません。しかし、以後、ユーザーは、任意のマクロ画面に一時画面のマークを付けることができます。

マクロの再生が開始すると、マクロ・ランタイムはマクロを検索し、一時画面のマークが付いている各マクロ画面を見つけ、各一時マクロ画面の名前を有効な次画面のリストに追加します。これらの名前は、マクロ再生中、リストに存在します。

一時画面の詳細については、 52 ページの『一時画面』を参照してください。

ステップ 1(b): 画面認識このステップでは、マクロ・ランタイムが、有効な次画面のリストに名前が指定されているマクロ画面の 1 つを、現行のアプリケーション画面と一致させます。

32 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 51: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

このプロセスは、画面認識と呼ばれます。これは、マクロ・ランタイムが、リスト上のマクロ画面の 1 つを、ホスト端末に現在表示されているアプリケーション画面に対応するものとして認識するからです。

評価の概要マクロ・ランタイムは、候補マクロ画面を、有効な次画面のリスト内にそれらの名前が表示されている順に評価します。

マクロ・ランタイムが、候補の 1 つがアプリケーション画面と一致することを検出すると、ただちに評価を停止し、リストから候補名を除去する次のステップ (ステップ 1(c)) に進みます。一致する画面は、次に処理されるマクロ画面になります (ステージ 2)。

しかし、マクロ・ランタイムは、リストに含まれるすべてのマクロ画面を評価しても一致を検出できない場合には、評価を一時的に停止し、ホスト端末が更新されるまでは何も実行しません。

繰り返し画面評価マクロ・ランタイムが画面認識を実行する一方で、ホスト・アプリケーションはホスト端末を新しいアプリケーション画面で更新します。例のシナリオでは、ホスト・アプリケーションは、「Utility Selection Panel」が表示されるようにホスト端末を更新しています。このプロセスには数百ミリ秒かかり、ホストから数パケット分のデータが必要になる場合があります。

この状況は、画面が更新されるまでマクロ・ランタイムが画面認識を一時的に停止する理由の説明になります。画面認識が失敗した場合、新しいアプリケーション画面が不完全であることが理由である可能性があります。したがって、マクロ・ランタイムは待機します。

マクロ・ランタイムは、OIA 行またはホスト端末の表示スペースが更新されるたびに、有効な次画面のリストを調べ、現行のアプリケーション画面との一致を検出しようとします。一致が見つからない場合、マクロ・ランタイムは再び待機します。

マクロ・ランタイムは、画面認識が正常に行われるまでに、待機と評価のサイクルを数回繰り返す場合があります。

最終的に、必要な新しいアプリケーション画面に到達し、マクロ・ランタイムは、リストに名前が指定されたマクロ画面の 1 つを、新しいアプリケーション画面と一致させることができます。

マクロ画面がアプリケーション画面と一致するかどうかの判別マクロ・ランタイムは、マクロ画面内の個々の記述子を現行のホスト端末画面と比較することによって、そのマクロ画面が現行のアプリケーション画面に一致するかどうかを判別します。

例のシナリオでは、マクロ・ランタイムは有効な次画面のリストで名前 Screen2 を検索して、Screen2 を取得します。また、その記述子を検索して、記述子をホスト端末と比較します。

第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 33

Page 52: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

各マクロ画面には、1 つの <description> エレメントが含まれ、そのエレメント自体に 1 つ以上の記述子が含まれています。記述子は、true または false で評価できる、ホスト端末 (アプリケーション画面の現在の状態) について記述したステートメントです。この例のシナリオでは、Screen2 には次の 3 つの記述子が含まれています。

v 入力禁止標識がクリアされています (入力が禁止されていません)。

v ホスト端末上に 80 のフィールドがあります。

v ホスト端末上に 3 の入力フィールドがあります。

今回のように <description> エレメントに複数の記述子がある場合、各記述子をブール値 true または false で評価した上でその結果を 1 つの結果 (true またはfalse) に結合するためにマクロ・ランタイムが使用するメソッドは、ある追加の構成情報によって決まります (この構成情報については、ここでは説明しません)。構成情報について詳しくは、 39 ページの『記述子の評価』を参照してください。

例のシナリオでは、Screen2 がデフォルトのまま構成されるため、マクロ・ランタイムは 3 つの記述子それぞれを順番に評価します。3 つのすべてが true である場合、マクロ・ランタイムは、全体的な結果が true であり、Screen2 が現行のアプリケーション画面と一致するという結論を出します。

詳しくは、 39 ページの『記述子の評価』を参照してください。

認識の終了時期の定義

画面認識のタイムアウト設定: タイマーが切れるまでに画面認識が行われない場合にマクロ・ランタイムがマクロを終了させる、タイムアウト値を設定できます( 54 ページの『画面認識のタイムアウト設定』を参照)。

認識限界: 認識カウントを設定すると、マクロ・ランタイムによるマクロ画面 (例えば、ScreenA) の認識回数が設定値に達したときに、マクロ・ランタイムがマクロを終了する、あるいは指定されたマクロ画面にジャンプするようにできます ( 55ページの『認識限界』を参照)。

ステップ 1(c): 有効な次画面のリストからの候補マクロ画面の名前の除去

画面認識が成功した後、マクロ・ランタイムは、ただちに次のタスクを開始します。このタスクは、有効な次画面のリストのクリーンアップです (ステップ 1(c))。

これは単純なステップです。マクロ・ランタイムは、認識しているかどうかにかかわらず、すべての候補マクロ画面の名前を有効な次画面のリストから除去します。

リストに一時画面の名前が含まれている場合、それらの名前はリストに残ります( 52 ページの『一時画面』を参照)。

ステージ 2: 選択された候補を新しい現行マクロ画面にするステージ 2 は単純です。ステージ 2 では、マクロ・ランタイムは、選択された候補を新しい現行マクロ画面にします。

34 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 53: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

例のシナリオでは、マクロ・ランタイムは Screen2 を新しい現行マクロ画面にします。ホスト端末には、新しいアプリケーション画面である「Utility SelectionPanel」が表示されます ( 28 ページの表 7 および 29 ページの表 8 を参照してください)。

マクロ・ランタイムは、ただちにステージ 3 を開始します。

ステージ 3: 新しい現行マクロ画面のアクションを実行するステージ 3 では、マクロ・ランタイムは、新しい現行マクロ画面の <actions> エレメント内のアクションを実行します。新しい現行マクロ画面に <actions> エレメントが含まれていない場合、または <actions> エレメントが空である場合、マクロ・ランタイムはこのステージをスキップします。

各マクロ画面には、通常、実行される 1 つ以上のアクションを含む <actions> エレメントが含まれています。アクションは、何らかのアクティビティー (ホストへの一連のキーの送信、ポップアップ・ウィンドウでのユーザーへのプロンプトの表示、画面からのテキスト・ブロックの取り込みなど) を起こす命令です。

例のシナリオでは、Screen2 に含まれているのは次の 1 つのアクションだけです。

v 4 を入力した後で、Enter キーを押す。

「Utility Selection Panel」では、テキスト・カーソルが自動的に正しい入力フィールドに配置されるため、Screen2 ではそのためのアクションは必要ありません。

<actions> エレメントに複数のアクションが含まれている場合、マクロ・ランタイムは、<actions> エレメントに指定される順に、各マクロ・アクションを実行します。

アクションの詳細については、 59 ページの『第 7 章 マクロ・アクション』を参照してください。

アクション後の遅延の挿入マクロ・ランタイムは人間のユーザーよりはるかに迅速にアクションを実行するので、マクロの再生中に予測しない問題が発生し、アクションが予想通りに実行されない可能性があります。この原因は、前のアクションへの依存関係が生じることです。

このタイプの問題を避けるために、マクロ・ランタイムは、各マクロ画面のどのアクションまたはプロンプト・アクションの後にも、150 ミリ秒の遅延をデフォルトで挿入し、各マクロ画面の最後のアクションの後には 300 ミリ秒の遅延を挿入します ( 89 ページの『pausetime 属性』を参照)。

この機能を使用可能なままにしてください。ただし、必要な場合は使用不可にすることができます。遅延は、150 ミリ秒から 300 ミリ秒の値から他の値に変更できます。

必要に応じて、特定のマクロ画面の遅延期間を変更することもできます ( 90 ページの『pause 属性』を参照)。

第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 35

Page 54: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

また、特定のアクションに対して、アクション後に一時停止アクションを追加することによって、遅延を増やすこともできます ( 72 ページの『一時停止アクション(<pause> エレメント)』を参照)。

処理サイクルの繰り返しマクロ・ランタイムが現行マクロ画面の <actions> エレメント内のすべてのアクションを実行した後、マクロ・ランタイムは、新しい現行マクロ画面の<nextscreens> エレメントにリストされている候補マクロ画面を使用して、ステップ 1(a) からただちに処理サイクルを再開します。

マクロの終了次画面があるかどうかに関係なく、マクロ・ランタイムは、終了画面としてマークが付けられたマクロ画面の処理が終了すると、マクロを終了します。

例のシナリオでは、Screen2 には終了画面のマークが付いています ( 29 ページの表8 を参照)。

終了画面の設定 (<screen> エレメントの属性) は、この目的のために存在し、マクロを終了するマクロ画面にマークを付けます。

マクロが記録されるときに、マクロ・オブジェクトは、デフォルトで、最後に記録されるマクロ画面に終了画面のマークを付けます。記録が完了した後、ユーザーは、任意のマクロ画面に終了画面のマークを付けたり、マークを解除したりすることができます。複数の終了画面が存在できます。

終了画面については、 52 ページの『終了画面』で詳しく説明しています。

36 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 55: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 5 章 画面記述

この章では、次の内容を取り上げます。

v 記述子、画面認識、および画面記述という用語

v Macro Facility がアプリケーション画面の記述を記録する方法

v 複数の記述子を結合する方法

v 各種の記述子

画面の説明および画面の認識のトピックは相互に関連し合っています。この章では、画面について記述することによって画面を認識できるようにするプロセスに主な焦点を当てます。また、2 つの機能どうしの基本的な関係について理解できるようにするため、画面認識についても十分な情報を提供します。画面認識プロセスについて詳しくは、 51 ページの『第 6 章 画面認識』に説明があります。

用語の定義記述子

マクロ画面の <description> エレメントで発生し、マクロ画面が対応するアプリケーション画面の識別特性を記述する XML エレメント。

例えば、ScreenB という名前のマクロ画面に、アプリケーション画面の行 3にストリング ISPF Primary Option Menu が入っていることを示すストリング記述子 (<string> エレメント) が含まれているとします。マクロの再生時に、マクロ・ランタイムが次に処理するマクロ画面を決定するとき、およびScreenB が候補である場合、マクロ・ランタイムは、ScreenB の記述子を実際のアプリケーション画面と比較します。その記述子が実際のアプリケーション画面と一致する (アプリケーション画面の行 3 に実際にそのストリングが含まれている) 場合、マクロ・ランタイムは、次に処理するマクロ画面として ScreenB を選択します。

画面記述マクロ画面の <description> エレメントに記述子を追加するプロセス。画面記述を行うのは、マクロ・エディターを使用してマクロ画面の記述子 (上記の例のストリング記述子など) を作成または編集する場合です。同様にマクロ・オブジェクトは、マクロの記録中 ( 38 ページの『説明の記録』を参照) に作成する新しいマクロ画面ごとに 1 つ以上の記述子を作成します。

画面認識マクロ画面候補と現行のアプリケーション画面の突き合わせを試みるときに、マクロ・ランタイムが実行するプロセス。

27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』で詳しく説明されているとおり、マクロ・ランタイムが次に処理するマクロ画面を決定する必要がある場合、そのマクロ・ランタイムは、マクロ画面候補 (通常は、現行マクロ画面の <nextscreens> エレメントに存在) の名前を有効な次画面のリストに加えます。次に、ホスト・アプリケーションがホスト端末を新しいアプリケーション画面で 更新するので、マクロ・ランタイ

© Copyright IBM Corp. 2003, 2015 37

Page 56: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ムは、リスト上の各マクロ画面の記述子を新しいアプリケーション画面と比較します。最終的に、マクロ・ランタイムがリスト上のマクロ画面のいずれかをアプリケーション画面と一致させることができる (例えば、ストリングISPF Primary Option Menu が行 3 に表示される) まで、アプリケーション画面が更新されます。一致したマクロ画面は、次に処理されるマクロ画面になります ( 30 ページの『プロセス全体の 3 ステージすべての概要』を参照)。

画面記述については、VME を使用する場合は 127 ページの『「画面認識」タブ』を、AME を使用する場合は 155 ページの『「説明」タブ』を参照してください。

説明の記録HATS ホスト端末でのマクロ記録中、作成される新しいマクロ画面それぞれの新しい <description> エレメントに 1 つ以上の記述子が追加されます。

記録するマクロの最初のマクロ画面を定義する必要があります。 HATS は、最初の画面の記述子に OIA 記述子を追加します。

最初のアプリケーション画面以降のマクロの他のすべてのアプリケーション画面に対して、画面を定義するか、HATS で画面を自動的に定義するかを選択できます。HATS で画面を定義する場合は、次の 3 つの記述子が作成されます。

v OIA 記述子が NOTINHIBITED に設定されます。

v カーソル記述子がアプリケーション画面の実際のカーソル位置に設定されます。

v 「入力フィールド数」記述子がアプリケーション画面の実際の入力フィールド数に設定されます (0 の場合もあります)。

したがって、マクロ・ランタイムは、記録されたマクロが (改訂なく) 再生されると、最初のマクロ画面に続くマクロ画面に関しては、入力禁止標識がクリアされているかどうか、カーソル位置がアプリケーション画面のカーソル位置と一致するかどうか、およびマクロ画面の記述内の入力フィールド数がアプリケーション画面内の入力フィールド数と一致するかどうかに基づいて、マクロ画面を対応するアプリケーション画面に一致させます。

記録された説明が機能する理由HATS によって自動的に作成され、記録された説明は、少なくとも次の 3 つの理由で適切に機能します。

第一に、OIA 記述子、カーソル位置、および入力フィールド数は、考えられるすべてのアプリケーション画面に適用できます。つまり、どのアプリケーション画面にも、いくつかの入力フィールド (おそらくその数は 0)、カーソルの開始位置、および入力禁止標識 (設定またはクリア) があります。

第二に、入力フィールド数とカーソル位置の組み合わせにより、アプリケーション画面の説明の信頼性が高まることです。これは、アプリケーション画面には、一般に多数のフィールドが含まれているからです。ただし、入力フィールドの数はそのうちのいくつかのみです。カーソル位置は常に最初の入力フィールドになります。

38 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 57: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第三に、おそらくこれが最も重要ですが、画面認識時に、マクロ・ランタイムは、新しいアプリケーション画面を、有効な次画面と呼ばれる、マクロ画面の短いリスト (通常、非常に短いリスト) と比較することです ( 29 ページの『マクロ画面の処理ステージ』を参照)。したがって、1 つのマクロ画面を、マクロ内の他のすべてのマクロ画面と区別する必要はありません。有効な次画面のリスト内の他の画面と区別するだけです。多くの場合、このリストは、1 つのマクロ画面から構成されます。

記録された記述子が提供するフレームワーク一部のマクロ画面の場合、記録された説明では、マクロ・ランタイムが 1 つのアプリケーション画面を別の類似したアプリケーション画面と確実に区別することができないことがあります。マクロの記録は、マクロのフレームワークを迅速に提供するため、今もなお非常に便利な機能です。ここでは、記録された記述を改善することができます。

多くの場合、記録された記述を改善する最も簡単な方法は、ストリング記述子を追加することです。例えば、マクロ画面を「Utility Selection Panel」で使用する場合は、3 行目のどこかでアプリケーション画面に「Utility Selection Panel」というストリングが含まれていることを指定するストリング記述子を追加できます。ただし、必ずストリング記述子を使用しなければならないわけではありません。一部の状況では、アプリケーション画面が正しく認識されることを確実にするために、1つ以上の他の記述子を使用する必要があります。

記述子の評価ここでは、マクロ画面がアプリケーション画面と一致するかどうかをマクロ・ランタイムが判別する方法を詳しく説明します。

以降のサブセクションを読み進めるときには、次の点を留意してください。

v 大部分のマクロ画面では、<description> エレメントに複数の記述子が含まれています。

v マクロ・エディターのデフォルトでは、すべての記述子が必須であり (各記述子の Optional 属性は false) 、デフォルトの結合規則が使用されます。

v 最も一般的なシナリオでは、すべての記述子が必須です。つまり、3 つの記述子を定義した場合、マクロ画面が認識されるために、それらの 3 つ全部を true にします。このシナリオを使用する場合は、デフォルト設定を使用してください。

v デフォルトのシナリオよりも複雑なシナリオに取り組む場合は、uselogic メソッドを使用してください ( 42 ページの『uselogic 属性』を参照)。

プロセスの概要次に、プロセスの概要を説明します。

1. マクロ・ランタイムは、各記述子を個々に評価し、その記述子のブール結果(true または false) を得ます。

2. マクロ・ランタイムは、個々の記述子のブール結果を結合して、記述全体がtrue であるか (マクロ画面がアプリケーション画面と一致する)、false であるかを判別します。個々の記述子の結果を結合するために、マクロ・ランタイムは、デフォルトの結合メソッドまたは uselogic メソッドを使用します。

第 5 章 画面記述 39

Page 58: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v デフォルトの結合メソッドを使用する場合

a. マクロ・ランタイムは、invertmatch 属性が true に設定されたすべての記述子のブール結果を反転します ( 41 ページの『Invertmatch 属性』を参照)。

b. マクロ・ランタイムは、次のものを使用して個々の記述子のブール結果を結合する。

– 各記述子の Optional 属性の設定

– 記述子を結合するためのデフォルト規則

v uselogic メソッドを使用する場合

a. マクロ・ランタイムは invertmatch 属性と Optional 属性の設定を無視します。

b. マクロ・ランタイムは、uselogic 属性でユーザーが指定した規則を使用して、個々の記述子の結果を結合する。

個々の記述子の評価マクロ記述内の個々の記述子ごとに、マクロ・ランタイムは記述子を評価し、ブール結果 (true または false) を得ます。

例えば、記述子がストリング記述子である場合、マクロ・ランタイムは、アプリケーション画面でその記述子が指定する行と列を調べ、その位置にあるストリングを、記述子が指定するストリングと比較します。この 2 つのストリングが一致する場合、マクロ・ランタイムは、値 true をストリング記述子に割り当てます。この2 つのストリングが一致しない場合、マクロ・ランタイムは、値 false をストリング記述子に割り当てます。

通常、マクロ画面には複数の記述子が含まれています。ただし、マクロ画面に記述子が 1 つのみ含まれる場合は (その記述子の invertmatch 属性が true に設定されていないことを前提とすると)、そのただ 1 つの記述子が true のときは、説明全体も true になり、マクロ・ランタイムは、マクロ画面をアプリケーション画面に一致するものと認識します。一方、その 1 つの記述子が false である場合、説明全体が false であり、マクロ画面は認識されません。

デフォルト結合メソッド<description> エレメントに複数の記述子がある場合、このセクションで説明されているデフォルト結合メソッドを使用するか、 42 ページの『uselogic 属性』で説明されている uselogic 属性を使用する必要があります。

デフォルト結合メソッドの用途デフォルト結合メソッドが適しているのは、次の 2 つのシナリオだけです。

v 個々の記述子がすべて true である場合にのみ、記述全体を true にする (最も一般的なシナリオ)。

v 個々の記述子の少なくとも 1 つが true である場合に、記述全体を true にする。

デフォルト結合メソッドの働きを十分理解している場合を除いて、他のシナリオにデフォルトのメソッドを使用しないでください。

40 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 59: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

デフォルト結合メソッドは、次のものを使用します。

v 個々の記述子のブール結果 ( 40 ページの『個々の記述子の評価』を参照)

v 各個別記述子の invertmatch 属性の値

v 各個別記述子の Optional 属性の値

v デフォルト結合規則

Invertmatch 属性すべての記述子は invertmatch 属性を持ちます。

記述子の評価に影響がないように、デフォルトでは、この属性は false です。

この設定値が true である場合、マクロ・ランタイムは、記述子の評価から得るブール結果を逆転させます。つまり、true を false にするか、false を true にします。

例えば、ストリング記述子が true である (記述子内のストリングが、アプリケーション・ウィンドウの画面と一致する) が、ストリング記述子の invertmatch 属性がtrue に設定されていると、マクロ・ランタイムが判断する場合、マクロ・ランタイムは、ストリング記述子の結果を true から false に変えます。

Optional 属性すべての記述子は Optional 属性を持ち、この属性は false (デフォルト) またはtrue に設定されます。

Optional 属性は、マクロ・ランタイムがデフォルト結合規則を使用して記述子のブール結果を結合する場合に、個々の記述子の結果を取り扱う方法を提示します。デフォルトでは、この属性は、false に設定されます。これは、記述子の結果が、オプションではなく必須であることを示します。

デフォルト結合規則前述のように、デフォルト結合規則が適しているのは、次の 2 つのシナリオだけです。

v 個々の記述子がすべて true である場合にのみ、記述全体を true にする (最も一般的なシナリオ)。

v 個々の記述子の少なくとも 1 つが true である場合に、記述全体を true にする。

すべての記述子が true である場合にのみ記述全体を true にする場合は、説明内のすべての記述子のOptional 属性を false (デフォルト設定) に設定してください。

一方、記述子の少なくとも 1 つが true である場合に記述全体を true にする場合は、記述内のすべての記述子の Optional 属性を true に設定してください。

デフォルト結合規則とその意味を十分に理解している場合を除いて、1 つのマクロ画面に複数の記述子があるその他のシナリオで、デフォルト結合規則を使用しないでください。詳しくは、 223 ページの『1 つのマクロ画面における複数の記述子のデフォルト規則』を参照してください。

第 5 章 画面記述 41

Page 60: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

また、規則とその意味を十分に理解している場合を除いて、1 つのマクロ画面内の複数の記述子のオプション属性に異なる値を設定 (一部を true とし、残りを falseと設定) しないでください。

uselogic 属性<description> エレメントの uselogic 属性を使用すると、上記のセクションで説明したデフォルト結合メソッドで使用可能な複数の記述子間で、より複雑な論理関係を定義できます。

HATS では、マクロを記録すると、デフォルトの uselogic 属性が <description>タグに追加されます。この属性は、マクロをホスト端末またはマクロ・エディターで編集すると、再生成されます。ソース表示でマクロを編集した場合には、再生成されません。

注: uselogic 属性を使用すると、マクロ・ランタイムは、個々の記述子のinvertmatch 属性と Optional 属性を無視します。

uselogic 属性の値は、単純化された論理式であり、その条件は、後続の記述子の 1ベースのインデックスです。図 9 は、uselogic 属性を含む <description> エレメントの例を示しています (分かりやすくするために、<string> エレメントの属性の一部が省略されています)。

図 9 において、uselogic 属性の値は次のとおりです。

(1 and 2) or (!1 and 3)

この論理式は、正規の論理式ではなく ( 22 ページの『条件演算子と論理演算子および式』を参照)、uselogic 属性のみで使用される、単純化されたスタイルの論理式です。このスタイルの論理式の規則は、次のとおりです。

v 数表示 1、2、3 などは、それぞれ <description> エレメント内の第 1、第 2、および第 3 の記述子のブール結果を表します (上記の図では、<oia>、<string>、および <cursor>)。対応する記述子が存在する数字だけ使用できます。例えば、<description> エレメントに 7 つの記述子がある場合、7 番目の記述子のブール結果を参照するには 7 を使用し、6 番目の記述子のブール結果を参照するには 6 を使用し、以下同様に使用できます。

v 次の論理演算子だけが使用できます。

表 9. uselogic 属性の論理演算子

演算子: 意味:

and 論理 AND

or 論理 OR (包含)

<description uselogic="(1 and 2) or (!1 and 3)" /><oia status="NOTINHIBITED" optional="false" invertmatch="false"/><string value="&apos;Foreground&apos; row="5" col="8"/><cursor row="18" col="19" optional="false" invertmatch="false"/>

</description>

図 9. <description> エレメントの uselogic 属性の例

42 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 61: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 9. uselogic 属性の論理演算子 (続き)

演算子: 意味:

! 論理 NOT (否定)

v 条件をグループ化するには、小括弧 () を使用できます。

v 以下のエンティティーは使用できません。

– 算術演算子および式

– 条件演算子および式

– 変数

– Java メソッドの呼び出し

42 ページの図 9 の例では、次のいずれかの状態が発生すると、マクロ・ランタイムは記述子が全体として true かどうかを判別します。

v 最初の記述子の結果が true であり、2 番目の記述子の結果が true である (1and 2)

v 最初の記述子の結果が false であり、3 番目の記述子の結果が true である (!1and 3)。

uselogic 属性を使用すると、マクロ・ランタイムは、個々の記述子の invertmatch属性と Optional 属性を無視することに留意してください。

記述子各タイプの記述子は、1 つのマクロ画面の <description> エレメント内にある個々の XML エレメントとして保管されます。

初めは、すべてのタイプの記述子を理解する必要はありません。その代わりに、次のタイプのみを理解することから始めてください。

v OIA 記述子

v 「フィールド数」記述子

v 「入力フィールド数」記述子

v ストリング記述子

これらのタイプの記述子だけで、多くの、おそらく大部分のアプリケーション画面を確実に記述できます。しかし、これらのタイプでは十分ではない場合は、他のタイプの記述子のいずれかを使用する必要があります。

表 10 は、すべてのタイプの記述子をリストし、1 つのマクロ画面 (具体的には、1つの <screen> エレメントに属する 1 つの <description> エレメント) に存在できる、各タイプの記述子数を示しています。

表 10. 記述子のタイプ、各タイプで使用できる数

記述子のタイプ: マクロ画面ごとに使用できるこのタイプの記述子数

OIA 1 (必須)

フィールド数 0 または 1

入力フィールド数 0 または 1

第 5 章 画面記述 43

Page 62: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 10. 記述子のタイプ、各タイプで使用できる数 (続き)

記述子のタイプ: マクロ画面ごとに使用できるこのタイプの記述子数

ストリング記述子 0 またはそれ以上

カーソル記述子 0 または 1

属性記述子 0 またはそれ以上

条件記述子 0 またはそれ以上

カスタム記述子 0 またはそれ以上

以下のサブセクションでは、各タイプの記述子を詳しく説明しています。

OIA 記述子 (<oia> エレメント)ほぼすべてのシナリオで、この記述子のデフォルト設定を受け入れることができます。デフォルト設定は NOTINHIBITED です。画面認識時には、次のことが行われます。

v ホスト端末の入力禁止標識が設定されている (つまり、入力が禁止されている)場合、マクロ・ランタイムはこの記述子を false と評価します。

v しかし、入力禁止標識がクリアされる (つまり、入力が禁止されない) 場合、マクロ・ランタイムはこの記述子を true として評価します。

これらは、予期した結果です。通常、入力禁止標識が設定されている間に、マクロ・ランタイムがマクロ画面を認識して、アクションの処理をただちに開始することを、ユーザーは希望しません。 (タイミングについて詳しくは、 90 ページの『画面の完了』を参照してください)。ただし、その問題の解決方法にかかわらず、ほとんどの場合、この記述子はデフォルト設定 (NOTINHIBITED) のままにしておく必要があります。

しかし、マクロ・ランタイムに入力禁止状態を無視させるシナリオの場合は、この記述子を DONTCARE に設定してください。

「フィールド数」記述子 (<numfields> エレメント)「フィールド数」記述子は、3270 または 5250 フィールドという特定の数を指定します。「フィールド数」入力フィールドには、整数、または整数に評価される任意のエンティティー (例えば、変数、演算式、または外部 Java メソッドの呼び出し)を使用できます。

画面認識時にマクロ・ランタイムは次のことを行います。

1. この記述子を評価し、整数の結果を取得する。

2. アプリケーション画面 (現在の状態) 内のフィールド数をカウントする。

3. この 2 つの数字を比較する。

2 つの数字が等しい場合、マクロ・ランタイムはこの記述子を true と評価します。等しくない場合、マクロ・ランタイムはこの記述子を false として評価します。

マクロ・ランタイムがホスト端末上のフィールドをカウントするときには、入力フィールドを含む、すべてのタイプの 3270 または 5250 フィールドをカウントします。

44 IBM Host Access Transformation Services: 拡張マクロ・ガイド

||

Page 63: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

この記述子を使用したくない場合は、「フィールド数」入力フィールドをブランクに設定してください。

「入力フィールド数 (Number of Input Fields)」記述子(<numinputfields> エレメント)

「入力フィールド数」記述子は、上記のセクションで説明した「フィールド数」記述子と非常によく似ています。違いは、「入力フィールド数」記述子が 3270 または 5250 入力フィールドの数を指定するのに対して、「フィールド数」記述子は、(入力フィールドを含む) すべてのタイプのフィールドの数を指定することです。

「入力フィールド数」フィールドには、整数、または整数に評価される任意のエンティティー (例えば、変数、演算式、または外部 Java メソッドの呼び出し) を使用できます。

画面認識時にマクロ・ランタイムは次の処理を行います。

1. この記述子を評価し、整数の結果を取得する。

2. アプリケーション画面 (現在の状態) 内の入力フィールド数をカウントする。

3. この 2 つの数字を比較する。

2 つの数字が等しい場合、マクロ・ランタイムはこの記述子を true と評価します。等しくない場合、マクロ・ランタイムはこの記述子を false として評価します。

この記述子を使用したくない場合は、「入力フィールド数」フィールドをブランクに設定してください。

ストリング記述子 (<string> エレメント)ストリング記述子は、次の情報を指定します。

v 一連の文字 (ストリング)

v ホスト端末上の長方形のテキスト域

マクロ・ランタイムは、長方形のテキスト域全体を検索して、指定されたストリングを見つけます。マクロ・ランタイムが長方形のテキスト域内でそのストリングを検出すると、ストリング記述子を true と評価します。検出しない場合、ストリング記述子を false と評価します。

長方形域の指定長方形のテキスト域を定義するには、対角戦場の隅の行と列の座標を指定します。これらの座標のデフォルト値は (1,1) と (-1,-1) です。これは、ホスト端末のテキスト域全体を示します。 -1,-1 などの負の値の意味については、 25 ページの『行または列の負の値の意味』を参照してください。整数、または整数に評価される任意のエンティティー (例えば、変数、演算式、または外部 Java メソッドの呼び出し)を使用できます。

長方形の領域は、ストリングが入る大きさにするか、ストリングより大きくすることができます。例えば、マクロ画面と一致させたいアプリケーション画面の長方形域 (6,20)、(6,37) に、ストリング 'Terminal and user parameters' があるとしま

第 5 章 画面記述 45

Page 64: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

す。この長方形域は、そのストリングがちょうど入る大きさです。アプリケーション画面のこの位置に常にこのストリングがある場合、正確な長方形域を指定できます。

ただし、マクロ画面に突き合わせるアプリケーション画面のその領域内に同じストリング 'Terminal and user parameters' があっても、アプリケーション画面のどの行にそのストリングが含まれているかについては予測できないとします。この場合、長方形域 (1,1)、(-1,-1) を指定できます。これは、マクロ・ランタイムがアプリケーション画面のすべての行を検索して、その識別ストリングを見つけることを示します。

ストリング値の場合、ストリング、またはストリングに評価される任意のエンティティー (例えば、変数、式、または外部 Java メソッドの呼び出し) を使用できます。このストリングは、選択したマクロのフォーマット (基本または拡張) に必須な形式である必要があります。

画面認識時にマクロ・ランタイムは次のことを行います。

1. 行と列の値を評価し、値ごとに整数の結果を取得する。

2. ストリング値を評価し、ストリングの結果を取得する。

3. 行と列の値によって指定されたアプリケーション画面 (現在の状態) 内の長方形のテキスト・ブロック内の任意の場所で、ストリングを探す。

マクロ・ランタイムが長方形のテキスト・ブロック内でストリングを見つけると、マクロ・ランタイムは、この記述子を true と評価します。見つからない場合、マクロ・ランタイムはこの記述子を false と評価します。

マクロ・ランタイムが長方形域を検索する方法 (Wrap 属性)Wrap 属性が「false」(デフォルト設定) に設定されている場合、マクロ・ランタイムは、長方形域の各行を別々に検索します。このメソッドが有効なのは、ストリング全体が 1 つの行に入っている場合です。例えば、ストリングが UtilitySelection Panel であり、長方形域が (1,1)、(24,80) である場合、マクロ・ランタイムは次のようにこのストリングを検索します。

1. 長方形域の最初の行を取得する。ストリングがこの行にあるかどうかを判別します。ない場合は、次の行を検索します。

2. 長方形域の 2 番目の行を取得する。ストリングがこの行にあるかどうかを判別します。ない場合は、次の行を検索します。

3. 以降も同様です。

一方、Wrap 属性が「true」に設定されている場合、マクロ・ランタイムは、次のようにストリングを検索します。

1. 長方形域のすべての行を取得し、それらを、順に連結する。

2. 連結された行内にストリングがあるかどうかを判別する。

検索対象のストリングが、ホスト端末上のある行から次の行に折り返される可能性がある場合は、Wrap 属性を「true」に設定してください。この属性を、抽出アクションの Unwrap 属性と混同しないください。抽出アクションの Unwrap 属性は、テキスト・ブロックではなく、フィールドに基づきます ( 65 ページの『unwrap 属性』を参照)。

46 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 65: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

次の記述は、Wrap 属性が「true」に設定されている例を示しています。

図 10 は、アプリケーション画面の行 14 から 18 を示しています。

図 10 では、各行の最初の文字がブランク・スペースになっています。例えば、行14 では、先頭の 2 文字は ' 6' です。つまり、ブランクのスペースの後に数表示6 が続いたものです。このアプリケーション画面で、次の長方形のテキスト・ブロックがあるかどうか検査するストリング記述子をセットアップするものとします。

HardcopyTransferOutlistCommandsReserved

この複数行のブロックのストリング記述子をセットアップする手順は、次のとおりです。

1. 新規ストリング記述子を作成する。

2. テキスト長方形の左上隅の行と列の位置を (14, 5) に、右下隅の行と列の位置を(18, 12) に設定する。

3. ストリング値を設定する。ストリング値は次のとおりです。

'HardcopyTransferOutlist CommandsReserved'

4. Wrap 属性を「true」に設定する。

5. その他のすべての属性をデフォルト設定のままにする。

上記のステップ 3 では、5 つの行が 1 つのストリングに連結され、充てん文字(例えば、改行や末尾のスペース) は追加されないことに注意してください。しかし、このストリングには、'Outlist' の後のブランクのスペースが含まれます。これは、そのブランクのスペースが、長方形の境界内に含まれるからです。

ストリング記述子における抽出ストリングの使用: 抽出アクションを使用して、画面からのテキストをストリング変数に読み取る場合 ( 63 ページの『抽出アクション (<extract> エレメント)』を参照)、以降の画面で、ストリング記述子の「ストリング」入力フィールドでそのストリング変数を使用できます。

例えば、ScreenA で、抽出アクションを使用して、ホスト端末から $strTmp$ という名前のストリング変数に、会社名を読み取ることができます。その後、ScreenBでは、ストリング記述子で検索されるストリングとして $strTmp$ を使用できます。

これを実行できるのは、Wrap 属性が「true」に設定されている場合に、複数行のテキストを抽出するときです。

6 Hardcopy ハードコピー出力の開始7 Transfer ISPF クライアント/サーバーまたは転送データ・セットのダウンロード8 Outlist 保留ジョブ出力の表示、削除、印刷9 Commands アプリケーション・コマンド・テーブルの作成/変更* Reserved This option reserved for future expansion

図 10. アプリケーション画面の行 14 から 18

第 5 章 画面記述 47

Page 66: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

同じ <description> エレメント内の複数のストリング記述子同じ <description> エレメント内に複数のストリング記述子を作成できます。信頼性の高い記述を作成するには、必要な数のストリング記述子を使用する必要があります。

同じ <description> エレメントで、同じ長方形のテキスト・ブロックに対して 2 つの異なるストリングを定義することもできます。これを実行できるのは、マクロ画面に対応するアプリケーション画面が、同じロケーションに異なるストリングを、異なる時間に表示する場合です。しかし、同じ長方形のテキスト・ブロックに 2 つの異なるストリングを定義する場合、両方のストリングが必須でない (両方ともオプションである) ことを指定するように注意してください。

カーソル記述子 (<cursor> エレメント)カーソル記述子は、アプリケーション画面上の行と列の位置 (例えば、行 10 と列50) を指定します。行の値と列の値のどちらにも、整数、または整数に評価される任意のエンティティー (例えば、変数、演算式、または外部 Java メソッドの呼び出し) を使用できます。

画面認識時にマクロ・ランタイムは次のことを行います。

1. 行の値を評価し、整数の結果を取得する。

2. 列の値を評価し、整数の結果を取得する。

3. アプリケーション画面 (現在の状態) 内のテキスト・カーソルの行と列の位置を調べる。

4. 記述子内の行と列の位置を、アプリケーション画面のテキスト・カーソルの行と列の位置と比較する。

2 つの位置が同じである場合、マクロ・ランタイムはこの記述子を true と評価します。条件式が false に評価される場合、マクロ・ランタイムはこの記述子を falseと評価します。

属性記述子 (<attrib> エレメント)属性記述子は、3270 または 5250 属性、およびアプリケーション・ウィンドウ上の行と列の位置を指定します。

画面認識時に、マクロ・ランタイムは、指定された属性 (例えば、0x3) を、指定された行と列にある実際の属性と比較します。これらの属性が同じである場合、マクロ・ランタイムはこの記述子を true と評価します。そうでない場合、マクロ・ランタイムはこの記述子を false と評価します。

属性以外は非常によく似ている 2 つのアプリケーション画面を区別しようとするときに、この記述子は便利です。

条件記述子 (<condition> エレメント)条件記述子は、マクロ・ランタイムが画面認識時に評価する条件式($intNumVisits$ == 0 など) を指定します。条件式の詳細については、 22 ページの『条件演算子と論理演算子および式』を参照してください。

画面認識時にマクロ・ランタイムは、条件式を評価し、ブール結果を得ます。

48 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 67: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

条件式が true に評価される場合、マクロ・ランタイムはこの記述子を true と評価します。条件式が true に評価されない場合、マクロ・ランタイムはこの記述子をfalse と評価します。

条件記述子は、マクロ・ランタイムが、1 つ以上の変数の値、または Java メソッドの呼び出しの結果に基づいて、次に処理されるマクロ画面を判別できるようにすることによって、画面認識の柔軟性と能力を向上させます。

カスタム記述子 (<customreco> エレメント)カスタム記述子では、カスタム記述コードを呼び出すことができます。

カスタム記述子を作成するには、ソース表示を使用して、<customreco> エレメントを 1 つマクロ画面の <description> エレメントに追加する必要があります。このエレメントについて詳しくは、 200 ページの『<customreco> エレメント』を参照してください。

注: HATS マクロの画面記述子でカスタム画面認識を使用している場合で、そのマクロが <playmacro> アクションを介して別のマクロ内から呼び出されている場合は、そのカスタム画面認識のロジックは正しく機能しません。

HATS は、チェーンの先頭のマクロ内のカスタム認識イベントに対するリスナーとしてのみ登録できます。HATS は、そのチェーン内の後続のマクロに対するリスナーとしては登録できません。

この問題を解決するには、HATS カスタム画面認識を使用する際は、チェーンされていないマクロを使用します。

変数更新アクション (<varupdate> エレメント)変数更新項目は記述子ではありません。マクロ言語により <description> エレメント内で発生するのを許可されているアクションです。

<description> エレメント内の変数更新アクションは、<actions> エレメントで実行するのと同じタイプの操作を実行します。つまり、指定された値を指定された変数に保管します。

変数更新アクションの作成については、 80 ページの『変数更新アクション(<varupdate> エレメント)』を参照してください。

説明内の変数更新アクションの処理変数更新アクションが <description> エレメント内にあるときに、マクロ・ランタイムが 1 つ以上の変数更新アクションを処理する方法に注意してください。

1. マクロ・ランタイムは、すべての変数更新アクションの順番が先頭であるかのように、これらのアクションをただちに実行する。

2. その後、マクロ・ランタイムは、説明内の残りの項目 (記述子) を通常どおりに評価し、全体的なブール結果を得る。変数更新アクションは、ブール結果に影響しません。

第 5 章 画面記述 49

Page 68: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

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

例えば、マクロが再生中であり、画面名 ScreenB が有効な次画面のリスト上にあり、図 11 に表示されているような <description> エレメントが ScreenB に含まれているとします。

マクロ・ランタイムが ScreenB を現行のアプリケーション画面と突き合わせようとするたびに、次のことを行います。

1. マクロ・ランタイムは <varupdate> アクションを見てそのアクションを実行し、$intUpdate$ の値を 1 つ大きくします。

2. マクロ・ランタイムは、<oia> 記述子と <attrib> 記述子を評価し、<description> エレメント全体のブール結果を得る。

uselogic 属性を使用した変数更新<description> エレメント内の変数更新アクションを、先頭以外の順序でマクロ・ランタイムに実行させたい場合は、デフォルト結合規則ではなく、<description> エレメントの uselogic 属性を使用して、実行の順序を変更できます ( 42 ページの『uselogic 属性』を参照)。

uselogic 属性で変数更新アクションが使用される場合は、次のようになります。

v マクロ・ランタイムは、uselogic 属性で指定されるのと同じ順序で変数更新アクションを実行する。

v マクロ・ランタイムは、常に変数更新アクションを true に評価する。

<description><oia status="NOTINHIBITED" optional="false" invertmatch="false" /><varupdate name="$intUpdate$" value="$intUpdate$+1" /><attrib value="0x4" row="1" col="1" plane="COLOR_PLANE" optional="false"

invertmatch="false" /></description>

図 11. ScreenB の <description> エレメント

50 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 69: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 6 章 画面認識

有効な次画面の認識27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』で説明

されているとおり、マクロ・ランタイムは通常、現行マクロ画面の <nextscreens>エレメント内を探すことにより、処理される次のマクロ画面候補となるマクロ画面の名前を見つけます。つまり、マクロ画面自体の中に、次の処理対象として有効なマクロ画面のリストが含まれています。エントリー画面と一時画面は例外です。

エントリー画面、終了画面、および一時画面エントリー画面、終了画面、および一時画面の設定を使用して、マクロ・ランタイムが特別な方法で処理するマクロ画面にマークを付けることができます。ソース表示では、これらの設定値は <screen> エレメントの属性として表示されます。

6 ページの図 1 では、entryscreen、exitscreen、および transient の 3 つの属性が Screen1 の <screen> エレメントにあることが分かります。

これらの設定を行う場所については、VME を使用する場合は 127 ページの『「一般」タブ』を、AME を使用する場合は 152 ページの『「画面」タブ』を参照してください。

エントリー画面マクロの実行時に最初に処理される画面の 1 つとして扱うマクロ画面を指定するには、画面をエントリー画面としてマークを付けます。1 つのマクロ画面のみにエントリー画面としてマークを付ける場合と、複数のマクロ画面にマークを付ける場合があります。

マクロの再生が開始されると、マクロ・ランタイムはマクロ・スクリプトを検索し、エントリー画面として指定されたマクロ画面すべてを検出します。その後、マクロ・ランタイムはこれらのエントリー・マクロ画面の名前を有効な次画面のランタイム・リストに追加します。さらに、マクロ・ランタイムは、リストにある画面のいずれかと現行ホスト端末の一致を通常の方法で検索します。

エントリー・マクロ画面のいずれかとホスト端末の一致がマクロ・ランタイムによって検出されると、そのマクロ画面が最初に処理されるマクロ画面になります。最初のマクロ画面のアクションを実行する前に、マクロ・ランタイムは、有効な次画面のランタイム・リストからエントリー・マクロ画面の名前を除去します。

複数のエントリー画面があるマクロエントリー画面は、マクロ・スクリプト内での登場順に評価されます。同じマクロ内に複数のエントリー画面がある状況の 1 つは、ホスト・アプリケーションがアプリケーション画面 A を開始し、次にアプリケーション画面 B、次にアプリケーション画面 C といったように、一連のアプリケーション画面を次々に開始する場合で

© Copyright IBM Corp. 2003, 2015 51

Page 70: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

す。例えば、画面 A はログオン画面、画面 B は複数のサポート・プロセスを開始する画面、画面 C はアプリケーションの実際の初期画面です。

この状況で、ユーザーがアプリケーション画面 A、B、または C のどれを表示していてもマクロを実行できるようにすることができます。

通常画面としてのエントリー画面画面をエントリー画面として指定しても、その画面はマクロ内で通常の画面としても使用でき、他のマクロ画面の <nextscreens> リストに入れることができます。

例えば、一連のメニュー選択項目のある、中央アプリケーション画面を持つホスト・アプリケーションがあるとします。メニュー選択を行うたびに、アプリケーションはいくつかのアプリケーション画面の処理を完了し、元の中央アプリケーション画面に戻ります。

この状況で、マクロ ScreenA が中央アプリケーション画面に対応するマクロ画面であるとします。以下の両方が適用されます。

v マクロは中央アプリケーション画面から開始できるため、 ScreenA をエントリー画面にすることができます。

v ScreenA は他のマクロ画面の <nextscreens> エレメント内でも指定できます。これは、それぞれのタスク後にアプリケーションが中央アプリケーション画面に戻るからです。

終了画面終了画面としてマクロ画面をマーク付けすると、マクロ・ランタイムはそのマクロ画面のアクションを実行した後、マクロを終了します。つまり、マクロ・ランタイムがアクションを実行した後、画面認識に進む前にマクロ・ランタイムは現行マクロ画面の終了画面標識が true に設定されているかどうか調べます。true に設定されている場合、マクロ・ランタイムはマクロを終了します (マクロ・ランタイムは、出口画面の <nextscreens> エレメントを無視します)。

マクロの終了画面はいくつでも設定できます。複数の終了画面がある状況として、以下のような例があります。

v マクロに 1 つの正常終了ポイントと複数の異常終了ポイント (エラーが発生した場合に進む) がある。

v 処理中に特定のポイントでマクロを停止することも、先に進むこともできるので、複数の正常終了ポイントが存在する。

一時画面一時マクロ画面は、次の特性を持つアプリケーション画面の処理に使用されます。

v アプリケーションのフロー中、そのアプリケーション画面の発生が予測できない。複数のポイントで発生する場合もあれば、まったく発生しない場合もあります。

v そのアプリケーション画面に対して行う必要があるアクションは消去のみ。

このようなアプリケーション画面の一例は、ユーザーが無効なデータを入力したときにアプリケーションが表示するエラー画面です。このエラー画面が表示される回

52 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 71: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

数は予測不能 (ユーザーが無効なデータを入力したとき) であり、マクロ開発者としてこのエラー画面に対して行う必要があるアクションは、エラー画面を消去してマクロを元どおり実行することだけです。

マクロ・ランタイムは、マクロの再生を準備する際に、エントリー画面の名前を有効な次画面のランタイム・リストに追加する時点で、一時画面のマークが付けられたマクロ画面があれば、その名前もすべてリストの末尾に追加します。

一時画面は、エントリー画面としてのマークが付けられていないエントリー画面と見なされます。一時画面をエントリー画面として選択すると、そのアクションが実行され、続いてマクロがすべてのエントリー画面とすべての一時画面を検査して、一致する次の画面を決定します。

これらの一時画面のリストは、マクロの再生全体を通して、有効な次画面のランタイム・リストに残ります。マクロ・ランタイムが新しい候補マクロ画面の名前を(現行マクロ画面の <nextscreens> エレメントから) リストに追加するとき、マクロ・ランタイムはこれらの新しい候補名を一時画面の名前の前に追加するので、一時画面の名前は必ずリストの最後にあります。

マクロ・ランタイムが画面認識を実行するとき、リストにあるすべての名前のマクロ画面を通常の方法で評価します。マクロ・ランタイムは、リストに名前がある候補マクロ画面の中からアプリケーション画面との一致を見つけられない場合、リストを下に向かって進み、アプリケーション画面のリストに指定された一時マクロ画面の 1 つとの突き合わせを試みます。

現行アプリケーション画面といずれかの一時マクロ画面との一致を検出した場合、マクロ・ランタイムはリストから名前を除去しません。代わりに、マクロ・ランタイムは一時マクロ画面のアクション (予期しないアプリケーション画面を消去する)を実行し、予期しないアプリケーション画面が発生したときに行っていた画面認識処理に戻ります。

一時画面の処理の例マクロ・ランタイムが画面認識を行っていて、有効な次画面のリストに 3 つのマクロ画面の名前があるとします。これらの画面は、ScreenB と ScreenD (候補画面の名前)、および ScreenR (一時画面の名前) です。マクロ・ランタイムは次のステップを実行します。

1. ホスト端末の表示スペースが更新されると、マクロ・ランタイムは有効な次画面のリストに名前がある画面を通常の方法で評価します。

2. 予期しないアプリケーション画面が発生したため、ScreenB または ScreenD は現行アプリケーション画面と一致せず、ScreenR は現行アプリケーション画面と一致したとします。

3. 一時画面が認識されたので、マクロ・ランタイムは有効な次画面のリストから名前を除去しません。

4. マクロ・ランタイムは、ScreenR を処理対象の現行マクロ画面にします。

5. マクロ・ランタイムは、ScreenR のアクションを実行します。これらのアクションは、予期しないアプリケーション画面を消去します。

6. マクロ・ランタイムは、ScreenR 内の <nextscreens> エレメント (ある場合)を無視します。

第 6 章 画面認識 53

Page 72: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

7. マクロ・ランタイムは、前述のステップ 1 で行っていた直前の画面認識タスクに戻ります。有効な次画面のリストは変更されていません。今度は、予想通りのアプリケーション画面が表示され、ScreenD がその画面に一致することをマクロ・ランタイムが検出したとします。この場合、次のようになります。

a. マクロ・ランタイムは、ScreenD を次に処理するマクロ画面にします。

b. マクロ・ランタイムは、有効な次画面のリストから名前 ScreenB とScreenD を除去します。名前 ScreenR はリストに残ります。

c. マクロ・ランタイムは、ScreenD のアクションの処理を開始します。

画面認識のタイムアウト設定ここでは、現行アプリケーション画面と有効な次画面のリストにある画面の一致が見つからないために、マクロ・ランタイムが先に進むことができないシナリオについて説明します。次の 2 つのフィールドを使用して、タイムアウト値を設定できます。タイムアウトになる前に画面認識が成功しない場合、マクロは終了します。

v <HAScript> エレメントの timeout 属性。

v <nextscreens> エレメントの timeout 属性。

画面認識マクロ・ランタイムは、マクロ画面の <actions> エレメント内のすべてのアクションを実行した後、新しいアプリケーション画面 ( 27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』 を参照) に対して、有効な次画面のリストにある画面の 1 つの突き合わせを試みます。

場合によっては、予測できない事情のために、有効な次画面のリストにあるマクロ画面とアプリケーション画面の一致を、マクロ・ランタイムが検出できないことがあります。例えば、予測しなかったアプリケーション画面にナビゲートする入力シーケンスをユーザーが入力する場合があります。また、システム・プログラマーがアプリケーション画面を変更したために、そのアプリケーション画面が、対応するマクロ画面の <description> エレメント内の記述と一致しなくなることもあります。

こうしたシナリオが発生すると、マクロ・ランタイムが一致の検出を試行して失敗し続けている間、マクロはハング状態になります。

<HAScript> エレメントの timeout 属性<HAScript> エレメントの timeout 属性は、VME の「画面間のタイムアウト」設定を使用して設定できます。 125 ページの『「一般」タブ』を参照してください。AME の場合は、 151 ページの図 61 を参照してください。この属性は、画面認識のタイムアウト値を指定します。デフォルトでは、指定された値はマクロ内の各マクロ画面すべてに適用されます。ただし、<nextscreens> エレメントの timeout 属性を使用すると、特定のマクロ画面に対する値を変更できます ( 55 ページの『<nextscreens> エレメントの timeout 属性』を参照)。

マクロ・ランタイムは、画面認識の実行を開始するたびに、タイムアウト値がマクロ全体に対して設定されているか、または次画面のマクロ画面のリストに対して設定されているかを判別するための検査を行います。タイムアウト値が設定されてい

54 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 73: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

る場合、マクロ・ランタイムは、タイムアウト値に指定されているミリ秒数にタイマーを設定します。マクロ・ランタイムが画面認識を完了する前にタイマーが満了した場合、マクロ・ランタイムはマクロを終了します。ブラウザーにエラー・ページが表示され、サーバー・コンソールに次のようなメッセージが表示されます。

このメッセージには、マクロの名前と、タイムアウトが発生したときに処理していた画面の名前が表示されていることに注意してください。例えば、このメッセージに指定されている画面が ScreenA ならば、マクロ・ランタイムはすでに ScreenAのアクションをすべて実行済みで、ScreenA の有効な次画面リストにあるマクロ画面とアプリケーション画面の一致を検索していました。

マクロがホスト端末で再生されている場合は、次のメッセージが表示されます。

指定される場合、デフォルトのタイムアウト値は 60000 ミリ秒 (60 秒) に設定されます。

<nextscreens> エレメントの timeout 属性<nextscreens> エレメントの timeout 属性は、画面認識のタイムアウト値を指定します。この属性は、VME ではソース・タブを使用することにより、および AMEでは「タイムアウト」フィールドを使用することにより、設定できます。 163 ページの図 73 を参照してください。この値がゼロ以外の場合、マクロ・ランタイムは、 <HAScript> エレメントの timeout 属性に設定されている値を使用しないで、この値を、有効な次画面の現行のリストのマクロ画面の画面認識に対するランタイム値 (ミリ秒単位) として使用します。

マクロ・ランタイムが画面認識を完了する前にタイマーが満了した場合、マクロ・ランタイムは図 12 のメッセージを表示します。

認識限界認識限界を設定すると、マクロ・ランタイムが特定のマクロ画面を処理する回数が多すぎる場合に、何らかのアクションを行うことができます。マクロ・ランタイムが同じマクロ画面を処理する回数が多い場合 (100 など)、その理由はおそらく、マクロ内でエラーが発生して、マクロがエンドレス・ループから抜け出せなくなっているためです。

Macro timed out: (Macro=ispf_ex2, Screen=screen_address_type)

図 12. 画面認識タイムアウトのエラー・メッセージ

The host terminal does not match any expected screens.

図 13. ホスト端末に表示されるエラー・メッセージ

第 6 章 画面認識 55

Page 74: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

認識限界は、<screen> エレメントの開始タグ内の属性ではなく、<screen> エレメント内でオプションとして指定できる別個のエレメント (<recolimit> エレメント)です (<description>、<actions>、および <nextscreens> の各エレメントと同レベル)。

<recolimit> エレメントは、VME と AME の両方で、「認識限界の設定 (SetRecognition Limit)」チェック・ボックスおよび「エラー前の画面数」入力フィールドを使用して追加できます。 152 ページの『「画面」タブ』を参照してください。

認識限度に達すると、マクロ・ランタイムはエラー・メッセージを出してマクロを終了するか (これがデフォルト・アクションです)、指定した別のマクロ画面の処理を開始します。

認識限界は 1 つの特定の画面に適用され、デフォルトでは認識限界は指定されないことに気がつきます。認識限度は任意のマクロ画面に対して指定でき、認識限度を組み込むそれぞれのマクロ画面ごとに、指定する認識限度の値は同じでも異なっていてもかまいません。

認識限度に達したことの判別マクロ・ランタイムは、<recolimit> エレメントを含むそれぞれのマクロ画面ごとに認識カウントを記録します。マクロの再生が開始されると、すべてのマクロ画面の認識カウントが 0 になります。

マクロに ScreenB という名前のマクロ画面が含まれていて、ScreenB に認識限界100 を指定した <recolimit> エレメントがあるとします。マクロ・ランタイムがScreenB を認識するたびに (つまり、マクロ・ランタイムが ScreenB を次に処理するマクロ画面として選択するたびに)、マクロ・ランタイムは次のステップを実行します。

1. マクロ・ランタイムは、ScreenB 内の <recolimit> エレメントの存在を検出する。

2. マクロ・ランタイムは、ScreenB の認識カウントを増分する。

3. マクロ・ランタイムは、認識カウントを認識限界と比較する。

4. 認識カウントが認識限界より小さければ、マクロ・ランタイムは通常どおりScreenB のアクション・エレメントの実行を開始する。

5. ただし、認識カウントが認識限界より大か等しい場合、マクロ・ランタイムは<recolimit> エレメントに指定されたアクションを実行する。この場合、マクロ・ランタイムは ScreenB のアクション・エレメントを処理しません。

認識限度に達したときのアクション認識限界に達したときのデフォルト・アクションでは、マクロが強制終了され、ブラウザーにエラー・ページが表示されます。次のエラー・メッセージがサーバー・コンソールに表示されます。

認識限界に達しましたが、goto 画面が提供されていません。マクロを終了します。(Recolimit reached, but goto screen not provided, macro terminating.)

認識限界アクションとして、マクロ・ランタイムに別の画面への移動を行わせたい場合は、「一般」画面プロパティー・パネルで goto 属性を設定できます。「Goto

56 IBM Host Access Transformation Services: 拡張マクロ・ガイド

|

|

|

|

|

|

|

||

|

|

Page 75: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

画面名」入力フィールドを使用して、属性の値としてターゲット・マクロ画面の名前を指定します ( 215 ページの『<recolimit> エレメント』を参照)。

goto 属性を使用すると、マクロ・ランタイムはマクロを終了せず、代わりに属性に指定されたマクロ画面の処理を開始します。

ターゲット・マクロ画面はどの目的にも使用できます。考えられる用途には次のものがあります。

v デバッグの場合

v マクロを終了する前にユーザーに対して情報メッセージを表示する

v マクロの処理を継続する

第 6 章 画面認識 57

|

|

Page 76: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

58 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 77: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 7 章 マクロ・アクション

機能別のアクション次に、すべてのアクションのリストを機能別にグループ分けして示します。

v ユーザーとの対話

– 入力 (キー・ストローク、およびクリップボードへのコピーなど、キーによってアクティブになる機能)

– マウス・クリック

– プロンプト

v アプリケーションからのデータの取得

– 抽出

– SQLQuery

– 変数更新

v 待機

– 通信待機

– 一時停止

v プログラミング

– 条件

– 実行 (Java メソッドの呼び出し)

– マクロ再生 (別のマクロへのチェーン)

– 変数更新

v デバッグ

– トレース

アクションの実行方法

ランタイムのコンテキスト27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』で説明

したとおり、マクロ・ランタイムが新しい現行マクロ画面を選択した場合、マクロ・ランタイムは、そのマクロ画面の <actions> エレメントにあるアクションの実行を即時に開始します。

マクロ・ランタイムは、すべてのアクションを実行後すぐに、次に処理するマクロ画面を判別する次のステップに進みます。

マクロ画面のコンテキスト単一のマクロ画面内では、マクロ・ランタイムは <actions> エレメント内での出現順にアクションを実行します。この順序は、「アクション」リストで設定したアクションの順序と同じです。

© Copyright IBM Corp. 2003, 2015 59

Page 78: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ画面のアクションの作成は必須ではありません。 <actions> エレメントがない場合、または <actions> エレメントが空の場合、マクロ・ランタイムはただちにマクロ画面処理の次のセクション (次に処理するマクロ画面の選択) に移ります。

アクションのパラメーターの指定一般に、アクションのパラメーターを指定する際には、特定の標準データ・タイプの即時値を受け入れるコンテキストはすべて、同じデータ・タイプのエンティティーをどれでも受け入れることに注意してください。例えば、ある入力フィールドがストリング値を受け入れる場合、そのフィールドは、ストリングに評価される式、ストリングに変換される値、ストリング変数、またはストリングを戻すインポート済みメソッドの呼び出しも受け入れます ( 24 ページの『等価』を参照)。

ただし、変数を使用できないフィールドがいくつかあります ( 102 ページの『変数が保持する値の使用』を参照)。

VME を使用したアクションの指定方法については、 132 ページの『アクションの操作』を、AME を使用した指定方法については、 161 ページの『アクション・タブ』を参照してください。

アクション

通信待機アクション (<commwait> エレメント)通信待機アクションは、セッションの通信状況がアクションに指定した状態に変わるまで待ちます。例えば、セッションが完全に接続状態になるまで待つ通信待機アクションを作成できます。

このアクションは、VME ではソース・タブを使用して、 AME ではアクション・タブを使用して指定することができます。 170 ページの『通信待機アクション』を参照してください。

アクションの動作マクロ・ランタイムが通信待機アクションの実行を開始すると、ランタイムは通信待機アクションに指定された通信状況を注視し、セッションの実際の通信状況と比較します。2 つの状況が一致した場合、マクロ・ランタイムは通信待機アクションが完了したと判断し、マクロ・ランタイムは次のアクションの実行に進みます。

ただし、2 つの状況が一致しない場合、マクロ・ランタイムは他の処理を行わず、通信待機アクションに指定された通信状況がセッション内で実際に発生するまで単に待ちます。

タイムアウト値の有効期間が切れるとマクロ・ランタイムが通信待機アクションを終了するように、通信待機アクションにミリ秒単位のタイムアウト値を指定できます。つまり、マクロ・ランタイムが待っている通信状況にならなくても、タイムアウト値の有効期限が切れるとマクロ・ランタイムはアクションを終了します。

60 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 79: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

通信待機アクション後、セッションが必要とする通信状況に実際になったか、または通信待機アクションがタイムアウトのために終了したかを示すアプリケーション画面の特性を確認するために、抽出アクションなどの他のアクションを使用したい場合があります。

永続的な通信状況の指定通常、セッションの接続または切断時には、通信状況はいくつかの状態を素早く通過してから (例えば、保留アクティブ、アクティブ、作動可能の順に)、安定した状態を一定期間保つ特定の状態 (CONNECTION_WORKSTATION_ID_READY など)に達します。ほとんどの場合、その永続的な終了状態を通信待機アクションに指定する必要があります。

代わりに保留アクティブなどの過渡的な状態を指定した場合、マクロ・ランタイムが通信待機アクションを実行する機会を得る前に、セッションがその状態を通過して次の状態に進む可能性があります。このため、マクロ・ランタイムが通信待機アクションを実行すると、すでに発生した状態をいつまでも待つことになります。

例図 14 に、Telnet セッション折衝が開始されるか、Telnet 折衝セッションが行われずに 10 秒が経過するかのいずれかの状況が先に生じるまで待機する通信状態の指定例を示します。

詳しくは、 196 ページの『<commwait> エレメント』を参照してください。

条件アクション (<if> エレメントおよび <else> エレメント)条件アクションには次の項目があります。

v マクロ・ランタイムが真または偽として評価する条件式。

v 条件が真として評価された場合にマクロ・ランタイムが実行するアクションのリスト (オプション)

v 条件が偽として評価された場合にマクロ・ランタイムが実行するアクションのリスト (オプション)

条件アクションには、if 文または if-else 文の機能があります。

このアクションを指定するには、VME を使用する ( 134 ページの『Evaluate (If)アクション』を参照) 方法と、 AME を使用する ( 170 ページの『条件付きアクション』を参照) 方法があります。

条件アクションの中で使用できない条件アクションマクロ・エディターでは、条件アクションを別の条件アクションの中に作成できません。このため、別の if 文の中にネストされた if 文や、else 文の中にネストされた if 文に相当するものは使用できません。

<commwait value="CONNECTION_READY" timeout="10000" />

図 14. 通信待機アクションの例

第 7 章 マクロ・アクション 61

Page 80: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

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

本書のコードをシステム・クリップボードにコピーして、システム・クリップボードからソース表示にコピーできます。このコードは該当する部分のみであり、既存のマクロ・スクリプトのマクロ画面にコピーする必要があります。また、ストリング変数 $strData$ も作成する必要があります。この変数を作成するには、以下の行を <HAScript> 開始タグと最初の <screen> エレメントの間に追加してください。

<vars><create name="$strData$" type="string" value="" />

</vars>

スクリプトはマクロ・エディターで保存した後、マクロ・エディターまたはソース表示で編集できます。

この例については、次の点に注意してください。

v この例は、<actions> エレメントを含むコードの部分とその中にあるアクションから構成されています。

v 最初のアクションは、メッセージ・ウィンドウを表示し、ユーザーの入力をセッション・ウィンドウの入力フィールドに書き込むことなく、その入力を変数$strData$ にコピーするプロンプト・アクションです。

v 条件アクション (<if> エレメント) の最初の部分には条件があり、これは単に$strData$ です。

v $strData$ はブール・コンテキストにおけるストリング変数であるため、マクロ・ランタイムはこのストリングをブール値に変換しようと試みます ( 23 ページの『自動データ・タイプ変換』を参照)。ユーザーの入力がストリング 'true'(小文字、大文字、または大/小文字混合) であれば、変換は正しく完了し、条件にはブール値 true が入ります。ユーザーの入力が他のストリングであれば、変換は失敗し、条件にはブール値 false が入ります。

v 条件が true の場合、マクロ・ランタイムは <if> エレメントの内部でアクションを実行します。これは、ホスト画面に「You typed TRUE」というメッセージを表示する入力アクションです。<if> エレメント内部のアクションすべてが実行されると、マクロ・ランタイムは <else> アクションをスキップしてマクロ処理を続行します。

v 条件が false の場合、マクロ・ランタイムは <if> エレメント内のアクションをスキップオーバーし、<else> エレメント内のアクションを実行し始めます。これには、ホスト画面に「You typed FALSE」というメッセージを表示する入力アクションが 1 つ含まれています。<else> アクションにあるアクションをすべて実行した後、マクロ・ランタイムはマクロ処理を続行します。

62 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 81: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

詳しくは、 205 ページの『<if> エレメント』を参照してください。

抽出アクション (<extract> エレメント)抽出アクションは、ホスト端末からデータを抽出し、オプションでそのデータを変数に格納します。このアクションは非常に有用で、アプリケーション・データの読み取り用にマクロ・オブジェクトが提供する基本的な方法です (ツールキットのプログラミング API の使用に代わるものです)。

このアクションを指定するには、VME を使用する ( 135 ページの『抽出アクション』を参照) 方法と、 AME を使用する ( 171 ページの『抽出アクション』を参照) 方法があります。

表示されないヌルとその他の文字の取り扱いTEXT_PLANE から取り込まれたテキストには、表示されないヌル (0x00) またはその他の文字は含まれていません。ブランク・スペース文字が入って表示されている表示画面の文字セルは、ブランク・スペース文字としてキャプチャーされます。

ホスト端末上の長方形領域のキャプチャーcontinuous 属性が false の場合 (これがデフォルト値です)、マクロ・ランタイムは2 組の行と列の値をテキストの長方形ブロックの左上隅と右下隅 (隅を含む) として扱います。長方形ブロックは、最小で 1 文字、最大でアプリケーション・ウィンドウ全体にすることができます。

マクロ・ランタイムは、次の処理を行います。

v 結果ストリングを空ストリングに初期化する。

v テキストの長方形ブロックを 1 行ずつ読み取り、それぞれの行を結果ストリングに連結する。

v 結果ストリングを指定された変数に格納する。

例えば、ホスト端末の行 16、17、および 18 の先頭 40 文字が次のとおりであるとします。

.8..Outlist.....Display, delete, or prin

.9..Commands....Create/change an applica

.10.Reserved....This option reserved for

さらに、マクロ・ランタイムが、次の設定値で抽出アクションを実行しようとしているとします。

v continuous 属性は false。

<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>

図 15. 条件アクションを示すサンプル・コード

第 7 章 マクロ・アクション 63

Page 82: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 行と列の組は (16, 5) (Outlist の 'O') と (18, 12) ('Reserved' の 'd')。

v 抽出名は 'Extract1'。

v データ平面は TEXT_PLANE。

v ストリング変数 $strTmp$ が結果ストリングの格納先の変数。

continuous 属性が false のため、マクロ・ランタイムは行と列の組をテキストの長方形ブロックのマーキングとして扱い、左上隅は行 16、列 5、右下隅は行 18、列12 とします。

マクロ・ランタイムは、結果ストリングを空ストリングに初期化します。その後、マクロ・ランタイムはテキストの長方形ブロックを一度に 1 行ずつ読み取り('Outlist.'、'Commands'、'Reserved')、それぞれの行を結果ストリングに連結します。最後に、マクロ・ランタイムは結果ストリング全体を結果変数 $strTmp$ に格納します。これにより、変数 $strTmp$ には次のストリングが格納されます。

'Outlist.CommandsReserved'

ホスト端末からのテキスト・シーケンスのキャプチャーcontinuous 属性が true の場合、マクロ・ランタイムは、2 組の行と列の値を、テキストの連続シーケンスの開始位置と終了位置 (これらの位置を範囲に含む) として扱います。テキストは、開始位置から終了位置にいたるまでに必要ならば行間で折り返します。テキストのシーケンスは、最小で 1 文字、最大でアプリケーション・ウィンドウ全体にすることができます。

マクロ・ランタイムは、次の処理を行います。

v 結果ストリングを空ストリングに初期化する。

v テキストの長方形ブロックを最初から最後まで読み取り、必要な場合は行の最後から次の行の最初まで折り返す。

v 結果ストリングを指定された変数に格納する。

例えば、ホスト端末の行 21 と 22 に次のテキストがあるとします (各行は 80 文字)。

........Enter / on the data set list command field for the command prompt pop-upor ISPF line command............................................................

さらに、マクロ・ランタイムが次の設定値を指定して抽出アクションを実行するとします。

v continuous 属性は true。

v 行と列の組は (21, 9) ('Enter' の 'E') と (22, 20) ('command' の 'd')。

v 抽出名は 'Extract1'。

v データ平面は TEXT_PLANE。

v ストリング変数 $strTmp$ が結果ストリングの格納先の変数。

continuous 属性が true のため、マクロ・ランタイムは行と列の組をテキスト・シーケンスの開始と終了のマーキングとして扱い、開始位置は (21, 9)、終了位置は(22, 20) とします。

マクロ・ランタイムは、結果ストリングを空ストリングに初期化します。その後マクロ・ランタイムは、テキスト・シーケンスを最初から最後まで読み取り、行 21

64 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 83: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

の最後の文字から行 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 属性を false に設定した場合、$strTmp$ には24 文字のストリング 'Enter / on tline command' が格納されます。

unwrap 属性このオプションは、continuous 属性が false または true のどちらに設定されていても使用できます。

unwrap 属性を true に設定すると、マクロ・ランタイムは、「抽出」ウィンドウの行と列の組のみでなく、ホスト端末のフィールド境界も使用して、収集するデータを判別します。マクロ・ランタイムは、ストリングの配列 (ツールキットを使用している場合)、または単一の連結ストリング (ツールキットを使用しない場合) を戻します。

unwrap 属性を、ストリング記述子のラップ属性と混同しないでください。ラップ属性は、フィールドでなくテキストの長方形ブロックを基にしています ( 46 ページの『マクロ・ランタイムが長方形域を検索する方法 (Wrap 属性)』を参照)。

unwrap が true で continuous が false の場合: continuous 属性が false の場合、行と列の組はテキストの長方形ブロックの隅を表します。 unwrap 属性 をtrue に設定すると、マクロ・ランタイムはテキストの長方形ブロックの各行を読み取り、行内の各フィールドを次のように処理します。

v フィールドが行の外側で始まり行の中に続く場合、マクロ・ランタイムはフィールドを無視する。

v フィールドが行の中で始まり行の中で終わる場合、マクロ・ランタイムはフィールドの内容を結果に含める。

v フィールドが行の中で始まり行の外側で終わる場合、マクロ・ランタイムはフィールド全体の内容 (テキストの長方形ブロックの外側にある部分を含む) を結果に含める。

unwrap 属性の目的は、フィールドが行から次の行へと折り返している場合でも、フィールドの内容全体を 1 つのストリングとしてキャプチャーすることです。

例えば、ホスト端末の幅が 80 文字で、ホスト端末の行 9、10、11、および 12 が次のとおりであるとします。

...............................................Compress or print data set.......

..............................................................Reset statistics..

..............................................................Catalog or displayinformation of an entire data set...............................................

さらに、上記の行の中で次のテキスト域がフィールドであるとします。

Reset statisticsCatalog or display information of an entire data set

第 7 章 マクロ・アクション 65

Page 84: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

最後に、次のように仮定します。

v continuous 属性 は false (これはデフォルト設定値です)。

v unwrap 属性 は true。

v 行と列の組は (9,63) ('print' の 'n') と (11,73) ('or' の後の ' ')。

v 抽出名は 'Extract1'。

v データ平面は TEXT_PLANE。

マクロ・ランタイムは、個々のストリングを連結し、単一のストリングとして、「抽出アクション」ウィンドウに指定されている変数に格納します。この例では、マクロ・ランタイムはストリング 'Reset statisticsCatalog or display

information of an entire data set' を変数に格納します。

unwrap が true で continuous が true の場合: continuous 属性が true の場合、2 組の行と列は、行間で折り返す (必要な場合) 連続したテキスト・シーケンスの開始位置と終了位置を表します。このときに unwrap 属性を true に設定すると、マクロ・ランタイムは連続したテキスト・シーケンスを次のように処理します。

v フィールドがシーケンスの外側で始まりシーケンスの中に続く場合、マクロ・ランタイムはフィールドを無視する。

v フィールドがシーケンスの中で始まりシーケンスの中で終わる場合、マクロ・ランタイムはフィールドの内容を結果に含める。

v フィールドがシーケンスの中で始まりシーケンスの外側で終わる場合、マクロ・ランタイムはフィールド全体の内容 (テキストの長方形ブロックの外側にある部分を含む) を結果に含める。

詳しくは、 202 ページの『<extract> エレメント』を参照してください。

入力アクション (<input> エレメント)入力アクションは、キー・ストロークのシーケンスをホスト端末に送ります。このシーケンスには、文字 (a、b、c、#、& など) を表示するキーのみでなく、アクション・キー ([enter] など) も含めることができます。

このアクションは、実際のユーザーからのキーボード入力をシミュレートします。

このアクションを指定するには、VME を使用する ( 140 ページの『「入力」アクション』を参照) 方法と、 AME を使用する ( 173 ページの『「入力」アクション』を参照) 方法があります。

タイプ入力の開始位置入力シーケンスの開始位置となるホスト端末上の位置 (行と列) を指定するには、「行」と「列」のフィールドを使用します。例えば、入力アクションに行 23、列17 を指定し、入力アクションのストリング値として Hello world を指定した場合、指定した位置が入力フィールド内にあれば、マクロ・ランタイムはキー・シーケンス Hello world をホスト端末の行 23、列 17 から入力します。

行または列の位置を 0 に指定した場合、マクロ・ランタイムは、該当の入力アクションを実行するとき、ホスト端末上の、実際にテキスト・カーソルが置かれている行と列の位置から、キー・シーケンスを入力します。テキスト・カーソルの位置が

66 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 85: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

関係ないコンテキストの場合、またはテキスト・カーソルの位置が予測可能な場合(例えば、直前のマウス・クリック・アクションによってテキスト・カーソルが特定の位置に移動した場合や、アプリケーションがアプリケーション画面を表示する際にテキスト・カーソルの位置を指定した場合) を除いては、行または列に 0 を指定しないでください。

入力エラーホスト端末は、マクロ再生時も、実際のユーザーがキーを入力した場合と同様にキー入力エラーに対応します。

例えば、入力アクションが文字を表示するキー (a、b、c、#、& など) をセッションに送った場合に、テキスト・カーソルが 3270 または 5250 入力フィールドの中になければ、実際のユーザーが入力したキー・ストロークとまったく同様に、セッションはキー入力を禁止し、オペレーター情報域にエラー・シンボルを表示します。

ホスト・アクション・キーの変換 (xlatehostkeys 属性)xlatehostkeys 属性は、入力シーケンスにあるアクションキー名([copy]、[enter]、[tab] など) をアクション・キーとして解釈するか、リテラル文字シーケンスとして解釈するかをマクロ・ランタイムに指示します。デフォルトはtrue です (アクション・キー名をアクション・キーとして解釈)。

例えば、入力キー・シーケンスが '[up][up]Hello world' で、テキスト・カーソルが行 4、列 10 にあるとします。 xlatehostkeys 属性が true の場合は、この入力シーケンスを実行すると、マクロ・ランタイムはテキスト・カーソルを上方向に 2行移動してから、行 2、列 10 から Hello world を入力します。これに対し、xlatehostkeys 属性が false の場合、マクロ・ランタイムは行 4、列 10 から[up][up]Hello world を入力します。

入力の末尾へカーソルを移動 (movecursor 属性)movecursor 属性が true (デフォルト) の場合、マクロ・ランタイムは、実際のユーザーがキーボード入力を行っている場合と同じようにテキスト・カーソルを移動します。例えば、キーが 'a' などのテキスト文字の場合、マクロ・ランタイムはこの文字をホスト端末に入力した後、入力した 'a' の後にある最初の文字位置にテキスト・カーソルを移動します。同様に、キーが [tab] の場合、マクロ・ランタイムはテキスト・カーソルを次のタブ位置に移動します。

これに対し、movecursor 属性 の値が false の場合、マクロ・ランタイムはテキスト・カーソルをまったく移動しません。テキスト・カーソルは、マクロ・ランタイムが入力アクションを実行する前にあった同じ位置に残ります。

encrypted 属性encrypted 属性を使用すると、value 属性 (「ストリング」フィールド) に含まれる入力キー・シーケンスを暗号化できます。value 属性の内容が暗号化されると、Host On-Demand は入力キー・シーケンスの暗号化バージョンのみをマクロ・スクリプト (<input> エレメント) に保管し、その入力キー・シーケンスのプレーン・テキスト (暗号化されていない) ・バージョンは保存しません。

第 7 章 マクロ・アクション 67

Page 86: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

例えば 図 16 は、暗号化されていない入力キー・シーケンス ('myPassword') が入っている <input> エレメントを示します。

これに対し、図 17 は、暗号化された入力キー・シーケンス(I7xae6rSVlVFF6qzhWRfKw==) が入っている同じ <input> エレメントを示します。この例では、<input> エレメントの encrypted 属性が true に設定されていることに注意してください。

マクロ・エディターでは、暗号化された入力キー・シーケンスはアスタリスクで表示されます (例えば 'myPassword' の暗号化バージョンは、I7xae6rSVlVFF6qzhWRfKw== ではなく ************************ と「ストリング」フィールドに表示されます)。

暗号化によって、パスワードのような機密データを表示することなく入力アクションに組み込むことができます。許可のないユーザーが、テキスト・エディターやマクロ・エディターによるマクロ・スクリプトの表示から、またはソースの表示から、機密データを見つけることはできません。

入力キー・シーケンスが暗号化されると Host On-Demand は、ユーザー自身や他のユーザーがマクロ・エディターまたはソース表示を使用して暗号化解除できないようにします。マクロ・ランタイムがマクロ再生中に入力アクションを処理するまで、Host On-Demand は暗号化された入力アクションの入力キー・シーケンスを暗号化解除しません。マクロ・ランタイムは入力アクションを処理するとき、暗号化された入力キー・シーケンスを暗号化解除し、暗号化されていないバージョンを指定された行および列の位置からセッション・ウィンドウに入力します。

特に 3270 または 5250 環境では、パスワードのような機密入力キー・シーケンスのために、ホスト・アプリケーションは入力キー・シーケンスの宛先として非表示入力フィールドを作成するため、プレーン・テキストでなくブランクまたはアスタリスク (*) が表示されます。

ただし、略式すぎる表示にマクロ・スクリプトが公開された場合、機密漏れの可能性が残ります。悪意のあるユーザーがマクロ・スクリプトのコピーにアクセスする権限を持つと、マクロの実行中にマクロ・ランタイムが暗号化解除された入力キー・シーケンスを標準の表示可能フィールドに入力するよう入力アクションの「行」および「列」フィールドを編集し、オリジナルの暗号化されていない入力キー・シーケンスを見つけることが可能になります。

input value="'myPassword'" row="20" col="16" movecursor="true"xlatehostkeys="true" encrypted="false" />

図 16. 暗号化されていない入力キー・シーケンスが入っている <input> エレメント

input value="I7xae6rSVlVFF6qzhWRfKw==" row="20" col="16"movecursor="true" xlatehostkeys="true" encrypted="true" />

図 17. 暗号化された入力キー・シーケンスが入っている <input> エレメント

68 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 87: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

セキュリティーを強化するには、入力アクションの代わりにプロンプト・アクションを使用できます。プロンプト・アクションを使用すると、入力キー・シーケンスは、たとえ暗号化された形式でもマクロ・スクリプトに保管されることはありません。その代わり、マクロの再生中にプロンプト・アクションを処理するとき、マクロ・ランタイムは入力フィールドと、入力キー・シーケンスを入力するようエンド・ユーザーに指示するメッセージが入ったウィンドウをポップアップ表示します。エンド・ユーザーが入力キー・シーケンスを入力して「OK」をクリックすると、マクロ・ランタイムはポップアップ・ウィンドウを消去し、その入力キー・シーケンスをセッション・ウィンドウの指定された行および列の位置に入力します。

注: プロンプトのデフォルト値は、暗号化されずにマクロ・ファイルに保管されます。デフォルト値は、マクロ・エディターでプロンプトを編集するときにはプレーン・テキストで表示されます。したがって、プロンプトを使用してパスワードを指定する方法を実行するのは適切ですが、セキュリティー上の理由から、パスワードのデフォルト値は指定しないようにします。

入力アクションを使用すると、エンド・ユーザーの介入なしでマクロの再生中にマクロ・スクリプトを自動的に実行する、という利点があります。ただし、機密データが変更される (例えば、パスワードの期限が切れ、新しい別のパスワードが必要になる) と、新しい入力キー・シーケンスで入力アクションを更新する必要があります。

マクロ記録中の自動暗号化: マクロ記録中、3270 ディスプレイおよび 5250 ディスプレイ・セッションの場合のみ、HATS はパスワード入力シーケンスを暗号化された入力キー・シーケンスで、入力アクションとして自動的に記録します。

「暗号化ストリング」(VME) または「パスワード」(AME) チェック・ボックスの使用方法: 入力キー・シーケンスがマクロ記録中に自動的に暗号化された場合、マクロ・エディターで入力アクションを調べると、「暗号化ストリング」(VME) または「パスワード」(AME) チェック・ボックスが選択され、「ストリング 」フィールドに、暗号化された入力キー・シーケンスを表す数個のアスタリスク (例えば******) が入っていることが分かります。

これに対し、入力キー・シーケンスがマクロ記録中に自動的に暗号化されなかった(多くの場合、セッションが 3270 または 5250 ディスプレイ・セッションではなかったか、入力フィールドが非表示入力フィールドではなかったことが原因で) 場合、チェック・ボックスはクリアされ、「ストリング」フィールドには暗号化されていない入力キー・シーケンスが入ります。

入力キー・シーケンスがマクロ記録中に自動的に暗号化されなかった場合は、マクロ・エディターで暗号化できます。入力キー・シーケンスを暗号化するには、以下のステップに従ってください。まず、チェック・ボックスがクリアされていない場合、そのチェック・マークを外してください。

1. 目的の入力キー・シーケンスが「ストリング」フィールドに入っていない場合、入力キー・シーケンスを「ストリング」フィールドに入力してください。

v 入力キー・シーケンスは、通常どおり (例えば 'myPassWord') に「ストリング」フィールドに表示されます。

v 拡張マクロ形式を使用している場合は、入力キー・シーケンスを単一引用符で囲む (例えば 'myPassWord') ことを忘れないでください。

第 7 章 マクロ・アクション 69

Page 88: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

2. チェック・ボックスを選択します。

v マクロ・エディターは、入力キー・シーケンスを暗号化し、それを「ストリング」フィールドにアスタリスクで (***********************) で表示します。

暗号化された入力キー・シーケンスを作成する場合、その入力キー・シーケンスが暗号化されず、「ストリング」フィールドに入力したとおりの形式で表示されることを回避するには、以下の手順に従ってください。

1. 「ストリング」フィールドが空でなければクリアします。

2. チェック・ボックスを選択します。

3. 入力キー・シーケンスを「ストリング」フィールドに入力します。

v 拡張マクロ形式を使用している場合は、入力キー・シーケンスを単一引用符で囲む (例えば 'myPassWord') ことを忘れないでください。

v 「ストリング」フィールドに入力すると、マクロ・エディターはアスタリスクで文字を表示します ('myPassword' は ************ と表示されます)。

v 入力フォーカスが「ストリング」フィールドから別の場所に移動する (つまり、別のフィールドをクリックする) と、マクロ・エディターは入力キー・シーケンスを暗号化します。

入力キー・シーケンスが暗号化された後、それを暗号化しないか、変更するかを決定できます。

入力キー・シーケンスが暗号化されていて、それを暗号化しないことにした場合、以下のステップに従ってください。

1. チェック・ボックスをクリアします。

v マクロ・エディターは暗号化されたストリングを廃棄し、「ストリング」フィールドをクリアします。

v 何らかの理由で「ストリング」フィールドがクリアされない場合、Backspaceキーまたは Delete キーでそのフィールドの文字を削除してください。

2. 暗号化されていない入力キー・シーケンスを「ストリング」フィールドに入力します。

入力キー・シーケンスが暗号化されていて、それを変更することを決定した場合、以下のステップに従ってください。

1. Backspace キーまたは Delete キーで「ストリング」フィールドをクリアします。

v フィールドが空白になるよう、暗号化された入力キー・シーケンス全体を削除してください。

2. 変更した入力キー・シーケンスを「ストリング」フィールドに入力します。

v 拡張マクロ形式を使用している場合は、入力キー・シーケンスを単一引用符で囲む (例えば 'myPassWord') ことを忘れないでください。

v 「ストリング」フィールドに入力すると、マクロ・エディターはアスタリスクで文字を表示します ('myPassword' は ************ と表示されます)。

v 入力フォーカスが「ストリング」フィールドから別の場所に移動する (つまり、別のフィールドをクリックする) と、マクロ・エディターは入力キー・シーケンスを暗号化します。

70 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 89: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

暗号化された入力キー・シーケンスを変更するため、「ストリング」フィールドのアスタリスクのストリング (*******) に文字を上書きまたは挿入することはできません。これを行うと、暗号化されていない修正によって、暗号化された入力キー・シーケンスが破壊されます。この場合、マクロ・エディターは暗号化されていないストリングが入力されたものと想定し、壊れているシーケンスを再び暗号化します。その結果、マクロの再生中にマクロ・ランタイムが入力アクションを処理するとき、暗号化解除されたシーケンスは、ユーザーの意図した入力キー・シーケンスになりません。 (また、拡張マクロ形式を使用しているときに、壊れた入力キー・シーケンスを単一引用符で囲まないと、マクロ・エディターはエラー・メッセージを表示します。)

ソース表示の使用: ソース表示は、入力キー・シーケンスの暗号化について、マクロ・エディターと同じ規則に従っています。

ソース表示では常に、以下のアクションのいずれかを実行できます。

v 入力キー・シーケンスを暗号化する新しい <input> エレメントを編集可能テキスト域に入力

v 入力キー・シーケンスを暗号化する <input> エレメントをシステム・クリップボードから編集可能テキスト域に貼り付け

またソース表示を使用している間、encrypted 属性の値 (暗号化をアクティブ化または非アクティブ化する) を true から false に、または false から true に変更することもできます。

ただし、ソース表示を使用して value 属性 (暗号化された、または暗号化されていない入力キー・シーケンスが入っている) の値を変更する場合、encrypted 属性がtrue に設定されていれば、 (value="" になるように) 暗号化された入力キー・シーケンスを完全に削除し、暗号化する新しい入力キー・シーケンスを入力してください。

入力キー・シーケンスを変更するために、value 属性の暗号化された入力キー・シーケンスに文字を上書きまたは挿入することはできません。これを行うと、暗号化されていない修正によって、暗号化された入力キー・シーケンスが破壊されます。

変数名の暗号化: 変数名 (例えば $var1$) をマクロ・エディターの「ストリング」フィールドに (またはソース表示の value 属性の値の部分に) 入力し、その変数の名前を (標準の入力キー・シーケンスを暗号化するときと同じステップで) 暗号化できますが、この方法は通常お勧めしません。変数名を暗号化すると、変数名を構成している文字だけが暗号化されるからです。変数それ自身の内容は暗号化されません。

マクロの再生中、マクロ・ランタイムは暗号化されたテキストを暗号化解除してプレーン・テキスト (例えば $var1$) に変え、そのプレーン・テキストが変数名であると判断して変数を通常どおりに処理します。

詳しくは、 207 ページの『<input> エレメント』を参照してください。

第 7 章 マクロ・アクション 71

Page 90: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マウス・クリック・アクション (<mouseclick> エレメント)マウス・クリック・アクションは、ユーザーによるホスト端末上でのマウス・クリックをシミュレートします。実際のマウス・クリックと同様に、クリックが行われたときにマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャンプします。

このアクションを指定するには、VME を使用する ( 145 ページの『「カーソル位置を設定」アクション』を参照) 方法と、 AME を使用する ( 173 ページの『マウス・クリック・アクション』を参照) 方法があります。

詳しくは、 208 ページの『<mouseclick> エレメント』を参照してください。

一時停止アクション (<pause> エレメント)一時停止アクションは、指定されたミリ秒数の間だけ待機した後、終了します。

具体的には、マクロ・ランタイムは <pause> エレメントを検出し、期間の値を読み取って、指定されたミリ秒数だけ待機します。その後、マクロ・ランタイムは次の項目の実行に進みます。

このアクションは次の場合に使用します。

v 何らかの状況で待機を挿入したいとき。

v ホストがホスト端末を更新するまで待機するとき。詳しくは、 90 ページの『画面の完了』を参照してください。

v デバッグの目的で遅延を追加するとき。

このアクションを指定するには、VME を使用する ( 141 ページの『「一時停止」アクション』を参照) 方法と、 AME を使用する ( 174 ページの『「一時停止」アクション』を参照) 方法があります。

詳しくは、 211 ページの『<pause> エレメント』を参照してください。

実行アクション (<perform> エレメント)実行アクションは、インポートした Java クラスに属するメソッドを呼び出します。

このアクションを指定するには、VME を使用する ( 141 ページの『「実行」アクション』を参照) 方法と、 AME を使用する ( 174 ページの『「実行」アクション』を参照) 方法があります。

実行アクション以外にも、さまざまなコンテキストでメソッドを呼び出すことができます。ただし実行アクションは、例えば値を戻さないメソッドを呼び出したい場合などのシナリオでは便利です。

実行アクションのほかに、メソッドを呼び出すことができるコンテキストは次のとおりです。

v 変数更新アクションを使用して、メソッドを呼び出し、変数に戻り値を割り当てることができます。戻り値を受け取る変数は、標準タイプに属する変数

72 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 91: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

(boolean、 integer、 string、 double)、またはインポート済みタイプに属する変数 (例えば、Java クラス Object に基づく、インポート済みタイプ Object に属する変数 $objTmp$) のどちらかです。

v パラメーターのフィールドにメソッド呼び出しを指定すると、メソッドを呼び出して、戻り値をマクロ・アクションのパラメーターとして使用できます。例えば、抽出アクションの「行」パラメーターに、整数値を戻すメソッド呼び出しを使用できます。マクロ・ランタイムは、パラメーターがメソッド呼び出しであることを認識し、メソッドを呼び出して、整数の戻り値を「行」パラメーターの値として使用します。

v 式の項としてメソッド呼び出しを使用すると、式の一部としてメソッドを呼び出すことができます。マクロ・ランタイムが式を評価し、その項がメソッド呼び出しであることを認識すると、メソッドを呼び出し、メソッドの値 (例: ストリング) を項の値として使用します。

v メソッドを呼び出して、宣言した変数の初期値として戻り値を使用できます。

一般に、実行アクションの外部では、メソッドから戻される値が有効であるすべてのコンテキストでメソッドを呼び出すことができます。

例74 ページの図 18 では、実行アクションを使用してメソッドを呼び出す方法を示

します。これらの例については、次のことに注意してください。

v 例 1 では、実行アクションは変数 $importedVar$ に対して update() アクションを呼び出します。次の点に注意してください。

– メソッド呼び出し全体はドル記号 ($) で囲まれる。

– メソッド呼び出しのコンテキストでは、変数名自体 (importedVar) はドル記号 ($) で囲まれない。

– メソッドにパラメーターとして渡される変数は、通常どおりドル記号 ($) で囲む必要がある ($str$)。

– メソッドにパラメーターとして渡されるストリングは、通常どおり単一引用符で囲む必要がある ('Application')。

v 例 2 では、実行アクションは静的メソッドを呼び出します。

v 例 3 では、実行アクションは変数が属するクラス (java.io.FileInputStream など) に属する close() メソッドを呼び出します。

v 例 4 では、実行アクションは変数が属するクラス (java.util.zip.ZipInputStreamなど) に属する createZipEntry() メソッドを呼び出します。

v 例 5 では、実行アクションは変数が属するクラス (java.util.Hashtable など) に属する clear() メソッドを呼び出します。

第 7 章 マクロ・アクション 73

Page 92: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

詳しくは、 212 ページの『<perform> エレメント』を参照してください。

PlayMacro アクション (<playmacro> エレメント)PlayMacro アクションは、別のマクロを起動します。

このアクションを指定するには、VME を使用する ( 141 ページの『「マクロを実行」アクション』を参照) 方法と、 AME を使用する ( 174 ページの『Playmacroアクション』を参照) 方法があります。

マクロ・ランタイムが PlayMacro アクションを実行すると、現行マクロ(PlayMacro アクションを指定したマクロ) は終了し、ターゲット・マクロの指定されたマクロ画面の処理が開始されます。この処理はチェーニングと呼ばれ、呼び出し側マクロをターゲット・マクロに「チェーニングする」といいます。呼び出し側マクロへの戻りはありません。

PlayMacro アクションには、ターゲット・マクロの名前を指定する必要があり、またオプションで、マクロ・ランタイムが最初に処理するターゲット・マクロ内のマクロ画面の名前を指定します。

呼び出し側マクロからターゲット・マクロにすべての変数とその内容を転送するように、マクロ・ランタイムに指示できます。

PlayMacro アクションの追加条件エレメント外では、マクロ画面に PlayMacro アクションを 1 つだけ追加することができ、その PlayMacro アクションは、マクロ画面のアクション・リスト(<actions> エレメント) の最後のアクションでなければなりません。

条件エレメントの中に追加する場合:

v 真のブランチ (<if> エレメント) には PlayMacro アクションを 1 つ追加でき、その PlayMacro アクションはブランチ (<if> エレメント) の最後のアクションでなければなりません。

<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>

図 18. 実行アクションの例

74 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 93: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v また、偽のブランチ (<else> エレメント) にも PlayMacro アクションを 1 つ追加でき、その PlayMacro アクションはブランチ (<else> エレメント) の最後のアクションでなければなりません。

マクロには必要な数の条件エレメントを使用でき、それぞれの条件エレメントの真のブランチに 1 つの PlayMacro アクション、偽のブランチに 1 つの PlayMacroアクションを指定できます。

マクロ・エディターがこれらの規則を実行します。

プロンプトがあるターゲット・マクロの使用ターゲット・マクロにプロンプト値が必要な場合は、チェーンの最初のマクロで必須値を求めるプロンプトを出します。例えば、呼び出し側の MacroA からターゲットの MacroB にチェーニングし、MacroB にユーザーからのアカウント番号が必要な場合は、アカウント番号のプロンプト・アクションを MacroA に追加します。応答をマクロ変数に割り当てるには、<prompt> アクションの assigntovar 属性を使用します。呼び出し側の MacroA の <playmacro> アクションで、transferVars="Transfer" を設定して、変数がターゲット・マクロに転送されることを指定します。ターゲット・マクロでは、プロンプト・アクションを使用した場所でマクロ変数を使用します。例えば、プロンプト・アクションの代わりに入力値としてマクロ変数を指定して <input> アクションを使用します。チェーン内にいくつかのマクロがある場合は、すべてのプロンプトが最初のマクロで発生する必要があります。例えば、MacroA から MacroB、次に MacroC にチェーニングし、MacroC にプロンプト値が必要な場合は、MacroA で MacroC の値のプロンプトを出し、チェーンに沿ってこの値を渡します。

マクロにプロンプトがあるマクロ変数を使用する場合は常に、マクロの<HAScript> タグに値 promptall=true を指定する必要があります。これは、属性のデフォルト値です。呼び出し側マクロ (チェーンのすべてのプロンプトが含まれている) が、promptall に値 true を使用していることを確認してください。

変数の転送transferVars 属性を「転送」に設定することにより (デフォルトは「転送しない」)、呼び出し側マクロに属する変数すべて (これらの変数の内容を含む) をターゲット・マクロに転送するようにマクロ・ランタイムに指示できます。

このように変数とその内容を転送することにより、変数を使用して呼び出し側マクロからターゲット・マクロにパラメーターを渡すことができます。

ターゲット・マクロに制御が渡された後、ターゲット・マクロは、自身が宣言した変数の読み書きと同じように、転送変数を読み書きできます。

例えば、MacroA に現在 2 つの整変数 StartRow と StartCol があり、その値が12 と 2 である場合に、MacroA が PlayMacro アクションを使用して MacroB を起動すると、MacroB には値が 12 と 2 の変数 StartRow と StartCol が最初に与えられます。

第 7 章 マクロ・アクション 75

Page 94: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

転送変数がインポート済みタイプに属していて Java オブジェクトを含んでいる場合でも、ターゲット・マクロは転送変数を参照して Java オブジェクトのメソッドを呼び出すことができ、またその転送変数に他のオブジェクトを書き込むこともできます。

変数を転送するための要件: ターゲット・マクロは、拡張マクロ形式を選択している必要があります ( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。

制限: 次の制約事項は、転送変数のすべてのタイプに適用されます。ターゲット・マクロに定義された変数の「初期値」フィールドの転送変数は使用できません。

追加情報: ターゲット・マクロが、転送変数と同名、同タイプの変数を作成した場合、マクロ・ランタイムは転送変数ではなく作成された変数を使用します。

ターゲット・マクロがタイプをインポートする必要がある場合: ターゲット・マクロ内で、インポート済みタイプに属する転送変数を使用したい場合は、同じタイプをターゲット・マクロにインポートする必要はありません。タイプをインポートする必要がない操作の例は、次のとおりです。

v 転送変数を属性の値として使用する。

v 転送変数に対してメソッドを呼び出す。

ただし、インポート済みタイプの名前をターゲット・マクロ内で使用したい場合は、そのタイプをインポートする必要があります。タイプをインポートする必要がある操作の例は、次のとおりです。

v インポート済みタイプの新規変数を宣言する。

v インポート済みタイプの新規インスタンスを作成する。

v インポート済みタイプの静的メソッドを作成する。

次に、PlayMacro アクションの例を示します。

詳しくは、 213 ページの『<playmacro> エレメント』を参照してください。

プロンプト・アクション (<prompt> エレメント)プロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 または5250 アプリケーションに送るか、変数に格納するための強力な機能を備えています。

このアクションを指定するには、VME を使用する ( 142 ページの『「プロンプト」アクション』を参照) 方法と、 AME を使用する ( 175 ページの『「プロンプト」アクション』を参照) 方法があります。

<actions><playmacro name="TargetMacro" startscreen="*DEFAULT*"

transferVars="Transfer" /></actions>

図 19. PlayMacro アクションの例

76 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 95: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

プロンプト・アクションは、ホスト端末の前面にプロンプト・ウィンドウを表示します。このウィンドウには、メッセージ、入力フィールド、および 3 つのボタン(「OK」、「キャンセル」、「ヘルプ」) があります。ユーザーが入力フィールドにテキストを入力して「OK」をクリックすると、プロンプト・アクションはその入力データを使用して、次のどちらかまたは両方を行います。

v プロンプト・アクションは、ホスト端末の入力フィールドに入力データを入力する。

v プロンプト・アクションは、入力データをストリングとして解釈し、入力データを変数に格納する。

このアクションの代表的な用途は (ただしこの用途だけではありません)、ユーザーによるパスワードの入力を可能にすることです。マクロがホストにログオンしたり、アクセスにパスワードを必要とするアプリケーションを開始したりしなければならないシナリオはよくあります。パスワードは機密データであり、また通常はときどき変更されるため、パスワードを即時値としてマクロにコーディングすることは適切でないことがよくあります。

プロンプト・アクションを使用して、ユーザーにパスワードの入力を促し、入力フィールドにパスワードを入力するようにユーザーに指示するメッセージを表示できます。ユーザーが「OK」をクリックすると、ホスト端末上の指定の行と列の位置に、マクロ・ランタイムによって入力データが入力されます。入力シーケンスには、[enter] などのアクション・キーを含めることができるので、ユーザーが MyPassword[enter] と入力した場合、マクロ・ランタイムはパスワードをパスワード・フィールドに入力できるのみでなく、ログオンまたはアクセスのアクションを完了するキーを入力することもできます。 (また、プロンプト・アクションの直後の入力アクションにアクション・キーを組み入れることもできます)

注: プロンプトのデフォルト値は、暗号化されずにマクロ・ファイルに保管されます。デフォルト値は、マクロ・エディターでプロンプトを編集するときにはプレーン・テキストで表示されます。したがって、プロンプトを使用してパスワードを指定する方法を実行するのは適切ですが、セキュリティー上の理由から、パスワードのデフォルト値は指定しないようにします。

promptall 属性すべての <prompt> エレメントのポップアップ・ウィンドウを 1 つの大きいプロンプト・ウィンドウに結合し、マクロの実行開始時にこの大きなプロンプト・ウィンドウを表示するように、マクロ・ランタイムに指示できます。このためには、<HAScript> エレメントの promptall 属性を true に設定します ( 203 ページの『<HAScript> エレメント』を参照)。

<actions> エレメントの promptall 属性も同様に機能します ( 194 ページの『<actions> エレメント』を参照)。

詳しくは、 213 ページの『<prompt> エレメント』を参照してください。

第 7 章 マクロ・アクション 77

Page 96: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

SQLQuery アクション (<sqlquery> エレメント)SQLQuery アクションは、非常に便利で強力なアクションです。これにより、SQLステートメントをホスト・データベースに送信し、SQL ステートメントによって出力される任意のデータを検索して、そのデータを Host On-Demand マクロ変数に書き込むことができます。

このアクションは、VME ではソース・タブを使用して、 AME ではアクション・タブを使用して指定することができます。 178 ページの『SQLQuery アクション』を参照してください。

マクロをサポートするすべてのタイプのセッション (3270 ディスプレイ、5250 ディスプレイ、または VT ディスプレイ) で、SQLQuery アクションを使用できます。

接続するデータベース・サーバーは、アプリケーション・セッションを実行しているホスト上でなくても構いません。

SQLQuery アクションは、タイプ Select の SQL ステートメントのみサポートします。タイプ Insert、Update、または Delete の SQL ステートメントはサポートしていません。

SQLQuery アクションでは、SQLQuery アクションを使用して HATS Toolkit 環境と特定の HATS アプリケーションの両方にアクセス可能なデータベース・ドライバーを必要とします。データベース・ドライバーはアクセス先のデータベースに固有です。このドライバーは、データベース管理者から入手します。

HATS Toolkit 内で SQL ウィザードが正しく機能するには、データベース・ドライバー・ファイルを、 Rational® Software Delivery Platform によって使用されるJava ランタイム環境 (JRE) の lib¥ext ディレクトリー (例えば、RAD_INSTALL_DIR¥jre¥lib¥ext) に格納します。データベース・ドライバーを JREの格納場所にコピーした後は、Rational Software Delivery Platform (アクティブだった場合) を再始動する必要があります。

HATS アプリケーションは、デプロイされるときに、データベース・ドライバー・ファイルへのアクセス権も必要とします。HATS Web アプリケーションの場合は、データベース・ドライバー・ファイルを EAR レベルに追加してください。ファイルが EAR レベルに追加されると、SQLQuery アクションを使用する HATS アプリケーション内の WAR はそれぞれ、データベース・ドライバー・ファイルが組み込まれるよう、その META-INF/MANIFEST.MF ファイルを更新する必要があります。MANIFEST.MF ファイルの更新が正しく行われていることを確認するには、JAR 依存関係エディターで編集してください。HATS リッチ・クライアント・アプリケーションの場合、データベース・ドライバー・ファイルは、ターゲット・デプロイメント環境 (Eclipse リッチ・クライアント、Lotus Notes®、または Lotus®

Expeditor Client) によって使用される JRE の lib¥ext ディレクトリーに追加する必要があります。

詳しくは、 217 ページの『<sqlquery> エレメント』を参照してください。

78 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 97: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

トレース・アクション (<trace> エレメント)「トレース」アクションは、指定のトレース宛先 (HATS Toolkit コンソールやWebSphere® コンソールなど) にトレース・メッセージを送信します。また、HATSはマクロ・トレースを HATS ランタイム・トレースに追加します。

このアクションは、VME ではソース・タブを使用して、 AME ではアクション・タブを使用して指定することができます。 184 ページの『「トレース」アクション』を参照してください。

例80 ページの図 20 の例は、トレース・メッセージを HATS Toolkit コンソールに

送信する方法を示しています。この例では、トレースと変数更新のアクション・エレメントを使用します。

ここで示すマクロ・スクリプトのテキストは、本書からシステム・クリップボードにコピーして、システム・クリップボードからソース表示にコピーすることができます ( 8 ページの『サンプル』を参照)。このスクリプトを マクロ・エディターに保存した後、編集できます。

この例については、次の点に注意してください。

v この例は、TRACE という名前の 1 つのマクロ・スクリプト全体で構成されます。

v <create> エレメントが $strData$ という名前のストリング変数を作成し、オリジナル値 'Original value' に初期化します。

v 最初のアクションは、トレース・テキストを 'The value is' + $strData$ に設定したトレース・アクションです。

v 2 番目のアクションは、変数 $strData$ を新しい値 'Updated value' に設定する変数更新アクションです。

v 3 番目のアクションは、最初のトレース・アクションと同じもう 1 つのトレース・アクションです。

第 7 章 マクロ・アクション 79

Page 98: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 20 のスクリプトを実行すると、マクロ・ランタイムは次のデータを送ります。

The value is +{$strData$ = Original value}The value is +{$strData$ = Updated value}

上記のトレース出力の中で、$strData$ の値を単に表示する代わりに、デバッグ・アクションが変数の名前とその値の両方を中括弧の中に表示している点に注意してください。

詳しくは、 219 ページの『<trace> エレメント』を参照してください。

変数更新アクション (<varupdate> エレメント)<varupdate> エレメントは、変数に値を格納します。マクロの実行中に、マクロ・ランタイムはアクションを実行して、指定の値を指定された変数に格納します。

次の項目を指定する必要があります。

v 変数の名前

v 変数に格納する値

このアクションを指定するには、VME を使用する ( 146 ページの『「マクロ変数の更新」アクション』を参照) 方法と、 AME を使用する ( 184 ページの『変数更新アクション』を参照) 方法があります。

<description> エレメント内で変数更新アクションを使用することもできます ( 49ページの『説明内の変数更新アクションの処理』を参照)。

値には演算式を使用でき、また変数とインポートしたメソッドの呼び出しを値に含めることができます。値が式の場合、マクロの再生中にマクロ・ランタイムは式を評価し、結果の値を指定の変数に格納します。

変数更新アクションは、プログラミング言語の代入ステートメントと同様に機能します。 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>

図 20. サンプル・コード TRACE

80 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 99: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

boolVisitedThisScreen = true;intVisitCount = intVisitCount + 1;dblLength = 32.4;strAddress ="123 Hampton Court";

変数更新アクションでは、マクロ・エディターの「変数名」フィールドに式の左側(変数) を入力し、「値」フィールドに式の右側 (値) を入力します。上述の Java 代入ステートメントに相当するステートメントを作成するには、 表 11 に示されている値を使用します。

表 11. 変数名と値の例

「変数名」フィールド: 「値」フィールド:

$boolVisitedThisScreen$ true

$intVisitCount$ $intVisitCount$+1

$dblLength$ 32.4

$strAddress$ '123 Hampton Court'

指定する値は、コンテキストに応じた正しいデータ・タイプであるか、そのタイプに変換可能なデータ・タイプ ( 23 ページの『自動データ・タイプ変換』を参照) でなければなりません。

変数更新アクションが便利な理由は次のとおりです。

v 「値」フィールドのエンティティーを式にすることができる。

v 式はアクションが実行されるまで評価されない。

式について詳しくは、 17 ページの『第 3 章 データ・タイプ、演算子、および式』を参照してください。

フィールド変数に対する変数更新アクション変数更新アクションを使用したフィールド変数の更新は、ホスト端末上の 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 フィールドから読み取ったストリングになります。

変数更新アクションを使用してストリング変数を更新する際には、次の情報を指定します。

第 7 章 マクロ・アクション 81

Page 100: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v フィールド変数の名前 (例: $fldTmp$)

v 位置ストリング (例: '5,11') (位置ストリングは、ホスト端末上の行と列の位置を示す、コンマで区切られた 2 つの整数からなるストリングです)

マクロ・ランタイムが変数更新アクションを実行すると、マクロ・ランタイムは次の処理を行います。

1. 変数がフィールド変数であることを認識する。

2. フィールド変数の更新に使用する位置ストリングを検索する。

3. 現行ホスト端末上で、位置ストリングに指定されている行と列の位置を検出する。

4. 現行ホスト端末上で、検出した行と列の位置にある 3270 フィールドまたは5250 フィールドを識別する。

5. 先行ブランクと末尾ブランクを含む、3270 または 5250 フィールドの内容全体を読み取る。

6. フィールドの内容全体をストリングとしてフィールド変数に格納する。

その後、ストリングが有効であるすべてのコンテキストでフィールド変数を使用できます。例えば、次のようにフィールド変数を別のストリングと連結できます。

'The field¥'s contents are'+ $fldPrintOption$

例えば、次の特性を持つ 3270 フィールドまたは 5250 フィールドがホスト端末上にあるとします。

v 行 5、列 8 から始まる。

v 行 5、列 32 で終わる。

v ストリング 'Print VTOC information' を含む。

次の値を指定して変数更新アクションをセットアップします。

v 「変数名」フィールドに、作成したばかりのフィールド変数の名前 $fldData$

を入力する。

v 「値」フィールドに、位置ストリング '5,11' を入力する。指定する必要がある行と列の位置は 1 つだけであることと、その位置はフィールド内にあるどの行と列の位置でもよいことに注意してください。

マクロ・ランタイムがこの変数更新アクションを実行すると、マクロ・ランタイムはフィールドの内容全体を読み取り、内容をストリングとして $fldData$ に格納します。これで、フィールド変数 $fldData$ にはストリング 'Print VTOC

information' が格納されます。

フィールドの一部の読み取り: 変数更新アクションにフィールド変数を使用する場合に、2 つの位置を含む位置ストリングを指定できます。この機能は、フィールドの内容の一部のみを読み取りたい場合に使用します。

「値」フィールドに、最初の位置と 2 番目の位置をコロン (:) で区切って入力します。例えば、最初の位置が 5,14 で 2 番目の位置が 5,17 ならば、'5,14:5,17' と入力します。

2 つの位置を指定する場合には、次のようになります。

v 最初の位置は、フィールド内で読み取る最初の位置を指定します。

82 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 101: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 2 番目の位置は、フィールド内で読み取る最後の位置を指定します。

例えば、次の特性を持つ 3270 フィールドまたは 5250 フィールドがホスト端末上にあるとします。

v 行 5、列 8 から始まる。

v 行 5、列 32 で終わる。

v ストリング 'Print VTOC information' を含む。

さらに、次の値を指定して変数更新アクションをセットアップするとします。

v 「変数名」フィールドに、作成したばかりのフィールド変数の名前 $fldData$を入力する。

v 「値」フィールドに、位置ストリング '5,14:5,17' を入力する。ここでは、フィールド内の開始位置と終了位置の両方を指定しています。

マクロ・ランタイムがこの変数更新アクションを実行すると、マクロ・ランタイムはストリング 'VTOC' をフィールドから読み取り (最初の位置ストリングによって指定した位置から始まり、2 番目の位置ストリングによって指定した位置まで続く)、ストリング 'VTOC' を $fldData$ に格納します。

2 番目の位置がフィールドの最後を越えている場合、マクロ・ランタイムは最初の位置からフィールドの最後までストリングを読み取ります。その後マクロ・ランタイムは、このストリングをフィールド変数に格納します。

詳しくは、 221 ページの『<varupdate> エレメント』を参照してください。

第 7 章 マクロ・アクション 83

Page 102: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

84 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 103: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 8 章 タイミングの問題

この章では、アクションの処理に関係するタイミングの問題についていくつか説明し、これらの問題に対処するために使用できるリソースについて説明します。

マクロのタイミングおよび遅延特性このセクションでは、HATS マクロのタイミング・パラメーターをマクロのスクリプト・レベルで説明します。例えば、HATS Toolkit グラフィカル・ユーザー・インターフェース (マクロ・エディターなど) のさまざまな場所からのマクロ実行のタイミングに影響を与える方法は複数ありますが、ここでの説明は、マクロ自身のXML スクリプト内で実行されるアクションの結果について扱うもので、スクリプト内にアクションが配置されるさまざまな方法 (マクロ・エディターのタブなど) については扱いません。

いくつかのタイミング・パラメーターがマクロ実行に影響します。大半のタイミング・パラメーターは、マクロ実行のさまざまな部分で遅延を制御します。これによって、ホストの応答時間およびその他の変数が予測不能な環境において、マクロが回復力を持ち、堅固な状態で正しく作動することができます。マクロに遅延を追加する最も一般的な理由は、ホストから入ってくる画面がマクロによって処理される前に、完全に到着するようにするためです。遅延が扱う画面に十分な追加説明 (例えば、画面のさまざまなパーツにある文字ストリングの検索など) が追加されている場合、この遅延は通常は軽減されるか、完全に回避できます。

HATS マクロでは、エレメントと、エレメントを変更する属性があります (属性はパラメーターともいいます)。エレメントは左および右不等号括弧タグでフレームを付けられており、属性は通常、エレメントのタグに含まれています。例えば次の例では、画面エレメントと、変更する pause 属性がついています。

<screen pause=15000>

この章では、以下のエレメントおよび属性を扱います。

v <HAScript> エレメントの pausetime 属性

v <screen> エレメントの pause 属性

v <actions> エレメント内部のその他のアクションと一緒に現れることがある<pause> エレメント

v <HAScript> エレメントの ignorepauseforenhancedtn 属性

v <pause> エレメントの ignorepauseoverrideforenhancedtn 属性

v <HAScript> エレメントの delayifnotenhancedtn 属性

各エレメントおよび属性の役割<HAScript> エレメントの pausetime 属性は以下の 2 つの事柄を制御します。

1. 画面のアクション内で定義された大半の <prompt> および <insert> エレメントの後に発生する pausetimevalue /2 の遅延 (ミリ秒)

© Copyright IBM Corp. 2003, 2015 85

Page 104: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

2. (ほとんどの画面に対して) 一つの画面のすべてのアクションが実行された後に発生する pausetimevalue の一回限りの遅延 (ミリ秒)

pausetimevalue /2 および pausetimevalue の遅延がどこのどの画面で実行されているかについては、以下でさらに詳しく説明します。pausetimevalue のデフォルト値は、(pausetime 属性が明示的に定義されていない場合) 300 ミリ秒です。

pause 属性 (<pause> エレメントと混同しないこと) は、pausetime 属性をオーバーライドします。正確には、pause 属性がエレメント内で定義されると、マクロの<HAScript> エレメント内で (明示的またはデフォルトで) 定義された pausetime属性を、その画面でのみオーバーライドするために使用されます。つまり、ある画面で pause 属性が定義されると、pausetime 属性は無視され、その <screen> エレメントの処理中に発生するあらゆる pausetime 関連の遅延を計算するのに、画面のpause 属性の値が使用されるということです。pause 属性および pausetime 属性は、<pause> エレメントの処理に影響されず、また影響も与えません。

<pause> エレメントは、明示的な遅延を画面のアクションの処理に挿入するために使用します。1 つ以上の <pause> エレメントは、画面の <actions> エレメントで定義された他のアクションの前後、およびそのアクション間に配置できます。pause 属性および pausetime 属性は、<pause> エレメントの処理に影響されず、また影響も与えません。

<HAScript> エレメントの ignorepauseforenhancedtn 属性を true に設定すると、コンテンション解消環境でセッションが実行されている場合、マクロの実行中にマクロ・ランタイムは一時停止アクション (<pause> エレメント) をスキップします。この属性の使用法に関する追加情報については、 93 ページの『ignorepauseforenhancedtn=true/false』を参照してください。

<pause> エレメントの ignorepauseoverrideforenhancedtn 属性を特定の <pause>エレメント内で「true」に設定すると、<HAScript> エレメント内でignorepauseforenhancedtn 属性が true に設定されていても、マクロ・ランタイムはその <pause> エレメントを処理します (指定されたミリ秒数のみ待機します)。この属性の使用法に関する追加情報については、 94 ページの『ignorepauseoverrideforenhancedtn=true/false』を参照してください。

<HAScript> エレメントの delayifnotenhancedtn 属性をゼロ以外の値に設定すると、オペレーター情報域が変更されたという通知をマクロ・ランタイムが受け取ったときは常に、マクロ・ランタイムは指定されたミリ秒数のみ自動的に一時停止します。この属性は、コンテンション解消環境または非コンテンション解消環境の両方で同じマクロを正常に実行させるのに役立ちます。この属性の使用法に関する追加情報については、 94 ページの『delayifnotenhancedtn=(ミリ秒)』を参照してください。

HATS マクロ処理エンジンがこれらのタイミング・エレメントと属性を使用する方法

非終了画面の場合 (exitscreen 属性は「false」に設定)、pausetimevalue の遅延が実行されるのは、画面のアクションがすべて実行された後で、次の画面の登録または認識が開始する前です。pause 属性が画面に定義されている場合、アクション後の遅延について、pausetime の値の代わりに pause の値が使用されます。

86 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 105: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

終了画面として定義されているマクロ画面の場合 (exitscreen 属性は「true」に設定)、pausetime 属性 (およびその終了画面に定義されている pause 属性) は実質的に無視され、すべての画面のアクションが完了した後に自動的に実行される追加の遅延はありません。これによって、マクロ・エンジンはマクロの最終画面までナビゲートすると、遅延を追加しません。

さらに、すべてのマクロ画面について、画面の最後のアクションでない <prompt>または <insert> の後、pausetimevalue /2 の時間、マクロはスリープ状態になります。

例えば、図 21 で示すように、pausetime="1000" で、他の pause 属性が画面に定義されていない場合、マクロは最初のアクション (prompt) の後に 500 ミリ秒、4番目のアクションの後に 500 ミリ秒、そして (現在の画面が終了画面でない場合)すべてのアクションが実行された後に 1000 ミリ秒の、合計 2000 ミリ秒の間スリープ状態になります。

マクロ内で、<pause> エレメントはどこに配置されていてもインラインで実行され、pausetime 属性または pause 属性の設定でオーバーライドされませんが、<HAScript> エレメントの ignorepauseforenhancedtn 属性が「true」に設定されている場合、この属性でオーバーライドされることがあります。

上の例を拡張して、図 22 で示すように、pausetime="1000" で、他の pause 属性が画面に定義されていない場合、マクロは最初のアクション (prompt) の後に 500ミリ秒、4 番目のアクションの後に 500 ミリ秒、5 番目のアクション (insert) の後に 500 ミリ秒、6 番目のアクション (<pause> エレメント) の後に 150 ミリ秒、そして (現在の画面が終了画面でない場合) すべてのアクションが実行された後に1000 ミリ秒の、合計 2650 ミリ秒の間スリープ状態になります。

これが終了画面の場合、合計スリープ時間は 1650 ミリ秒です。また、<HAScript>エレメントの ignorepauseforenhancedtn 属性と、<pause> エレメントの

<actions><prompt...<extract...<extract...<prompt...<insert...

</actions>

図 21. pausetimevalue の例 1

<actions><prompt...<extract...<extract...<prompt...<insert...<pause value="150"/>

</actions>

図 22. pausetimevalue の例 2

第 8 章 タイミングの問題 87

Page 106: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ignorepauseoverrideforenhancedtn 属性が設定されている場合、この例の明示的な<pause> エレメントが実行されても無視されても、これらの属性は有効になります。

画面のアクションの完了後に発生するものマクロで画面のすべてのアクションが処理し終わった後 (pausetime または pause属性値に基づくすべてのアクションの後のスリープも含む)、nextscreen が登録され、タイマー (タイムアウト・クロック) が開始されます。マクロは登録時に画面の認識を試行し、画面が何も認識されない場合、nextscreen の時間だけ反復認識処理を開始します。これはホストから入ってくるデータによって生成された PSEVENTおよび OIAEVENT によってトリガーされます。PSEVENT または OIAEVENT がホストから到着する度に、マクロは nextscreen の認識を再度試行します。

画面認識処理は、着信する画面データの認識の試行を継続します。成功する前に何度か失敗することがあります (これらの失敗についてメッセージはログに記録されません)。マクロのタイムアウト・パラメーターは、それぞれの画面認識処理 (マクロ全体ではない) が、着信する画面の認識を試行する時間の上限を設定します。画面認識エンジンは「使用中」のループに入っていないことに注意してください。エンジンは、着信する PSEVENT および OIAEVENT の発生によってトリガーされるまで待機して、それぞれの追加比較を実施します。画面を認識する前にタイムアウト値を超えた場合、画面認識は失敗します。画面が認識されると、タイマーは停止します。

マクロ・エンジン処理の高水準なテキスト・フロー1. ScreenX が認識されます。

2. ScreenX アクションが完了します。アクションが <prompt> または <insert>で、アクションのセットの最後のアクションでない場合、各アクションの後にpausetimevalue /2 (または pauseattributevalue /2) が追加されることに注意してください。

3. 現在の画面が終了画面の場合、マクロの実行がここで停止します。

4. ScreenX pausetimevalue 遅延(pausetime 属性によって設定されるか、この画面のローカルの pause 属性によってオーバーライドされる遅延) が完了します。

5. nextscreens を登録します。

6. nextscreens のタイムアウト・クロックを開始します。

7. nextscreens の認識処理がループし、各 PSEVENT または OIAEVENT に基づいて新しい認識を実行します。PSEVENT または OIAEVENT の到着は、コンテンション解消がアクティブな場合、これによって制御されるか影響を受けます。

8. nextscreen が認識され、この場合、タイムアウト・タイマーが停止します。処理はシーケンスの先頭に戻って再度開始するか、またはタイムアウト・タイマー(<HAScript> エレメントの timeout 属性) の有効期限が切れて、マクロがタイムアウト・エラーで終了します。

88 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 107: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

アクション後の一時停止ここでは、前のアクションに未完了の副次作用があるために、アクションが期待どおりに実行されないシナリオについて説明します。

次の 2 つの属性を使用して、実行時にアクション後の一時停止を追加できます。

v <HAScript> エレメントの pausetime 属性。

v <Screen> エレメントの pause 属性。

アクションの処理速度マクロ・ランタイムは人間のユーザーよりはるかに迅速にアクションを実行するので、マクロの再生中に予測しない問題が発生し、アクションが予想通りに実行されない可能性があります。この原因は、前のアクションへの依存関係が生じることです。

アプリケーション画面を切り替えるキー・ストロークを例に取ります。アプリケーション画面がすでに切り替わっていることを後続のアクションが予期しているにもかかわらず、実際にはアプリケーション画面がまだ更新の途中である場合、後続のアクションは失敗します。

マクロ・ランタイムがそれぞれのアクションを前のアクションの直後に実行すると、他の状況でアクション間の時間依存エラーが発生します。

pausetime 属性<HAScript> エレメントの pausetime 属性は、 次のようにマクロ・ランタイムが待機する時間を指定します。

v 入力アクションまたはプロンプト・アクションの実行後に、これらの 2 つのアクションのいずれかを完了させることによる考えられるすべての副次作用を許可する。

v マクロ画面での最後のアクションの実行後に、アクションの処理を完了させることによる他の副次作用を許可する。

HATS バージョン 5 までは、pausetime 属性は、入力アクションとプロンプト・アクションの後のみでなく、あらゆるタイプのアクション後の一時停止としてインプリメントされました。現在では以下のように実装されています。

v マクロ・ランタイムは以下の場合待機します。

– マクロ画面の最後のアクションを除く、すべての入力アクションとプロンプト・アクションの後の一時停止時間の 50% に等しい間隔。

– マクロ画面の最後のアクション後の一時停止時間の 100% に等しい間隔。

v マクロ・ランタイムは以下の場合は待機しません。

– マクロ画面の最後の入力アクションまたはプロンプト・アクションがマクロ画面での最後のアクションではない限り、これらのアクションの後。

– 他のタイプのアクションがマクロ画面での最後のアクションではない限り、これらのアクションの後。

第 8 章 タイミングの問題 89

Page 108: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

デフォルトでは、pausetime 属性は使用可能になっていて、タイムアウト値は 300ミリ秒に設定されています。このため、マクロ・ランタイムはデフォルトで以下を行います。

v マクロ画面の最後のアクションを除く、すべての入力アクションとプロンプト・アクションの後に 150 ミリ秒間待機する。

v マクロ画面の最後のアクションの後に 300 ミリ秒間待機する。

pausetime 属性はすべてのマクロ画面に影響を与えることに注意してください。このため、この 1 項目の設定により、問題がある可能性のあるマクロ画面をそれぞれ変更することなく、マクロ全体でタイミング・エラーを回避できます。

pause 属性特定マクロ画面のアクション間の一時停止を延長または短縮したい場合、またはアクション間の一時停止が重要であるマクロ画面が少ない場合は、<screen> エレメントの pause 属性を使用できます。

デフォルトでは、この属性は指定されていません。

マクロ画面に対してこの属性を指定すると、マクロ・ランタイムはこの特定のマクロ画面の「アクション間の一時停止」に、指定されたミリ秒数を使用します。

例えば、ScreenA の pause 属性を 500 ミリ秒に設定した場合、マクロ・ランタイムは、ScreenA 内で最後のアクションを除くそれぞれの入力アクションとプロンプト・アクションの後に 250 ミリ秒間待ち、ScreenA の最後のアクションの後に 500ミリ秒間待ちます。

<screen> エレメントの pause 属性を指定したマクロ画面をマクロ・ランタイムが処理する際には、<HAScript> エレメントの pausetime 属性の設定が無視され、pause 属性の値のみが使用されます。

特定のアクションの後に一時停止を追加するマクロ画面内で特定のアクションの後に追加の一時停止が必要な場合は、そのアクションの後に一時停止アクションを追加できます。一時停止アクションに指定した待機は、pausetime 属性または pause 属性によって発生するすべての待機に加算されます。

画面の完了

次のマクロ画面の認識が早すぎるホストが新しいアプリケーション画面の表示を完全に終了する前に、マクロ・ランタイムが ScreenB のアクションの処理を開始するというバグが、マクロ画面ScreenB にあるとします。このタイミングの異常が問題になる状況はほとんどないかもしれませんが、例えば ScreenB の最初のアクションが抽出アクションであり、マクロ・ランタイムがこのアクションによってアプリケーション画面の行 15 と 16からデータを読み取るとします。ホストが新規データを行 15 から 16 にすべて書き込む時間を待たずに、マクロ・ランタイムがこのアクションを実行したとします。

90 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 109: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

この問題を分析すると、次のことが確認されます。

v セッションは、デフォルト接続 TN3270 を使用する 3270 ディスプレイ・セッションである。

v 次のアクションのシーケンスが実行される。

1. 直前のマクロ画面の処理中に、マクロ・ランタイムは Enter キーをホストに送る入力アクションを実行する。

2. ホストは Enter キーを受信し、新しいアプリケーション画面のためにコマンドとデータの最初のブロックを送信する。

3. クライアントは最初のブロックを受信して処理し、これによりホスト・アプリケーション画面の一部を更新するが、全部は更新しない。特に、アプリケーション画面の行 15 と 16 がまだ更新されていません。

4. 一方でマクロ・ランタイムは、新しいアプリケーション画面に一致する有効な次のマクロ画面の認識を開始する。

5. コマンドとデータの最初のブロックによってアプリケーション画面が変更された結果、マクロ・ランタイムはマクロ ScreenB を次に処理するマクロ画面として認識する。

6. マクロ・ランタイムは ScreenB 内の最初のアクション・エレメントを実行する。これは、アプリケーション画面の行 15 と 16 からデータを読み取る抽出アクションです。

7. クライアントは 2 番目のコマンドとデータのブロックをホストから受信し、処理する。これにより、行 15 と 16 を含む、アプリケーション画面の他の部分が更新されます。

要約すれば、このタイミングの問題が起こった結果、ホストが行 15 と 16 の更新を完了する前に、マクロ・ランタイムが新しいアプリケーション画面の行 15 と 16を読み取りました。

原因: 非拡張 TN3270 プロトコルこの問題が発生した理由は、非拡張 TN3270 プロトコルに、ホスト・アプリケーションの画面が完了したことを、ホストがクライアントに通知する手段が組み込まれていないことです (TN3270 は、文字指向の接続である Telnet を基礎として、画面指向のプロトコルである 3270 データ・ストリームをインプリメントしたものです)。したがって、ホストはいくつかのデータ・ブロックをクライアントに送信できず、アプリケーション画面が完了してユーザーはデータを入力できるようになったことを示すメッセージを出すこともできません。しかし、それぞれのブロックが着信するとき、このアプリケーション画面の最後のブロックであるかどうかの指示はありません。クライアントの視点から見ると、次のようなイベントが発生します。

1. コマンドとデータのブロックが着信する。クライアントは、入力禁止標識を設定し、ブロックを処理して、新しいデータをホスト端末の指定部分に表示する。その後、クライアントは入力禁止標識をクリアし、待機する。

2. 30 ミリ秒が経過する。

3. 別のコマンドとデータのブロックが着信する。クライアントは、前のステップ 1と同じようにブロックを処理する。このブロックにより、画面の別の部分が更新される。クライアントは待機する。

4. 50 ミリ秒が経過する。

第 8 章 タイミングの問題 91

Page 110: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ホストが新しいホスト・アプリケーション・データ画面を完全に表示するまで、このプロセスは継続します。クライアントは、ホスト・アプリケーションの画面が完了したかどうか分からない状態で待機し続けます (詳しくは、 27 ページの『第 4章 マクロ・ランタイムによるマクロ画面の処理方法』を参照してください)。

このプロセスが、人間のオペレーターにとって問題になることはありません。

ただし、このプロセスは、マクロ・ランタイムにとっては画面認識中に問題になります。マクロ・ランタイムは、画面認識中に画面が更新されるたびおよび OIA イベントが発生するたび ( 33 ページの『繰り返し画面評価』を参照) に、アプリケーション画面と一致する有効な次のマクロ画面を検索することに留意してください。このため、マクロ・ランタイムは画面が完全に更新される前に一致を検出する可能性があります。例えば、アプリケーション画面の行 3 に「ISPF Primary OptionMenu」という文字があるときに認識が発生するように、ストリング記述子が指示しているとします。ホストが行 3 を更新してこれらの文字を表示したときに、マクロ・ランタイムは一致が発生したと判断しますが、ホストがアプリケーション画面の残りの更新を完了したかどうかは考慮しません。

早期マクロ画面認識のためのソリューションこの問題の解決法は 3 つあります。

v 説明に記述子を追加する。

v Enter キーを送る入力アクションの後に遅延を挿入する ( 90 ページの『次のマクロ画面の認識が早すぎる』のステップ 1 を参照)。

v TN3270E のコンテンション解消機能を使用する。

これらの解決策について、以下のサブセクションで説明します。

記述子の追加: この方法は場合によっては機能しますが、不便で信頼性がありません。 ScreenB の説明部分に十分な記述子を追加することにより、アプリケーション画面の重要な部分が更新されるまで、マクロ・ランタイムが ScreenB を認識しないようにします。

入力アクションの後に遅延を挿入する: セッションが通常の TN3270 セッションである場合、またはコンテンション解消機能を使用しない TN3270E セッションである場合には、遅延の挿入が最適な解決策です。つまり、入力アクション (この例では ScreenA) によってホストが新しいアプリケーション画面を送信した後、数百ミリ秒以上の一時停止を挿入します。この遅延により、マクロ・ランタイムが次のマクロ画面 (ScreenB) のアクションの処理を開始する前に、ホストがアプリケーション画面を更新するための十分な時間を取ることができます。

このシナリオで、入力アクションの後に一時停止を挿入する方法はいくつかあります。

v <HAScript> エレメントの pausetime 属性により指定した遅延を大きくする。

v ScreenA の <screen> エレメントの pause 属性により指定された遅延を大きくする。この方式をお勧めします。ScreenA のみの一時停止時間が延長されるので、影響を受けるのは ScreenA のみです。

v ScreenA の入力アクションの直後に一時停止アクションを追加する。この方式もお勧めします。ちょうど必要な場所に一時停止が挿入されます。

92 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 111: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v ScreenB の最初のアクションとして一時停止アクションを追加する。シナリオによっては、この方式を選択する場合もあります。ただし、ScreenA の後に複数のマクロ画面が表示される可能性があり (ScreenB、ScreenC、ScreenD など)、これらの後続マクロ画面それぞれに画面の完了の問題が発生する場合は、この方式を使用すると、これらの後続マクロ画面それぞれに対して、最初のアクションとして一時停止を挿入する必要があります。 1 つのマクロ画面 ScreenA に一時停止アクションを挿入する方式を使用する方がより簡単です。

通常の TN3270 セッションと、コンテンション解消機能を使用可能にしたTN3270E セッションの両方でマクロを実行する必要がある場合は、XML マクロ言語に備わっているいくつかの属性が役立ちます。『画面の完了に関係する属性』を参照してください。

TN3270E のコンテンション解消機能の使用: TN3270E (拡張) は、セッションが接続する LU または LU プールをユーザーが指定できるようにした TN3270 プロトコルの拡張形式です。また、サーバーに ASCII モードで接続するため (例えば、ファイアウォールにログオンするため) のネットワーク仮想端末装置 (NVT) プロトコルもサポートしています。

コンテンション解消モードは TN3270E のオプション機能で、TN3270E サーバーのすべてではなく一部がこの機能をサポートしています。この機能は、ホストがアプリケーション画面の更新を完了したかどうかクライアントが認識できないという問題を解決します。クライアントが TN3270E セッションを実行していて、コンテンション解消をサポートするサーバーに接続している場合は、ホストがアプリケーション画面の更新を完了するまで、マクロ・ランタイムは新しいマクロ画面を認識しません。

画面の完了に関係する属性Host On-Demand は、以下の両方の環境でマクロの単一バージョンをサポートする際にマクロ開発者が経験する問題に対処するために、3 つのエレメント属性を備えています。

v コンテンションを解消しない環境 (TN3270 サーバーに接続したクライアント、またはコンテンション解消を使用しない TN3270E サーバーに接続したクライアントによってマクロが実行される。したがって、ホストがアプリケーション画面を更新する時間を取るために、マクロ画面に一時停止アクションが必要になる場合がある)。

v コンテンションを解消する環境 (コンテンション解消を使用する TN3270E サーバーに接続したクライアントによってマクロが実行される。したがって、ホストがアプリケーション画面を更新する時間を取るために一時停止アクションを必要とするマクロ画面はない)。

これらの属性は、ソース表示を使用して追加する必要があります。

ignorepauseforenhancedtn=true/false<HAScript> エレメントの ignorepauseforenhancedtn 属性を true に設定すると、コンテンションを解消する環境でセッションが実行されている場合、マクロの実行中にマクロ・ランタイムは一時停止アクション (<pause> エレメント) をスキップします。コンテンションを解消しない環境で実行するマクロを作成し (一時停止ア

第 8 章 タイミングの問題 93

Page 112: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

クションを挿入)、コンテンションを解消する環境でもそのマクロを不要な遅延なく(一時停止アクションを無視して) 実行したい場合に、この属性を使用できます。

この属性を true に設定すると、マクロ・ランタイムはコンテンションを解消しない環境では一時停止アクションを処理しますが (指定のミリ秒間待機)、コンテンションを解消する環境では一時停止アクションを無視します。

ただし、この属性を true に設定すると、マクロ・ランタイムは (アプリケーション画面を更新する時間を取るために挿入された一時停止だけでなく)、マクロ内の一時停止アクション (<pause> エレメント) をすべてスキップします。次のサブセクションでは、この 2 次的な問題に対処します。

ignorepauseoverrideforenhancedtn=true/false<pause> エレメントの ignorepauseoverrideforenhancedtn 属性を特定の <pause>エレメント内で true に設定すると、<HAScript> エレメント内でignorepauseforenhancedtn 属性が true に設定されていても、マクロ・ランタイムはその <pause> エレメントを処理します (指定されたミリ秒数のみ待ちます)。

コンテンションを解消する環境で <HAScript> エレメントのignorepauseforenhancedtn 属性を true に設定した場合でも、<pause> エレメントをスキップせずに常に実行する場合は、<pause> エレメント内でこの属性を trueに設定します。

delayifnotenhancedtn=(ミリ秒)<HAScript> エレメントの delayifnotenhancedtn 属性をゼロ以外の値に設定すると、OIA (オペレーター情報域) が変更されたという通知をマクロ・ランタイムが受け取ったときに、マクロ・ランタイムは指定されたミリ秒数のみ自動的に一時停止します。

コンテンションを解消する環境 (一時停止アクションの挿入が不要) でマクロを開発し、コンテンションを解消しない環境 (アプリケーション画面を完了する時間を取るために、マクロ画面で一時停止アクションが必要になる場合がある) でもそのマクロを実行したい場合に、この属性を使用できます。

この属性を true に設定した場合、コンテンションを解消しない環境でマクロを実行すると、OIA が変更されたという通知を受け取るたびに、マクロ・ランタイムは指定されたミリ秒数だけ一時停止を挿入します。例えば、200 ミリ秒の一時停止を指定すると、マクロ・ランタイムは OIA が変更されるたびに 200 ミリ秒間待機します。

OIA に対する変更の通知があるたびにマクロ・ランタイムが一時停止することを、要約的に累積する効果により、マクロ・ランタイムが新しいマクロ画面のアクションの処理を開始する前に、アプリケーション画面が完了します。マクロ・ランタイムは、コンテンションを解消しない環境でセッションが実行されていることを検出したときにのみ、これらの追加の一時停止を挿入します。

この属性の制限は、マクロ・ランタイムがこれらの余分の一時停止を (画面の更新が問題になっている画面の処理中だけでなく)、すべての画面の処理中に追加することです。ただし、余分に費やされる待ち時間は少しです。また、より重要な点として、この属性を使用すれば、コンテンションを解消しない環境にマクロを速やかに

94 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 113: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

適応させることができます。 その際、個々の画面をテストして、画面更新の問題がある各画面に一時停止アクションを挿入する必要はありません。

第 8 章 タイミングの問題 95

Page 114: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

96 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 115: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 9 章 変数とインポートした Java クラス

HATS 変数HATS には、主に、グローバル変数とマクロ変数の 2 つのタイプの変数があります。ここでは 2 つの変数の違いを説明します。

グローバル変数グローバル変数は、HATS Toolkit で作成される変数であり、HATS プロジェクトによって使用されます。グローバル変数は、マクロ・スクリプトの外部に保管されます。これらの変数は、HATS ランタイムによって保守および更新されます。グローバル変数には 2 つのタイプがあります。

ローカルローカル・グローバル変数は、HATS プロジェクト内で作成される変数であり、そのプロジェクトからのみ可視になります。

共用共用グローバル変数は、.ear ファイルのすべての HATS Web アプリケーション、または同じ リッチ・クライアント 環境で実行されているすべての HATSリッチ・クライアント アプリケーションから可視であり、使用できる変数です。

グローバル変数がローカルであるか共用であるかは、グローバル変数の作成時にGUI の「共用」チェック・ボックスにチェック・マークが付いているか、あるいはset、prompt、または extract タグの共用属性の値が HATS .hma ソース・ファイルで yes と no のどちらに指定されているかによって決まります。

マクロ変数マクロ変数はグローバル変数と異なり、HATS の .hma ソース・ファイル内のマクロ内部で使用および保管されます。マクロ変数は、マクロ・エディターを使用して作成できます。VME を使用してマクロ変数を作成するには、 126 ページの『「変数およびタイプ」タブ』を参照してください。また、AME を使用する場合は、165 ページの『「変数 (Variables)」タブ』を参照してください。マクロ変数は、マクロ・エンジンによって作成、保管、および使用され、マクロ・スクリプトにリストされています。

グローバル変数用の HATS プロンプトおよび抽出を使用する HATS マクロ(.hma) ファイルのソースでは、プロンプトおよび抽出は、ファイル内のマクロ・スクリプト構文の前に現れます。マクロ変数を含むマクロ・スクリプトは、開始タグ<HAScript> および終了タグ </HAScript> に囲まれています。

© Copyright IBM Corp. 2003, 2015 97

Page 116: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ変数とインポート済みタイプの概要マクロ変数は、マクロにプログラミングで高度な動作を加えるために役立ちます。変数を使用すれば、値の格納、結果の保存、カウントの保持、テキスト・ストリングの保存、成果の記憶など、プログラミングに不可欠なあらゆることを実行できます。

標準データ・タイプ (ストリング、整数、倍精度、ブール、およびフィールド) のいずれかに属する変数を作成できます。

また、Java クラスを表すインポート済みタイプに属する変数も作成できます。その後クラスのインスタンスを作成し、インスタンスに対してメソッドを呼び出すことができます。この機能を利用すれば、Java ランタイム環境 (JRE) ライブラリー、自分でインプリメントしたクラスやライブラリー、他のソースから提供された Javaのクラスやライブラリーなどの、各種 Java クラス・ライブラリーに備わっている豊富な機能を使用できるようになります。

拡張マクロ形式が必要変数を使用するには、マクロに対して拡張マクロ形式を使用する必要があります( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。このため、基本マクロ形式のマクロに変数を追加するには、マクロを拡張マクロ形式に変換するかどうか決定する必要があります。多数のユーザーが使用していて、完全に機能している基本マクロ形式の古いマクロがある場合は、マクロを現状のままにしておくこともできます。

ただし、記録済みマクロはすべて基本マクロ形式で記録されていることに注意してください。つまり、マクロを最近記録し、そのマクロの改良を始めようとしている場合は、単に拡張マクロ形式への切り替えをまだ済ませていないだけの可能性があります。

マクロ・エディターは、基本マクロ形式のままのマクロに変数を定義しようとすると、ポップアップ・ウィンドウに次のメッセージを表示して、これら両方の状況に対応します。

作成するマクロで変数を使用する予定にしている場合は「はい」をクリックし、基本マクロ形式のマクロを変換したくない場合は「いいえ」をクリックします。

変数の有効範囲それぞれの変数のスコープは、変数を作成する対象のマクロに関してグローバルです。つまり、マクロにある任意のマクロ画面から、マクロの変数すべてにアクセスできます。マクロ画面内のアクションまたは記述子が変数にアクセスするため必要なのは、単に変数名を使用することだけです。

高度なマクロ機能を使用しようとしています。処理の継続を選択すると、マクロは自動的に拡張マクロ形式に変換されます。継続しますか?

図 23. 注意喚起メッセージ

98 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 117: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

例えば、$intPartsComplete$ という名前の変数を 0 に初期化したとします。マクロの進行に伴って、次のように変数を使用できます。

1. ScreenC がタスクの部分 1 を完了し、変数更新アクションを使用して$intPartsComplete$ を増分する。

2. ScreenG がタスクの部分 2 を完了し、変数更新アクションを使用して$intPartsComplete$ を増分する。

3. ScreenM の条件アクションが、部分 1 と部分 2 のどちらが現時点で完了しているかテストする。結果に応じて、マクロは ScreenR または ScreenS を次に処理するマクロ画面として予期する。

4. ScreenS がタスクの部分 3 を完了し、変数更新アクションを使用して$intPartsComplete$ を増分する。

この例では、いくつかの異なるマクロ画面のアクションが、変数$intPartsComplete$ の読み取りまたは書き込みを実行できます。

変数の作成ソース表示で、<create> エレメントを使用して変数を作成します。マクロ・スクリプト内の変数すべてを含む収容エレメント <vars> があり、それぞれの変数ごとに<create> エレメントがあります。図 24 に、5 つの <create> エレメントを含む<vars> エレメントを示します。

図 24 の <vars> エレメントは、それぞれの標準データ・タイプ(string、integer、double、boolean、および field) から変数を 1 つ作成します。

変数の作成 (<create> エレメント) は、すべて <vars> エレメントの中に置く必要があります。<vars> エレメント自体は、<import> エレメントがあればその後 (次のセクションを参照)、かつ最初のマクロ画面 (<screen> エレメント) の前に置く必要があります。

Java クラスのインポート済みタイプを作成ソース表示で、<type> エレメントを使用してインポート済みタイプを作成します。マクロ・スクリプト内のインポート済みタイプすべてを含む収容エレメント<import> があり、それぞれのインポート済みタイプごとに <type> エレメントがあります。 100 ページの図 25 は、インポート済みタイプを宣言する <import> エレメントと、それに続く、インポート済みタイプに属する変数を作成および初期化する <vars> エレメントを示しています。

<vars><create name="$strAccountName$" type="string" value="" /><create name="$intAmount$" type="integer" value="0" /><create name="$dblDistance$" type="double" value="0.0" /><create name="$boolSignedUp$" type="boolean" value="false" /><create name="$fldFunction$" type="field" />

</vars>

図 24. サンプル <vars> エレメント

第 9 章 変数とインポートした Java クラス 99

Page 118: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

上の図で、<import> エレメントには <type> エレメントが 1 つ含まれ、このエレメントには class 属性 (完全修飾クラス名 java.util.Hashtable を指定) と name属性 (短縮名 Hashtable を指定) があります。<vars> エレメントには 1 つの<create> エレメントが含まれています。このエレメントは通常のとおり、名前($ht$)、タイプ (Hashtable)、および初期値 (ここでは null ではなく、クラスのインスタンスを戻すコンストラクター $new Hashtable(40)$ の呼び出し) を指定します。

ソース表示を使用している場合は、インポート済みタイプ (<type> エレメント) をすべて <import> エレメント内に入れる必要があります。<import> エレメント自体は、<HAScript> エレメントの内 ( 203 ページの『<HAScript> エレメント』を参照) かつ <vars> エレメントの前に置く必要があります。

一般的な問題

Java ライブラリーまたはクラスの配置マクロの再生中に、マクロ・ランタイムが Java メソッドの呼び出しを処理する場合は、メソッドが所属するクラスに使用可能なすべての Java ライブラリー・ファイルおよびクラス・ファイルを検索します。この検索は、クラスを検出するまで停止しません。

Java ライブラリーまたはクラスの配置作業は、クラスを含むライブラリー・ファイルまたはクラス・ファイルを、マクロ・ランタイムがマクロの再生中にクラスを検出できる場所に配置する作業からなります。以下の Java クラスは自動的に利用可能となるため、配置する必要はありません。

v Java API 内のクラス。Java アーカイブ・ファイルは HATS アプリケーションにすでに存在し、その場所は、HATS アプリケーションの起動時に指定するクラスパスにリストされています。

v Host On-Demand Macro Utility Libraries 内のクラス。HML ライブラリーのクラスは、HATS コードとともに保管されます ( 106 ページの『Macro UtilityLibraries (HML ライブラリー)』を参照)。

マクロ・スクリプトによって呼び出されるメソッドを含む他のすべての Java クラスは、マクロ・ランタイムが検出できる場所に配置する必要があります。環境に応じて、クラス・ファイルとして、または Java クラスを含むライブラリーとしてJava クラスを配置できます。

<import><type class="java.util.Hashtable" name="Hashtable" />

</import>

<vars><create name=$ht$ type="Hashtable" value="$new Hashtable(40)$" />

</vars>

図 25. インポート済みタイプとそのタイプの変数

100 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 119: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

WebSphere Application Server のランタイム環境 (ポータルではなく) で Java クラスを使用する場合は、マクロ・ランタイムは Java EE エンタープライズ・アプリケーション Application (.ear) ファイルにパッケージ化されていることに注意してください。Java クラスが HATS Web プロジェクトにパッケージ化されている場合は、Web アーカイブ (WAR) クラス・ローダーのポリシーをアプリケーションの単一クラス・ローダーに更新して、マクロ実行時にマクロ・ランタイムが Java クラスに確実にアクセスできるようにする必要があります。このように構成しないと、マクロが Java クラスを呼び出したときに、ClassNotFoundExceptions が発生します。クラス・ローダーのポリシーの構成方法を確認するには、ご使用のバージョンの WebSphere Application Server の資料でアプリケーション・クラス・ローダーの構成に関する説明を参照してください。

変数名とタイプ名変数名の規則は次のとおりです。

v 変数名には、英数字 (a-z、A-Z、0-9)、下線 (_)、またはハイフン (-) のみを含めることができます。

v 大文字小文字の区別があります (例えば、 strTmp と strtmp は 2 つの異なる名前です)。

v 変数名は、インポート済みタイプの短縮名または完全修飾クラス名と同じであってはなりません。

タイプ名の規則は次のとおりです。

v タイプ名には、英数字、下線 (_)、ハイフン (-)、またはピリオド (.) のみを含めることができます.

v タイプ名は大文字と小文字を区別します。

マクロ間での変数の転送1 つのマクロを別のマクロに「チェーニング」する (戻りのない呼び出し)PlayMacro アクションの場合は、呼び出し側マクロのすべての変数とその値をターゲット・マクロに転送できます。ターゲット・マクロは、自身の変数と転送された変数の両方にアクセスできます ( 74 ページの『PlayMacro アクション(<playmacro> エレメント)』を参照)。

フィールド変数フィールド変数は、ストリング変数の一種です。フィールド変数は、ストリング変数と同様にストリングを格納し、ストリング変数が有効であるすべてのコンテキストでフィールド変数を使用できます。

ただし、フィールド変数にストリングが格納される方法について、フィールド変数とストリング変数は異なっています。フィールド変数に格納されるストリングは、常に、マクロ・ランタイムが現行ホスト端末上の 3270 フィールドまたは 5250 フィールドから読み取ったストリングになります。マクロ・ランタイムがこのストリングを 3270 または 5250 フィールドから読み取るようにするには、次の項目を指定して変数更新アクションを作成する必要があります。

1. フィールド変数の名前 ($fldFilename$ など)。

第 9 章 変数とインポートした Java クラス 101

Page 120: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

2. 位置ストリング ('5,11' のように、コンマで区切った 1 対の整数を含むストリング)。

マクロ・ランタイムは、変数更新アクションを実行するときに次のステップを行います。

1. ホスト端末上で、位置ストリングに指定されている行と列の位置を検出する。

2. その行と列の値が位置指定している 3270 または 5250 フィールドを検索する。

3. フィールドの内容全体を読み取る。

4. フィールドの内容全体をストリングとしてフィールド変数に格納する。

詳しくは、 81 ページの『フィールド変数に対する変数更新アクション』を参照してください。

変数の使用マクロ・ランタイムは、マクロの再生を開始するとき、マクロ画面を処理する前に変数に初期値を割り当てます。以下のセクションでは、標準変数タイプおよびインポート済み変数タイプの両方について、これらの初期値の使用法を説明します。

標準タイプに属する変数の使用

変数が保持する値の使用標準タイプ (ストリング、整数、倍精度、ブール) に属する変数は、同タイプの即時値 ('Elm Street'、10、4.6e-2、true など) とほぼ同じ方法で使用できます。

v この後このサブセクションにリストされている制限を例外として、標準タイプの変数は、同じデータ・タイプの即時値を使用できる任意の入力フィールド (マクロ・エディターの場合) または属性 (ソース表示の場合) で使用できます。例えば、入力フィールド (「入力アクション (Input action)」ウィンドウの「ストリング」フィールドなど) がストリング値を必要とする場合は、フィールドも同様にストリング変数を受け入れます。 24 ページの『等価』を参照してください。

v 変数は、同じタイプの即時値と同じ使用方法で、演算子や式と組み合わせて使用できます。 21 ページの『算術演算子および式』を参照してください。

v 変数のタイプと異なるコンテキストにある変数の値は、同じタイプの即時値が変換される場合と同じ方法で、適切なタイプの値に変換されます (可能な場合)。23 ページの『自動データ・タイプ変換』を参照してください。

ただし、特定のコンテキストでは変数を使用できません。AME では、次のコンテキストで変数を使用できません。

v 「一般」タブのフィールドすべて。

v 「画面」タブの「画面名」フィールド。

v 「マクロ再生アクション」ウィンドウのすべてのフィールドの値。

ソース表示では、次のコンテキストで変数を使用できません。

v すべてのエレメントの属性の名前。

v <HAScript> エレメントのすべての属性の値。

v <screen> エレメントの name 属性の値

102 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 121: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v <description> エレメントの uselogic 属性の値

v <nextscreen> エレメントのマクロ画面の名前。

v <playmacro> エレメントのすべての属性の値。

標準タイプに属する変数への値の書き込み標準タイプに属する変数には、以下の方法で値を書き込むことができます。

v 変数の作成時に初期値を割り当てる。

v 変数更新アクションを使用して変数に値を割り当てる。

v プロンプト・アクションを使用してユーザー入力を取得し、変数に割り当てる。

v 抽出アクションを使用してホスト端末からデータを読み取り、変数に割り当てる。

v 戻りコード値を変数に書き込むアクションを使用する。

制限: 以下のいずれかの値を標準タイプの変数に割り当てることはできません。

v 値 null。(例外: 値 null をストリング変数に割り当てた場合、値はストリング'null' に変換されます)

v void メソッドの呼び出し。

v 配列を戻すメソッドの呼び出し。

標準タイプの変数に Java オブジェクトを書き込む: 標準タイプの変数に Java オブジェクトを書き込むと、マクロ・ランタイムはインポート済みタイプの toString()メソッドを呼び出してから、結果ストリングを変数に割り当てることを試みます。

インポート済みタイプに属する変数の使用

変数が保持する値の使用インポート済みタイプに属する変数に格納されている値は、次のように使用できます。

v 変数更新アクションを使用して、同じタイプの別の変数に変数を割り当てることができます。

v 変数に対して Java メソッドを呼び出すことができます ( 105 ページの『Javaメソッドの呼び出し』を参照)。 Java メソッドが標準タイプ(string、integer、double、boolean) に属する値を戻す場合は、そのタイプの値を使用する場合と同じように結果を使用できます。

制限以下のタイプのデータをインポート済みタイプの変数に割り当てることはできません。

v 標準タイプ (string、integer、double、boolean、field) に属する値または変数。

v 別のインポート済みタイプのインスタンス、またはそのタイプに属する変数 (そのタイプがインポート済みタイプのスーパークラスである場合を除く)。

v インポート済みタイプの変数に対して呼び出したメソッドから戻されたオブジェクトのインスタンスの配列。

第 9 章 変数とインポートした Java クラス 103

Page 122: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

インポート済みタイプの変数にマクロがこれらの無効なタイプの 1 つの値を割り当てようとすると、マクロ・ランタイムはランタイム・エラーを生成して、マクロを停止します。

インポート済みタイプに属する変数への書き込みインポート済みタイプの変数には、次の方法で値を書き込むことができます。

v 変数の作成時に、変数に値を割り当てることができます。

v 変数更新アクションを使用して、変数に値を割り当てることができます。

インポート済みタイプに属する変数には、次のタイプの変数を割り当てることができます。

v 同じタイプのインスタンス。このインスタンスは、同じタイプの変数のもの、または同じタイプのインスタンスを戻すメソッドの呼び出しから得られたもののどちらかです。

v 値 null。値 null を指定するには、次のどちらかを使用できます。

– キーワード null。

– 変数定義時の「初期値」フィールド、変数更新アクション定義の「値」フィールドなどの、ブランク入力フィールド (マクロ・エディターを使用している場合)。

– 次に示す <create> エレメントの value 属性のような空の属性 (ソース表示を使用している場合)。

<create name=$ht$ type="Hashtable" value="" />

同じインポート済みタイプの変数の比較同じインポート済みタイプの 2 つの変数を比較する条件式 (例えば、条件アクションの「条件」フィールド内) の中では、変数自体を使用するのでなく、基礎クラスにある比較メソッド (equals() など) をインプリメントする必要があります。例えば、以下のようになります。

$htUserData.equals($htPortData$)$

代わりに、変数自体を比較すると (例: $htUserData$ == $htPortData$)、次のようになります。

1. マクロ・ランタイムは、それぞれの変数ごとに、基礎 Java クラスの toString()メソッドを呼び出し、ストリングの結果を得る。

2. マクロ・ランタイムは、2 つのストリングの結果を比較し、ブールの結果を得る。

3. マクロ・ランタイムは、条件の結果をステップ 2 で得られたブールの結果に設定する。

これにより得られる結果は、2 つの変数の比較結果としては正しくない可能性があります。

104 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 123: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

Java メソッドの呼び出し

メソッド呼び出しを使用できる個所メソッドから戻される値が有効であるすべてのコンテキストで、メソッドを呼び出すことができます。例えば次のように、入力アクションの中で行の値をメソッドから戻される整数値に設定できます。

$importedVar.calculateRow()$

また、メソッドの戻り変数が必要ない場合や、メソッドに戻り値がない (void) 場合は、実行アクションを使用してメソッドを呼び出すこともできます ( 72 ページの『実行アクション (<perform> エレメント)』を参照)。

メソッド呼び出しの構文インポートしたクラスに属するメソッドを呼び出すには、Java で使用するものと同じ構文を使用します。ただし、その構文に加え、変数の場合と同じように、メソッド呼び出しをドル記号 ($) で囲む必要があります。例えば、次のとおりです。

$new FileInputStream('filename')$$fis.read()$

メソッドにパラメーターとして渡す即時ストリング値 ('Elm Street'、または上記の最初の例での 'filename' など) は、通常どおり単一引用符で囲む必要があります ( 18 ページの『拡張マクロ形式の規則』 を参照)。

マクロ・ランタイムが呼び出し先メソッドを検索する方法メソッド呼び出し ($prp.get('Group Name')$ など) をマクロ・スクリプトに追加する際に、マクロ・エディターは、呼び出し先メソッドまたはコンストラクターが、変数の属するクラスに存在するかどうかを検査しません。その検査は、呼び出しが行われたときにマクロ・ランタイムによって行われます。

メソッドは、基礎 Java クラスの public メソッドでなければなりません。

マクロ・ランタイムは、ユーザーが呼び出したメソッドに一致するメソッドがあるかどうか Java クラスを検索する際に、表 12 に示すようにマクロのデータ・タイプ (boolean、integer、string、field、double、インポート済みタイプ) を Java データ・タイプにマップします。

表 12. マクロ・ランタイムがマクロのデータ・タイプを Java データ・タイプにマップする方法

メソッド・パラメーターが以下のマクロ・データ・タイプに属する場合:

マクロ・ランタイムは以下の Java データ・タイプのパラメーターを持つ Java メソッドを検索する:

ブール boolean

整数 int

ストリング String

フィールド String

倍精度 double

インポート済みタイプ インポート済みタイプの基礎クラス

第 9 章 変数とインポートした Java クラス 105

Page 124: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ・ランタイムは、呼び出し先メソッドを次のように検索します。

1. マクロ・ランタイムは、インポート済みタイプの定義に指定されているクラスを検索する (java.util.Properties など)。

2. マクロ・ランタイムは、そのクラス内で呼び出し先メソッドと同じメソッド・シグニチャー (名前、パラメーター数、およびパラメーターのタイプ) を持つメソッドを検索する。

3. 検索が成功した場合、マクロ・ランタイムはメソッドを呼び出す。

4. 検索が失敗した場合、マクロ・ランタイムはクラス内で、呼び出し先メソッドと同じ名前とパラメーター数 (パラメーターのタイプは無視) を持つメソッドを検索する。

a. マクロ・ランタイムが該当するメソッドを検出した場合は、指定されたパラメーターを使用してメソッドを呼び出す。

b. 呼び出しがエラーを出さずに戻った場合、マクロ・ランタイムは正しいメソッドを呼び出したものと想定する。

c. 呼び出しがエラーを出して戻った場合、マクロ・ランタイムは別のメソッドを検索する。

d. 同じ名前とパラメーター数を持つメソッドをすべて試すまで、検索が継続される。どれも成功しなかった場合、マクロ・ランタイムはランタイム・エラーを生成する。

Macro Utility Libraries (HML ライブラリー)Host On-Demand Macro Utility Libraries (HML ライブラリー) は、HATS コードとともにパッケージされているユーティリティー・ライブラリーです。次の作業を行わずに、これらのライブラリーのいずれかからメソッドを呼び出すことができます。

v 基礎クラスのインポート。

v クラスのインスタンスを含める変数の作成。

v クラスのインスタンスの作成。

実際には、HML Java ライブラリーに含まれているクラスのインポート、HML クラスに属する変数の作成、または HML オブジェクトの作成は許可されていません。

これは、マクロの再生を開始すると行われる初期化中に、マクロ・ランタイムが以下を行うことが理由です。

v すべての HML クラスをインポートする。

v HML クラスごとに 1 つの変数を作成して、クラスのインスタンスを含める。

v 各 HML クラスのインスタンスを 1 つ作成して、該当する変数に格納する。

下表に、各 HML 変数の変数名と、基礎クラスのメソッドのタイプを示します。

表 13. HML 変数

HML 変数: メソッドの説明:

$HMLFormatUtil$ ストリングをフォーマット設定するためのメソッド。

106 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 125: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 13. HML 変数 (続き)

HML 変数: メソッドの説明:

$HMLPSUtil$ セッション・ウィンドウの表示スペースにアクセスするメソッド。

$HMLSessionUtil$ セッション値を戻すメソッド。

$HMLSQLUtil$ 最新の SQLQuery アクションの結果に関する情報を返すメソッド。

HML ライブラリーに属するメソッドの呼び出しHML ライブラリーに属するメソッドを呼び出すには、変数名、メソッド名、および入力パラメーターを通常の方法で指定します。

HML で始まる変数名は予約済み通常の変数と HML 変数を混同しないようにするために、先頭が HML の変数名は予約されています。先頭が HML の変数を作成しようとすると、Host On-Demandはエラー・メッセージを生成します。

$HMLFormatUtil$$HMLFormatUtil$ で呼び出されるメソッドは、メソッドをフォーマット設定します。 表 14 は、これらのメソッドの要約を示します。

表 14. $HMLFormatUtil$ のメソッドの要約

METHOD SUMMARY: $HMLFormatUtil$

ストリング(String)

numberToString(Object obj)

数値を、現在構成されているロケールに従ってフォーマット設定したストリングに変換します。入力パラメーターのタイプは、整数または倍精度です。

int またはdouble

stringToNumber(String str)

ロケール形式の数値ストリング ('1111.56'、'1,111.56'、または'1111,56' など) を数値に変換します。戻される数値のタイプは、入力ストリングに応じて、整数または倍精度になります。

数値と現行ロケールの形式との相互変換ロケールは、特定の各国語と地域に関連するフォーマット設定の規則セットです。例えば、クライアント・ワークステーションの構成に使用されているロケールに応じて、1111.22 などの 10 進値は、以下のいずれかのストリングで表すことができます。

$HMLFormatUtil.numberToString(1.44)$$HMLPSUtil.getCursorPos()$$HMLSessionUtil.getHost()$

図 26. HML メソッドを呼び出す場合の例

第 9 章 変数とインポートした Java クラス 107

Page 126: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

'1111.22''1,111.22''1111,22'

別の例として、-78 などの負の数値は以下のように表すことができます。

'-78''78-'

メソッド numberToString() および stringToNumber() は、数値 (1111.22 などの、タイプが整数または倍精度の変数または即時値) とその現行ロケールでの表記('1111.22'、'1,111.22'、'1111,22' などのストリング) の間の変換を実行します。

メソッドの詳細

numberToString():

public String numberToString(Object obj)

このメソッドは、数値 (整数または倍精度) を、現在構成されているロケールに従ってフォーマット設定したストリングに変換します。入力パラメーターのタイプは、整数または倍精度です。

このメソッドは、推奨されないスタンドアロン・メソッド$FormatNumberToString()$ を置換します。

stringToNumber():

public int stringToNumber(String str)public double stringToNumber(String str)

このメソッドは、現在構成されているロケールに従ってフォーマット設定されている数値ストリングを数値に変換します。戻される数値のタイプは、入力ストリングに応じて、整数または倍精度になります。

このメソッドは、推奨されないスタンドアロン・メソッド$FormatStringToNumber()$ を置換します。

<input value="$HMLFormatUtil.numberToString(1111.44)$"row="20" col="16" movecursor="true"xlatehostkeys="true" encrypted="false" />

図 27. numberToString() の例

108 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 127: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

$HMLPSUtil$$HMLPSUtil$ で呼び出されるメソッドは、セッション・ウィンドウの表示スペースに影響を与えるか、またはセッション・ウィンドウの表示スペースに関する情報を戻します。表 15 は、これらのメソッドの要約を示します。

表 15. $HMLPSUtil$ のメソッドの要約

METHOD SUMMARY: $HMLPSUtil$

int convertPosToCol(int pos)

表示スペースでの指定の位置のカラム番号を戻します。

int convertPosToRow(int Pos)

表示スペースでの指定の位置の行番号を戻します。

void enableRoundTrip(boolean flag)

双方向言語の場合は、前に双方向文字が付いた数表示が、場所と数表示を交換するかどうかを決定します。

int getCursorCol()

表示スペースでのテキスト・カーソルのカラム番号を戻します。

int getCursorPos()

表示スペースでのテキスト・カーソルの位置を戻します。

int getCursorRow()

表示スペースでのテキスト・カーソルの行番号を戻します。

int getSize()

表示スペースのサイズ (表示スペースでの文字の位置の数) を戻します。

int getSizeCols()

表示スペースのカラム数を戻します。

int getSizeRows()

表示スペースの行数を戻します。

ストリング(String)

getString(int pos, int len)

表示スペースでの指定位置で始まり、指定された長さで続くテキスト・ストリングを戻します。

<value="'1111.33'" /><extract name="'Extract'" planetype="TEXT_PLANE"

srow="1" scol="1"erow="1" ecol="10" unwrap="false"assigntovar="$value$" />

<if condition="$HMLFormatUtil.stringToNumber($value$)$ < 0 "...

</if>

図 28. stringToNumber() の例

第 9 章 変数とインポートした Java クラス 109

Page 128: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 15. $HMLPSUtil$ のメソッドの要約 (続き)

METHOD SUMMARY: $HMLPSUtil$

int searchString(String str)

指定されたストリングの表示スペースでの位置を戻します (指定されたストリングが表示スペースにない場合は 0)。

表示スペース表示スペースは、セッション・ウィンドウでの行とカラムの各位置のエレメントを含む (ただし、オペレーター情報域に使用されるセッション・ウィンドウの最後の行を含まない) データ構造です。表示スペースのサイズは、セッション・ウィンドウのサイズによって異なります。例えば、セッション・ウィンドウに 24 の行と 80のカラムがある場合は、表示スペースのサイズは 24 * 80 = 1920 です。

表示スペースでのエレメントの位置は、セッション・ウィンドウでの行とカラムの位置に直列的に (左から右、上から下) 対応します。例えば、セッション・ウィンドウに 80 の行と 25 のカラムがある場合は、行とカラムの位置は、図 29 で示すようになります。

Host On-Demand は、表示スペースを使用して、セッション・ウィンドウで表示される文字を格納します。表示スペースの各エレメントを使用して、文字 (および輝度などのその文字に関する情報) を格納します。例えば、セッション・ウィンドウの行 1 とカラム 1 にストリング Message が表示される場合、その位置に対応する行とカラムは、 111 ページの図 30 で示すようになります。

Row of Column of Corresponds toSession Session element at thisWindow: Window: position in PS:

1 1 11 2 21 3 3

...1 80 802 1 812 2 822 3 83

...24 79 191924 80 1920

図 29. 表示スペースでの行と列の位置の対応

110 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 129: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

通常は使用する必要はありませんが、表 16 は、さまざまな値を計算するための公式を示します。これらの公式で使用される記号の意味は、次のとおりです。

v row - セッション・ウィンドウでの行の位置

v col - セッション・ウィンドウでのカラムの位置

v pos - 表示スペースでの位置

v NUMROWS - セッション・ウィンドウの行数。オペレーター情報域 (OIA) に使用される最後の行は含まれていません。

v NUMCOLS - セッション・ウィンドウのカラム数

表 16. 表示スペースに関連する値を計算するための公式

値: 計算の公式:

PS のサイズ NUMROWS * NUMCOLS

Example:24 * 80 = 1920

row (pos + NUMCOLS - 1) / NUMCOLS

Example:(81 + 80 - 1) / 80 = 2

col pos - ((row - 1) * NUMCOLS)

Example:1920 - ((24 - 1) * 80) = 80

pos ((row - 1) * NUMCOLS) + col

Example:((24 - 1) * 80) + 1 = 1641

メソッドの詳細

convertPosToCol():

public int convertPosToCol(int pos)

このメソッドは、表示スペースでの指定の位置に関連付けられた列番号を返します。

Row of Column of Corresponds CharacterSession Session to element stored inWindow: Window: at this pos- this element:

ition in PS:1 1 1 M1 2 2 e1 3 3 s1 4 4 s1 5 5 a1 6 6 g1 7 7 e

図 30. 行 1、列 1 に「Message」が表示される場合のレイアウト

第 9 章 変数とインポートした Java クラス 111

Page 130: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

convertPosToRow():

public int convertPosToRow(int pos)

このメソッドは、表示スペースでの指定の位置に関連する行番号を戻します。

enableRoundTrip():

public void enableRoundTrip(boolean flag)

このメソッドは、双方向言語 (アラビア語およびヘブライ語) 専用です。 A、B、および C が双方向文字であると仮定します。通常、ストリングに一連の双方向文字とその後に一連の数表示 (例えば、ABC 123) が含まれている場合は、ストリング全体が保管され、Host On-Demand クライアントは、双方向文字の位置と数表示を交換します。例えば、表示スペースからストリング ABC 123 を読み取り、ストリングを変数に格納して、次に変数の値を表示スペースに書き込む場合、Host On-Demandクライアントは、通常は 123 ABC を表示スペースに書き込みます。

この強制反転の技法をオフにするには、true を指定して enableRoundTrip() を呼び出します。この強制反転の技法を復元するには、false を指定してenableRoundTrip() を呼び出します。

getCursorCol():

public int getCursorCol()

このメソッドは、表示スペースでのテキスト・カーソルの列位置を返します。

<varupdate name="$cursor_col$ value="$HMLPSUtil.convertPosToCol($HMLPSUtil.getCursorPos()$) $" />

図 31. convertPosToCol() の例

<varupdate name="$cursor_row$" value=$HMLPSUtil.convertPosToRow($HMLPSUtil.getCursorPos()$)$" />

図 32. convertPosToRow() の例

<perform value="$HMLPSUtil.enableRoundTrip(true)$" />

図 33. enableRoundTrip() の例

<input value="$HMLSessionUtil.getHost()$"row="$HMLPSUtil.getCursorRow()$"col="$HMLPSUtil.getCursorCol()$+2"movecursor="true" xlatehostkeys="true"encrypted="false" />

図 34. getCursorCol() の例

112 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 131: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

getCursorPos():

public int getCursorPos()

このメソッドは、表示スペースでのテキスト・カーソルの位置を戻します。

getCursorRow():

public int getCursorRow()

このメソッドは、表示スペースでのテキスト・カーソルの行位置を返します。

getSize():

public int getSize()

このメソッドは、表示スペースのサイズ (表示スペースでの文字の位置の数) を戻します。例えば、セッション・ウィンドウが 25 行と 80 列である場合、表示スペースのサイズは 24 * 80 = 1920 です。

getSizeCols():

public int getSizeCols()

このメソッドは、表示スペースのカラム数を戻します。表示スペースには、セッション・ウィンドウと同じカラム数があります。例えば、セッション・ウィンドウが25 行と 80 列である場合、表示スペースの列数は 80 です。

<varupdate name="$cursor_pos$" value="$HMLPSUtil.getCursorPos()$" />

図 35. getCursorPos() の例

<input value="$HMLSessionUtil.getHost()$"row="$HMLPSUtil.getCursorRow()$"col="$HMLPSUtil.getCursorCol()$+2"movecursor="true" xlatehostkeys="true"encrypted="false" />

図 36. getCursorRow() の例

<varupdate name="$size$" value="HMLPSUtil.getSize()$" />

図 37. getSize() の例

<varupdate name="$size_cols$" value="$HMLPSUtil.getSizeCols()$" />

図 38. getSizeCols() の例

第 9 章 変数とインポートした Java クラス 113

Page 132: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

getSizeRows():

public int getSizeRows()

このメソッドは、表示スペースの行数を戻します。表示スペースには、セッション・ウィンドウの行数より 1 少ない行があります (これは、オペレーター情報域を含むセッション・ウィンドウの最後の行が表示スペースに含まれていないためです)。例えば、セッション・ウィンドウが 25 行と 80 列である場合、表示スペースの行数は 24 です。

getString():

public String getString(int pos, int len)

このメソッドは、表示スペース内の指定した位置から始まる、指定した文字数のテキスト・ストリングを返します。

searchString():

public int searchString(String str)

このメソッドは、指定されたストリングの表示スペースでの位置を戻します。このメソッドは、表示スペースにストリングが見つからない場合は 0 を返します。

$HMLSessionUtil$$HMLSessionUtil$ で呼び出されるこのメソッドは、セッションに関連する値を戻します。 115 ページの表 17 は、これらのメソッドの要約を示します。

<varupdate name="$size_rows$" value="$HMLPSUtil.getSizeRows()$" />

図 39. getSizeRows() の例

<varupdate name="$text_of_row_18$"value="$HMLPSUtil.getString(

$HMLPSUtil.getSizeCols()$*17+1,$HMLPSUtil.getSizeCols()$)$" />

図 40. getString() の例

<varupdate name="$pos_ofIBM$" value="$HMLPSUtil.searchString('IBM')$" />

図 41. searchString() の例

114 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 133: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 17. $HMLSessionUtil$ のメソッドの要約

METHOD SUMMARY: $HMLSessionUtil$

ストリング(String)

getHost()

セッション構成の Destination Address フィールドで指定されたテキスト・ストリングを戻します。

ストリング(String)

getLabel()

セッション構成の Session Name フィールドで指定されたストリングを戻します。

ストリング(String)

getName()

ホストによってセッションに割り当てられたセッション・インスタンス ID を戻します。

メソッドの詳細

getHost():

public String getHost()

このメソッドは、セッション構成の「接続 (Connection)」セクションの「宛先アドレス (Destination Address)」フィールドに入力したホスト名またはホスト・アドレスを戻します (myhost.myloc.mycompany.com または 9.27.63.45 など)。

getLabel():

public String getLabel()

このメソッドは、セッション構成の「接続 (Connection)」セッションの「セッション名 (Session Name)」フィールドに入力したセッション名を戻します (3270Display または 5250 Display などの名前)。

getName():

public String getName()

このメソッドは、ホストがセッションに割り当てた識別名を戻します (A、B、または C など)。セッションを開始すると、ホストは、開始された可能性がある同じセッションの他のインスタンスと区別するために、そのセッションに名前を割り当てます。

<varupdate name="$host$" value="$HMLSessionUtil.getHost()$" />

図 42. getHost() の例

<varupdate name="$label$" value="$HMLSessionUtil.getLabel()$" />

図 43. getLabel() の例

第 9 章 変数とインポートした Java クラス 115

Page 134: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

$HMLSQLUtil$$HMLSQLUtil$ で呼び出されたメソッドは、最新の SQLQuery アクションの結果に関する情報を戻します。 表 18 は、これらのメソッドの要約を示します。

表 18. $HMLSQLUtil$ のメソッドの要約

METHOD SUMMARY: $HMLSQLUtil$

int getColumnSize()

データのカラム数を戻します。

ストリング(String)

getDataByIndex()

指定された行の索引とカラムの索引にある項目を戻します。

ストリング(String)

getDataByName()

指定された行の索引とカラム名 (フィールド名) にある項目を戻します。

int getRowSize()

データの行数を戻します。

保管データの形式SQLQuery アクションの結果は、返されるデータ・ブロックのサイズより列と行がそれぞれ 1 つ多い 2 次元の配列として保管されます。行 0 は列の名前 (データベースのフィールド名) を保管するために使用され、列 0 はゼロ・ベースの添字を保管するために使用されます (下の表 19 を参照)。行 0、列 0 にある項目には、空ストリングが含まれています。配列の残りには、実際のデータが含まれています。値はすべてストリングです。

表 19 は、4 x 6 の配列に保管された 3 x 5 のデータ・ブロックの照会の結果を例として示しています。

表 19. 結果を含む 2 次元配列の例

(空ストリング)

TOPICID EXMPLID DESCRIPT

0 4 18 カスタム・ボタンでツールバーを作成します。

1 9 54 開始時に表を付加します。

2 11 74 製品を編集します。

3 11 75 製品を入力または編集します。

4 11 76 カスタマーを検索します。

上の表では、行 0、カラム 0 にある項目には、空ストリングが含まれています。行

<varupdate name="$name$" value="$HMLSessionUtil.getName()$" />

図 44. getName() の例

116 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 135: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

0 の残りには、データベースのフィールド名 (TOPICID、EXMPLID、DESCRIPT)が含まれています。カラム 0 の残りには、行 (0、1、2、3、4) の索引番号が含まれています。実際のデータは、配列の残りに含まれています。値はすべてストリングです。

メソッドの詳細

getColumnSize():

public int getColumnSize()

このメソッドは、追加された列 0 を含む、配列内のデータの実際の列数を返します。例えば、 116 ページの表 19 の配列の場合、このメソッドは 4 を返します。

getDataByIndex():

public int getDataByIndex(int row, int column)

このメソッドは、指定された行とカラムの索引にある項目を戻します。次のリストは、 116 ページの表 19 に示すデータに関して返される値を示します。

v getDataByIndex(0,0) は空ストリングを戻す。

v getDataByIndex(0,1) はストリング 'TOPICID' を戻す。

v getDataByIndex(0,2) はストリング 'EXMPLID' を戻す。

v getDataByIndex(1,1) はストリング '4' を戻す。

v getDataByIndex(2,2) はストリング '54' を戻す。

v getDataByIndex(3,3) はストリング '製品を編集します。' を戻す。

getDataByName():

public int getDataByName(int row, String fieldName)

このメソッドは、指定された行の指定されたフィールド名に項目を戻します。次のリストは、 116 ページの表 19 に示すデータに関して返される値を示します。

v getDataByIndex(1, TOPICID) はストリング '4' を戻す。

v getDataByIndex(2, EXMPLID) はストリング '54' を戻す。

v getDataByIndex(3, DESCRIPT) はストリング 'Edit Products' を戻す。

<varupdate name="$col_size$" value="$HMLSessionUtil.getColumnSize()$" />

図 45. getColumnSize() の例

<varupdate name="$data$" value="$HMLSessionUtil.getDataByIndex(3,3)$" />

図 46. getDataByIndex() の例

第 9 章 変数とインポートした Java クラス 117

Page 136: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

getRowSize():

public int getRowSize()

このメソッドは、追加された行 0 を含む、配列内のデータの実際の行数を返します。例えば、 116 ページの表 19 の配列の場合、このメソッドは 6 を返します。

FormatNumberToString() および FormatStringToNumber()$FormatNumberToString()$ の代わりに $HMLFormatUtil.numberToString()$ を使用してください。前者は、後者と同じ入力パラメーターと戻りタイプを持ちます( 108 ページの『numberToString()』を参照)。

$FormatStringToNumber()$ の代わりに $HMLFormatUtil.stringToNumber()$ を使用してください。前者は、後者と同じ入力パラメーターと戻りタイプを持ちます( 108 ページの『stringToNumber()』を参照)。

<varupdate name="$data$" value="$HMLSessionUtil.getDataByName(3,'DESCRIPT')$" />

図 47. getDataByName() の例

<varupdate name="$row_size$" value="$HMLSessionUtil.getRowSize()$" />

図 48. getRowSize() の例

118 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 137: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 10 章 Visual Macro Editor

Visual Macro Editor (VME) により、HATS マクロを視覚的に開発できます。VME は、HATS ホスト端末、基本マクロ・エディター、および拡張マクロ・エディターの多くの機能を結合し、マクロのオフライン開発を可能にします。また、マクロ間でのフローのコピーを許可するとともに、新規画面を追加するためのドラッグ・アンド・ドロップをサポートします。

VME は HATS マクロのデフォルト・エディターです。

マクロ・エディターは従来どおり、マクロを右クリックして、「オープン先を指定」>「マクロ・エディター」を選択することにより、開くことができます。拡張マクロ・エディターは従来どおり、マクロ・エディターの「概要」ページから開くことができます。また、「プロンプトおよび抽出」もマクロ・エディターから編集できます。

注: Macro Editor および Advanced Macro Editor のサポートは、HATS V9.6 では非推奨になりました。現在までサポートされていましたが、 IBM は、これ以降の製品リリースでこの機能を削除することができます。このサポートはVisual Macro Editor により置き換えられます。

新規マクロの作成ホスト端末の使用に加え、VME を使用すると、「新規マクロ」ウィザードにより、新規マクロを作成できます。

HATS パースペクティブで、以下の手順のいずれかを使用して、「新規マクロ」ウィザードを開始します。

v メニュー・バーから、「ファイル」 > 「新規」 > 「その他」 > 「HATS」 >「HATS マクロ」をクリックする。

v メニュー・バーから、「HATS」 > 「新規」 > 「マクロ」をクリックする。

v ツールバーから、「HATS マクロの作成」アイコンをクリックする。

v HATS プロジェクト表示から、プロジェクトを右クリックして、「新規HATS」 > 「マクロ」を選択する。

ウィザードには以下の操作を実行できるパネルが 1 つ含まれています。

v マクロの名前と説明を入力する。

v マクロのプロジェクトとマクロが使用する接続を選択する。

v マクロを開いたときに端末を接続するかどうかを選択する。

© Copyright IBM Corp. 2003, 2015 119

Page 138: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

エディターの使用VME は HATS マクロのデフォルト・エディターです。マクロ・オブジェクト(.hma ファイル) をダブルクリックすると、VME が開きます。

VME は次のパーツから構成されています。

1. 設計タブ

2. パレット・ビュー

3. 統合端末

4. ソース・タブ

図 49. Visual Macro Editor のパーツ

120 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 139: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

設計タブ設計タブ (すなわち、キャンバス) が、VME の主な作業領域です。マクロ・オブジェクト (マクロ画面、アクション、次画面接続) がグラフィカルに表示され、各オブジェクトの変更およびグローバル・マクロ・プロパティーの変更を行うことができます。

オブジェクトのポップアップ・メニュー (オブジェクトを右クリック) を使用すれば、オブジェクトごとに、さまざまなアクションが使用可能になります。ポップアップ・メニューまたはメニュー・バーの「編集」メニューから「元に戻す」を選択すると、すべてのアクションを元に戻すことができます。ポップアップ・メニューまたは「編集」メニューから「やり直し (Redo)」を選択すると、やり直すことができます。マクロは、保存してしまうと、変更を元に戻すことはできません。ソース・タブで変更を行うと、設計タブで行ったそれ以前のアクションは元に戻すことはできません。設計タブで行われた変更はソース・タブに反映され、その逆も同様です。

「マクロ」メニュー以下のアクションは、マクロのポップアップ・メニュー (白いマクロ・キャンバスを右クリック) で使用できます。

保存 マクロをファイルに保存します。「元に戻す」アクションと「やり直し」アクションが無効になります。

SignOn

MainMenu

DisplayProgramMessages

CelDialCommunications

CustomerInquiry

BadCustomerNumberCustomerDetail

Prompt for userName

Prompt for password

Send [enter]

Input 'go celdial[enter]'

Input '1[enter]'

Prompt for customerNumber

Send [enter]

Extract number

Extract name

Extract address

Extract city

Extract country

3 more actions...

Extract errorMessage

Send [enter]

!の#$%&

マクロ#$

マクロ・キャンバス

#$アクション

図 50. Visual Macro Editor の設計タブ

第 10 章 Visual Macro Editor 121

Page 140: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

イメージとしてコピーマクロのイメージ全体をシステムのクリップボードにコピーします。この機能はマクロのイメージを電子メールまたは設計文書に貼り付けるのに役立ちます。

貼り付け画面コピーまたは切り取り後のみに使用可能になります。

レイアウトのリセットマクロ画面を、次の画面間の相互接続回線の数を最小化するよう試行することにより、リセットします。エントリー画面は上部に配置されます。終了画面は下部に配置されます。デフォルトでは、レイアウトは画面が統合端末を使用して追加されたときリセットされます。HATS の以前のバージョンで作成されたマクロのレイアウトは、マクロが最初に VME で開かれたときに自動的に設定されます (同じアルゴリズムが使用されます)。

プロパティーマクロ・レベルの設定の編集を許可します。

「画面」メニュー以下のアクションは、画面のポップアップ・メニュー (マクロ画面オブジェクトを右クリック) で実行できます。

切り取りマクロ画面を削除およびコピーします。詳しくは、 129 ページの『画面の切り取り、削除、コピー、貼り付け』を参照してください。

コピーマクロ画面をコピーし、同じマクロまたは別のマクロに貼り付けを許可します。詳しくは、 129 ページの『画面の切り取り、削除、コピー、貼り付け』を参照してください。

貼り付け画面コピーまたは切り取り後のみに使用可能になります。

削除 マクロからマクロ画面を削除します。詳しくは、 129 ページの『画面の切り取り、削除、コピー、貼り付け』を参照してください。

名前変更マクロ画面の名前変更を許可します。複数の画面が選択されている場合は使用不可になります。

プロパティーマクロの画面レベルの設定の編集を許可します。複数の画面が選択されている場合は使用不可になります。

「アクション」メニュー以下のアクションは、画面アクションのポップアップ・メニュー (画面アクションを右クリック) で実行できます。

編集 画面アクションの編集を許可します。アクションが 1 つ選択されているときのみ使用可能になります。詳しくは、 132 ページの『アクションの追加と編集』を参照してください。

除去 マクロ画面からアクションを除去します。

122 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 141: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

上に移動画面アクションのリスト内のアクションを上に移動します。最初のアクションに対しては使用不可になります。

下に移動画面アクションのリスト内のアクションを下に移動します。最後のアクションに対しては使用不可になります。

「次の画面接続」メニュー以下のアクションは、次の画面接続のポップアップ・メニュー (次の画面接続オブジェクトを右クリック) で実行できます。

削除 マクロから次の画面接続を削除します。

再配列次の画面接続に対して、同じ画面から発生する他の次の画面接続が存在する場合に、使用可能になります。複数の次の画面が選択されている場合は使用不可になります。詳しくは、 147 ページの『次の画面接続の再配列と変更』を参照してください。

パレット・ビューパレット・ビューを使用して、以下の操作ができます。

v 「選択」ツールを使用した、オブジェクトの選択。

v 「囲み枠」ツールを使用した、キャンバス上の複数のオブジェクトの選択。

v 「画面」ツールを使用した、マクロ画面の追加。詳しくは、 128 ページの『パレットから画面を追加する』を参照してください。

v 「次の画面接続」ツールを使用した、次の画面接続の追加。詳しくは、 146 ページの『次の画面接続をパレットから追加する』を参照してください。

v 「アクション」ドロワーにリストされているアクションの 1 つを追加。詳しくは、 133 ページの『パレットからアクションを画面に追加する』を参照してください。

図 51. Visual Macro Editor のパレット・ビュー

第 10 章 Visual Macro Editor 123

Page 142: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

統合端末統合端末のツールバーにより以下のアクションが許可されます。

接続 ホストに接続します。

切断 ホストから切断します。

画面の追加128 ページの『統合端末から画面を追加する』を参照してください。

マクロの実行126 ページの『マクロの実行』を参照してください。

マクロの停止126 ページの『マクロの実行』を参照してください。

ホスト・キーパッドホスト・キーパッド・プルダウンを使用して、ホストと対話します。

注: 統合端末でホスト・アプリケーションをナビゲートする場合、 F12 キーは IBM® Rational Software Delivery Platform (Rational SDP) により中断され、フォーカスは VME の設計ペインに移動されます。F12 キーがホスト・アプリケーションに送信されることはありません。この問題を回避する場合、および他のホスト・キーが必要な場合は、ツールバーからホスト・キーパッド・プルダウンを使用します。

図 52. Visual Macro Editor の統合端末

124 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 143: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ソース・タブソース・タブでマクロの XML ソースの変更が使用可能になります。これは、カスタム画面認識基準の追加などの拡張編集で必要です。

VME では、キャンバス上でのマクロ画面の位置や関連する画面キャプチャーなどの情報を保持するために、Host On-Demand <comment> タグを使用します。

<comment> タグは、開発者がコメントを画面に追加するために使用することもできます。コメントを追加するには他にも、「<!– ここにコメントを記述 –>」という形式を使用する方法があります。以前からある開発者のコメントが失われないように、VME は、<comment> タグ内で検出した、VME が認識しない (例えばvisualinfo のようなキーワードを含まない) テキストを、<!- -> 形式を使用して画面のコメントに変換します。

マクロに構文エラーがある場合は、マクロを保存するときにエラー・マーカーが表示されます。マーカーはソース内および問題ビュー内に表示されます。ソース・エラーの場合はマクロ・キャンバスは表示されず、代わりにエラー・メッセージが表示されます。この場合は、ソース・タブに切り替え、エラーを訂正します。

デフォルトでは、コンテンツ・アシスタンスは、プロジェクト内のすべてのマクロで使用可能になっています。「ソース」タブでマクロを編集中にコンテンツ・アシスタンスを起動するには、Crtl+Space を押してください。プロジェクト内のどのマクロでコンテンツ・アシスタンスを提供するかを構成できます。手順については、『マクロ・コンテンツ・アシスタンス』を参照してください。

マクロの操作

マクロのプロパティーの編集すべてのマクロ・レベルの設定は、マクロ・プロパティーのパネルに含まれています。マクロ・レベルのプロパティーを編集するには、マクロ・キャンバスをダブルクリックするか右クリックして、「プロパティー」を選択します。

「プロパティー」パネルには、「一般」タブと「変数およびタイプ」タブが含まれます。

「一般」タブ「一般」タブは、以下のマクロ・プロパティーの表示と変更を許可します。

名前 マクロ名 (表示のみ)。

説明 マクロの説明。オプション。

作成者マクロの作成者。オプション。

作成日マクロが作成された日時。オプション。

アクション間の一時停止マクロ再生エンジンがマクロ画面のアクションの実行後次の実行までの間待機する時間 (ミリ秒単位)。

第 10 章 Visual Macro Editor 125

Page 144: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

画面間のタイムアウトマクロ再生エンジンが次の画面が表示されるのを待つ時間 (ミリ秒単位)。

マクロの開始時にすべてのプロンプトを処理マクロの開始時に、マクロのすべてのプロンプトに関して、ユーザーにプロンプトを出すかどうかを指定します。

接続 プロジェクト内で使用する接続名。単一の接続を持つ HATS プロジェクトの場合は、接続は通常 main という名前です。この値が、IO の作成時に生成される IO にハードコーディングされ、使用する接続を選択するのに実行時に使用されるために、この設定は、マクロが統合オブジェクト (IO) で使用される場合、重要です。

マクロを開くときに端末を自動的に接続マクロを開いたときに統合端末を自動的に接続するかどうかを指定します。

「変数およびタイプ」タブ「変数およびタイプ」タブでは、マクロ変数とユーザー定義 (インポート済み) タイプを定義できます。

「変数および演算式のサポート可能」チェック・ボックスは、デフォルトではクリアされています。一度のみ選択でき、その後、使用不可になります。このチェック・ボックスが選択されていると、マクロは拡張マクロ形式に変換されます。この操作は元に戻せないため、警告メッセージが発行されます。

「はい」をクリックして、警告メッセージをクリアすると、変数とユーザー定義のタイプのテーブルが使用可能になり、テーブルに対して項目の「追加」、「編集」、「除去」が可能になります。

VME では、変数名をドル記号 ($) の間に含める必要はありません。エディターにより、ドル記号 ($) は、マクロ・ソース内では変数名の前後に追加され、変数名を表示するときは除去されます。

詳しくは、 17 ページの『第 3 章 データ・タイプ、演算子、および式』および 97 ページの『第 9 章 変数とインポートした Java クラス』を参照してください。

マクロの実行統合端末の「マクロの実行」ボタンはマクロのテストを許可します。マクロが端末で再生されているときは、そのパスがキャンバス内に強調表示されます。マクロは、キャンバス上で選択されている現行の画面とは関係なく、常に最初から開始されます。

画面の操作

マクロ画面のプロパティーの編集マクロ画面のプロパティーを編集するには、マクロ・キャンバス内のオブジェクトをダブルクリックするか右クリックして、「プロパティー」を選択します。

画面プロパティーのパネルには、「一般」タブ、「画面認識」タブ、およびアクション・タブが含まれます。

126 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 145: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「一般」タブ「一般」タブは以下のプロパティーの変更を許可します。

名前 マクロ画面名

画面キャプチャー画面キャプチャーがマクロ画面に関連付けられている場合は、画面キャプチャー領域にプレビューが表示されます。画面キャプチャーがマクロ画面に関連付けられていない場合は、画面キャプチャー領域にメッセージが表示されます。

「参照」ボタンを使用すると、新規画面キャプチャーを選択でき、「クリア」ボタンを使用すると、画面キャプチャーに対する関連付けを除去できます。詳しくは、 128 ページの『マクロ画面を画面キャプチャーに関連付ける』を参照してください。

エントリー画面マクロが開始できる画面を指定します。

終了 マクロが終了できる画面を指定します。

一時画面任意の時点で表示される可能性がある予測不可能な画面を指定します。

認識限界の設定

マクロ・ランタイムがマクロ画面を認識する回数を指定します。マクロ・ランタイムは、指定された回数までマクロ画面を認識すると、このマクロ画面のアクションを処理しませんが、代わりに指定されたアクションを実行します。

デフォルトでは、「認識限界の設定」チェック・ボックスはクリアされていて、入力フィールドは使用不可です。このチェック・ボックスを選択すると、マクロ・エディターは「エラーになる前の画面」入力フィールドのデフォルト値を 100 に設定します。この値の設定は増減できます。詳しくは、55 ページの『認識限界』を参照してください。

一時停止時間の設定特定のマクロ画面のアクション間の時間を指定します。

「画面認識」タブ「画面認識」タブは、画面キャプチャーがマクロ画面と関連付けられている場合にのみ使用可能になります。マクロ機能の画面記述について詳しくは、 37 ページの『第 5 章 画面記述』を参照してください。

アクション・タブアクション・タブによって、画面が認識されたときに実行するようアクションを構成できます。

「上へ」ボタンと「下へ」ボタンを使用して、「追加」、「編集」、「除去」、およびアクションの順序の変更ができます。詳しくは、 132 ページの『アクションの追加と編集』を参照してください。

第 10 章 Visual Macro Editor 127

|

|

|

|

|

|

|

|

|

|

|

|

Page 146: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ画面の追加

画面キャプチャーをドラッグして画面を追加する任意のプロジェクトから画面キャプチャーをドラッグすることにより、新規画面をキャンバスに追加できます。

マクロを含むプロジェクトとは異なるプロジェクトからドラッグすると、画面キャプチャー・ファイルをターゲット・プロジェクトにインポートするかどうかを選択するようプロンプトが表示されます。「はい」をクリックすると、ファイルが (マクロ固有のフォルダーではなく) プロジェクトのメイン「画面キャプチャー」フォルダーにコピーされ、キャンバス上の新規マクロ画面に関連付けられます。「いいえ」をクリックすると、ファイルはインポートされず、画面キャプチャーはキャンバス上の新規マクロ画面に関連付けられません。

デフォルトの認識基準が定義されている場合は ( 129 ページの『デフォルト画面認識基準』を参照)、その基準が新しい画面認識基準に適用され、選択した画面キャプチャーに合わせて調整されます。

新規画面をダブルクリックすることによって完全に画面を構成でき、パレット上の「次の画面接続」ツールを使用してマクロ内の他の画面にそれをワイヤー接続できます。

統合端末から画面を追加する統合端末の「画面の追加」ボタンを使用すると、端末の現行画面をマクロに追加し、適切に構成することができます。

「画面の追加」ウィザードを使用して、以下の操作ができます。

v 画面の属性と画面の関連の定義。

v 画面認識基準の定義 ( 127 ページの『「画面認識」タブ』を参照)。

v アクションの追加 ( 132 ページの『アクションの追加と編集』を参照)。

パレットから画面を追加するパレットの「画面」ツールは、新規画面をマクロに追加することを許可します。

画面を追加するには、パレットの「画面」をクリックして、それからキャンバス上をクリックします。この操作により、『統合端末から画面を追加する』で説明されているように、「画面の追加」ウィザードが開始します。ウィザードにより、画面の構成を許可される前に、『マクロ画面を画面キャプチャーに関連付ける』で説明されているように、「画面キャプチャー」パネルを使用して画面キャプチャーを選択するよう強制されます。

マクロ画面を画面キャプチャーに関連付ける画面プロパティーのパネルの「一般」タブにある「参照」ボタン ( 126 ページの『マクロ画面のプロパティーの編集』を参照) は、プロジェクトから画面キャプチャーを選択してマクロ画面に関連付けるのに使用されます。「画面キャプチャー」パネルに、プロジェクトのすべての画面キャプチャー (画面キャプチャー・マクロのフォルダーの中または外にあります) のプレビューが表示されます。

128 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 147: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「画面キャプチャー」パネルは、ユーザーが画面をパレットから追加したときにも表示されます。

画面のプレビューマウスをキャンバス上の画面の上に置くと、画面に関連付けられた画面キャプチャーのプレビューが表示されます (存在する場合)。

デフォルト画面認識基準パレットまたは統合端末から「画面の追加」ウィザードを使用して画面をマクロに追加する場合は、その画面認識基準を、パレットまたは統合端末から、あるいは画面キャプチャーのドラッグからマクロに追加される、すべての画面のデフォルト認識基準として保存するオプションがあります。このオプションを指定するには、「画面認識基準」パネルの「次回のために基準を記憶」チェック・ボックスを選択します。

この機能は多くの画面で同じ認識基準を共用するときに役立ちます。例えば、すべての画面の左上隅に画面を一意的に識別する 5 文字の名前またはコードがある場合、デフォルトの認識基準を構成して、マクロに記録または追加された新規画面のすべてで、画面のその領域のストリング認識を使用するようにできます。この方法では画面ごとに認識基準を構成する必要がなくなるため、時間を節約できます。

保存されるデフォルトの認識基準は、プロジェクト全体で 1 つのみです。この基準がプロジェクト内のすべてのマクロに適用されます。

デフォルトの認識基準は、「次回のために基準を記憶」チェック・ボックスを選択した状態で定義された最新の画面認識基準によりオーバーライドされます。

デフォルトの認識基準が定義されていると、「画面の追加」ウィザードが開始されるたびに適用され、さらに新規画面に関連付けられた画面キャプチャーに合わせて調整されます。

画面の切り取り、削除、コピー、貼り付け1 つ以上の画面を切り取りまたはコピーして、同じマクロまたは他のマクロに貼り付けることができます。この操作は元に戻すことができます。

1 つ以上の画面を選択し、「切り取り」または「削除」のいずれかを実行すると、選択した画面と送信および受信の次の画面接続のすべてがマクロのキャンバスから除去されます。この操作により、除去されなかった画面を開始点とした、次の画面接続の再配列が強制される場合があります。以下の例で、CelDialCommunications画面には DisplayProgramMessages 画面からの接続と MainMenu 画面への接続があります。また、SignOn 画面からの次の画面接続の順序では 2 番目でもあります。

第 10 章 Visual Macro Editor 129

Page 148: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

CelDialCommunications 画面を切り取りまたは削除した後、その画面に対して出入りするすべての次の画面接続が除去され、SignOn 画面からの次の画面接続の順序で、MainMenu 画面が (3 番目ではなく) 2 番目になります。

「コピー」または「切り取り」の後、「貼り付け」が実行されると、操作中は、内部的な次の画面接続 (他の選択した画面への次の画面接続) が保持されます。以下の例で、SignOn、DisplayProgramMessages、および MainMenu 画面はコピーするために選択されています。

図 53. 画面の削除の例 - 切り取りまたは削除前

図 54. 画面の削除の例 - 切り取りまたは削除後

130 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 149: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

コピーした画面を同じマクロのキャンバスに貼り付けて戻すと、選択した 3 つの画面の間のすべての次の画面接続もコピーされることに注意してください。MainMenu 画面から CelDialCommunications 画面への次の画面接続のみがコピーされません。

図 55. 画面コピーの例

第 10 章 Visual Macro Editor 131

Page 150: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

拡張マクロ形式のマクロから、または拡張マクロ形式のマクロへ 1 つ以上の画面を貼り付ける場合は、多少の検討を必要とします。

v 画面を拡張マクロ形式でないマクロから拡張形式のマクロに貼り付ける場合は、コピーされる画面は拡張形式に変換されます。

v 画面を拡張マクロ形式のマクロから拡張形式でないマクロに貼り付ける場合は、警告メッセージが表示され、ターゲット・マクロを変換するかどうか選択できます。

v 貼り付けられる画面で使用されていた変数およびユーザー定義タイプはコピーされません。

アクションの操作

アクションの追加と編集

マクロ画面のプロパティーからアクションを追加および編集するアクションは、マクロ画面のプロパティーのアクション・タブからマクロ画面に追加できます ( 126 ページの『マクロ画面のプロパティーの編集』を参照)。「アクシ

図 56. 画面の貼り付けの例

132 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 151: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ョンの追加」ウィザードに、マクロ画面への追加および編集が可能なアクションのリストが表示されます。

パレットからアクションを画面に追加するパレットの「アクション」ツールは、新規アクションをマクロ画面に追加するのを許可します。

アクションを追加するには、パレット内のアクションをクリックして、そのアクションを追加するマクロ画面をクリックします。

アクションのプロパティーを編集できるように、選択したアクション・タイプに適用できるパネルが表示されます。

アクションの非表示および表示画面アクションは、画面図形の右上角にあるトグルをクリックすることにより、非表示にしたり、表示することができます。

図 57. Visual Macro Editor のアクション

CustomerDetail

図 58. 画面アクションを非表示にする

第 10 章 Visual Macro Editor 133

Page 152: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

画面が表示が許されているアクション数よりも多いアクションを持つ場合 ( 147 ページの『VME の設定の操作』を参照) は、「nnn アクションが続く」と読み取れる行が表示されます。

アクション次のセクションで、VME を使用して追加および編集が可能なすべてのアクションについて説明をします。マクロ・アクションおよび各アクションについて詳しくは、59 ページの『第 7 章 マクロ・アクション』を参照してください。

カスタム・アクションカスタム・アクションは、Java プログラムをマクロ・アクションとして呼び出し、必要に応じてプログラムに引数を受け渡すことを許可します。

指定できるフィールドは以下のとおりです。

ID 実行する Java プログラムを識別する任意のストリング。

引数 オプション。Java プログラムに受け渡す引数。

詳しくは、 199 ページの『<custom> エレメント』を参照してください。

Evaluate (If) アクションEvaluate (If) アクションは、if ステートメントまたは if-else ステートメントの機能を提供します。

条件 「条件」フィールドに、マクロ・ランタイムに評価させる条件式を指定します。条件式には論理演算子と条件演算子を指定でき、また演算式、即時値、変数、および Java メソッドの呼び出しを含む項を指定できます。詳しくは、 22 ページの『条件演算子と論理演算子および式』を参照してください。

If Trueこのタブをクリックし、「追加」をクリックして、「条件」が true の場合に実行するアクションを追加します。

図 59. 画面アクションの表示

134 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 153: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

If Falseこのタブをクリックし、「追加」をクリックして、「条件」が false の場合に実行するアクションを追加します。

アクションを「追加」「編集」、「除去」「上へ」移動、または「下へ」移動し、それぞれの場合に対して実行できます。

注:「If True」および「If False」条件に対して多くのアクションが定義されている場合でも、「条件の評価 (Evaluate condition)」のみがマクロ・キャンバス上の画面オブジェクトのアクションとしてリストされます。

詳しくは、 61 ページの『条件アクション (<if> エレメントおよび <else> エレメント)』を参照してください。

抽出アクション抽出アクションは、ホスト端末からデータを抽出し、オプションでそのデータを変数に格納します。このアクションは非常に有用で、アプリケーション・データの読み取り用にマクロ・オブジェクトが提供する基本的な方法です (ツールキットのプログラミング API の使用に代わるものです)。

名前 抽出名を指定します。

同じ名前の抽出が既に存在する場合は、警告メッセージが表示され、続行すると既存の抽出の設定がオーバーライドされることが通知されます。

「領域」セクションを使用して抽出するホスト画面の領域を指定します。

開始行、開始列、終了行、終了列抽出するホスト画面の領域の行座標と列座標を指定します。マウスを使用してホスト画面の領域をマークすると、これらのフィールドに値が塗りつぶされます。

「抽出形式」セクションを使用して、抽出データの形式を指定します。テキスト平面から抽出されたデータは、選択された抽出形式に基づいて単一ストリングまたはストリングのリストに格納されて返されます。他 (非テキスト) の平面から抽出されたデータは、選択された抽出形式に基づいて文字配列の形式で返されます。

この領域を 1 つのストリングとして抽出テキスト平面から抽出する場合、抽出したテキストを文字が横に並んだ単一のストリングとして保存することを指定します。このオプションは、統合オブジェクト、マクロ・ハンドラー、グローバル変数、およびマクロ変数でサポートされます。

他 (非テキスト) の平面から抽出する場合、抽出したデータを 2 次元文字配列の形式で単一オブジェクトとしてグローバル変数に保存することを指定します。このオプションは、グローバル変数でのみサポートされます。

この領域をストリングのリストとして抽出テキスト平面から抽出する場合、抽出したテキストをストリングの縦方向のリストとして保存することを指定します。このオプションは、マクロ・ハン

第 10 章 Visual Macro Editor 135

Page 154: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ドラー、グローバル変数、およびマクロ変数でサポートされます。統合オブジェクトの場合は、ストリングのリストは 1 つの連続したストリングとして扱われます。

他 (非テキスト) の平面から抽出する場合、2 次元文字配列として抽出したデータを個別の 1 次元配列に分解 (各配列が抽出された単一行を表す) し、各行をグローバル変数内の添字に格納することを指定します。このオプションは、グローバル変数でのみサポートされます。

この領域をテーブルとして抽出テキスト平面から抽出する場合、抽出したテキストを行および列を持つ、横方向および縦方向のストリングのテーブルとして保存することを指定します。このオプションは、統合オブジェクト、マクロ・ハンドラー、およびマクロ変数でサポートされます。グローバル変数の場合は、テーブルとして抽出されたストリングは 1 つの連続したストリングになります。

注: 他 (非テキスト) の平面から抽出する場合、この非テキスト・データはユーザーに対して直接表示することを目的としていないため、このオプションは使用不可になります。代わりに、このオプションは、特定のホスト画面の表示方法または処理方法を識別するのに特別なデータが必要な開発者向けです。

「定義」をクリックして、テーブルを定義します。

テーブル抽出の構成このページを使用してテーブルの列の形式を設定します。

v 列名

このフィールドを使用して、選択した列の見出しを変更します。

v 列の展開

列の展開は、文字を列間で移動させます。ある列を強調表示した状態にします。「左方」ボタンにより、その列の各行の最後の文字が強調表示した列の左側に移動し、強調表示した列の各行の最初の文字になります。「右方」ボタンにより、その列の各行の最初の文字が強調表示した列の右側に移動し、強調表示した列の各行の最後の文字になります。

v 列の削減

列の削減は、文字を列間で移動させます。ある列を強調表示した状態にします。「左方」ボタンにより、強調表示した列の各行の最初の文字が移動して、強調表示した列の左隣の列の各行の最後の文字になります。「右方」ボタンにより、強調表示した列の各行の最後の文字が移動して、強調表示した列の右隣の列の各行の最初の文字になります。

v マージ

このボタンは、2 つの強調表示した列を単一の列にマージするために使用します。強調表示した列の文字列は 1 つの列内で結合されます。

v 分割

136 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 155: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

このボタンは、強調表示した 1 つの列を 2 つの別々の列に分割するために使用します。強調表示した列の文字列は 2 つの新規の列間で等しく分割されます。文字数が偶数でない場合は、左側の列が右側の列より 1 文字多く含みます。

注:

「分割」をクリックすると、HATS によって、選択した列が分割されます。列に 2 バイト文字 (DBCS) が含まれている場合は、その文字は 2 つの列にまたがって分割されてしまう可能性があります。この場合は、その文字はどちらの列にも表示されません。抽出アクションの編集中にこのことが発生していると気付いた場合は、「右方」および「左方」ボタンを使用して、列を調整してください。その分割された文字は、単一の列に含まれると、再表示されるようになります。

「ハンドラー」セクションを使用して、テキスト平面から抽出されたテキストの処理方法を指定します。

注: 他 (非テキスト) の平面から抽出する場合、この非テキスト・データはユーザーに対して直接表示することを目的としていないため、このオプションは使用不可になります。代わりに、このオプションは、特定のホスト画面の表示方法または処理方法を識別するのに特別なデータが必要な開発者向けです。

ハンドラーを表示HATS Web アプリケーションの場合、.jsp ファイルを選択して、抽出した情報をユーザーに表示できます。デフォルトのマクロ・ハンドラーがHATS とともに出荷され、名前は default.jsp です。このハンドラーは、HATS プロジェクト・ビューで、プロジェクト名を展開し、「Web コンテンツ」>「マクロ・イベント・ハンドラー」を展開することにより、見つけることができます。独自のハンドラーを作成する場合は、必ず HATS ランタイムに制御を戻してください。

注: 統合オブジェクトでは、このオプションを使用しません。その代わり、出力ページで統合オブジェクトから抽出データを取得し、表示します。

HATS リッチ・クライアント プロジェクトの場合は、ユーザーに必要な情報の入力を求めるプロンプト (その情報をユーザーが送信するボタン付き)を出力するために、カスタム・マクロ・ハンドラーを指定するか、リッチ・クライアント プロジェクト内に定義されているカスタム・マクロハンドラーのリストを参照して選択できます。デフォルトのマクロ・ハンドラーはHATS とともに出荷され、DefaultMacroHandler という名前です。このファイルは、HATS プロジェクト・ビューで、プロジェクト名を展開し、「リッチ・クライアント・コンテンツ」 > 「マクロ・イベント・ハンドラー」を展開することにより、見つけることができます。独自のハンドラーを作成する場合は、カスタム・マクロ・ハンドラーの render() メソッド内でcreateButtonArea() メソッドと createButtons() メソッドを呼び出すことにより、必ず HATS ランタイムに制御を戻してください。これらのメソッドは、RcpMacroHandler.render() メソッドのデフォルトの実装環境では呼び出されます。RcpMacroHandler について詳しくは、HATS KnowledgeCenter (http://www.ibm.com/support/knowledgecenter/

第 10 章 Visual Macro Editor 137

Page 156: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

SSXKAY_9.6.0?topic=/com.ibm.hats.doc/doc/rcpjavadoc/index.html) の『HATS RCP API Reference』セクションを参照してください。

グローバル変数として保存グローバル変数の名前は「名前」フィールドに入力できます。または、ドロップダウン・メニューを使用して既存の変数を選択することもできます。「名前」フィールドで既存のグローバル変数を選択した場合は、「拡張」をクリックして、次のラジオ・ボタンのいずれかを選択することにより、既存の変数の取り扱い方法を指定します。

v この新しい値で既存の値を上書き。

v 特定の索引から開始して既存の値をこの新しい値で上書き。

v この新しい値を既存の値の末尾に追加。 (Append this new value tothe end of the existing value.)

v 特定の索引でこの新しい値を既存の値に挿入。

「共用」チェック・ボックスを選択することにより、この変数を共用するかどうかを指定することもできます。

抽出データをグローバル変数として保存することを選択すると、「抽出する平面」設定の「テキスト」オプションが自動的に選択されます。

注: 値を抽出して、抽出によって設定されているグローバル変数に割り当て、そのグローバル変数の値をプロンプトに使用するには、promptall属性を false に設定する必要があります。 promptall 属性が true に設定されていると、プロンプトの値が取り出されるまで抽出アクションは実行されません。このため、プロンプトによって使用されるグローバル変数には値が入っていません。 HATS で記録されるマクロは、デフォルトで promptall=true になっています。promptall 属性について詳しくは、 77 ページの『promptall 属性』を参照してください。

統合オブジェクトでは、グローバル変数に直接抽出しません。その代わり、統合オブジェクトの出力ページで、統合オブジェクトを実行した後、そのオブジェクトからデータを取得し、グローバル変数を設定します。統合オブジェクトからアクセスできるのは、共用グローバル変数のみです。

マクロ変数として保存抽出データを保存するマクロ変数を指定する場合、このボックスを選択します。このオプションはマクロ変数がマクロに使用可能になっている場合のみ、表示されます。

抽出データをマクロ変数として保存することを選択すると、「抽出する平面」設定の「テキスト」オプションが自動的に選択されます。マクロ変数に保存できるのは、テキスト平面からのデータのみです。

変数 抽出データを保存する変数を選択します。ドロップダウン・メニューには、マクロで定義されているすべての変数が取り込まれています。

「拡張」セクションを使用して以下のオプションを設定します。

1 つの連続領域として抽出長方形のテキスト・ブロックを取り込む場合は、このボックスをクリアしま

138 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 157: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

す。詳しくは、 63 ページの『ホスト端末上の長方形領域のキャプチャー』を参照してください。行から行に折り返すテキストの連続シーケンスを取り込む場合は、このボックスを選択します。詳しくは、 64 ページの『ホスト端末からのテキスト・シーケンスのキャプチャー』を参照してください。

アンラップ指定した抽出領域内で始まる任意のフィールドの内容全体を取り込む場合は、このボックスを選択します。詳しくは、 65 ページの『unwrap 属性』を参照してください。

抽出する平面データを抽出する平面を選択します。オプションは、以下にリストされています。デフォルトは、テキストです。

v テキスト

v 色

v フィールド

v 拡張フィールド

v DBCS

v グリッド

いずれの平面から抽出したデータも、グローバル変数に保存できます。1 回の「抽出」アクションにつき抽出できるのは、1 つの平面からのデータのみです。マクロ変数に保存できるか、統合オブジェクトで使用できるのは、テキスト平面からのデータのみです。

注:

1. Host Access Class Library (HACL) 表示スペース・モデル内のさまざまなデータ平面の形式および内容について詳しくは、『ホスト・アクセス・クラス・ライブラリー・プレーン -- 形式および内容』(http://publib.boulder.ibm.com/infocenter/hodhelp/v11r0/index.jsp?topic=/com.ibm.hod.doc/doc/hacl/DWYL0M88.HTML) を参照してください。

2. 統合オブジェクト内の非テキスト平面データの使用例については、「HATS Web アプリケーション・プログラマーズ・ガイド」の『非テキスト平面からのデータの抽出』セクションを参照してください。

詳しくは、 63 ページの『抽出アクション (<extract> エレメント)』を参照してください。双方向言語サポートを使用するときの考慮事項については、「Host AccessTransformation Services ユーザーと管理者のガイド」の『マクロ・プロンプトおよび抽出の双方向オプション』を参照してください。

「すべて抽出」アクション「すべて抽出」アクションは、画面上のすべてのフィールドに対して、一度に複数の抽出アクションを追加することを使用可能にします。

簡単に、単一のフィールド、空のすべての保護フィールド、またはすべての入力フィールドを除外し、抽出名を設定できます。

第 10 章 Visual Macro Editor 139

Page 158: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

同じ名前の抽出が既に存在する場合は、警告メッセージが表示され、続行すると既存の抽出の設定がオーバーライドされることが通知されます。

「グローバル変数として保存」オプションを選択すると、「抽出名とグローバル変数名を同期化する」かどうかを選択することもできます。選択した場合は、名前の同期が維持されます。選択しない場合は、グローバル変数を編集して、抽出名とは異なる名前にすることができます。

このアクションに関する VME のその他の設定については、 135 ページの『抽出アクション』を参照してください。一般的な情報について詳しくは、 63 ページの『抽出アクション (<extract> エレメント)』を参照してください。

「入力」アクション「入力」アクションは、実際のユーザーからのキーボード入力をシミュレートします。このアクションは、キー・ストロークのシーケンスをホスト端末に送ります。このシーケンスには、文字 (a、b、c、#、& など) を表示するキーのみでなく、アクション・キー ([enter] など) も含めることができます。

現行カーソル位置に挿入このボックスを選択すると、マクロ・ランタイムは、ホスト端末の現行カーソル位置に入力を挿入します。カーソルの「行」と「列 (Column)」フィールドを自身で設定する場合は、このボックスをクリアします。入力を挿入するカーソル行および列を入力します。画面キャプチャーが使用可能な場合は、その上をクリックすることにより、カーソルの行と列を設定できます。「行」フィールドと「列」フィールドに変数名を $var$ の形式で入力することもできます。

ストリングこのフィールドに、ホスト端末に送信するストリングを入力します。AIDキー をこのフィールドに入力することができます。例えば、キーボード上の F12 キーを押すと [pf12] が挿入されます。その他の AID キーは、フィールドの隣のドロップダウン・メニューを使用して挿入できます。TAB キーを押すと [tab] が挿入されるため、マウスを使用してフィールドから出る必要があります。

ホスト・アクション・キーを変換このボックスを選択すると (デフォルト値)、マクロ・ランタイムは、アクション・キーのストリング ([enter] など) を、リテラル・ストリングではなく、アクション・キーとして解釈します。

入力の末尾へカーソルを移動このボックスを選択すると、マクロ・ランタイムはテキスト・カーソルを入力の末尾に移動します。

暗号化ストリングこのボックスを選択すると、マクロ・エディターは、「ストリング」フィールドに含まれるキーのシーケンスを暗号化します。

詳しくは、 66 ページの『入力アクション (<input> エレメント)』を参照してください。

140 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 159: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「一時停止」アクション一時停止アクションは、指定されたミリ秒数の間だけ待機した後、終了します。

具体的には、マクロ・ランタイムは <pause> エレメントを検出し、期間の値を読み取って、指定されたミリ秒数だけ待機します。その後、マクロ・ランタイムは次の項目の実行に進みます。

このアクションは次の場合に使用します。

v 何らかの状況で待機を挿入したいとき。

v ホストがホスト端末を更新するまで待機するとき。詳しくは、 90 ページの『画面の完了』を参照してください。

v デバッグの目的で遅延を追加するとき。

期間 (ミリ秒)

待機するミリ秒数を指定します。デフォルトは 10000 ミリ秒 (10 秒) です。

詳しくは、 211 ページの『<pause> エレメント』を参照してください。

「実行」アクション「実行」アクションは、実行する Java メソッドを指定することを許可します。このアクションは、拡張マクロ形式のマクロの場合にのみ追加できます。

このアクションは、ユーザー定義タイプとしてインポートした Java クラスに属するメソッドを呼び出します ( 126 ページの『「変数およびタイプ」タブ』を参照)。

Java メソッド実行するメソッドを指定します。変数と同じように、メソッド呼び出しをドル記号 ($) で囲む必要があります ( 105 ページの『メソッド呼び出しの構文』を参照)。マクロ・ランタイムがメソッドを呼び出します。 105 ページの『マクロ・ランタイムが呼び出し先メソッドを検索する方法』も参照してください。

詳しくは、 72 ページの『実行アクション (<perform> エレメント)』を参照してください。

「マクロを実行」アクション「マクロを実行」アクションは別のマクロを実行します。

マクロこのリスト・ボックスから実行するマクロを選択します。リスト・ボックスには、プロジェクトのすべてのマクロが取り込まれています。

開始画面このリスト・ボックスから、マクロ・ランタイムに最初に処理させるターゲット・マクロ内のマクロ画面を選択します。通常の開始画面でターゲット・マクロを開始する場合は、「(デフォルト)」を選択します。

第 10 章 Visual Macro Editor 141

Page 160: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ変数の転送このボックスを選択すると、マクロ・ランタイムは、呼び出し側マクロに属するすべての変数 (変数の内容を含む) をターゲット・マクロに転送します。

詳しくは、 74 ページの『PlayMacro アクション (<playmacro> エレメント)』を参照してください。

「プロンプト」アクションプロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 または5250 アプリケーションに送るか、変数に格納するための強力な機能を備えています。

名前 プロンプト名を指定します。この名前はユーザーに対するプロンプト内に表示されます。そのため、この名前を使用して、プロンプト・フィールドに関係する説明を提供できます。

同じ名前のプロンプトが既に存在する場合は、警告メッセージが表示され、続行すると既存のプロンプトの設定がオーバーライドされることが通知されます。

デフォルト値プロンプト・フィールド用に使用するデフォルト値を指定します。

パスワード非表示ユーザーにより入力されるプロンプトの入力を暗号化する場合、このボックスを選択します。

注: プロンプト用に指定したデフォルト値はマクロ・ファイルに暗号化されないで保管されます。デフォルト値は、マクロ・エディターを使用してプロンプトを編集しているときは、暗号化されない状態で表示されます。したがって、プロンプトを使用してパスワードを指定する方法を実行するのは適切ですが、セキュリティー上の理由から、パスワードのデフォルト値は指定しないようにします。

マクロ変数に値を保存プロンプト入力を保存するマクロ変数を指定する場合、このボックスを選択します。このオプションはマクロ変数がマクロに使用可能になっている場合のみ、表示されます。「マクロ変数に値を保存」が選択されている場合は、「このフィールドに値を挿入しない」オプションのみが使用可能になります。

変数 プロンプト入力を保存する変数を選択します。ドロップダウン・メニューには、マクロで定義されているすべての変数が取り込まれています。

このフィールドに値を挿入しないこのボックスを選択すると、マクロ・ランタイムは、入力フィールドにプロンプト入力を表示しません。このフィールドは、「マクロ変数に値を保存」ボックスが選択されている場合にのみ、使用可能になります。

142 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 161: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

値の挿入前にフィールドをクリアこのボックスを選択すると、マクロ・ランタイムは、入力開始前に、入力フィールドの内容をクリアします。

現行カーソル位置に挿入このボックスを選択すると、マクロ・ランタイムは、ホスト端末の現行カーソル位置にプロンプト入力を挿入します。カーソルの「行」と「列(Column)」フィールドを自身で設定する場合は、このボックスをクリアします。プロンプト入力を挿入するカーソル行および列を入力します。画面キャプチャーが使用可能な場合は、その上をクリックすることにより、カーソルの行と列を設定できます。「行」フィールドと「列」フィールドに変数名を $var$ の形式で入力することもできます。

ホスト・アクション・キーを変換このボックスを選択すると (デフォルト値)、マクロ・ランタイムは、アクション・キーのストリング ([enter] など) を、リテラル・ストリングではなく、アクション・キーとして解釈します。

入力の末尾へカーソルを移動このボックスを選択すると、マクロ・ランタイムはテキスト・カーソルを入力の末尾に移動します。

「ハンドラー」セクションにより、プロンプトを処理する方法の決定が可能になります。以下のいずれかのラジオ・ボタンを選択できます。

ハンドラーを表示HATS Web プロジェクトの場合は、ユーザーに必要な情報の入力を求めるプロンプト (その情報をユーザーが送信するボタン付き) を出力するために、.jsp ファイルを選択することができます。default.jsp という名前のデフォルトのマクロ・ハンドラーが HATS とともに出荷されます。このファイルは、Toolkit の HATS プロジェクト・ビューをクリックして、プロジェクト名を展開し、「Web コンテンツ」>「マクロ・イベント・ハンドラー」を展開することにより、見つけることができます。独自のハンドラーを作成する場合は、必ず HATS ランタイムに制御を戻してください。

注: 統合オブジェクトでは、選択した .jsp ハンドラーは無視されます。代わりに、統合オブジェクト用の入力ページが作成され、その入力ページに値の入力を求めるプロンプトが配置されます。入力ページを使用して入力された値は、統合オブジェクトが実行される前に、生成された出力ページにより統合オブジェクトにコピーされます。

HATS リッチ・クライアント プロジェクトの場合は、ユーザーに必要な情報の入力を求めるプロンプト (その情報をユーザーが送信するボタン付き)を出力するために、カスタム・マクロ・ハンドラーを指定するか、リッチ・クライアント プロジェクト内に定義されているカスタム・マクロハンドラーのリストを参照して選択できます。DefaultMacroHandler という名前のデフォルトのマクロ・ハンドラーが HATS とともに出荷されます。このファイルは、HATS プロジェクト・ビューで、プロジェクト名を展開し、「リッチ・クライアント・コンテンツ」>「マクロ・イベント・ハンドラー」を展開することにより、見つけることができます。独自のハンドラーを作成する場合は、カスタム・マクロ・ハンドラーの render() メソッド内でcreateButtonArea() メソッドと createButtons() メソッドを呼び出すことに

第 10 章 Visual Macro Editor 143

Page 162: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

より、必ず HATS ランタイムに制御を戻してください。これらのメソッドは、RcpMacroHandler.render() メソッドのデフォルトの実装環境では呼び出されます。RcpMacroHandler について詳しくは、HATS KnowledgeCenter (http://www.ibm.com/support/knowledgecenter/SSXKAY_9.6.0?topic=/com.ibm.hats.doc/doc/rcpjavadoc/index.html) の『HATS RCP API Reference』セクションを参照してください。

プロンプトをストリングに設定プロンプトから戻す値がわかっている場合は、そのストリングを「ストリング」フィールドに入力できます。

プロンプトをグローバル変数に設定プロンプトの値をグローバル変数により入力する場合は、そのグローバル変数の名前を「名前」フィールドに入力するか、「グローバル変数」フィールドの隣のドロップダウン・メニューを使用して既存の変数を選択します。「拡張」ボタンをクリックすると、変数が共用または索引付きであるかどうかを指定できます。索引付き変数の場合は、すべての索引を表示するのか、単一の索引を表示するのかを指定する必要があります。グローバル変数についての詳細は、「Host Access Transformation Services ユーザーと管理者のガイド」の章『グローバル変数との対話』を参照してください。

注:

プロンプトの値が抽出によって設定されたグローバル変数に基づいていて、 promptall 属性が true に設定されている場合、プロンプトの値が取り出されるまで抽出アクションは実行されません。このため、プロンプトによって使用されるグローバル変数には値が入っていません。グローバル変数を抽出およびプロンプトで使用する場合、promptall 属性をfalse に設定しなければなりません。 promptall 属性について詳しくは、 77 ページの『promptall 属性』を参照してください。

統合オブジェクトでは、グローバル変数に直接アクセスしません。代わりに、統合オブジェクトの入力ページと出力ページがグローバル変数の値を取得し、統合オブジェクトが実行される前に、その値を統合オブジェクトに設定します。統合オブジェクトでアクセスできるのは共用グローバル変数のみです。

プロンプトをユーザー・リストからのプロパティーに設定プロンプトでユーザー・リストにアクセスするには、ドロップダウン・リストから「ユーザー・プロファイル」を選択します。ユーザー・プロファイルは、「ユーザー・リスト・プロパティー」として、ユーザー ID または パスワードを使用するかどうかの決定に関するキーになります。ユーザー・リストについて詳しくは、「Host Access Transformation Services ユーザーと管理者のガイド」の『ユーザー・リスト』のセクションを参照してください。

注: ユーザー・リストのプロンプトは、接続マクロ内でのみ使用できます。

Web 高速ログオンを使用するHATS アプリケーションを Web 高速ログオンを使用するように構成してある場合は、ユーザー ID またはパスワードとしてプロンプト・タイプを

144 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 163: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「プロンプト・タイプ」ドロップダウン・リストで入力し、アプリケーション ID を「アプリケーション ID」フィールドに入力します。

注: 「プロンプト・タイプ」には正しい値が事前に入力されている必要があります。

詳しくは、 76 ページの『プロンプト・アクション (<prompt> エレメント)』を参照してください。双方向言語サポートを使用するときの考慮事項については、「Host Access Transformation Services ユーザーと管理者のガイド」の『マクロ・プロンプトおよび抽出の双方向オプション』を参照してください。

「すべてにプロンプト」アクション「すべてにプロンプト」アクションは、画面上のすべてのフィールドに対して、一度に複数のプロンプト・アクションを追加することを使用可能にします。

簡単に、フィールドを除外することやプロンプト名を設定することが可能です。

同じ名前のプロンプトが既に存在する場合は、警告メッセージが表示され、続行すると既存のプロンプトの設定がオーバーライドされることが通知されます。

「プロンプトをグローバル変数に設定」オプションを選択すると、「プロンプト名とグローバル変数名を同期化する」かどうかを選択することもできます。選択した場合は、名前の同期が維持されます。選択しない場合は、グローバル変数名を編集して、プロンプト名とは異なる名前にすることができます。

このアクションに関する VME のその他の設定については、 142 ページの『「プロンプト」アクション』を参照してください。一般的な情報について詳しくは、 76ページの『プロンプト・アクション (<prompt> エレメント)』を参照してください。

「カーソル位置を設定」アクション「カーソル位置を設定」アクションは、ホスト端末上のユーザーのマウス・クリックをシミュレートします。実際のマウス・クリックと同様に、クリックが行われたときにマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャンプします。

マウス・クリックを発生させる「行」と「列」の位置を指定します。画面キャプチャーが、使用可能であれば、表示されます。その場合、その上をクリックすることにより、「行」フィールドと「列」フィールドを設定できます。「行」フィールドと「列」フィールドに変数名を $var$ の形式で入力することもできます。

詳しくは、 208 ページの『<mouseclick> エレメント』を参照してください。

「トレース」アクション「トレース」アクションは、指定のトレース宛先 (HATS Toolkit コンソールやWebSphere コンソールなど) にトレース・メッセージを送信します。また、HATSはマクロ・トレースを HATS ランタイム・トレースに追加します。

第 10 章 Visual Macro Editor 145

|

|

|

|

Page 164: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

トレースの仕様「トレース・ハンドラー」リスト・ボックスを使用して、トレース・メッセージを送信する宛先を指定します。

v トレース・メッセージを Host On-Demand トレース機能に送るには、「HostOn-Demand トレース機能」を選択します。

v トレース・メッセージをユーザー・トレース・ハンドラーに送るには、「ユーザー・トレース・イベント」を選択します。

v メッセージをコンソールに送信するには、「コマンド行」を選択します。

トレース宛先に送信したいストリングを指定するには、「値」入力フィールドを使用します。

詳しくは、 79 ページの『トレース・アクション (<trace> エレメント)』を参照してください。

「マクロ変数の更新」アクション「マクロ変数の更新」アクションを使用して、マクロ変数の値を更新できます。このアクションは、拡張マクロ形式のマクロの場合にのみ追加できます。

変数 このリスト・ボックスから、更新するマクロ変数の名前を選択します。リスト・ボックス・ドロップダウンには、マクロ用に定義されているすべての変数があります。

タイプ選択したマクロ変数のタイプが表示されます。

値 マクロ変数に割り当てる値を指定します。値は、そのタイプの正しい形式である必要があります。

詳しくは、 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照してください。

次の画面接続の操作

次の画面接続をパレットから追加するパレットの「次の画面接続」ツールは、新規の次の画面接続の定義を許可します。

2 つの画面間の次の画面接続を追加するには、パレットで「次の画面接続」をクリックし、ソース画面をクリックして次にターゲット画面をクリックします。

同じソース画面から開始された他の接続がある場合は、新しい接続が最高の順序(優先順位) を持つことになります。順序は、次の画面接続のポップアップ・メニューにある「再配列アクション」を使用して変更できます。

ループ (つまり、ソースとターゲットが同じ次の画面接続) を作成するには、同じ画面を 2 回クリックします。ループは、その画面に他の次の画面接続が定義されていない場合は、矢印として表示され、1 つ以上定義されている場合は、順序を表示する円として表示されています。

146 IBM Host Access Transformation Services: 拡張マクロ・ガイド

|

|

|

|

|

|

|

|

|

|

|

|

Page 165: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

次の画面接続の再配列と変更次の画面接続のポップアップ・メニューにある「再配列アクション」を使用して、接続の順序 (優先順位) を変更することができます。これは、同じ画面から発生する他の次の画面接続すべての順序に影響を与えます。

「再配列」アクションは、「上へ」および「下へ」と同じように機能します。つまり、順序 2 の接続を順序 3 に変更すると (1 つ下げる) 、順序 3 であった接続は順序 2 になります (1 つ上がる)。

次の画面接続のソースまたはターゲットは、その接続の適切な端を新しいソースまたはターゲットの画面にドラッグすることにより変更できます。

VME の設定の操作VME の設定を操作するには、メニュー・バーから「ウィンドウ」>「設定」>「HATS」>「Visual Macro Editor」を選択します。以下の設定を変更できます。

デフォルトで画面アクションを表示この設定を選択すると、デフォルトで、マクロ画面オブジェクト上にアクションを表示します。この設定をクリアすると、デフォルトで、アクションを非表示にします。マクロ画面上のアクションをトグルでクリックすると、特定の画面のアクションを表示/非表示にします。この設定は VME で始めて開いたマクロのみに影響します。デフォルトが選択されています。

表示する画面アクション数の制限1 つのマクロ画面オブジェクトに対して表示されるアクションの最大数を指定します。これは、すべてのアクションを表示するとインターフェースが複雑すぎる、複雑なマクロの場合、有用です。デフォルトは「5」です。

第 10 章 Visual Macro Editor 147

Page 166: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

148 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 167: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 11 章 拡張マクロ・エディター

拡張マクロ・エディター (AME) では、macro 属性および screen-level 属性の設定、画面説明の編集、およびアクション、リンク (次の画面接続)、変数の追加を行うことができます。

基本マクロ・エディターは、マクロを右クリックして「オープン先を指定」 ->「マクロ・エディター」を選択して開きます。拡張マクロ・エディターは、マクロ・エディターの「概要」ページから開くことができます。また、「プロンプトおよび抽出」もマクロ・エディターから編集できます。

マクロを VME ではなくマクロ・エディターで開くと、マクロ・エディターがそのマクロのデフォルト・エディター (そのマクロのみ) になります。

注: Macro Editor および Advanced Macro Editor のサポートは、HATS V9.6 では非推奨になりました。現在までサポートされていましたが、 IBM は、これ以降の製品リリースでこの機能を削除することができます。このサポートはVisual Macro Editor で置き換えられました。

エディターの使用拡張マクロ・エディターは、マクロの各部を編集するためのグラフィカル・ユーザー・インターフェースであり、ボタン、入力フィールド、リスト・ボックスなどを備えています。 150 ページの図 60 に、拡張マクロ・エディターを示します。

© Copyright IBM Corp. 2003, 2015 149

Page 168: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

注:

1. AME は <HAScript> エレメントとその内容のみを認識します。したがって、AME を使用して追加または編集するすべての prompts または extracts は、HATS の <prompts> エレメントと <extracts> エレメントにおいて手動で更新する必要があります。不一致があると、統合オブジェクトがマクロの正常実行に失敗したり、マクロ・トランザクションを実行アクションやマクロを実行アクションで実行されるときにマクロが不正に振る舞ったりするので、この点は重要です。問題を最小限に抑えるため、HATS マクロ・エディターを使用してprompts と extracts を定義し、必要に応じて、AME をマクロ内の拡張ロジック用に使用することをお勧めします。HATS の <prompts> エレメントと<extracts> エレメントについて詳しくは、 3 ページの『HATS で使用する場合の Host On-Demand マクロの適応』を参照してください。

2. AME は、HATS マクロ・エディターと同期されません。つまり、AME で変更を行った場合、その変更はソース表示などへは即時に反映されません。ただし、一方のエディターを保存して終了すると、変更点は他方のエディターに反映されます。

マクロ・タブAME の操作に慣れるために、このセクションは AME の「マクロ」タブと、前のセクションで説明されている <HAScript> エレメントとの非常に簡単な比較で成り立っています。

AME には、4 つのタブがあります。「マクロ」、「画面」、「リンク」および「変数」です。最初の「マクロ」タブは、<HAScript> エレメントと非常に密接に

図 60. 拡張マクロ・エディター

150 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 169: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

対応します。実際に、「マクロ」タブは、<HAScript> エレメントの開始タグの属性に保管される情報に対するグラフィカル・ユーザー・インターフェースです。

したがって、<HAScript> エレメントはマクロ・スクリプトのマスター・エレメントであり、マクロ全体に適用される情報 (例えば、マクロ記述) がその属性に含まれるため、同様に「マクロ」タブは、AME の最初のタブであり、同じグローバル情報の一部にアクセスできます。

図 61 は、「マクロ」タブが選択された状態の AME を示しています。

図 61 では、「マクロ」タブに数個のチェック・ボックスとともにマクロの説明およびその他の情報の入力フィールドがあります。また、次の点も知ることができます。

「マクロ名」フィールドには、マクロに割り当てる名前が入ります。この名前は、マクロを編集または実行するときに選択する名前と同じです。マクロ名では大文字と小文字を区別します。例えば、macro_1 は、Macro_1、MACRO_1、などとは別の名前です。

「マクロで変数と演算式を使用する」チェック・ボックスは、マクロ・オブジェクトがこのマクロに基本マクロ形式を使用するか、拡張マクロ形式を使用するかを決定します。上記の図では、このチェック・ボックスは選択されていません。これは、基本マクロ形式が使用されることを示します ( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。

図 61. AME のマクロ・タブ

第 11 章 拡張マクロ・エディター 151

Page 170: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 62 は、 151 ページの図 61 の「マクロ」タブに表示されているのと同じ情報およびいくつかの追加情報が含まれている、サンプル <HAScript> エレメントを示しています。ソース表示では、<HAScript> エレメントが 1 行に書き込まれますが、ここではそのエレメントが複数行に書き込まれているため、属性を確認することができます。

図 62 の <HAScript> エレメント内には、 151 ページの図 61 に示される「マクロ」タブの各入力フィールドに対応する属性があります。例えば、 <HAScript> エレメント内の usevars 属性 (usevars="false") は「マクロ」タブの「マクロで変数と演算式を使用する」チェック・ボックスに対応します。図 62 には、 151 ページの図 61 には表示されない追加属性があります。

「画面」タブこのセクションでは、AME の「画面」タブと、直前のセクションで説明されている XML <screen> エレメントとの関連を示します。 153 ページの図 63 は、「画面」タブが選択された状態の AME を示しています。

<HAScriptname="macro_1"description=" "timeout="60000"pausetime="300"promptall="true"author=""creationdate=""supressclearevents="false"usevars="false"ignorepauseforenhancedtn="false"delayifnotenhancedtn="0">

...

</HAScript>

図 62. サンプル <HAScript> エレメント

152 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 171: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 63 の「画面」タブには、以下が含まれています。

v このタブの上部にある「画面名」リスト・ボックス

v 3 つの従属タブ (「一般」、「説明」、および「アクション」)

現在、「一般」タブが選択されています。

「画面」タブには次の 2 つの「画面名」フィールドがあることに注意してください。

v 「画面」タブの一番上にある「画面名」フィールドは、マクロ内のすべてのマクロ画面の名前が入っているリスト・ボックスです。

v 「一般」サブタブの一番上にある「画面名」フィールドは、現在選択されている画面に割り当てたい名前を入力する入力フィールドです。

「画面」タブの一番上にある「画面名」リスト・ボックスでは、作業対象のマクロ画面の名前 (例えば、Screen1) をクリックします。AME は、そのマクロ画面に属する情報をサブタブに表示します。例えば、図 63 では、リスト・ボックスは、マクロ画面名 Screen1 を表示し、サブタブは、Screen1 に属する情報を表示します。ユーザーがリスト・ボックス内の別のマクロ画面名 (例えば、Screen10) を選択した場合、AME は、マクロ画面 Screen10 に属する情報をサブタブに表示します。

「一般」タブの下の「画面名」入力フィールドには、現在選択されているマクロ画面に割り当てたい名前を入力します。Screenx のような画面名 (ここで x は整数を表します。例えば、Screen1) は、マクロ・オブジェクトがマクロ画面を作成するときにその画面に与えるデフォルトの名前です。この名前をそのまま使用すること

図 63. 「画面」タブ

第 11 章 拡張マクロ・エディター 153

Page 172: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

も、より覚えやすい記述名に置き換えることもできます。 (すべてのマクロ画面に、Screen3、Screen10、Screen24 のような名前がある場合、どのマクロ画面が何を実行するかを覚えるのは困難です。)

「画面」タブの「一般」、「説明」、および「アクション」の各サブタブは、前のセクションで説明された XML <screen> エレメントの主要部分に対応します。具体的には、次のとおりです。

v 「一般」サブタブは、<screen> エレメントの属性に保管されている情報を提示します。

v 「説明」サブタブは、<screen> エレメントの <description> サブエレメントに保管されている情報を提示します。

v 「アクション」サブタブは、<screen> エレメントの <actions> サブエレメントに保管されている情報を提示します。

しかし、<nextscreens> サブエレメントについてはどうでしょうか。使いやすくするために、<nextscreens> エレメントに属する情報は、上位の「リンク」タブに表示されます。 153 ページの図 63 の「画面」タブのすぐ右に、「リンク」タブが表示されています。

図 64 は、Screen1 という名前のサンプル <screen> エレメントの XML 開始タグと終了タグを示しています。

図 64 において、省略符号 (...) は XML テキストの一部ではありませんが、簡略化するために <screen> エレメント内部に含まれる必須エレメントが省略されていることを示します。開始タグの属性は、 153 ページの図 63 に示される「一般」タブのフィールドに対応します。例えば、name 属性 (name="Screen1") は「一般」タブ上の「画面名」入力フィールドに対応し、entryscreen 属性 (entryscreen="true")は「一般」タブ上の「エントリー画面」リスト・ボックスに対応します。

155 ページの図 65 は、囲まれているエレメントを含めて、<screen> エレメント全体の XML テキストを示しています。

<screen name="Screen1" entryscreen="true" exitscreen="false" transient="false">...</screen>

図 64. <screen> エレメントの開始タグと終了タグ

154 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 173: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 65 では、<screen> エレメントに、必須の <description>、<actions>、および<nextscreens> エレメントが入っていることに注目してください。

デフォルトでは、「認識限界の設定」チェック・ボックスはクリアされていて、入力フィールドは使用不可です。このチェック・ボックスを選択すると、マクロ・エディターは「エラーになる前の画面」入力フィールドのデフォルト値を 100 に設定します。この値の設定は増減できます。詳しくは、 55 ページの『認識限界』を参照してください。

「説明」タブAME の「画面」タブ上の「説明」タブは、マクロ画面の <description> エレメント内に保管されている情報にアクセスします。 156 ページの図 66 は、「説明」タブの例を示しています。

<screen name="Screen1" entryscreen="true" exitscreen="false" transient="false"><description>

<oia status="NOTINHIBITED" optional="false" invertmatch="false" /></description><actions>

<mouseclick row="4" col="15" /><input value="3[enter]" row="0" col="0" movecursor="true"

xlatehostkeys="true" encrypted="false" /></actions><nextscreens timeout="0" >

<nextscreen name="Screen2" /></nextscreens>

</screen>

図 65. サンプル XML <screen> エレメント

第 11 章 拡張マクロ・エディター 155

Page 174: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 66 では、AME の「画面」タブが選択されています。現在選択されている画面の名前 Screen1 が、「画面」タブの一番上の「画面名」フィールドに表示されています。「画面名」フィールドの下には、「一般」、「説明」、および「アクション」のサブタブがあります。「説明」タブが選択されています。

上記の図の「説明」タブを見ると、上部領域と下部領域があることが分かります。

上部領域には、単一の記述子エレメントを全体と見なして作用するコントロールがあります。特に、「説明」タブの左上隅にある「記述子」リスト・ボックスには、現在選択されている記述子の名前が入っています。上記の図では、現在選択されている記述子は、リストの一番上にある「フィールド数および OIA」記述子です。(記述子には名前がありません。「フィールド数および OIA」は、記述子のタイプです。)

「説明」タブの下部領域には、現在選択されている記述子の内容が表示されます。現在選択されている記述子は「フィールド数および OIA」記述子であるので、「説明」タブの下部は、そのタイプの記述子に適した内容を提示します。ユーザーが別のタイプの記述子 (例えば、ストリング記述子) を作成し、選択した場合、下部領域には、ストリング記述子に該当する内容が提示されます。

図 66 の「説明」タブの下部領域をもっと詳しく調べると、「フィールド数およびOIA」記述子には、次の 3 つの ID テストが含まれていることが分かります。

v 画面には 80 個のフィールドがある (「フィールド数」フィールドが 80 に設定されている)

v 画面には 3 個の入力フィールドがある (「入力フィールドの数」フィールドが 3に設定されている)

図 66. 「説明」タブ

156 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 175: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 画面の入力禁止標識がクリアされている (「OIA が禁止解除になるのを待つ」リスト・ボックスが true に設定されている)。

マクロ・ランタイムは、このマクロ画面をアプリケーション画面に一致させようとするときに、これらの 3 つの ID テストを適用します。

注: AME は「フィールド数および OIA」記述子を、3 つのテストが含まれている1 つの記述子として提示しますが、実際にマクロ言語は、これらの 3 つのテストを別々の独立した 3 つの記述子として定義します。 158 ページの『「FieldCounts and OIA」ディスクリプター』を参照してください。

156 ページの図 66 の「説明」タブの下部領域には、「フィールド数およびOIA」記述子のこれら 3 つのテストごとに、「オプション」というラベルのフィールドも表示されます。ここでは、このフィールドを無視してかまいません。「フィールド数」記述子と「入力フィールドの数」記述子には、「逆記述子」というラベルのフィールドもあります。このフィールドもここでは無視してかまいません。これらのフィールドについては、 40 ページの『デフォルト結合メソッド』のセクションで説明されます。

新しい記述子の作成: 156 ページの図 66 の「説明」リスト・ボックスをもう一度見ると、最初のエントリーだけが実際の記述子になっていることが分かります。残りの選択項目は、すべて不等号括弧で囲まれ、「新規」という語で始まっています。これらの選択項目は、新しい記述子を作成するためのものです。以下に 156ページの図 66 から抜粋したリストを示します。

例えば、<新規ストリング記述子> をクリックした場合、マクロ・オブジェクトは、新しいストリング記述子を作成し、リストの先頭に置きます。「説明」タブの下部領域では、ストリング記述子に属するさまざまなフィールド (例えば、行と列の位置や、文字ストリング) に入力できます。「記述子 (Descriptor)」リスト・ボックスは次のようになります。

フィールド数および OIA<新規ストリング記述子><新規カーソル記述子><新規属性記述子><新規条件記述子><新規変数更新>

図 67. 実際の記述子が 1 つある「記述子 (Descriptor)」リスト・ボックスの内容

ストリング記述子 (3, 29)フィールド数および OIA<新規ストリング記述子><新規カーソル記述子><新規属性記述子><新規条件記述子><新規変数更新>

図 68. 実際の記述子が 2 つある「記述子 (Descriptor)」リスト・ボックスの内容

第 11 章 拡張マクロ・エディター 157

Page 176: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

157 ページの図 68 では、現在選択されている記述子は、リストの一番上にある「ストリング記述子」です (3,29 は、行 3、列 29 を表します)。「フィールド数および OIA」記述子は、リスト上の 2 番目になりました。

157 ページの図 68 のように、マクロ・ランタイムが複数の記述子を処理する方法については、 39 ページの『記述子の評価』を参照してください。

「Field Counts and OIA」ディスクリプター: 「フィールド数および OIA」記述子は必須であり、固有の記述子でなければなりません。つまり、どの「説明」タブにも、ただ 1 つの「フィールド数および OIA」記述子が含まれていなければなりません。

次の理由により、これによって実際に何か問題が生じることはありません。

v 「フィールド数および OIA」記述子自体は必須ですが、それに含まれている 3つのテストの内、1 つだけが必須です。したがって、実際の要件は、どの<description> エレメントにもただ 1 つの OIA 記述子が含まれていなければならないことです。

v これらの規則は AME によって強制されるため、誤って複数の「フィールド数および OIA」記述子が「説明」タブに追加されることはありません。例えば、「削除」ボタンを使用して「フィールド数および OIA」記述子を削除しようとしてもなにも効果がなく、また、「記述子」リスト・ボックスには「フィールド数および OIA」記述子に対する <new> 項目がありません。

別々の独立した 3 つの記述子を 1 つの記述子として提示する方法: AME は、「フィールド数および OIA」記述子を 1 つの記述子として表します ( 156 ページの図 66 を参照)。しかし、実際には、「説明」タブの「フィールド数および OIA」記述子の 3 つの部分はそれぞれ、ベースとなる XML マクロ言語の別々の独立した記述子に対応します。具体的には、次のとおりです。

v 「フィールド数」の設定は、<numfields> 記述子として保管される。

v 「入力フィールド数」の設定は、<numinputfields> 記述子として保管される。

v 「OIA が禁止解除になるのを待つ」の設定は、<oia> 記述子として保管される。

表 20 は、これらの 3 つのタイプのディスクリプターをリストし、<description>エレメント内に存在できる各ディスクリプターの数を示します。

表 20. 3 つのタイプの <description> エレメント記述子

記述子のタイプ: マクロ画面ごと (つまり、<description>エレメントごと) に使用できるこのタイプのディスクリプター数:

<oia> 1 (必須)

<numfields> 1 (オプション)

<numinputfields> 1 (オプション)

表 20 に示されるように、これらの記述子のタイプごとに 1 つだけが<description> エレメントに存在できます。<oia> 記述子は必須ですが、<numfields> 記述子と <numinputfields> 記述子はオプションです。マクロ・エディターがこれらの規則を実行します。

158 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 177: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

例えば、AME の「説明」タブに表示される「フィールド数および OIA」記述子を最初に見て、次にソース表示を見ます。 156 ページの図 66 は、「説明」タブの「フィールド数および OIA」記述子を示しています。「Field Counts and OIA」ディスクリプターの 3 つの部分の設定値は、次のように設定されます。

Number of Fields: 80Number of Input fields: 3Wait for OIA to Become Uninhibited: true

一方、対応する <description> エレメントをソース表示で調べると、次のように表示されます。

図 69 の XML コード・フラグメントは、<description> エレメントに、3 つの別々の独立した記述子が含まれていることを示します。各記述子は、「フィールド数および OIA」記述子の 3 つの部分のいずれかに対応しています。

「フィールド数および OIA」記述子の設定を次のように変更するとします。

Number of Fields: (blank)Number of Input fields: (blank)Wait for OIA to Become Uninhibited: true

最初の 2 つのフィールドをブランクに設定すると、これらの項目がスクリプトに組み込まれないように、 AME に指示します。対応する <description> エレメントをソース表示で再度調べると、次のように表示されます。

<description><oia status="NOTINHIBITED" optional="false" invertmatch="false" />

</description>

上記の XML コード・フラグメントは、<description> エレメントに、1 つのディスクリプター、つまり「Field Counts and OIA」ディスクリプターの「OIA が禁止解除になるのを待つ (Wait for OIA to Become Uninhibited)」設定に対応する<oia> ディスクリプターだけが含まれていることを示しています。

「OIA が禁止解除になるのを待つ」記述子: 160 ページの表 21 は、次のことを示しています。

v 「OIA が禁止解除になるのを待つ」リスト・ボックスの 3 つの可能な設定値

v <oia> エレメントで使用される対応する値

v マクロ・ランタイムが設定をどのように評価するか

<description><oia status="NOTINHIBITED" optional="false" invertmatch="false" /><numfields number="80" optional="false" invertmatch="false" /><numinputfields number="3" optional="false" invertmatch="false" />

</description>

図 69. 3 つのディスクリプターを持つ <description> エレメント

第 11 章 拡張マクロ・エディター 159

Page 178: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 21. 「OIA が禁止解除になるのを待つ (Wait for OIA to Become Uninhibited)」ディスクリプターの有効な設定値

記述タブ上の設定: <oia> エレメント内のstatus 属性の値:

意味:

true NOTINHIBITED ホスト端末の入力禁止標識がクリアされている (つまり、入力が禁止されていない) 場合、マクロ・ランタイムはこの記述子を true と評価します。そうでない場合、マクロ・ランタイムはこの記述子を false と評価します。

false DONTCARE マクロ・ランタイムは、常にこの記述子を true として評価します。

<Expression> 'NOTINHIBITED'、'DONTCARE'、またはこれらのストリングのどちらかに評価される任意の式

マクロ・ランタイムは、式を評価してから、結果のストリングを解釈します。

マクロ開発時のホスト端末上のフィールド数のカウント: 「フィールド数」フィールドと「入力フィールドの数」フィールドに値を設定する必要がある場合には、現在作業している画面で、実際のフィールド数を確認し、その値を示す記述子を自動的に設定することができます。

この機能を使用する手順は、次のとおりです。

1. ホスト端末でマクロを編集する。この機能は、マクロを記録しているときにも使用できます。

2. ホスト端末で、作業しているマクロ画面に対応するアプリケーション画面に進む。表示される値は、常に、ホスト端末に表示された画面に基づいています。

3. 左側のツリー表示で、画面名を右マウス・ボタンでクリックし、「編集」を選択して、「画面認識基準の定義 (Define Screen Recognition Criteria)」ページを呼び出す。

4. マクロ・エディターに、現在のアプリケーション画面のフィールドの総数、入力フィールドの数、およびカーソル位置が表示されます。この画面の認識基準にする基準のチェック・ボックスに、チェックマークを付けます。

5. 「フィールド数」フィールドと「入力フィールドの数」フィールドを正しい値に設定するには、各入力フィールドの隣にある「最新表示」ボタンを使用して、アプリケーション画面のフィールドをカウントすることができます。

6. 「完了 (Finish)」をクリックする。

画面認識時の取り扱い: 画面認識時に、マクロ・ランタイムが個々のディスクリプターを評価し、ブール結果を結合するときに、マクロ・ランタイムは、<oia> ディスクリプター、<numfields> ディスクリプター (存在する場合)、および<numinputfields> ディスクリプター (存在する場合) をそれぞれ、別々の独立したディスクリプターとして、他のディスクリプターと同じように扱います。

160 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 179: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

複数のディスクリプターの評価の詳細については、 39 ページの『記述子の評価』を参照してください。

新規ストリング・ディスクリプターにおける '*' ストリング: 新規ストリング記述子を作成すると、AME は、初期デフォルト値としてストリング '*' を「ストリング」入力フィールドに入れます。この初期ストリングを消去して、必要なストリングを入力してください。アスタリスク (*) には意味も機能もありません。この初期ストリングは「デフォルト・ストリング値」を示し、同じ効果があります。

アクション・タブAME の「画面」タブにある「アクション」タブを使用して、アクションを作成および編集できます。「アクション」タブでアクションを作成すると、 AME は、現在選択されている画面の <actions> エレメントに新規アクションを挿入します。図70 に、「アクション」タブの例を示します。

図 70 では、AME の「画面」タブが選択されています。現在選択されている画面の名前 (Screen1) が、「画面」タブの「画面名」フィールドに表示されています。「画面名」フィールドの下には、「一般」、「説明」、および「アクション」のサブタブがあります。「アクション」タブが選択されています。

「説明」タブと同様に、「アクション」タブには上部領域と下部領域があります。

上部領域には、単一のアクション・エレメントを全体と見なして作用するコントロールがあります。具体的には、「アクション」タブの左上隅にある「アクション」

図 70. アクション・タブ

第 11 章 拡張マクロ・エディター 161

Page 180: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

リスト・ボックスに、現在選択されているアクションの名前が表示されます。上の図では、まだアクションが作成されていないので、現在選択されているアクションはありません。

「アクション」タブの下部領域には、現在選択されているアクションがある場合はその内容が表示されます。現在選択されているアクションが入力アクションの場合、「アクション」タブの下部領域にはそのタイプのアクションに該当する内容が表示されます。抽出アクションなど、別のタイプのアクションをユーザーが作成または選択した場合、下部領域には抽出アクションに該当する内容が表示されます。

新規アクションの作成: 161 ページの図 70 の「アクション」リスト・ボックスにもう一度注目すると、このリスト・ボックスにはまだアクションが入っていないことが分かります。不等号括弧で囲まれ、「新規」という語で始まる選択項目は、すべて新規アクションの作成用です。 161 ページの図 70 でも分かるように、「アクション」リスト・ボックスは、リスト全体を一度に表示するには高さが不足しています。以下にリストの全体を示します。

例えば、「<新規入力アクション>」をクリックすると、マクロ・オブジェクトは新規の入力アクションを作成し、リストの一番上に配置します。「アクション」タブの下部領域では、入力アクションに属する各種フィールド (入力キー・シーケンスなど) に入力できます。「アクション」リスト・ボックスの選択領域に新規の入力項目が表示され、リスト・ボックスのリスト部分は次のようになります。

<新規入力アクション><新規抽出アクション><新規プロンプト・アクション><新規一時停止アクション><新規通信待機アクション><新規トレース・アクション><新規マウス・クリック・アクション><新規変数更新アクション><新規マクロ実行アクション><新規実行アクション><新規条件付きアクション><新規 SQL 照会アクション>

図 71. 作成済みアクションがない状態での「アクション」リスト・ボックスのリストの内容

162 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 181: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

マクロ・ランタイムがこのマクロ画面を処理する際には、「アクション」リスト・ボックスのリスト順と同じ順序でアクションが実行されます。実際のアクションの順序を変更するには、「アクション」リスト・ボックスの右側にある「順序変更」ボタンをクリックします。

リンク・タブAME では、「リンク」タブをユーザー・インターフェースとして使用して、マクロ画面の <nextscreens> エレメントに候補マクロ画面の名前を保管します。図 73に、「リンク」タブの例を示します。

入力アクション 1 (0,0)<新規入力アクション><新規抽出アクション><新規プロンプト・アクション><新規一時停止アクション><新規通信待機アクション><新規トレース・アクション><新規マウス・クリック・アクション><新規変数更新アクション><新規マクロ実行アクション><新規実行アクション><新規条件付きアクション><新規 SQL 照会アクション>

図 72. 実際のアクションが 1 つある状態での「アクション」リスト・ボックスのリストの内容

図 73. リンク・タブ

第 11 章 拡張マクロ・エディター 163

Page 182: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

163 ページの図 73 では、タブの上部にある「画面名」リスト・ボックスに、マクロ全体に含まれるマクロ画面すべてのリストが表示されています。現在選択されているマクロ画面は Screen1 です。右側の「有効な次画面 (Valid Next Screens)」リスト・ボックスには、Screen1 のマクロ画面候補のリストが表示されています (このリスト・ボックスには Screen1 の <nextscreens> エレメント内にある名前が含まれていますが、マクロ・ランタイムがマクロの再生時に使用する有効な次画面のリストと混同しないでください)。左側の「使用可能な画面」リスト・ボックスは、他のマクロ画面すべての名前をリストしています。

163 ページの図 73 では、「使用可能な画面」リストに画面名が 1 つしか表示されていませんが、これは、この図が 2 つのマクロ画面 (Screen1 と Screen2) だけのマクロから取られたものだからです。ここで、20 画面のマクロがあり、新しいマクロ画面 ScreenR の <nextscreens> リストにマクロ画面を追加するとします。次の手順で行います。

1. 「リンク」タブで、「画面名」リスト・ボックスを展開し、ScreenR が見つかるまでスクロールダウンする。

2. ScreenR を選択する。

3. ScreenR は新規画面なので、右側の「有効な次画面 (Valid Next Screens)」リストにマクロ画面名はリストされません。

4. 左側の「選択可能な次画面 (Available Next Screens)」リスト・ボックスには、マクロ内のマクロ画面すべての名前があります。

5. ScreenR のリストに追加する画面を選択する。 ScreenS を選択したとします。

6. ScreenS を選択した後、2 つのリスト・ボックスの間にある右矢印のボタンをクリックする。ScreenS が右側のリスト・ボックスに追加され、左側のリスト・ボックスから除去されます。

7. 同じように、追加したい他のマクロ画面の名前を ScreenR の「有効な次画面(Valid Next Screens)」リスト・ボックスに移動する。

8. 合計 3 つの画面名 (ScreenS、ScreenG、および ScreenY) を移動します。

完了すると、現在選択されているマクロ画面 ScreenR の有効な次画面のリストに、3 つのマクロ画面の名前が表示されます。

ソース表示を参照すると、有効な次のマクロ画面の名前 ScreenS、ScreenG、およびScreenY が、 165 ページの図 74 に示すように ScreenR の中に保管されていることが分かります。

164 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 183: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 74 では、ScreenR の <screen> エレメントの name 属性は "ScreenR" に設定されています。内側には、<screen> エレメントの 3 つの基本構造エレメント(<description> エレメント、 <actions> エレメント、および <nextscreens> エレメント) があります。 <description> エレメントと <actions> エレメントの内容は表示されませんが、省略符号 (...) によって示されます。 <nextscreens> エレメントには 3 つの <nextscreens> エレメントがあり、それぞれの <nextscreen> エレメントには、有効な次画面 ScreenS、ScreenG、および ScreenY のいずれかの名前があります。

ランタイム処理について詳しくは、 27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』を参照してください。

「変数 (Variables)」タブ変数は 1 つの画面ではなくマクロ全体に属するため、変数用の上位タブが別個に用意されています。「変数」タブを使用して、以下のことができます。

v 変数の作成

v 変数の除去

v 新規変数タイプとしての Java クラスのインポート

標準データ・タイプに属する変数を作成するには、AME の「変数」タブを使用します。 166 ページの図 75 に、「変数」タブの例を示します。

<screen name="ScreenR" entryscreen="true" exitscreen="false" transient="false"><description>

...</description><actions>

...</actions><nextscreens>

<nextscreen name="ScreenS"/><nextscreen name="ScreenG"/><nextscreen name="ScreenY"/>

</nextscreens></screen>

図 74. <nextscreens> エレメントがあるマクロ画面 ScreenR

第 11 章 拡張マクロ・エディター 165

Page 184: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

図 75 では、AME の「変数」タブが選択されています。現在選択されている変数の名前 $strUserName$ が、「変数」リスト・ボックスに表示されています。その他3 つのフィールド、「名前」入力フィールド、「タイプ」リスト・ボックス、および「初期値」入力フィールドといった、マクロ・ランタイムがこの変数を作成するために必要とする情報があります。

「変数」リスト・ボックスには、このマクロ用に作成された変数すべての名前があります。編集または除去する変数をこのリスト・ボックスから選択でき、また変数を新規に作成するための <新規変数> 項目もあります。

現在選択されている変数の項目が、別のストリングの後に括弧で囲んで表示されていることに注意してください。

Variable1($strUserName$)

ストリング Variable1 は、作成した変数の数を示す設定値で、マクロ・スクリプトには保存されません。変数の実名は $strUserName$ であり、変数を使用するときには、マクロ全体でこの名前を単独で使用する必要があります。

変数名 $strUserName$ がドル記号 ($) で囲まれていることにお気付きかもしれません。これは要件であり、マクロ内で変数を使用するときには、必ず変数名をドル記号 ($) で囲む必要があります。

「名前」入力フィールドは、現在選択されている変数 $strUserName$ の名前を表示します。既存の名前に上書き入力することによって、変数名を変更できます。通常、このフィールドは、新規に作成した変数に名前を割り当てるためだけに使用してください。後でいつでもこのパネルに戻ってこの変数の名前を変更できますが

図 75. 「変数 (Variables)」タブ

166 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 185: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

(例えば $strUserFirstName$ に)、マクロ内のどこかで、アクションや記述子にこの変数の以前の名前をすでに使用している可能性があるので注意してください。この「変数」タブで名前を変更した場合は、マクロ内でこの変数を使用したすべての場所にも戻って、以前の変数名を新しい変数名に変更する必要があります。

任意の変数名を選択できますが、選択できる文字にはいくつかの制限があります( 101 ページの『変数名とタイプ名』を参照)。本書で行っているように、データ・タイプの省略形で始まる名前を選択する必要はありません (ストリング変数$strUserName$ の str のように)。

「タイプ」リスト・ボックスには、変数に使用可能なタイプがリストされ、新規変数に使用するタイプをここから選択できます。標準タイプは、string、integer、double、 boolean、および field です。また、java.util.Hashtable などの Java クラスをインポート済みタイプとしてインポートすると、「タイプ」リスト・ボックスにはこのインポート済みタイプが取り込まれ、図 76 に示すように使用可能なタイプのリストに追加されます。

このリスト・ボックスは、新規に作成した変数にタイプを割り当てるためだけに使用してください。後でこのパネルに戻ってこの変数のタイプを別のタイプに変更できますが、変数名の場合と同様に、マクロの中で最初に選択したタイプを必要とするコンテキストで、すでにこの変数を使用している可能性があるので注意してください。該当する場合は、それらの各箇所で、変数を使用しているコンテキストが新しいタイプに適切であるかを確認する必要があります。

「初期値」入力フィールドには、変数の初期値を指定できます。AME は、タイプに応じて次のデフォルト値を提供します。

表 22. 変数のデフォルト初期値

変数のタイプ: デフォルト初期値:

ストリング ストリングなし

整数 0

倍精度 0.0

ブール false

フィールド (初期値なし)

(すべてのインポート済みタイプ) ヌル

新しい初期値を指定するには、単にデフォルト値に上書きして入力します。

「除去」ボタンは、現在選択されている変数を除去します。

stringintegerdoublebooleanfieldjava.util.Hashtable

図 76. インポート済みタイプを宣言した後の「タイプ」リスト・ボックスの内容

第 11 章 拡張マクロ・エディター 167

Page 186: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「インポート」ボタンと「インポート」ポップアップ・ウィンドウについては、『Java クラスのインポート済みタイプを作成』で説明します。

変数の新規作成AME で変数を新規に作成するには、まず「変数」リスト・ボックスの最後にある「<新規変数>」エントリーをクリックします。AME は、変数を新規に作成し、いくつかの初期特性を割り当てます。これらの特性は、ユーザーがニーズに合うように修正する必要があります。初期値は次のとおりです。

1. 初期名 ($a1$ など)。

2. 初期タイプ (string)。

3. 初期値。タイプによって異なります ( 167 ページの表 22 を参照)。

注: ストリング変数を作成した場合、初期値を単一引用符で囲む必要があります。そうしないと、初期値が無効な表現であるというメッセージが表示されます。

次に、新規変数に必要な値を設定する必要があります。例えば、画面をカウントするための整変数を作成し、その初期値を 1 にする必要がある場合は、次のように初期値を設定します。

1. 「名前」入力フィールドに、名前 $intScreenCount$ を入力します。

2. 「タイプ」リスト・ボックスから、integer データ・タイプを選択します。

3. 「初期値」フィールドに 1 を入力します。

「変数」タブのほかに、いくつかの便利な位置で、AME から変数を新規に作成するためのポップアップ・ウィンドウにアクセスできます。例えば、変数更新アクションの場合、「名前」リスト・ボックスにはすでに作成済みの変数名がすべて表示されるだけでなく、「<新規変数>」項目も表示されます。この項目をクリックすると、変数を新規に作成するためのポップアップ・ウィンドウが開きます。このポップアップ・ウィンドウを使用して作成した変数は、「変数」タブで作成した変数と同等です。

ソース表示での変数の作成については、 99 ページの『変数の作成』を参照してください。

Java クラスのインポート済みタイプを作成Host On-Demand マクロは、Java クラスをインポートする方法として、インポート済みタイプを使用します。つまり、インポート済みタイプをまず作成し、特定のJava クラスに関連付ける必要があります。この作業は、マクロごとに、Java クラス1 つに対して 1 回のみ行います。インポート済みタイプを作成するには、次の手順で行います。

1. 「変数」タブの「インポート」ボタンをクリックする。「インポート」ポップアップ・ウィンドウが表示されます。

2. 「インポート済みタイプ」リスト・ボックスで、項目「<新規インポート済みタイプ>」を選択する。

3. タイプのクラス名を入力する (例: java.util.Hashtable)。パッケージ名 (ある場合) を含む、完全修飾クラス名を入力する必要があります。

168 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 187: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

4. 短縮名を入力する (例: Hashtable)。短縮名を指定しない場合、 AME は完全修飾クラス名を短縮名として使用します。短縮名を指定すると、インポート済みタイプを参照する際に、短縮名または完全修飾クラス名のどちらも使用できます。

5. 「OK」をクリックする。

このインポート済みタイプに属する変数を作成するには、変数を通常の方法で作成しますが、インポート済みタイプを変数のタイプとして選択します。インポート済みタイプの変数を作成するには、以下の手順に従ってください。

1. 「変数」リスト・ボックスの最後にある「<新規変数>」項目をクリックする。AME は、名前 ($a1$ など)、タイプ (string)、および初期値 (ブランク) など、デフォルトの初期値を通常どおり表示します。

2. 「名前」入力フィールドに、任意の名前 (例: $ht$) を入力する。

3. 「タイプ」リスト・ボックスで、インポート済みタイプを選択する。例えば、Hashtable (タイプをインポートしたときに短縮名を指定した場合)、またはjava.util.Hashtable (完全修飾クラス名と同じ、デフォルトの短縮名を受け入れた場合) を選択します。

4. 「初期値」フィールドでは、フィールドをブランクのままにする (初期値はnull になる) か、クラスのインスタンスを戻すメソッドを指定できます。例えば、$new Hashtable()$ (短縮名を使用)、または $new java.util.Hashtable()$

(完全修飾クラス名を使用) を指定します。

コンストラクターはドル記号 ($) で囲む点に注意してください。変数の名前をドル記号で囲む必要があるように、Java メソッドの呼び出しもドル記号で囲む必要があります (これは、ドル記号で囲むことにより、項目を評価する必要があることをマクロ・ランタイムに示すためです)。

「インポート」ポップアップ・ウィンドウに戻ると、「インポート済みタイプ」リスト・ボックスを使用してタイプを新規に作成でき、すでに作成済みのタイプを編集または削除することもできます。タイプを新規に作成するには、リストの最後にある「<新規インポート済みタイプ>」をクリックします。タイプを編集するには、「インポート済みタイプ」リスト・ボックスからタイプを選択し、「クラス」と「短縮名」の入力フィールドで値を変更します。タイプを除去するには、タイプを選択して「除去」をクリックします。

短縮名を指定する際には、特定の制限のもとで任意の名前を使用できます ( 101 ページの『変数名とタイプ名』を参照)。

ソース表示でのインポート済みタイプの作成については、 99 ページの『Java クラスのインポート済みタイプを作成』を参照してください。

アクションの操作以下のセクションでは、AME を使用して追加または編集できるすべてのアクションについて説明します。マクロ・アクションおよび各アクションについて詳しくは、 59 ページの『第 7 章 マクロ・アクション』を参照してください。

第 11 章 拡張マクロ・エディター 169

Page 188: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

通信待機アクション

通信状態「接続状態」リスト・ボックスにリストした状態のいずれかを指定できます。表 23に、それぞれの状態の名前と意味をリストします。

表 23. 通信状態

通信状態: 重要度:

接続開始済み 初期状態。通信の開始が実行された。

接続アクティブ保留中 ソケット接続の要求。

接続アクティブ ソケット接続済み。ホストとの接続。

接続作動可能 Telnet 折衝が開始された。

接続装置名作動可能 装置名が折衝された。

接続ワークステーション ID 作動可能(Connection Workstation ID Ready)

ワークステーション ID が折衝された。

接続非アクティブ保留中 通信の停止が実行された。

接続非アクティブ ソケットがクローズされた。ホストとの接続なし。

安定状態 (つまり、通常は数秒間よりも長く持続する状態) には次のものがあります。

v 接続非アクティブ - セッションが完全に切断された状態。

v 接続ワークステーション ID 作動可能 (Connection Workstation ID Ready) -セッションが完全に接続された状態。

「接続状況」リスト・ボックスで「<式>」を選択した場合は、 <commwait> エレメントの value 属性に指定されていることをマクロ・ランタイムが予期する、いずれかのキーワードに解決される式を指定する必要があります ( 196 ページの『<commwait> エレメント』を参照)。例えば、CONNECTION_READY に解決される変数 $strCommState$ を指定できます。

詳しくは、 60 ページの『通信待機アクション (<commwait> エレメント)』を参照してください。

条件付きアクション

条件の指定条件」フィールドに、マクロ・ランタイムに評価させる条件式を指定します。条件式には論理演算子と条件演算子を指定でき、また演算式、即時値、変数、およびJava メソッドの呼び出しを含む項を指定できます ( 22 ページの『条件演算子と論理演算子および式』を参照)。

条件が真 (<if> エレメント)条件が真として評価された場合に実行するアクションを指定するには、「条件が真」タブを使用します。

170 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 189: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「条件が真」タブには、「アクション」タブのコントロールとほとんど同一のコントロールがあります。具体的には、次のとおりです。

v 「条件が真」タブの「アクション」リスト・ボックスでは、「アクション」タブの「アクション」リスト・ボックスと同じ方法でアクションを作成および編集できます。

v 「条件が真」タブの「削除」ボタンと「順序変更」ボタンを使用すると、「アクション」タブの「削除」ボタンと「順序変更」ボタンと同じ方法で、アクションを削除または再配列できます。

v 「条件が真」タブの下部領域では、「アクション」タブの下部領域と同じ方法で、現在選択されているアクションの値を編集できます。

「条件が真」タブにあるこれらのコントロールを使用して、条件が真の場合にマクロ・ランタイムが実行するアクションを作成および編集します。

条件が偽 (<else> エレメント)条件が偽として評価された場合に実行するアクションを指定するには、「条件が偽」タブを使用します。

「条件が真」タブと同様、「条件が偽」タブには、「アクション」タブのコントロールとほとんど同一のコントロールがあります。「条件が偽」タブにあるこれらのコントロールを使用して、条件が偽の場合にマクロ・ランタイムが実行するアクションを作成および編集します。

詳しくは、 61 ページの『条件アクション (<if> エレメントおよび <else> エレメント)』を参照してください。

抽出アクション

テキストのキャプチャー抽出アクションの最も一般的な用途は、ホスト端末に表示されているテキストのキャプチャーです。

次に、行う手順の概要を示します。その後のサブセクションで、各ステップについて詳しく説明します。

1. 「連続抽出」オプションを設定する (必要な場合)。

2. キャプチャーするホスト端末上の領域を指定する。

3. 抽出名を指定する。

4. データ平面として TEXT_PLANE を指定する。

5. テキストを格納する変数を指定する。

注: 値を抽出して、抽出によって設定されているグローバル変数に割り当て、そのグローバル変数の値をプロンプトに使用するには、 promptall 属性を false に設定する必要があります。 promptall 属性が true に設定されていると、プロンプトの値が取り出されるまで抽出アクションは実行されません。このため、プロンプトによって使用されるグローバル変数には値が入っていません。 HATS で記録されるマクロは、デフォルトで promptall=true になっています。promptall 属性について詳しくは、 77 ページの『promptall 属性』を参照してください。

第 11 章 拡張マクロ・エディター 171

Page 190: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「連続抽出 (Continuous Extract)」オプションを設定する: テキストの長方形ブロックをキャプチャーする場合は、「連続抽出」オプションを false に設定します(これがデフォルト値です)。詳しくは、 63 ページの『ホスト端末上の長方形領域のキャプチャー』を参照してください。

これに対し、行から行に折り返すテキストの連続シーケンスをキャプチャーする場合は、「連続抽出」オプションを true に設定します。詳しくは、 64 ページの『ホスト端末からのテキスト・シーケンスのキャプチャー』を参照してください。

ホスト端末上の領域を指定する: キャプチャーするホスト画面上の領域を指定するには、「抽出アクション」ウィンドウの「行」フィールドと「列」フィールドに、テキスト域の行と列の座標を入力します。

マクロ・ランタイムは、「連続抽出」オプションが false と true のどちらに設定されているかによって、入力された値を異なった方法で解釈します (『「連続抽出(Continuous Extract)」オプションを設定する』を参照)。

1 組目の行と列の値 (「抽出アクション」ウィンドウの「上角 (Top Corner)」) に1 組目の行と列の座標を入力し、2 組目の行と列の値 (「下角 (Bottom Corner)」)に 2 組目の座標を入力します。ホスト画面のテキスト・カーソルを補助的に使用して、必要な座標を決定できます。

「終了行」入力フィールドに -1 を入力すると、ホスト画面のデータ域の最終行を指定することができます。この機能は、ユーザーがさまざまな高さ (25 行、43行、50 行など) のホスト画面を使用しており、かつ画面のデータを最終行までキャプチャーする必要がある場合に便利です。同様に、「終了列」入力フィールドでも、-1 を入力すると、ホスト画面のデータの最終列を指定することができます( 25 ページの『行または列の負の値の意味』を参照)。

抽出名を指定する: 「Extract1」 などの抽出名を指定する必要があります。

データ・プレーンとして TEXT_PLANE を指定する: 「データ平面」リスト・ボックスの「TEXT_PLANE」をクリックします。これはデフォルトです。

テキストを格納する変数を指定する: チェック・ボックス「テキスト平面の変数への割り当て」を設定し、テキストを格納する変数の名前を入力します。テキストはストリングとして戻されます。ほとんどの場合、マクロ内の他のアクションがストリングを処理できるように、ストリングはストリング変数に格納する必要があります。

ただし、他の標準データ・タイプ (boolean、integer、double) を指定した場合、マクロ・ランタイムは可能ならストリングを変数のフォーマットに変換します。例えば、画面のテキストが 1024 で、変数が整変数の場合、マクロ・ランタイムはストリング 1024 を整数の 1024 に変換し、整変数に値を格納します。フォーマットが無効でストリングを変数のデータ・タイプに変換できない場合、マクロ・ランタイムはランタイム・エラーを出してマクロを終了します。データ変換について詳しくは、 23 ページの『自動データ・タイプ変換』を参照してください。

172 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 191: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「入力」アクション

入力ストリング「ストリング」フィールドは、アクションに実行させるキー・シーケンスを指定するための入力フィールドです。

文字を表示するキー (a、b、c、#、& など) を指定するには、そのキー自体を入力します。

キーを「アクション・キー」リスト・ボックスから指定するには、目的のキー([backspace] など) までリストをスクロールし、「アクション・キーの挿入」をクリックします。「ストリング」フィールドの次の入力位置に、キーの名前が大括弧で囲まれて表示されます。「アクション・キー」リスト・ボックスにあるキーは、アルファベット順にリストされていないので注意してください。必要なキーを見つけるために、リストをスクロールし続ける必要が生じることがあります。

別の方法として、単に名前自体を大括弧で囲んで入力フィールドに入力する (例:[backspace]) ことにより、アクション・キーを指定することもできます。

3270 ディスプレイ・セッションの「アクション・キー」リストには、次のコピー・アンド・ペースト・キーが表示されます。

[copy] [mark right][copyappend] [mark up][cut] [paste][mark down] [pastenext][mark left] [unmark]

HATS はディスプレイ・セッション (Host On-Demand 端末) を作成しないため、これらのキーは HATS によってサポートされていません。

その他のキーについては、 223 ページの『入力アクションの略号キーワード』を参照してください。

詳しくは、 66 ページの『入力アクション (<input> エレメント)』を参照してください。

マウス・クリック・アクションマウス・クリック・アクションは、ユーザーによるホスト端末上でのマウス・クリックをシミュレートします。実際のマウス・クリックと同様に、クリックが行われたときにマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャンプします。

行と列の指定アクション・タブの下部領域で、マウス・クリックを発生させるホスト端末上の位置 (行と列) を指定します。または、ホスト端末をクリックします。これにより、マクロ・エディターの「行」フィールドと「列」フィールドの値が更新され、テキスト・カーソルの新しい位置が反映されます。

詳しくは、 208 ページの『<mouseclick> エレメント』を参照してください。

第 11 章 拡張マクロ・エディター 173

Page 192: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「一時停止」アクション一時停止アクションは、指定されたミリ秒数の間だけ待機した後、終了します。

具体的には、マクロ・ランタイムは <pause> エレメントを検出し、期間の値を読み取って、指定されたミリ秒数だけ待機します。その後、マクロ・ランタイムは次の項目の実行に進みます。

このアクションは次の場合に使用します。

v 何らかの状況で待機を挿入したいとき。

v ホストがホスト端末を更新するまで待機するとき。詳しくは、 90 ページの『画面の完了』を参照してください。

v デバッグの目的で遅延を追加するとき。

期間」入力フィールドには、ミリ秒数を入力します。デフォルトは 10000 ミリ秒(10 秒) です。

詳しくは、 211 ページの『<pause> エレメント』を参照してください。

「実行」アクション実行アクションは、インポートした Java クラスに属するメソッドを呼び出します( 168 ページの『Java クラスのインポート済みタイプを作成』を参照)。

メソッドの呼び出し「実行するアクション」フィールドにメソッド呼び出しを入力します。変数と同じように、メソッド呼び出しをドル記号 ($) で囲む必要があります ( 105 ページの『メソッド呼び出しの構文』を参照)。マクロ・ランタイムがメソッドを呼び出します。 105 ページの『マクロ・ランタイムが呼び出し先メソッドを検索する方法』も参照してください。

詳しくは、 72 ページの『実行アクション (<perform> エレメント)』を参照してください。

Playmacro アクションPlayMacro アクションは、別のマクロを起動します。

ターゲット・マクロのファイル名と開始画面「マクロ名」フィールドを使用して、ターゲット・マクロの名前を指定します。

「開始画面名」リスト・ボックスは、マクロ・ランタイムがターゲット・マクロ内で最初に処理するマクロ画面を選択するために使用します。

v ターゲット・マクロを通常の開始画面から開始する場合は、「開始画面名」リスト・ボックスの *DEFAULT* 項目を選択するか、値 *DEFAULT* として評価される式を指定します。

v ターゲット・マクロを他の画面から開始する場合は、「開始画面名」リスト・ボックスから画面の名前を選択します。

詳しくは、 74 ページの『PlayMacro アクション (<playmacro> エレメント)』を参照してください。

174 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 193: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「プロンプト」アクションプロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 または5250 アプリケーションに送るか、変数に格納するための強力な機能を備えています。

プロンプト・ウィンドウの表示

プロンプト・ウィンドウの各部分: プロンプト・テキスト (「パスワードを入力してください: ('Please type your password:')」など) は、「プロンプト・テキスト」フィールドではなく「プロンプト名」フィールドに入力する必要があります。(「プロンプト・テキスト」フィールドは、特定のプロンプト・アクションの詳細を説明するメモの保管に使用できるオプションのフィールドです。)

マクロ・ランタイムが表示するプロンプト・ウィンドウには、次の特性があります。

v プロンプト・ウィンドウはセッション・ウィンドウの前面に表示され、システムのデスクトップ・ウィンドウの中央に配置されます。

v プロンプト・ウィンドウのタイトルは、フィールドが空白になっていないか、またはマクロに複数のプロンプトが存在して、マクロの開始時にすべてのプロンプトが表示されるように構成されていない限り、「プロンプト・タイトル (PromptTitle)」フィールドの値になります。それら 2 つのインスタンスでは、プロンプト・ウィンドウのタイトルが「プロンプト」になります。

v 「プロンプト名」フィールドに入力したメッセージは、プロンプト・ウィンドウの中央に表示され、その後に入力フィールドが表示されます。

v プロンプト・ウィンドウの下部にあるボタン行には、次の 3 つのボタンがあります。

– 「OK」ボタンを押すと、マクロ・ランタイムは入力フィールドの内容を処理します。

– 「キャンセル」ボタンは、マクロを停止します。

– 「ヘルプ」ボタンは、プロンプト・ウィンドウの使用法を説明するヘルプ・テキストを表示します。

デフォルトの応答: 「デフォルトの応答」フィールド (オプション) には、プロンプト・ウィンドウが表示されたときに、プロンプト・ウィンドウの入力フィールドに表示したいデフォルト応答のテキストを入力できます。ユーザーがプロンプト・ウィンドウの入力フィールドにキーボードで入力せず、単に「OK」をクリックして入力完了を指示した場合、マクロ・ランタイムは入力フィールドに入っているデフォルト応答を処理します。

例えば、ユーザーが通常は ApplicationA を使用し、ときどき ApplicationB を使用する場合は、「デフォルトの応答」フィールドに ApplicationA と入力できます。マクロ・ランタイムがプロンプト・アクションを実行すると、入力フィールドにテキスト ApplicationA がすでに表示された状態で、プロンプト・ウィンドウが表示されます。「OK」をクリックするか (この場合、マクロは入力フィールドの内容として ApplicationA を処理します)、入力フィールドに ApplicationB と入力して「OK」をクリックできます (この場合、マクロは入力フィールドの内容としてApplicationB を処理します)。

第 11 章 拡張マクロ・エディター 175

Page 194: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

パスワードの応答: 「パスワードの応答」リスト・ボックスで true を選択した場合 (デフォルトは false)、プロンプト・ウィンドウの入力フィールドにキー入力するたびに、マクロ・ランタイムはそのキーに関連した文字の代わりにアスタリスク (*)を表示します。

例えば、「パスワードの応答」リスト・ボックスを true に設定すると (または実行時に true に解決されると)、ユーザーが 'Romeo' と入力した場合に、マクロ・ランタイムは入力フィールドに ***** を表示します。

応答が必要: 「応答が必要 (Require Response)」リスト・ボックスを true (デフォルトは false) に設定すると、以下のようになります。

v マクロ・ランタイムはテキスト・ストリング (必須 (required)) を入力フィールドの右側に表示し、その入力フィールドに入力が必要であることをエンド・ユーザーに示します。

v マクロ・ランタイムは、プロンプト・ウィンドウの入力フィールドにテキストが入るまで、そのプロンプト・ウィンドウの「OK」ボタンを使用不可にします。

– デフォルトの応答を指定してあるか、テキストを入力フィールドに入力していると、入力フィールドにはテキストが入っています。

– 「OK」が使用可能になると、エンド・ユーザーは通常のように「OK」または「キャンセル」をクリックできるようになります。

- 「OK」をクリックすると、マクロはプロンプト・アクションを処理し、そのマクロの処理が続行されます。

- 「キャンセル」をクリックすると、マクロ再生は終了します。

– 「OK」が使用可能にならなくても、「キャンセル」はクリックできます。

- 「キャンセル」をクリックすると、マクロ再生は終了します。

このように、「応答が必要 (Require Response)」を true に設定すると、処理を続行する前に応答が必要であることを (入力フィールドの右側に (必須 (required))を表示することによって) エンド・ユーザーに知らせ、「OK」をクリックする前に入力フィールドにテキストを入力することを (入力フィールドにテキストが入れられるまで「OK」を使用不可にすることによって) エンド・ユーザーに要求する、という効果があります。ただし、プロンプト・アクションにデフォルトの応答が組み込まれていると「OK」は使用可能になり、そのデフォルトの応答が入力フィールドに表示されます。

「応答が必要 (Require Response)」リスト・ボックスで false を選択すると、以下のようになります。

v マクロ・ランタイムは、テキスト・ストリング (必須 (required)) を入力フィールドの右側に表示しません。

v 入力フィールドにテキストが入っているかどうかにかかわらず、マクロ・ランタイムはプロンプト・ウィンドウが表示されるとすぐに、そのプロンプト・ウィンドウの「OK」ボタンを使用可能にします。

– ユーザーは通常のように「OK」または「キャンセル」をクリックできます。

- 「OK」をクリックすると、マクロ・ランタイムはプロンプト・アクションを処理し、マクロの処理が続行されます。プロンプト・アクションで入力フィールドがブランクの場合、マクロ・ランタイムは入力キー・シーケンスをセッション・ウィンドウに送信しません。

176 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 195: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

- 「キャンセル」をクリックすると、マクロ再生は終了します。

このように、「応答が必要 (Require Response)」を false に設定すると、プロンプトの入力フィールドがブランクであっても「OK」をクリックすることによってマクロの処理を続行できる、という効果があります。

<HAScript> エレメント (または <actions> エレメント) の promptall 属性が trueに設定されていて、「応答が必要 (Require Response)」が true に設定されているマクロ (またはマクロ画面) にいくつかのプロンプト・アクションがあれば、マクロ再生の開始時 (またはマクロ画面の再生の開始時) に、マクロ・ランタイムがプロンプト入力フィールドのすべてを 1 つのプロンプト・ウィンドウに表示すると、すべての入力フィールドにテキストが入るまで、マクロ・ランタイムはプロンプト・ウィンドウの「OK」ボタンを使用可能にしません ( 77 ページの『promptall 属性』を参照)。

注: プロンプトの値が抽出によって設定されたグローバル変数に基づいていて、promptall 属性が true に設定されている場合、プロンプトの値が取り出されるまで抽出アクションは実行されません。このため、プロンプトによって使用されるグローバル変数には値が入っていません。グローバル変数を extracts およびprompts とともに使用する場合、promptall 属性を false に設定する必要があります。HATS で記録されるマクロは、デフォルトで promptall=true になっています。

入力フィールドの内容の処理

応答の長さ: 「応答の長さ」フィールドの値は、入力フィールドのサイズではなく、マクロ・ランタイムがユーザーに許可する入力フィールドへの入力文字数を指定します。

例えば、「応答の長さ」フィールドを 10 に設定すると、マクロ・ランタイムは、入力フィールドへの入力を 10 文字のみユーザーに許可します。

アクション・キーとホスト・アクション・キーの変換: マクロ作成者 (「デフォルトの応答」入力フィールド) とユーザー (「プロンプト」ウィンドウの入力フィールド) の両方が、入力アクションの「ストリング」フィールドの場合と同様に ( 173ページの『入力ストリング』を参照)、アクション・キー ([enterreset]、[copy] など) を使用できます。

「ホスト・アクション・キーの変換」リスト・ボックスとその効果は、入力アクションの「ホスト・アクション・キーの変換」リスト・ボックスとまったく同じです( 67 ページの『ホスト・アクション・キーの変換 (xlatehostkeys 属性)』を参照)。このリスト・ボックスを true (デフォルト値) に設定すると、マクロ・ランタイムはアクション・キー・ストリング ([enter] など) をリテラル・ストリングとしてではなくアクション・キーとして解釈します。

ホスト端末での入力シーケンスの処理マクロ・ランタイムが入力シーケンスの入力を開始する位置となるホスト端末上の位置 (行と列) を指定するには、「行」フィールドと「列」フィールドを使用します。マクロ・ランタイムにテキスト・カーソルの現在位置から入力シーケンスの入力を開始させるには、「行」フィールドと「列」フィールドの一方または両方を 0に設定します。入力アクションの場合と同様に、この行と列の位置は、アクション

第 11 章 拡張マクロ・エディター 177

Page 196: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

実行時に 3270 入力フィールドまたは 5250 入力フィールドの中になければなりません。この条件を満たしていない場合、ホスト端末は入力を禁止し、エラー・シンボルをオペレーター情報域に表示します。この応答は、入力が実際のユーザーのキーボード入力である場合の応答と同じです。

「ホスト・フィールドの消去」リスト・ボックスを true に設定すると、マクロ・ランタイムは入力開始前に入力フィールドの内容を消去します。

「カーソルを入力の終わりに移動」フィールドには、入力アクションの同名のボタンと同じ機能と効果があります ( 67 ページの『入力の末尾へカーソルを移動(movecursor 属性)』を参照)。

「画面に書き込まないでください」リスト・ボックスを true に設定すると、入力フィールドに入力シーケンスを表示しないようにマクロ・ランタイムに指示できます。このフィールドは、「変数への割り当て」チェック・ボックスが選択されている場合にのみ使用可能になります。

変数への入力シーケンスの割り当て「変数への割り当て」チェック・ボックスにチェック・マークを付けると、マクロ・ランタイムが入力シーケンスを変数に格納するようにできます。

リスト・ボックスで <新規の変数> エントリーをクリックして、新規変数を作成します。新規変数を指定するためのポップアップ・ウィンドウで、現行マクロが別のマクロから継承する変数の名前を指定でき、また現行マクロ内で作成する新規変数の名前を指定することもできます。現行マクロ内で新規変数を作成する場合は、「このマクロで変数を作成します」チェック・ボックスを選択し、新規変数のタイプを選択します。

マクロ・ランタイムは入力シーケンスをストリングとして保管するので、ストリング変数を入力を受け取る変数に指定できます。ただし、変数がストリング以外のタイプである場合、マクロ・ランタイムは通常の規則に従って、入力データをターゲット変数のデータ・タイプに変換しようと試みます ( 23 ページの『自動データ・タイプ変換』を参照)。

SQLQuery アクションSQLQuery アクションは、非常に便利で強力なアクションです。これにより、SQLステートメントをホスト・データベースに送信し、SQL ステートメントによって出力される任意のデータを検索して、そのデータを Host On-Demand マクロ変数に書き込むことができます。

SQL ステートメントを手動で作成、または SQL ステートメントを SQL ウィザードで作成およびテストすることができます。

ステートメント・セクションと結果セクションSQLQuery アクション・ウィンドウには、2 つの主なセクション (ステートメント・セクションと結果セクション) があります。

ステートメント・セクションはウィンドウの上部の領域にあり、ここにはフィールド「データベース URL」、「ドライバー ID」、「ドライバー・クラス」、「ユー

178 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 197: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ザー ID」、「パスワード」、および「ステートメント」があります。このセクションの情報は、以下の 2 つの方法で変更できます。

v SQL ステートメントを SQL ウィザードで作成

v 情報をフィールドに入力

また、どのフィールドも、フィールドに入力することによっていつでも編集できます。

結果セクションはウィンドウの下部の領域にあり、ここには残りのフィールドの「結果の出力先 (Output Result To)」($HMLSQLUtil$ マクロ変数) があります。

SQL ウィザードの使用SQL ウィザードを使用すると、SQL ステートメントを作成してテストできます。SQL ウィザードのグラフィカル・ユーザー・インターフェースを使用すると、SQL ステートメントのテキスト全体を AME の「ステートメント (Statement)」フィールドに入力することに比べて、はるかに簡単に SQL ステートメントを作成できます。また、SQL ウィザードでは、作業中の SQL ステートメントを実行して結果を表示することができます。

1. 「SQL ウィザード」をクリックしてウィザードを開始します。

v ステートメント・セクションのフィールドに情報があれば、 HATS はその情報を使用して、SQL ウィザードの該当するフィールドを初期化します。

2. SQL ウィザードを使用すると、SQL ステートメントを作成してテストできます。

3. マクロを変更しないで SQL ウィザードをクローズするには、「キャンセル」をクリックします。

4. SQL ステートメントをマクロに保管するには、次のいずれかのアクションを実行する。

v SQL ウィザードの「検討 (Review)」タブで「保存」をクリックします。

v SQL ウィザードの「結果 (Results)」タブで「SQL の保存 (Save SQL)」をクリックします。

AME は、SQL ウィザードで作成された情報をステートメント・セクションの該当するフィールドに書き込みます。ステートメント・セクションのフィールドにあった既存の情報は、すべて上書きされます。 AME がフィールドに書き込む情報がストリングなら (例えば、「データベース URL (Database URL)」フィールドに書き込まれる情報)、 AME は自動的に、基本マクロ・タイプに基づいてストリングを正しく形式設定します。以下のフィールドが更新されます。

v ステートメント・セクションのフィールド:

– データベース URL

– ドライバー ID (Driver Identifier)

– ドライバー・クラス (Driver Class)

– ユーザー ID

– パスワード

– ステートメント

5. 「キャンセル」をクリックして SQL ウィザードを閉じます。

第 11 章 拡張マクロ・エディター 179

Page 198: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ステートメント・セクションのフィールドの使用SQL ステートメントを SQL ウィザードで作成する代わりに、情報をステートメント・セクションのフィールドに直接入力することもできます。また、SQL ステートメントを作成した後も、どのフィールドにも入力できます。

データベース URL: 「データベース URL」フィールドに、データベースへのアクセスを提供するデータベース・サーバーのデータベース URL を入力します。データベース URL の形式は、データベースにアクセスするために使用する JavaDatabase Connectivity (JDBC) ドライバーのタイプによって異なります (ドライバーについて詳しくは、『ドライバー ID とドライバー・クラス』を参照)。

リモート・サーバーは、アプリケーション・セッションが接続されているホスト以外のホスト上にあってもかまいません。例えば、 SQLQuery アクションは、同じSQLQuery アクションが System z® ホストに接続された 3270 ディスプレイ・セッションで実行されているマクロの一部であっても、IBM i ホストを指定できます。

データベース URL の正しい形式については、そのドライバーのベンダーが提供する文書を調べてください。

ドライバー ID とドライバー・クラス: SQLQuery アクションでデータベースにアクセスするために使用する JDBC ドライバーは、リモート・ホスト上のサーバー・プログラムと通信するために HATS アプリケーションが使用する、 Java クライアント・パッケージです。リモート・ホスト上のこのサーバー・プログラムを使用すると、データベースへのアクセスを行うことができます。

JDBC ドライバーが必要であれば、リモート・データベース・サーバーの管理者に連絡し、ドライバーを入手してください。

マクロ・エディターの「SQLQuery アクション」ウィンドウにある「ドライバーID (Driver Identifier)」リスト・ボックスで、「その他」を選択します。

「ドライバー ID (Driver Identifier)」リスト・ボックスで「その他」を選択すると、ドライバーの完全修飾クラス名を「ドライバー・クラス (Driver Class)」フィールドに入力する必要があります。完全修飾クラス名が分からない場合は、ドライバーの提供元に連絡してください。名前を入力する場合は、大/小文字に注意してください (例えば、com と COM は異なります)。

ユーザー ID とパスワード: データベース接続にユーザー ID とパスワードが必要なら、ユーザー ID を「ユーザー ID」フィールドに、パスワードを「パスワード」フィールドに入力してください。

HATS は、「パスワード」フィールドに入力されたキー・シーケンスを暗号化します。この暗号化は、「パスワード」チェック・ボックスが入力アクションで選択されているときに行われる暗号化とまったく同様に動作します ( 67 ページの『encrypted 属性』を参照)。要確認:

v パスワード (例えば mypass) が「パスワード」フィールドに入力されると、AME はそのパスワードをアスタリスク (******) で表示します。

180 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 199: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 入力フォーカスを別の入力フィールドに移動すると、AME は以下のように処理します。

1. パスワードの暗号化バージョン (例えば q0eqOskTUBQ=) を生成します。

2. 「パスワード」フィールドに、パスワードの暗号化バージョンをアスタリスク (************) で表示します。(このパスワードの暗号化バージョンは、AME で実際の文字を見ることができます。)

v パスワードはストリングです。そのため、拡張マクロ形式を使用している場合は、パスワードを単一引用符で囲んで入力することに注意してください (例えば'mypass')。 AME は、単一引用符を含め、ストリング全体を暗号化します。

v AME が暗号化した後でパスワードを変更する必要がある場合、新しいパスワードを入力する前に、必ずフィールドの文字を完全に削除してください。

注: プロンプトのデフォルト値は、暗号化されずにマクロ・ファイルに保管されます。デフォルト値は、マクロ・エディターでプロンプトを編集するときにはプレーン・テキストで表示されます。したがって、プロンプトを使用してパスワードを指定する方法を実行するのは適切ですが、セキュリティー上の理由から、パスワードのデフォルト値は指定しないようにします。

ステートメント: SQL ステートメントを「ステートメント (Statement)」フィールドに貼り付けるか、入力します。既に SQL ステートメントが「ステートメント」フィールドに入っていれば、 (その SQL ステートメントが SQL ウィザードで作成されたものであっても) 編集できます。

AME は、SQL ステートメントの形式の妥当性を検査しません。形式が無効である場合、マクロ・ランタイムが SQLQuery アクションを実行するときにランタイム・エラーが発生します。

SQL ステートメントを複数行にわたって書き込むことも、すべてを 1 行に書き込むこともできます。図 77 および図 78 は、同じ SQL ステートメントが、複数行にわたって書き込まれた場合と 1 行に書き込まれた場合を示します。どちらも正しい方法です。

SELECT*

FROMSQLTEST.EX01

WHERE(

( SQLTEST.EX01.DESCRIPT is not null ))

図 77. 複数行にまたがって書き込まれた SQL ステートメント

SELECT * FROM SQLTEST.EX01 WHERE((SQLTEST.EX01.DESCRIPT is not null))

図 78. 1 行に書き込まれた同じ SQL ステートメント

第 11 章 拡張マクロ・エディター 181

Page 200: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

拡張マクロ形式を使用している場合、SQL ステートメントを単一引用符で囲まなければならないこと、また特殊文字の規則に従わなければならないことに注意してください。下記の図 79 および 図 80 は、基本マクロ形式用と拡張マクロ形式用の同じ SQL ステートメントを示しています。

予約語 (例えば select)、およびデータベース名とフィールド (例えばhodtest.ex01.descript) には大文字も小文字も使用できますが、マッチング・ストリング (例えば 'Edit Products') には大/小文字を正しく使用する必要があります。したがって、図 81 の 2 つの SQL ステートメントは同等です。

結果セクションの使用結果セクションのフィールドは、SQL ステートメントから生成されたデータをSQLQuery アクションがどのように使用するかを制御します。データは、 HostOn-Demand マクロ変数に書き込むことができます。

データをマクロ変数 ($HMLSQLUtil$) に保管: SQLQuery アクションで生成されたデータのデフォルト宛先は、 Host On-Demand マクロ変数 $HMLSQLUtil$ です。Host On-Demand ランタイムは、常にこの変数を正しく完了した SQLQueryアクションの結果で更新します。

データを $HMLSQLUtil$ に保管するには、「結果の出力先 (Output Result To)」リスト・ボックスを展開して $HMLSQLUtil$ をクリックします。

$HMLSQLUtil$ に保管されているデータを後続のマクロ・アクションで使用するには、$HMLSQLUtil$ に関連する Host On-Demand マクロ・ユーティリティー・ライブラリー (HML ライブラリー) からメソッドを呼び出す必要があります。 116ページの『$HMLSQLUtil$』を参照してください。

select * from hodtest.ex01 where((hodtest.ex01.descript='Edit Products'))

図 79. 基本マクロ形式で作成された SQL ステートメント

'select * from hodtest.ex01 where((hodtest.ex01.descript=¥'Edit Products¥'))'

図 80. 拡張マクロ形式用の同じ SQL ステートメント

select * from hodtest.ex01 where((hodtest.ex01.descript='Edit Products'))

SELECT * FROM HODTEST.EX01 WHERE((HODTEST.EX01.DESCRIPT='Edit Products'))

図 81. 同等の大文字および小文字の例

182 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 201: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

SQLQuery アクションを双方向言語で使用双方向言語 (アラビア語およびヘブライ語) の場合、SQLQuery が正しく機能するためには、一部の特定のパラメーターを設定する必要があります。 AME には、オプションにアクセスするための「拡張」ボタンがあります。この「拡張」ボタンは、ワークステーションが双方向言語用に構成されている場合のみ、表示されます。

追加のプロパティーは以下のとおりです。

ホスト・ファイル・タイプ (Host-File Type)ホスト・ファイルが論理形式と可視形式のどちらで保存されるかを指定します。デフォルトは「可視」です。

ローカル・ファイル・タイプ (Local-File Type)ローカル・ファイルが論理形式と可視形式のどちらかを指定します。デフォルトは「論理 (Logical)」です。

ホスト・ファイルの方向 (Host-File Orientation)ホスト・ファイルを「左から右」形式と「右から左」形式のどちらで保存するかを指定します。デフォルトは「左から右」です。

ラーム/アリフ拡張 (Lam-Alef Expansion)ラーム/アリフ文字の動作を指定します。アラビア語データを SQL ウィザード・ステートメントでホストから受信するとき、ラーム/アリフ文字は 2つの文字に拡張され、ラーム/アリフ文字の後にスペースがあれば、ラームの後にアリフが続きます。

ラーム/アリフ圧縮 (Lam-Alef Compression)ラーム/アリフ文字の動作を指定します。アラビア語データを SQL ウィザード・ステートメントでホストに送信するとき、アリフが後に続くラーム文字は 1 つの文字に圧縮され、ラーム/アリフ文字の後にスペースが追加されます。このオプションは、アラビア語のシステムでのみ使用可能です。デフォルトは「オン」です。

数表示形状 (Numerals Shape)SQL ウィザード・ステートメントでのホスト・ファイル上の数表示の形状を指定します。数表示形状は NOMINAL、NATIONAL、またはCONTEXTUAL です。このオプションは、アラビア語のシステムでのみ使用可能です。デフォルトは NOMINAL です。

ラウンド・トリップ (Round Trip)数表示の動作を指定します。アラビア語/ヘブライ語の文字が前にあれば、数表示の取り消しを不可にします。デフォルトは「オン」です。

対称スワッピング (Symmetric Swapping)大括弧などの対称文字の動作を指定します。画面を逆向きにすると、双方向文字はその相手側と代わります。デフォルトは「オン」です。

詳しくは、 78 ページの『SQLQuery アクション (<sqlquery> エレメント)』を参照してください。

第 11 章 拡張マクロ・エディター 183

Page 202: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

「トレース」アクション「トレース」アクションは、指定のトレース宛先 (HATS Toolkit コンソールやWebSphere コンソールなど) にトレース・メッセージを送信します。また、HATSはマクロ・トレースを HATS ランタイム・トレースに追加します。

トレースの仕様「トレース・ハンドラー」リスト・ボックスを使用して、トレース・メッセージを送信する宛先を指定します。

v トレース・メッセージを Host On-Demand トレース機能に送るには、「HostOn-Demand トレース機能」を選択します。

v トレース・メッセージをユーザー・トレース・ハンドラーに送るには、「ユーザー・トレース・イベント」を選択します。

v メッセージをコンソールに送信するには、「コマンド行」を選択します。

トレース宛先に送るストリングを指定するには、「トレース・テキスト」入力フィールドを使用します。

詳しくは、 79 ページの『トレース・アクション (<trace> エレメント)』を参照してください。

変数更新アクション変数更新アクションは、変数に値を格納します。マクロの実行中に、マクロ・ランタイムはアクションを実行して、指定の値を指定された変数に格納します。

次の項目を指定する必要があります。

v 変数の名前

v 変数に格納する値

詳しくは、 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照してください。

184 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 203: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 2 部 Host On-Demand マクロ言語

© Copyright IBM Corp. 2003, 2015 185

Page 204: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

186 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 205: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 12 章 マクロ言語の機能

この章では、Host On-Demand マクロ言語の構文、編集、階層、コメント、およびデバッグ機能について説明します。

構文と編集

Host On-Demand マクロ言語の XML 構文Host On-Demand マクロは、Host On-Demand マクロ言語の XML エレメントを使用して XML スクリプトに保管されます。ここでは XML のいくつかの規則について説明し、Host On-Demand マクロ言語の例を示します。

v XML コードはエレメントで構成されます。Host On-Demand マクロ言語には、約 35 の XML エレメントがあります。

v マクロ言語のエレメント名には大文字小文字の区別はありません。ただし、エレメントの開始タグと終了タグの両方に大文字と小文字の同じ組み合わせを使用する必要があるという意味では、大文字小文字の区別があります。次のスクリプトはすべて正常です。省略符号 (...) は XML テキストの一部ではなく、エレメントの中に他のエレメントが含まれていることを示します。

<screen> ... </screen><Screen> ... </Screen><scrEen> ... </scrEen>

ただし、通例として、マスター・エレメントは HAScript と入力し、その他のエレメントはすべて小文字で入力します。

v 次に示す Host On-Demand マクロ言語の例のように、それぞれの XML エレメントには開始タグと終了タグがあります。

<HAScript> ... </HAScript><import> ... </import><vars> ... </vars><screen> ... </screen>

v オプションで、XML エレメントの開始タグと終了タグを 1 つのタグに結合できます。このオプションは、XML エレメントが属性を指定するだけで、他のエレメントを含まない場合に便利です。例えば、以下のようになります。

<oia ... /><numfields ... />

v エレメントには、attribute_name="attribute_value" の形式の属性を指定できます。例えば、次のように指定します。

<oia status="NOTINHIBITED" optional="false" invertmatch="false"/><numfields number="80" optional="false" invertmatch="false"/>

空の二重引用符の対 (つまり、間に何も入らない 2 つの二重引用符) を使用すると、属性に値を設定しないことを指定できます。

<HAScript name="ispf_ex1" description="" timeout="60000" ... author="" ...>...

</HAScript>

© Copyright IBM Corp. 2003, 2015 187

Page 206: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v HTML とほぼ同じように、エレメントの開始タグと終了タグの間に他のエレメント全体を含めることができます。次の例では、<description> エレメントに、<oia> エレメントと <numfields> エレメントの 2 つのエレメントが含まれています。

<description><oia status="NOTINHIBITED" optional="false" invertmatch="false"><numfields number="80" optional="false" invertmatch="false"/>

</description>

ソース表示編集マクロ・スクリプトの XML テキストは、ソース表示で直接編集できます。

ソース表示とシステム・クリップボードの間で、テキストのカット・アンド・ペーストを行うことができます。この機能は、ソース表示と他の XML エディター (またはテキスト・エディター) との間でのテキストの転送を可能にするものなので、非常に重要です。

エレメントの階層189 ページの図 82 は、HATS でサポートされる Host On-Demand マクロ言語

の XML エレメントすべての開始タグをリストします。このリストは、XML 構文の観点から見て有効なものではなく、同じタイプのエレメントを複数指定できる個所を示していません。ただしこのリストでは、他の XML エレメント内で指定できる XML エレメントをインデントによって示しています。例えば、リストの最初にあるエレメント (<HAScript> エレメント) はまったくインデントされていません。これは、このエレメントがマスター・エレメントであり、他のエレメントをすべて含むことを示しています。 2 番目のエレメント (<import> エレメント) は、<HAScript> エレメントの内側にあり、<type> エレメントなどを含みます。

188 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 207: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

エレメントの階層と、対応するマクロ・スクリプトの構造については、本書のさまざまな個所で説明しています。特に、次のセクションを参照してください。

v <HAScript> エレメントについては、 12 ページの『マクロ・スクリプトの概念視点』を参照。

v <screen> エレメントについては、 15 ページの『マクロ画面の概念視点』を参照。

個々のエレメントの説明については、 193 ページの『第 13 章 マクロ言語エレメント』を参照してください。

マクロ・スクリプトへのコメントの挿入XML スタイルのコメント・ブラケット <!-- --> を使用してコメントのテキストを囲むことにより、<HAScript> エレメント内の任意の個所にコメントを挿入できます。

コメントは、次の用途に便利です。

v 説明文を付けてマクロ・スクリプトを整理する。

v 複雑な事項を説明してマクロ・スクリプトを文書化する。

<HAScript> スクリプト内の他のエレメントをすべて囲みます。<import> <type> エレメントのコンテナー。

<type> インポートしたデータ・タイプ (Java クラス) を宣言します。<vars> <create> エレメントのコンテナー。

<create> 変数を作成し、初期化します。<screen> 1 つのマクロ画面に関する情報を含む画面エレメント。

<description> 記述子のコンテナー。<attrib> 特定のフィールド属性を記述します。<cursor> カーソルの位置を記述します。<customreco> カスタム認識エレメントを参照します。<numfields> 画面内のフィールドの数を記述します。<numinputfields> 画面内の入力フィールドの数を記述します。<string> 画面の文字ストリングを記述します。<varupdate> 変数に値を割り当てます。

<actions> アクションのコンテナー。<commwait> 指定の通信状況が発生するまで待ちます。<custom> カスタム・アクションを呼び出します。<extract> ホスト・アプリケーション画面からデータをコピーします。<else> else 条件を挿入できます。<if> if 条件を挿入できます。<input> ホスト・アプリケーションにキー・ストロークを送ります。<mouseclick> マウス・クリックをシミュレートします。<pause> 指定の時間だけ待ちます。<perform> ユーザー提供の Java メソッドを呼び出します。<playmacro> 別のマクロを呼び出します。<prompt> ユーザーにプロンプトを出して情報の入力を促します。<trace> トレース・レコードを書き出します。<sqlquery> SQL ステートメントをホスト・データベースに送信し、データ

を検索して、そのデータを書き込むか、または表示します。<varupdate> 変数に値を割り当てます。

<nextscreens> <nextscreen> エレメントのコンテナー。<nextscreen> 有効な次のマクロ画面の名前を指定します。

<recolimit> 認識限界に達した場合にアクションを行います。

図 82. HATS でサポートされる Host On-Demand マクロ言語のエレメントの階層

第 12 章 マクロ言語の機能 189

Page 208: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v マクロ・スクリプトをデバッグする際に、エレメントのどの部分が問題の原因になっているか判別するために、実行可能なエレメントをコメント化する。

コメント・エラーソース表示は、次の状況が発生するとエラー・メッセージを表示します。

v コメントがネストしている

v コメントが実行可能エレメントの一部をコメント化している

また、<HAScript> エレメントの外側でブラケット <!-- --> を使用することはできません。このようにした場合、ソース表示は、スクリプトを保存する際にこれらのコメント・ブラケットとその内側のテキストを破棄します。

コメントの例以下に、コメント・ブラケット <!-- --> を使用してコメントを挿入する例をいくつか示します。

<!--A multi-line comment that comments onthe following <screen> element--><screen name="Screen1" entryscreen="true" exitscreen="false" transient="false">

<!-- A comment on the following <description> element --><description>

<oia status="NOTINHIBITED" optional="false" invertmatch="false" /></description>

<!-- A comment on the following <actions> element --><actions>

<mouseclick row="4" col="16" /><input value="3[enter]" row="0" col="0" movecursor="true"

xlatehostkeys="true" /></actions><!--BEGINAn accidental comment that surrounds part ofa <nextscreens> element, thereby corruptingthe macro script.You will get an error when you try to savethis macro script<nextscreens timeout="0" >

<nextscreen name="Screen2" />END of accidental comment--></nextscreens></screen>

<trace> エレメントを使用したマクロ・スクリプトのデバッグデバッグの際に <trace> エレメントを使用して、テキストと値をトレース出力先に送ることができます。特に、出力に変数の名前を組み込むと、マクロ・ランタイムは変数の名前と値の両方を中括弧 {} で囲んで出力に表示します。次に例を示します。

190 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 209: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

上記の図のコードは、次のテキストをコンソールに出力します。

<trace> アクションでは各変数が中括弧 {} で囲まれて表示され、括弧内には変数名と変数の内容が含まれています。

<vars><create name="$var1$" type="string" value="'original'" /></vars>..<actions><trace type="SYSOUT" value="'Before update: '+$var1$" /><varupdate name="$var1$" value="'updated'" /><trace type="SYSOUT" value="'After update: '+$var1$" /></actions>

図 83. <trace> エレメントの使用例

Before update: +{$var1$ = original}After update: +{$var1$ = updated}

図 84. <trace> エレメントの使用例の出力

第 12 章 マクロ言語の機能 191

Page 210: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

192 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 211: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

第 13 章 マクロ言語エレメント

この章では Host On-Demand マクロ言語エレメントとその属性について説明し、マクロ言語エレメントを使用してマクロを作成する方法を示します。

属性の指定

XML 要件マクロ言語では、どの属性の値も二重引用符で囲む必要があります。例えば、次の<mouseclick> エレメントでは、row と col 属性の値が二重引用符で囲まれます。

<mouseclick row="4" col="51" />

属性値の拡張形式前述のように、マクロが拡張形式であっても、マクロ・エディター内のすべての入力フィールドで、ストリングが単一引用符 ('') で囲まれるわけではありません( 17 ページの『ストリングと非英数字文字の表記』を参照)。

同様に、マクロ言語では、拡張形式によって影響を受けるこれらの入力フィールドのいずれかに対応する属性に、ストリング値を指定する場合、そのストリングを拡張形式で入力する必要があります。

<input value="'3[enter]'" row="0" col="0" movecursor="true"xlatehostkeys="true" encrypted="false" />

しかし、属性が、拡張形式によって影響を受ける入力フィールドのいずれかに対応しない場合、マクロが拡張形式であっても、単一引用符で囲まれた値を入力する必要はありません。例えば、<screen> エレメントの name 属性は単一引用符で囲みません。

<screen name="Screen1" entryscreen="true" exitscreen="true" transient="false" >...

</screen>

マクロ言語エレメントについてのこの章の説明では、データ・タイプを指定しないことによって、こうした属性 (拡張形式によって影響を受けない属性) を示します。例えば、<screen> エレメントの name 属性の記述は、「必須のストリング」ではなく、「必須」です。

タイプ付きデータ大部分の属性には、特定のデータ・タイプ (ブール、整数、ストリング、倍精度、またはインポート済み) が必要です。これらの属性には、マクロ・エディターと同じ規則が適用されます。

v 基本マクロ形式または拡張マクロ形式を選択した結果 ( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。

v ストリングと特殊文字を表す規則、および演算子文字を扱う規則 ( 17 ページの『ストリングと非英数字文字の表記』を参照)。

© Copyright IBM Corp. 2003, 2015 193

Page 212: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 等価エンティティーの規則 ( 24 ページの『等価』を参照)。

v データ・タイプ変換の規則 ( 23 ページの『自動データ・タイプ変換』を参照)。

v 算術演算子と式の規則 ( 21 ページの『算術演算子および式』を参照)。

v ストリング連結演算子の規則 ( 22 ページの『ストリング連結演算子 (+)』を参照)。

v 条件演算子と論理演算子および式の規則 ( 22 ページの『条件演算子と論理演算子および式』を参照)。

v 変数を表す規則 ( 98 ページの『マクロ変数とインポート済みタイプの概要』を参照)。

v インポートした変数でメソッドを呼び出す規則 ( 105 ページの『Java メソッドの呼び出し』を参照)。

<actions> エレメント<actions> エレメント、<description> エレメント、および <nextscreens> エレメントは、<screen> エレメント内に存在する 3 つの基本構造エレメントです ( 15ページの『マクロ画面の概念視点』を参照)。

<actions> エレメントには、マクロの再生時にマクロ・ランタイムが実行する、アクションと呼ばれるエレメント (例えば、キー・ストロークのシミュレート、データの取り込みなど) が含まれます ( 59 ページの『第 7 章 マクロ・アクション』を参照)。

属性promptall

オプションのブール (デフォルトは false)。この属性が true に設定されると、マクロ・ランタイムは、<actions> エレメント内のアクションを実行する前に、そのエレメント内の <prompt> エレメントに対するユーザー入力を収集します。具体的には次のとおりです。

1. マクロ・ランタイムは、<actions> エレメントを検索して、そのエレメント内にある <prompt> エレメントを見つける。

2. マクロ・ランタイムは、すべての <prompt> エレメントのプロンプトをただちに表示する (すべてのプロンプトは 1 つのポップアップに結合されます)。

3. マクロ・ランタイムは、すべてのポップアップ・ウィンドウのユーザー入力を収集する。

4. マクロ・ランタイムは、<actions> エレメント内のすべてのエレメントを、通常どおりに順に実行する。

5. マクロ・ランタイムは、<prompt> アクションに達すると、ユーザー入力用のポップアップ・ウィンドウを表示するのではなく、上記のステップ 3 からの入力を使用して <prompt> アクションを実行する。

<HAScript> エレメントの promptall 属性は、1 つのマクロ内のすべての<prompt> エレメントに対して同じ機能を実行します ( 203 ページの『<HAScript> エレメント』を参照)。

194 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 213: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

XML サンプル

<attrib> エレメント<attrib> エレメントは、行と列の位置、および 3270 または 5250 属性の値を指定する記述子です ( 48 ページの『属性記述子 (<attrib> エレメント)』を参照)。

属性plane 必須。属性が置かれているデータ平面。有効な値は次のとおりです。

v FIELD_PLANE

v COLOR_PLANE

v DBCS_PLANE

v GRID_PLANE

v EXFIELD_PLANE

v 上記のいずれかに評価される任意の式

value 必須。形式 0x37 の 16 進値。属性の値。

row 必須の整数。データ平面内の属性の行の位置。

col 必須の整数。データ平面内の属性の列の位置。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<comment> エレメント<comment> エレメントは、テキスト・コメントを <screen> エレメント内のサブエレメントとして挿入します。制限事項は次のとおりです。

v <screen> エレメントの外で <comment> エレメントを使用できない。

<actions promptall="true">...

</actions>

図 85. <actions> エレメントの例

<attrib value="0x3" row="4" col="14" plane="COLOR_PLANE"optional="false" invertmatch="false" />

図 86. <attrib> エレメントの例

第 13 章 マクロ言語エレメント 195

Page 214: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

v 同じ <screen> エレメント内で複数の <comment> エレメントを使用できない。このようにした場合、ソース表示は、<screen> エレメント内の <comment> エレメントを、最後の 1 つを除いてすべて破棄します。

v <screen> エレメント内のどこに <comment> エレメントを置いても、ソース表示は、そのコメントを上に移動して、<screen> エレメント内の最初のエレメントにする。

属性なし。

XML サンプル

コメントを挿入する代替方式コメントを挿入する代替方式では、XML スタイルのコメント大括弧 <!-- --> を使用します。 189 ページの『マクロ・スクリプトへのコメントの挿入』を参照してください。

<commwait> エレメント<commwait> アクションは、セッションの通信状況が、指定された何らかの値に変わるのを待機します ( 60 ページの『通信待機アクション (<commwait> エレメント)』を参照)。タイムアウト値を指定する必要があります。

属性value 必須。待機する通信状況。この値は、次の状態のいずれかである必要があり

ます。

v CONNECTION_INIT

v CONNECTION_PND_ACTIVE

v CONNECTION_ACTIVE

v CONNECTION_READY

v CONNECTION_DEVICE_NAME_READY

v CONNECTION_WORKSTATION_ID_READY

v CONNECTION_PND_INACTIVE

v CONNECTION_INACTIVE

<screen name="Screen2" entryscreen="false" exitscreen="true"transient="false">

<comment>This comment provides information about this macro screen.</comment>...

</screen>

図 87. <comment> エレメントの例

196 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 215: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

timeout必須の整数。ミリ秒単位のタイムアウト値。指定された通信状況が発生しないうちにタイムアウトになる場合、マクロ・ランタイムはアクションを終了します。

XML サンプル

<condition> エレメント<condition> エレメントは、マクロ・ランタイムが画面認識時に評価する条件式を指定します。式が true に評価される場合、マクロ・ランタイムはこの記述子をtrue と評価します。式が false に評価される場合、マクロ・ランタイムはこの記述子を false と評価します ( 48 ページの『条件記述子 (<condition> エレメント)』を参照)。

条件式の詳細については、 22 ページの『条件演算子と論理演算子および式』を参照してください。

属性value 必須式。マクロ・ランタイムが評価する条件式。この条件式には、演算式、

変数、Java メソッド呼び出しからの戻り値、およびその他の条件式を含むことができます。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<commwait value="CONNECTION_READY" timeout="10000" />

図 88. <commwait> エレメントの例

第 13 章 マクロ言語エレメント 197

Page 216: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<create> エレメント<create> エレメントは変数を作成し、初期化します ( 99 ページの『変数の作成』を参照)。

<create> エレメントは、<vars> エレメント内に存在する必要があります。

属性name 必須。変数に割り当てる名前。変数名のスペルには、いくつかの制限があり

ます ( 101 ページの『変数名とタイプ名』を参照)。

type 必須。変数のタイプ。標準のタイプは、ストリング、整数、倍精度、ブール、フィールドです。また、Java クラスを表すインポート済みタイプも定義できます ( 99 ページの『Java クラスのインポート済みタイプを作成』を参照)。

value オプション。変数の初期値。初期値を指定しない場合、デフォルトの初期値は変数のタイプによって異なります。

XML サンプル

<description><!-- Check the value of a variable --><condition value="$intPartsComplete$ == 4"

optional="false" invertmatch="false" />

<!-- Check the return value of a Java method --><condition value="$htHashTable.size()$ != 0"$

optional="false" invertmatch="false" /></description>

図 89. <condition> エレメントの例

<HAScript ... usevars="true" ... ><import>

<type class="java.util.Properties" name="Properties" /></import>

<vars><create name="$prp$" type="Properties" value="$new Properties()$" /><create name="$strAccountName$" type="string" value="" /><create name="$intAmount$" type="integer" value="0" /><create name="$dblDistance$" type="double" value="0.0" /><create name="$boolSignedUp$" type="boolean" value="false" /><create name="$fldFunction$" type="field" />

</vars>...

</HAScript>

図 90. <create> エレメントの例

198 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 217: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<cursor> エレメント<cursor> エレメントは、ホスト端末上のテキスト・カーソルの行と列の位置を指定する記述子です ( 48 ページの『カーソル記述子 (<cursor> エレメント)』を参照)。

属性row 必須の整数。テキスト・カーソルの行の位置。

col 必須の整数。テキスト・カーソルの列の位置。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<custom> エレメント<custom> エレメントによって、マクロ画面の <actions> エレメント内からカスタム Java プログラムを呼び出すことができます。

プロセスの概要は次のとおりです。

1. マクロ画面の <actions> エレメントの処理中にアクションとして呼び出す Javaプログラムがあると仮定します。

2. マクロ・エディターで、カスタムの Java プログラムを呼び出す場所にある<actions> エレメントに次の行を追加します。

<custom id="'MyProgram1'" args="'arg1 arg2 arg3'" />

3. MacroActionCustom クラスの指示に従います。MacroCustomActionListenerをインプリメントするクラスを作成します。マクロ・ランタイムがステップ 2の <custom> アクションを実行すると、イベントで、execute() メソッドが呼び出されます。

属性id 必須。実行するカスタムの Java プログラムを示す任意のストリング。

args オプション。カスタムの Java プログラムに渡す引数。

<cursor row="4" col="14" optional="false" invertmatch="false" />

図 91. <cursor> エレメントの例

第 13 章 マクロ言語エレメント 199

Page 218: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

XML サンプル

<customreco> エレメント<customreco> エレメントを使用すると、カスタム記述コードを呼び出すことができます。

カスタム記述子を作成する手順は、次のとおりです。

1. カスタム記述を識別するストリング (例えば、MyCustomDescriptor01) を選択する。複数のタイプのカスタム記述を作成できるので、ID は必須です。

2. ECLCustomRecoListener インターフェースをインプリメントする。doReco()メソッドで、次のことを行います。

a. ストリングが自分のものであることを確認するために、ID ストリングを調べるためのコードを追加する。

b. カスタム記述コードを追加する。

c. カスタム記述に適合する場合は true を戻し、適合しない場合は false を戻す。

3. ソース表示を使用して、<customreco> エレメントをマクロ画面の<description> エレメントに追加する。<customreco> エレメントは、ステップ2 で選択した ID を指定する必要があります。

マクロ・ランタイムは、他のすべての記述子を実行した後、<customreco> エレメントを実行します。

属性id 必須のストリング。このカスタム記述に割り当てた ID。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<custom id="'MyProgram1'" args="'arg1 arg2 arg3'" /><custom id="'MyProgram2'" args="'arg1 arg2'" />

図 92. <custom> エレメントの例

200 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 219: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<description> エレメント<actions> エレメント、<description> エレメント、および <nextscreens> エレメントは、<screen> エレメント内に存在する 3 つの基本構造エレメントです ( 15ページの『マクロ画面の概念視点』を参照)。

<description> エレメントには、記述子と呼ばれるエレメントが含まれます。各記述子は、アプリケーション画面の識別特性を指定します ( 37 ページの『第 5 章 画面記述』を参照)。マクロ・ランタイムは、記述子を使用して、マクロ画面をアプリケーション画面と一致させます。

属性uselogic

オプションのブール。デフォルト結合メソッドで使用可能な複数の記述子間で、より複雑な論理関係を定義できます ( 42 ページの『uselogic 属性』を参照)。

XML サンプル

<else> エレメント<else> エレメントは、一連のマクロ・アクションを含み、<if> エレメントの直後に存在しなければなりません。マクロ・ランタイムは、<if> エレメント内の条件式を評価します。次に、

v 条件式が true である場合

– マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションを実行する。

– マクロ・ランタイムは、後続の <else> エレメントがあれば、これをスキップする。

v 条件式が false である場合

– マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションをスキップする。

<customreco id="'MyCustomDescriptor01'" optional="false" invertmatch="false" />

図 93. <customreco> エレメントの例

<description uselogic="true">...

</actions>

図 94. <description> エレメントの例

第 13 章 マクロ言語エレメント 201

Page 220: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

– マクロ・ランタイムは、後続の <else> エレメント内のマクロ・アクションがあれば、これを実行する。

マクロ・オブジェクトは、<if> エレメント、および必要に応じて <else> エレメントを使用して、条件アクションを保管します ( 61 ページの『条件アクション (<if>エレメントおよび <else> エレメント)』を参照)。

属性なし。

XML サンプル

<extract> エレメント<extract> エレメントは、ホスト端末からデータを取り込みます ( 63 ページの『抽出アクション (<extract> エレメント)』を参照)。

属性下記のすべての属性の使用については、 63 ページの『抽出アクション (<extract>エレメント)』を参照してください。

name 必須のストリング。抽出されたデータに割り当てられる名前。

planetype必須。データ抽出元の平面。有効な値は次のとおりです。

v TEXT_PLANE

v FIELD_PLANE

v COLOR_PLANE

v EXFIELD_PLANE

v DBCS_PLANE

v GRID_PLANE

srow 必須の整数。行と列の座標の最初のペアの行。

scol 必須の整数。行と列の座標の最初のペアの列。

erow 必須の整数。行と列の座標の 2 番目のペアの行。

scol 必須の整数。行と列の座標の 2 番目のペアの列。

<if condition="($var_int$ > 10)">...

</if><else>

...</else>

図 95. <else> エレメントの例

202 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 221: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

unwrapオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、指定された長方形内で始まる任意のフィールドの内容全体を取り込みます。 65 ページの『unwrap 属性』を参照してください。

continuousオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、必要に応じて次の行に折り返す連続した一連のデータの開始と終了の位置として、行と列の座標を解釈します。この属性を false に設定すると、マクロ・ランタイムは、長方形のテキスト域の左上隅と右下隅として、行と列の座標を解釈します。 64 ページの『ホスト端末からのテキスト・シーケンスのキャプチャー』を参照してください。

assigntovarオプションの変数名。この属性を変数名に設定すると、マクロ・ランタイムは、テキスト平面データをストリング値として変数に保管します。変数が、ストリング以外の標準タイプ (つまり、ブール、整数、または倍精度) である場合、可能であれば、データはその標準タイプに変換されます。データが変換できない場合、マクロは、ランタイム・エラーになり、終了します。

screenorientationオプションのストリング。この属性は、実行時のマクロ再生中の抽出に使用するホスト画面方向を定義する場合に使用します。オプションは LTR とRTL です。

XML サンプル

<HAScript> エレメント<HAScript> エレメントは、マクロ・スクリプトのマスター・エレメントです。その他のエレメントを含み、マクロについてのグローバル情報を指定します ( 12 ページの『マクロ・スクリプトの概念視点』を参照)。

属性name 必須。マクロの名前。

descriptionオプション。このマクロについての記述テキスト。このマクロについて覚えておきたい情報をここに組み込みます。

timeoutオプションの整数。画面認識に使用できるミリ秒数。このタイムアウト値が指定されているときに、これを超えると、マクロ・ランタイムは、マクロを

<extract name="'Get Data'" srow="1" scol="1" erow="11" ecol="11"assignto="$strText$" planetype="TEXT_PLANE" />

図 96. <extract> エレメントの例

第 13 章 マクロ言語エレメント 203

Page 222: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

終了し、メッセージを表示します ( 54 ページの『<HAScript> エレメントの timeout 属性』を参照)。デフォルトで、マクロ・エディターはこの値を60000 ミリ秒 (60 秒) に設定します。

pausetimeオプションの整数。「アクション間の一時停止」の遅延 ( 89 ページの『pausetime 属性』を参照)。デフォルトでは、マクロ・エディターはこの値を 300 ミリ秒に設定します。

promptall必須のブール。この属性が true に設定されると、マクロ・ランタイムは、最初のマクロ画面でアクションを実行する前に、マクロ全体内のすべての<prompt> エレメントに対するユーザー入力を収集し、個々のプロンプトを結合して 1 つの大きなプロンプトにします。 <actions> エレメントのpromptall 属性は、1 つの <actions> エレメント内のすべての <prompt>エレメントに対して類似した機能を実行します ( 194 ページの『<actions>エレメント』を参照)。

authorオプション。このマクロの作成者 (単数または複数)。

creationdateオプション。このマクロの日付とバージョンについての情報。

suppresscleareventsオプションのブール (デフォルトは false)。ホスト・アプリケーションが、clear screen コマンドの直後に、データ・ストリーム内のレコード終わり標識を続けて送信するときに、システムが画面イベントを無視するかどうかを判別する拡張機能。アプリケーション・フロー内の画面に、すべてブランクのものがある場合、この値を true に設定できます。マクロ内に有効なブランク画面があるときに、clear コマンドが無視されないと、すべてブランクの画面イベントが、動作不良のホスト・アプリケーションによる clear コマンドによって生成される可能性があります。これにより、画面認識イベントが処理され、有効なブランク画面が、一致してはならないときに一致します。

usevars必須のブール (デフォルトは false)。この属性が true に設定される場合、マクロは拡張マクロ形式を使用します ( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。

ignorepauseoverrideオプション。3270 ディスプレイ・セッションのみ。この属性が true に設定される場合、セッションが、コンテンション解消モードで実行されるTN3270E セッションであれば、マクロ・ランタイムは、すべての <pause>エレメントをスキップします ( 93 ページの『画面の完了に関係する属性』を参照)。特定の <pause> エレメントを再度使用可能にするには、<pause>エレメントの ignorepauseoverrideforenhancedtn 属性を参照してください。

delayifnotenhancedtnオプション。3270 ディスプレイ・セッションのみ。この属性は、ミリ秒単位で値を指定し、セッションがコンテンション解消モードで実行される

204 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 223: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

TN3270E セッションでない 場合だけ効果があります。その状態では、この属性により、マクロ・ランタイムは、OIA 標識が変更されたという通知を受け取るたびに、指定された期間の一時停止を追加します ( 93 ページの『画面の完了に関係する属性』を参照)。

XML サンプル

<if> エレメント<if> エレメントには、条件式と一連のマクロ・アクションが含まれています。マクロ・ランタイムは、<if> エレメント内の条件式を評価します。次に、

v 条件式が true である場合

– マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションを実行する。

– マクロ・ランタイムは、後続の <else> エレメントがあれば、これをスキップする。

v 条件式が false である場合

– マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションをスキップする。

– マクロ・ランタイムは、後続の <else> エレメント内のマクロ・アクションがあれば、これを実行する。

マクロ・オブジェクトは、<if> エレメント、および必要に応じて <else> エレメントを使用して、条件アクションを保管します ( 61 ページの『条件アクション (<if>エレメントおよび <else> エレメント)』を参照)。

属性condition

必須。条件式。条件式には論理演算子と条件演算子を指定でき、また演算式、即時値、変数、および Java メソッドの呼び出しを含む項を指定できます ( 22 ページの『条件演算子と論理演算子および式』を参照)。

XML サンプル

<HAScript name="ispf_ex2" description="ISPF Sample2" timeout="60000"pausetime="300" promptall="true" author="Owner"creationdate="Sun Jun 08 12:04:26 PDT 2003"supressclearevents="false" usevars="true"ignorepauseforenhancedtn="false"delayifnotenhancedtn="0">

...</HAScript>

図 97. <HAScript> エレメントの例

第 13 章 マクロ言語エレメント 205

Page 224: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<import> エレメント<import> エレメント、<vars> エレメント、および <screen> エレメントは、<HAScript> エレメント内に存在する 3 つの基本構造エレメントです ( 12 ページの『マクロ・スクリプトの概念視点』を参照)。

<import> エレメントはオプションです。これには <type> エレメントが含まれ、それぞれが、Java クラスに基づいてインポート済みタイプを宣言します ( 99 ページの『Java クラスのインポート済みタイプを作成』を参照)。

<import> エレメントは、<HAScript> 開始タグの後、かつ <vars> エレメントの前に存在しなければなりません。

属性なし。

XML サンプル

<vars><create name="$condition1$" type="string"/><create name="$condition2$" type="boolean" value="false"/><create name="$condition3$" type="integer"/>

</vars><screen>

<description>...

</description><actions promptall="true">

<extract name="Get condition 1" srow="2" scol="1" erow="2"ecol="80" assigntovar="$condition1$"/>

<extract name="Get condition 2" srow="3" scol="1" erow="3"ecol="80" assigntovar="$condition2$"/>

<extract name="Get condition 3" srow="4" scol="1" erow="4"ecol="80" assigntovar="$condition3$"/>

<if condition="(($condition1$ !='')&&($condition2$)||($condition3$ < 100))">

...</if><else>

...</else>

</actions></screen>

図 98. <if> エレメントの例

206 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 225: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<input> エレメント<input> エレメントは、キー・ストロークのシーケンスをホスト端末に送ります。このシーケンスには、文字 (a、b、c、#、& など) を表示するキーだけでなく、アクション・キー ([enterreset] など) を含めることができます。 ( 66 ページの『入力アクション (<input> エレメント)』を参照)。

属性value 必須のストリング。ホスト端末に送られる一連のキー。

row オプションの整数 (デフォルトは、テキスト・カーソルの現在位置)。入力が開始する行。

col オプションの整数 (デフォルトは、テキスト・カーソルの現在位置)。入力が開始する列。

movecursorオプションのブール (デフォルトは true)。この属性を true に設定すると、マクロ・ランタイムは、テキスト・カーソルを入力の末尾に移動します( 67 ページの『入力の末尾へカーソルを移動 (movecursor 属性)』を参照)。

xlatehostkeysオプションのブール (デフォルトは true)。この属性を true に設定すると、マクロ・ランタイムは、アクション・キー (例えば、[enter]) の名前を、文字シーケンスとしてではなく、アクション・キーとして解釈します( 67 ページの『ホスト・アクション・キーの変換 (xlatehostkeys 属性)』を参照)。

encryptedオプションのブール (デフォルトは false)。この属性を true に設定すると、マクロ・エディターは閉じるときに value 属性に含まれている一連のキーを暗号化します ( 67 ページの『encrypted 属性』を参照)。

XML サンプル

<HAScript .... ><import>

<type class="java.util.Properties" name="Properties" /></import>

<vars><create name="$prp$" type="Properties" value="$new Properties()$" />

</vars>...</HAScript>

図 99. <import> エレメントの例

第 13 章 マクロ言語エレメント 207

Page 226: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<mouseclick> エレメント<mouseclick> エレメントは、ユーザーによるホスト端末上でのマウス・クリックをシミュレートします。実際のマウス・クリックと同様に、クリックが行われたときにマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャンプします。

属性row 必須の整数。マウス・クリックが行われるホスト端末上の行と列の位置の

行。

col 必須の整数。マウス・クリックが行われるホスト端末上の行と列の位置の列。

XML サンプル

<nextscreen> エレメント<nextscreen> エレメントは、マクロ・ランタイムが、特に次に処理するマクロ画面の候補と見なす <screen> エレメント (マクロ画面) の名前を指定します ( 51 ページの『有効な次画面の認識』を参照)。

<nextscreen> エレメントは、<nextscreens> エレメント内に存在する必要があります。

属性name 必須。次に処理するマクロ画面の候補である <screen> エレメントの名前。

XML サンプル

<input value="'3[enter]'" row="4" column="14" movecursor="true"xlatehostkeys="true" encrypted="false" />

図 100. <input> エレメントの例

<mouseclick row="20" col="16" />

図 101. <mouseclick> エレメントの例

208 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 227: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<nextscreens> エレメント<actions> エレメント、<description> エレメント、および <nextscreens> エレメントは、<screen> エレメント内に存在する 3 つの基本構造エレメントです ( 15ページの『マクロ画面の概念視点』を参照)。

<nextscreens> エレメントには、複数の <nextscreen> エレメントが含まれ、各エレメントは、現行のマクロ画面の後に表示されるマクロ画面の名前を指定します( 51 ページの『第 6 章 画面認識』を参照)。

属性timeout

オプションの整数。画面認識タイムアウトの値 (ミリ秒)。マクロ・ランタイムは、このタイムアウト値が満了する前に、名前が有効な次画面のランタイム・リスト上にあるマクロ画面をアプリケーション画面と一致させることができない場合、マクロを終了します ( 54 ページの『画面認識のタイムアウト設定』を参照)。

XML サンプル

<!--The effect of the following <nextscreens> element and its contentsis that when the macro runtime finishes performing the actions inthe current screen, it adds ScreenS and ScreenG to the runtime list ofvalid next screens.--><nextscreens>

<nextscreen name="ScreenS"><nextscreen name="ScreenG">

</nextscreens>

図 102. <nextscreen> エレメントの例

<!--The effect of the following <nextscreens> element and its contentsis that when the macro runtime finishes performing the actions inthe current screen, it will attempt to recognize ScreenS and ScreenG.--><nextscreens>

<nextscreen name="ScreenS"><nextscreen name="ScreenG">

</nextscreens>

図 103. <nextscreens> エレメントの例

第 13 章 マクロ言語エレメント 209

Page 228: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<numfields> エレメント<numfields> エレメントは、ホスト端末上のすべてのタイプの 3270 フィールドまたは 5250 フィールドの数を指定する記述子です ( 44 ページの『「フィールド数」記述子 (<numfields> エレメント)』を参照)。

属性number

必須の整数。ホスト端末上のフィールドの数。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール (デフォルトは false)。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<numinputfields> エレメント<numinputfields> エレメントは、ホスト端末上の 3270 入力フィールドまたは5250 入力フィールドの数を指定する記述子です ( 45 ページの『「入力フィールド数 (Number of Input Fields)」記述子 (<numinputfields> エレメント)』を参照)。

属性number

必須の整数。ホスト端末上のフィールドの数。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール (デフォルトは false)。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<numfields number="10" optional="false" invertmatch="false" />

図 104. <numfields> エレメントの例

210 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 229: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<oia> エレメント<oia> エレメントは、ホスト端末の入力禁止標識の状態を記述する記述子です( 44 ページの『OIA 記述子 (<oia> エレメント)』を参照)。

属性status 必須。次の値にすることができます。

v NOTINHIBITED

マクロ・ランタイムは、入力禁止標識がクリアされているときはこの記述子を true として評価し、入力禁止標識が設定されている場合は falseとして評価します。

v DONTCARE

マクロ・ランタイムは、常にこの記述子を true として評価します。

v NOTINHIBITED か DONTCARE のどちらかに評価される式

マクロ・ランタイムは、この式を評価してから、その結果に応じて、通常通りに記述子を評価します。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<pause> エレメント<pause> エレメントは、指定されたミリ秒数の間、待機します ( 72 ページの『一時停止アクション (<pause> エレメント)』を参照)。

属性value オプションの整数。待機するミリ秒数。この属性を指定しない場合、マク

<numinputfields number="10" optional="false" invertmatch="false" />

図 105. <numinputfields> エレメントの例

<oia status="NOTINHIBITED" optional="false" invertmatch="false" />

図 106. <oia> エレメントの例

第 13 章 マクロ言語エレメント 211

Page 230: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

ロ・オブジェクトは、スクリプトを保存するときに、属性 "value=10000"(10 秒) をこのエレメントに追加します。

ignorepauseoverrideオプションのブール (デフォルトは false)。3270 ディスプレイ・セッション専用。この属性を true に設定すると、マクロ・ランタイムは、<HAScript> エレメントの ignorepauseforenhancedtn 属性が true に設定されている場合であっても、<pause> エレメントを処理します ( 93 ページの『画面の完了に関係する属性』を参照)。

XML サンプル

<perform> エレメント<perform> エレメントは、インポートした Java クラスに属するメソッドを呼び出します ( 99 ページの『Java クラスのインポート済みタイプを作成』を参照)。

<perform> エレメント以外の多くのコンテキストでも、メソッドを呼び出すことができます。しかし、値を戻さないメソッドを呼び出したい場合は、<perform> エレメントが便利です ( 72 ページの『実行アクション (<perform> エレメント)』を参照)。

属性value 必須。変数と同じように、メソッド呼び出しをドル記号 ($) で囲む必要があ

ります ( 105 ページの『メソッド呼び出しの構文』を参照)。マクロ・エディターで実行アクションを作成する場合に使用するのと同じ形式で、メソッド呼び出しのパラメーター (ある場合) を指定する必要があります。

XML サンプル

<pause timeout="5000">

図 107. <pause> エレメントの例

<!-- Call the update() method associated with the class to whichimportedVar belongs (such as mypackage.MyClass).

--><perform value="$importedVar.update( 5, 'Application', $str$)$" />

図 108. <perform> エレメントの例

212 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 231: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<playmacro> エレメント<playmacro> エレメントは、現行のマクロを終了し、別のマクロを起動します( 74 ページの『PlayMacro アクション (<playmacro> エレメント)』を参照)。このプロセスは、マクロのチェーニングと呼ばれます。

<playmacro> エレメントを <actions> エレメント内に配置する場所には、制限があります ( 74 ページの『PlayMacro アクションの追加』を参照)。

属性name 必須。ターゲット・マクロの名前。ターゲット・マクロは、呼び出し側マク

ロと同じロケーションに存在する必要があります。

startscreenオプション。マクロ・ランタイムがターゲット・マクロの処理を開始するマクロ画面 (<screen> エレメント) の名前。マクロ・ランタイムに、ターゲット・マクロの通常の開始画面から開始させるには、値 *DEFAULT* を使用するか、このパラメーターを省略してください。

transfervars必須。この属性を Transfer に設定すると、マクロ・ランタイムは、呼び出し側マクロに属する変数をターゲット・マクロに転送します ( 75 ページの『変数の転送』を参照)。デフォルトは No Transfer です。

XML サンプル

<prompt> エレメント<prompt> エレメントは、ユーザーに入力を求めるポップアップ・ウィンドウを表示し、ユーザーが「OK」をクリックするのを待ってから、その入力をホスト端末に送ります ( 76 ページの『プロンプト・アクション (<prompt> エレメント)』を参照)。

属性name オプションのストリング。'Enter your response here:' のような、ポップ

アップ・ウィンドウに表示されるテキスト。

descriptionオプションのストリング。このアクションの記述。この記述は表示されません。

<playmacro name="ispf_ex1.mac" startscreen="ScreenA"transfervars="Transfer" />

図 109. <playmacro> エレメントの例

第 13 章 マクロ言語エレメント 213

Page 232: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

row 必須の整数。マクロ・ランタイムがユーザー入力データの入力を開始する、ホスト端末上の行。

col 必須の整数。マクロ・ランタイムにユーザー からの入力データの入力を開始させる、ホスト端末上の列。

len 必須の整数。ユーザーがプロンプト入力フィールドに入力できる文字数。

defaultオプションのストリング。ポップアップ・ウィンドウの入力フィールドに表示されるテキスト。ユーザーが入力フィールドにデータを入力せずに単に「OK」をクリックすると、マクロ・ランタイムはこのデフォルト入力をホスト端末に送ります。

clearfieldオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、入力シーケンスをホスト端末に送る前に、指定の行と列の位置がある、ホスト端末の入力フィールドをクリアします。

encryptedオプションのブール。この属性を true に設定すると、ユーザーがウィンドウの入力フィールドにキーを入力するときに、マクロ・ランタイムは、そのキーに関連した文字ではなく、アスタリスク (*) を表示します。

movecursorオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、カーソルを入力の末尾に移動します。

xlatehostkeysオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、アクション・キー (例えば、[enter]) の名前を、文字シーケンスとしてではなく、アクション・キーとして解釈します。

assigntovarオプションの変数名。この属性を変数名に設定すると、マクロ・ランタイムは、ユーザーがここで指定する名前を持つ変数に入力を保管します。

varupdateonlyオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、入力を変数に保管し、ホスト端末にはその入力を送りません。 この属性が有効なのは、assigntovar 属性が true に設定されている場合だけです。

requiredオプションのブール。この属性を true に設定すると、マクロ・ランタイムは、プロンプト・ウィンドウの入力フィールドにテキストが入力されるまで、プロンプト・ウィンドウで「OK」ボタンを使用不可にします。デフォルトの応答を指定してあるか、テキストを入力フィールドに入力していると、入力フィールドにはテキストが入っています。

screenorientationオプションのストリング。この属性は、実行時のマクロ再生中のプロンプトに使用するホスト画面方向を定義する場合に使用します。オプションは LTRと RTL です。

214 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 233: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

XML サンプル

<recolimit> エレメント<recolimit> エレメントは、<description>、<actions>、および <nextscreens> エレメントと同じレベルで、<screen> エレメント内に存在するオプションのエレメントです ( 55 ページの『認識限界』を参照)。

<recolimit> エレメントを使用すると、指定された回数より多くこのエレメントが表示されるマクロ画面をマクロ・ランタイムが処理する場合、アクションを取ることができます。

属性value 必須の整数。認識限界。マクロ・ランタイムがマクロ画面を何度も認識する

場合、マクロ・ランタイムは、このマクロ画面のアクションを処理するのではなく、指定されたアクションを実行します。

goto オプションのストリング (デフォルトは、マクロ・ランタイムがエラー・メッセージを表示し、マクロを終了することです)。認識限界に達したときにマクロ・ランタイムが処理を開始する、マクロ画面の名前。

XML サンプル

<screen> エレメント<screen> エレメント、<import> エレメント、および <vars> エレメントは、<HAScript> エレメント内に存在する 3 つの基本構造エレメントです ( 12 ページの『マクロ・スクリプトの概念視点』を参照)。

マクロ内には、複数の screen エレメントが存在できます。 1 つの <screen> エレメントには、1 つのマクロ画面のすべての情報が入っています ( 14 ページの『マクロ画面とそのサブコンポーネント』を参照)。

<prompt name="'ID'" row="1" col="1" len="8" description="'ID for Logon'"default="'guest'" clearfield="true" encrypted="true"assigntovar="$userID$" varupdateonly="true" required="true"/>

図 110. <prompt> エレメントの例

<recolimit value="1" goto="RecoveryScreen1" />

図 111. <recolimit> エレメントの例

第 13 章 マクロ言語エレメント 215

Page 234: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<screen> エレメントには、3 つの基本構造エレメント (<actions> エレメント、<description> エレメント、および <nextscreens> エレメント) が含まれます ( 15ページの『マクロ画面の概念視点』を参照)。

属性name 必須。この <screen> エレメント (マクロ画面) の名前。この名前は、すで

に存在している <screen> エレメントの名前と同じあってはなりません。

entryscreenオプションのブール (デフォルトは false)。この属性を true に設定すると、マクロ・ランタイムは、この <screen> エレメントをマクロの有効な開始画面として取り扱います ( 51 ページの『エントリー画面』を参照)。

exitscreenオプションのブール (デフォルトは false)。この属性を true に設定すると、マクロ・ランタイムは、この <screen> エレメントをマクロの有効な終了画面として取り扱います ( 52 ページの『終了画面』を参照)。

transientオプションのブール (デフォルトは false)。この属性を true に設定すると、マクロ・ランタイムは、いつでも表示される可能性があり、常にクリアする必要がある画面として、この <screen> エレメントを取り扱います( 52 ページの『一時画面』を参照)。

pause オプションの整数 (デフォルトは -1)。この属性の値をミリ秒単位で指定すると、マクロ・ランタイムは、この <screen> エレメントに対して、(<HAScript> エレメントの pausetime 属性を使用して設定された)「アクション間の一時停止」のデフォルト遅延を無視し、代わりにこの値を使用します ( 90 ページの『pause 属性』を参照)。

XML サンプル

<screen name="ScreenB" entryscreen="false" exitscreen="false"transient="false">

<description>...

</description><actions>

...</actions><nextscreens>

...</nextscreens>

</screen>

図 112. <screen> エレメントの例

216 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 235: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<sqlquery> エレメント<sqlquery> エレメントは、SQL ステートメントをデータベースに送信し、SQL ステートメントの結果のデータがあれば取得します。次に、マクロ変数にデータを格納します ( 78 ページの『SQLQuery アクション (<sqlquery> エレメント)』を参照)。

属性url 必須のストリング。SQL ステートメントの送信先のデータベース・サーバ

ーのデータベース URL(例えば、jdbc:as400://myHost)。

driver 必須のストリング。データベース・サーバーと接続するために使用するドライバーの完全修飾パッケージ名 (例えば、COM.ibm.db2.jdbc.app.DB2DRIVER)。このパッケージは、クライアント・ワークステーションに存在しなければなりません。

useridオプションのストリング。データベースにアクセスするために必要なユーザー ID (必要な場合)。

passwordオプションのストリング。データベースにアクセスするために必要なパスワード (必要な場合)。

statement必須のストリング。SQL ステートメント。

outputtype必須の整数。SQL ステートメントによって生成されたデータを送信する宛先。有効な値は 0 (データは、マクロ変数 $HMLSQLUtil$ に保管される)です。この変数に対するメソッドを呼び出して、データを取得できます。

XML サンプル

<string> エレメント<string> エレメントは、文字のシーケンスや、ホスト端末上にある文字のシーケンスが含まれる長方形域を指定する記述子です ( 45 ページの『ストリング記述子(<string> エレメント)』を参照)。

文字のシーケンスは、長方形ブロック内の任意の場所に存在することができます。

<sqlquery url="'jdbc:as400://elcrtp06'"driver="'com.ibm.as400.access.AS400JDBCDriver'"userid="'myuser'"password="Ex0bRtrf73mPrwGrWMT+/g=="statement="'SELECT * FROM SQLTEST WHERE ((SQLTEST.DESCRIPT is not null))'"outputtype="0" />

図 113. <sqlquery> エレメントの例

第 13 章 マクロ言語エレメント 217

Page 236: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

属性value 必須のストリング。文字のシーケンス。

row オプションの整数 (デフォルトは画面全体の検索)。長方形のテキスト・ブロックの一方のコーナーの行位置。

col オプションの整数。長方形のテキスト・ブロックの一方のコーナーの列位置。

erow オプションの整数。長方形のテキスト・ブロックの向かい側のコーナーの行位置。

ecol オプションの整数。長方形のテキスト・ブロックの向かい側のコーナーの列位置。

casesenseオプションのブール (デフォルトは false)。この属性を true に設定すると、マクロ・ランタイムは、大文字小文字の区別のあるストリング比較を実行します。

wrap オプションのブール (デフォルトは false)。

v この属性を false に設定すると、マクロ・ランタイムは、長方形のテキスト・ブロックの各行で文字のシーケンスを検索します。文字のシーケンスが次の行に折り返す場合、マクロ・ランタイムはその折り返しを検出しません。

v この属性を true に設定すると、マクロ・ランタイムは、任意の行にある文字のシーケンス、または長方形のテキスト・ブロックの次の行に折り返す文字のシーケンスがないかどうかを調べます ( 46 ページの『マクロ・ランタイムが長方形域を検索する方法 (Wrap 属性)』を参照)。

optionalオプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を参照。

invertmatchオプションのブール。 41 ページの『Invertmatch 属性』を参照。

XML サンプル

<!-- The string must occur in one specific area of a single row --><string value="'Utility Selection Panel'" row="3" col="28"

erow="3" ecol="51" casesense="false" wrap="false"optional="false" invertmatch="false" />

<!-- The string can occur in any single row of the session area --><string value="'Utility Selection Panel'" row="1" col="1"

erow="-1" ecol="-1" casesense="false" wrap="false"optional="false" invertmatch="false" />

図 114. <string> エレメントの例

218 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 237: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<trace> エレメント<trace> エレメントは、指定のトレース宛先 (コンソールなど) にトレース・メッセージを送ります ( 79 ページの『トレース・アクション (<trace> エレメント)』を参照)。

属性type 必須。トレース・データの宛先。この宛先は、次のいずれかでなければなり

ません。

v HODTRACE: Host On-Demand トレース機能

v USER: ユーザー・トレース・ハンドラー

v SYSOUT: WebSphere コンソール

value 必須のストリング。トレースの宛先に送信されるストリング。

XML サンプル

<type> エレメント<type> エレメントは、Java クラス (例えば、java.util.Properties) を表すインポート済みタイプ (例えば、Properties) を宣言します。タイプを宣言した後、そのタイプに基づいて変数を作成し、Java クラスのインスタンスを作成し、そのインスタンスでメソッドを呼び出すことができます ( 99 ページの『Java クラスのインポート済みタイプを作成』を参照)。

また、型は、静的メソッドを直接呼び出すのにも使用できます (インスタンスを生成する必要がありません)。

<type> エレメントは、<import> エレメント内に存在する必要があります。

属性class 必須。パッケージ名 (例えば、java.util.Properties) があれば、これを含

めて、インポートされるクラスの完全修飾クラス名。

name オプション。インポート済みタイプを参照するためにマクロ内の他の場所で使用できる、短い名前 (例えば、Properties)。短い名前を指定しない場合、短い名前は、完全修飾クラス名と同じになります。タイプ名のスペルには、いくつかの制限があります ( 101 ページの『変数名とタイプ名』を参照)。

XML サンプル

<trace type="SYSOUT" value="'The value is '+$strData$" />

図 115. <trace> エレメントの例

第 13 章 マクロ言語エレメント 219

Page 238: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<vars> エレメント<vars> エレメント、<import> エレメント、および <screen> エレメントは、<HAScript> エレメント内に存在する 3 つの基本構造エレメントです ( 12 ページの『マクロ・スクリプトの概念視点』を参照)。

<vars> エレメントはオプションです。このエレメントには、複数の <create> エレメントが含まれ、各エレメントは、変数を宣言し、初期化します ( 99 ページの『変数の作成』を参照)。 <vars> エレメントは、<import> エレメントの後、かつ最初の <screen> エレメントの前に存在しなければなりません。

変数を使用するには、<HAScript> 内の usevars エレメントを true に設定する必要があります。

属性なし。

XML サンプル

<import><type class="java.util.Date" name="Date"/><type class="java.io.FileInputStream"/><type class="com.ibm.eNetwork.beans.HOD.HODBean" name="HODBean"/><type class="myPackage.MyClass" name="MyClass"/>

</import>

図 116. <type> エレメントの例

<HAScript ... usevars="true" .... ><import>

<type class="java.util.Properties" name="Properties" /></import>

<vars><create name="$prp$" type="Properties" value="$new Properties()$" /><create name="$strAccountName$" type="string" value="" /><create name="$intAmount$" type="integer" value="0" /><create name="$dblDistance$" type="double" value="0.0" /><create name="$boolSignedUp$" type="boolean" value="false" /><create name="$fldFunction$" type="field" />

</vars>...

</HAScript>

図 117. <vars> エレメントの例

220 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 239: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<varupdate> エレメント<varupdate> エレメントにより、マクロ・ランタイムは、指定された値を指定された変数に保管します。この値は、即時値、変数、Java メソッドの呼び出し、またはこれらの値のいずれかを含むことができる演算式にすることができます。値が式である場合、マクロの再生時に、マクロ・ランタイムはその式を評価し、指定された変数に結果の値を保管します ( 80 ページの『変数更新アクション (<varupdate>エレメント)』を参照)。

また、<description> エレメント内の <varupdate> アクションを使用することもできます ( 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照)。

変数の詳細については、 97 ページの『第 9 章 変数とインポートした Java クラス』を参照してください。

属性name 必須。変数の名前。

value 必須のストリング。変数に割り当てられる値または式。

XML サンプル

第 13 章 マクロ言語エレメント 221

Page 240: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

<type><type class="mypackage.MyClass" name="MyClass" /><type class="java.util.Hashtable" name="Hashtable" /><type class="java.lang.Object" name="Object" />

</type>

<vars>...

</vars>

<screen><description>...</description><actions>

<varupdate name="$var_boolean1$" value="false" /><varupdate name="$var_int1$" value="5" /><varupdate name="$var_double1$" value="5" /><varupdate name="$var_string1$" value="'oak tree'" /><varupdate name="$var_field1$" value="4,5" />

<!-- null keyword --><varupdate name="$var_importedMC1$" value="null" /><!-- Equivalent to null keyword for an imported type --><varupdate name="$var_importedMC2$" value="" />

<varupdate name="$var_importedMC4$"value="$new MyClass( 'myparam1', 'myparam2' )$" />

<varupdate name="$var_importedMC5$"value="$var_importedMC4$" />

<varupdate name="$var_importedMC6$"value="$MyClass.createInstance( 'mystringparam1' )$" />

<varupdate name="$var_boolean2$"value="$var_importedMC4.isEmpty()$" />

<varupdate name="$var_int2$"value="$($var_importedMC4.getHashtable()$).size()$" />

<varupdate name="$var_double2$"value="$var_importedMC4.getMeters()$" />

<varupdate name="$var_string2$"value="$var_importedMC4.toString()" />

</actions></screen>

図 118. <varupdate> エレメントの例

222 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 241: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

付録 A. 追加情報

1 つのマクロ画面における複数の記述子のデフォルト規則1 つのマクロ画面で複数の記述子が結合されている場合、デフォルトの処理規則を適用します。これはデフォルトの結合規則と呼ばれており、以下のように作動します。

1. すべての必須記述子 (すなわち「オプション」フィールドが false に設定されている記述子) を評価する。

a. すべて true である場合、画面が一致します。

b. それ以外の場合は、ステップ 2 に進みます。

2. オプション記述子 (「オプション」フィールドが true に設定されている記述子) の評価を開始する。

a. いずれかのオプション記述子が true である場合、画面が一致します。

b. それ以外の場合は、ステップ 3 に進みます。

3. この段階に達した場合、このマクロ画面はアプリケーション画面と一致しません。

入力アクションの略号キーワードここでは、入力アクションの略号キーワード、および略号がサポートされているセッションのタイプを説明します。所定の略号に対するセッション・サポートは X で示され、その機能に適用される特別な注が付きます。

表 24. 入力アクションのキーワード

機能: キーワード: 3270: 5250: VT:

アテンション [attn] x x

代替ビュー [altview] x3 x3

Backspace [backspace] x x x1

Backtab [backtab] x x

フィールドの先頭

[bof] x x

クリア [clear] x x x1

カーソルを下へ [down] x x x1

カーソルを左へ [left] x x x1

カーソルを右へ [right] x x x1

カーソル選択 [cursel] x x x1

カーソルを上へ [up] x x x1

文字の削除 [delete] x x x1, 2

SO/SI の表示 [dspsosi] x3 x3

フィールドの複製

[dup] x x

© Copyright IBM Corp. 2003, 2015 223

Page 242: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 24. 入力アクションのキーワード (続き)

機能: キーワード: 3270: 5250: VT:

Enter [enter] x x x

フィールドの末尾

[eof] x x x1, 2

EOF 消去 [eraseeof] x x

フィールドの消去

[erasefld] x x

入力消去 [erinp] x x

フィールドの終了

[fldext] x

フィールド・マーク

[fieldmark] x x

フィールドのマイナス

[field-] x

フィールドのプラス

[field+] x

F1 [pf1] x x x

F2 [pf2] x x x

F3 [pf3] x x x

F4 [pf4] x x x

F5 [pf5] x x x

F6 [pf6] x x x

F7 [pf7] x x x

F8 [pf8] x x x

F9 [pf9] x x x

F10 [pf10] x x x

F11 [pf11] x x x

F12 [pf12] x x x

F13 [pf13] x x x

F14 [pf14] x x x

F15 [pf15] x x x

F16 [pf16] x x x

F17 [pf17] x x x

F18 [pf18] x x x

F19 [pf19] x x x

F20 [pf20] x x x

F21 [pf21] x x

F22 [pf22] x x

F23 [pf23] x x

F24 [pf24] x x

ヘルプ [help] x

ホーム [home] x x x1, 2

224 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 243: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 24. 入力アクションのキーワード (続き)

機能: キーワード: 3270: 5250: VT:

挿入 [insert] x x x1, 2

キーパッド 0 [keypad0] x

キーパッド 1 [keypad1] x

キーパッド 2 [keypad2] x

キーパッド 3 [keypad3] x

キーパッド 4 [keypad4] x

キーパッド 5 [keypad5] x

キーパッド 6 [keypad6] x

キーパッド 7 [keypad7] x

キーパッド 8 [keypad8] x

キーパッド 9 [keypad9] x

キーパッド・ドット

[keypad.] x

キーパッドEnter

[keypadenter] x

キーパッド・コンマ

[keypad,] x

キーパッド・マイナス

[keypad-] x

改行 [newline] x x

PA1 [pa1] x x

PA2 [pa2] x x

PA3 [pa3] x x

Page Up [pageup] x x x1, 2

Page Down [pagedn] x x x1, 2

リセット [reset] x x x

システム要求 [sysreq] x x

フィールドのタブ移動

[tab] x x x1

テスト要求 [test] x

1. VT はこの機能をサポートしますが、この機能に影響を与えるのは、ホスト・アプリケーションです。

2. VT200 モードのみでサポートされます。

3. この機能は、DBCS セッションのみで使用可能です。

次の表は、入力アクションの双方向キーワードを示しています。

表 25. 入力アクションの双方向キーワード

機能: キーワード: 3270: 5250: VT:

自動プッシュ [autopush] x

自動反転 [autorev] x x

付録 A. 追加情報 225

Page 244: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

表 25. 入力アクションの双方向キーワード (続き)

機能: キーワード: 3270: 5250: VT:

ベース [base] x x

BIDI レイヤー [bidilayer]

閉じる [close] x

CSD [csd] x

プッシュの終了 [endpush] x

フィールド反転 [fldrev] x x

フィールド・シェイプ

[fieldshape] x

最終 [final] x

初期 [initial] x

隔離 [isolated] x

Latin レイヤー [latinlayer] x x

中 [middle] x

プッシュ [push] x

画面を反転 [screenrev] x x

226 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 245: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

付録 B. 特記事項

本書は米国 IBM が提供する製品およびサービスについて作成したものです。 本書に記載の製品、サービス、または機能が日本においては提供されていない場合があります。日本で利用可能な製品、サービス、および機能については、日本 IBM の営業担当員にお尋ねください。本書で IBM 製品、プログラム、またはサービスに言及していても、その IBM 製品、プログラム、またはサービスのみが使用可能であることを意味するものではありません。これらに代えて、IBM の知的所有権を侵害することのない、機能的に同等の製品、プログラム、またはサービスを使用することができます。ただし、IBM 以外の製品とプログラムの操作またはサービスの評価および検証は、お客様の責任で行っていただきます。

IBM は、本書に記載されている内容に関して特許権 (特許出願中のものを含む) を保有している場合があります。本書の提供は、お客様にこれらの特許権について実施権を許諾することを意味するものではありません。実施権についてのお問い合わせは、書面にて下記宛先にお送りください。

〒103-8510東京都中央区日本橋箱崎町19番21号日本アイ・ビー・エム株式会社法務・知的財産知的財産権ライセンス渉外

以下の保証は、国または地域の法律に沿わない場合は、適用されません。 IBM およびその直接または間接の子会社は、本書を特定物として現存するままの状態で提供し、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。国または地域によっては、法律の強行規定により、保証責任の制限が禁じられる場合、強行規定の制限を受けるものとします。

この情報には、技術的に不適切な記述や誤植を含む場合があります。本書は定期的に見直され、必要な変更は本書の次版に組み込まれます。 IBM は予告なしに、随時、この文書に記載されている製品またはプログラムに対して、改良または変更を行うことがあります。

本書において IBM 以外の Web サイトに言及している場合がありますが、便宜のため記載しただけであり、決してそれらの Web サイトを推奨するものではありません。それらの Web サイトにある資料は、この IBM 製品の資料の一部ではありません。それらの Web サイトは、お客様の責任でご使用ください。

IBM は、お客様が提供するいかなる情報も、お客様に対してなんら義務も負うことのない、自ら適切と信ずる方法で、使用もしくは配布することができるものとします。

本プログラムのライセンス保持者で、(i) 独自に作成したプログラムとその他のプログラム (本プログラムを含む) との間での情報交換、および (ii) 交換された情報の相互利用を可能にすることを目的として、本プログラムに関する情報を必要とする方は、下記に連絡してください。

© Copyright IBM Corp. 2003, 2015 227

Page 246: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

Intellectual Property Dept. for Rational SoftwareIBM Corporation5 Technology Park DriveWestford, MA 01886U.S.A.

本プログラムに関する上記の情報は、適切な使用条件の下で使用することができますが、有償の場合もあります。

本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれと同等の条項に基づいて、 IBM より提供されます。

IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っておりません。したがって、他社製品に関する実行性、互換性、またはその他の要求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの製品の供給者にお願いします。

本書には、日常の業務処理で用いられるデータや報告書の例が含まれています。より具体性を与えるために、それらの例には、個人、企業、ブランド、あるいは製品などの名前が含まれている場合があります。これらの名称はすべて架空のものであり、名称や住所が類似する企業が実在しているとしても、それは偶然にすぎません。

著作権使用許諾:

本書には、様々なオペレーティング・プラットフォームでのプログラミング手法を例示するサンプル・アプリケーション・プログラムがソース言語で掲載されています。お客様は、サンプル・プログラムが書かれているオペレーティング・プラットフォームのアプリケーション・プログラミング・インターフェースに準拠したアプリケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することができます。このサンプル・プログラムは、あらゆる条件下における完全なテストを経ていません。従って IBM は、これらのサンプル・プログラムについて信頼性、利便性もしくは機能性があることをほのめかしたり、保証することはできません。これらのサンプル・プログラムは特定物として現存するままの状態で提供されるものであり、いかなる保証も提供されません。IBM は、お客様の当該サンプル・プログラムの使用から生ずるいかなる損害に対しても一切の責任を負いません。

この情報をソフトコピーでご覧になっている場合は、写真やカラーの図表は表示されない場合があります。

プログラミング・インターフェース情報この拡張マクロ・ガイドには、プログラムを作成するユーザーが HATS のサービスを使用するためのプログラミング・インターフェースに関する情報があります。

228 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 247: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

商標IBM、IBM ロゴおよび ibm.com は、世界の多くの国で登録された InternationalBusiness Machines Corporation の商標です。他の製品名およびサービス名等は、それぞれ IBM または各社の商標である場合があります。現時点での IBM の商標リストについては、http://www.ibm.com/legal/copytrade.shtml をご覧ください。

Java およびすべての Java 関連の商標およびロゴは Oracle やその関連会社の米国およびその他の国における商標または登録商標です。

付録 B. 特記事項 229

Page 248: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

230 IBM Host Access Transformation Services: 拡張マクロ・ガイド

Page 249: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203
Page 250: IBM Host Access Transformation ServicesngNEKCh...XML サンプル ..... . 202  エレメント ..... . 202 属性 ..... . 202 XML サンプル ..... . 203

IBM®

Printed in Japan

SA88-5381-02