Comments
Description
Transcript
拡張マクロ・ガイド
IBM Host Access Transformation Services IBM 拡張マクロ・ガイド バージョン 9.5 SA88-5381-01 IBM Host Access Transformation Services IBM 拡張マクロ・ガイド バージョン 9.5 SA88-5381-01 お願い 本書および本書で紹介する製品をご使用になる前に、 227 ページの『付録 B. 特記事項』に記載されている情報をお読みくだ さい。 お客様の環境によっては、資料中の円記号がバックスラッシュと表示されたり、バックスラッシュが円記号と表示さ れたりする場合があります。 原典: SC27-5450-01 IBM Host Access Transformation Services Advanced Macro Guide Version 9.5 Eighth Edition (November 2015) 発行: 日本アイ・ビー・エム株式会社 担当: トランスレーション・サービス・センター © Copyright IBM Corporation 2003, 2015. 目次 図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi 表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv 第 1 部 マクロの開発 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 第 1 章 拡張マクロの紹介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 HATS で使用する場合の HATS でのマクロの操作 用語の定義 . . . . . サンプル. . . . . . Host On-Demand マクロの適応 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 マクロの構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 8 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 マクロ・スクリプト . . . . . . XML エレメント . . . . . . マクロ・スクリプトの概念視点 . . マクロ画面とそのサブコンポーネント アプリケーション画面 . . . . . マクロ画面 . . . . . . . . マクロ画面の概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 14 14 15 15 第 3 章 データ・タイプ、演算子、および式 . . . . . . . . . . . . . . . . . . . . 17 基本マクロ形式と拡張マクロ形式 . ストリングと非英数字文字の表記 別の形式へのマクロの変換 . . 標準データ・タイプ . . . . . ブール・データ . . . . . . 整数 . . . . . . . . . . 倍精度 . . . . . . . . . ストリング . . . . . . . フィールド . . . . . . . . 値 null . . . . . . . . . . 算術演算子および式 . . . . . 演算式の使用 . . . . . . . ストリング連結演算子 (+) . . . 条件演算子と論理演算子および式 . 自動データ・タイプ変換 . . . . コンテキストの影響 . . . . ブールへの変換 . . . . . . 整数への変換 . . . . . . . 倍精度への変換 . . . . . . ストリングへの変換 . . . . 変換エラー . . . . . . . 等価 . . . . . . . . . . . 行または列の負の値の意味 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 18 19 19 19 20 20 20 20 21 21 22 22 23 23 23 23 24 24 24 24 25 第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 . . . . . . . . . . . . . . . 27 マクロ・ランタイム処理の概要 . 例として使用されるシナリオ マクロ画面の処理ステージ . © Copyright IBM Corp. 2003, 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 . 27 . 29 iii ステージ 1 . . . . . . . . . . . . . . . . . . . . . プロセス全体の 3 ステージすべての概要 . . . . . . . . . . . ステージ 1: 次に処理するマクロ画面を決定する . . . . . . . . . . ステップ 1(a): 有効な次画面のリストへのマクロ画面名の追加 . . . . ステップ 1(b): 画面認識 . . . . . . . . . . . . . . . . . ステップ 1(c): 有効な次画面のリストからの候補マクロ画面の名前の除去. ステージ 2: 選択された候補を新しい現行マクロ画面にする . . . . . . ステージ 3: 新しい現行マクロ画面のアクションを実行する . . . . . . アクション後の遅延の挿入 . . . . . . . . . . . . . . . . 処理サイクルの繰り返し . . . . . . . . . . . . . . . . . . マクロの終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 30 30 31 32 34 34 35 35 36 36 第 5 章 画面記述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 用語の定義 . . . . . . . . . . . . . . . 説明の記録 . . . . . . . . . . . . . . . 記録された説明が機能する理由 . . . . . . . . 記録された記述子が提供するフレームワーク . . . 記述子の評価 . . . . . . . . . . . . . . . プロセスの概要 . . . . . . . . . . . . . 個々の記述子の評価 . . . . . . . . . . . デフォルト結合メソッド . . . . . . . . . . uselogic 属性 . . . . . . . . . . . . . . 記述子 . . . . . . . . . . . . . . . . . OIA 記述子 (<oia> エレメント) . . . . . . . 「フィールド数」記述子 (<numfields> エレメント) . 「入力フィールド数 (Number of Input Fields)」記述子 ストリング記述子 (<string> エレメント) . . . . . カーソル記述子 (<cursor> エレメント) . . . . . 属性記述子 (<attrib> エレメント) . . . . . . . 条件記述子 (<condition> エレメント) . . . . . . カスタム記述子 (<customreco> エレメント) . . . . 変数更新アクション (<varupdate> エレメント) . . . . 説明内の変数更新アクションの処理 . . . . . . uselogic 属性を使用した変数更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (<numinputfields> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . エレメント). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 38 39 39 39 40 40 42 43 44 44 44 45 48 48 48 49 49 49 50 第 6 章 画面認識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 有効な次画面の認識 . . . . . . . . エントリー画面、終了画面、および一時画面 エントリー画面 . . . . . . . . . 終了画面 . . . . . . . . . . . 一時画面 . . . . . . . . . . . 画面認識のタイムアウト設定 . . . . . 画面認識 . . . . . . . . . . . <HAScript> エレメントの timeout 属性 . <nextscreens> エレメントの timeout 属性 認識限界 . . . . . . . . . . . . 認識限度に達したことの判別 . . . . 認識限度に達したときのアクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 51 52 52 54 54 54 55 55 56 56 第 7 章 マクロ・アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 機能別のアクション . . . . . アクションの実行方法 . . . . . ランタイムのコンテキスト . . マクロ画面のコンテキスト . . アクションのパラメーターの指定 アクション . . . . . . . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IBM Host Access Transformation Services: 拡張マクロ・ガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 59 59 59 60 60 通信待機アクション (<commwait> エレメント) . . . . 条件アクション (<if> エレメントおよび <else> エレメント) 抽出アクション (<extract> エレメント) . . . . . . . 入力アクション (<input> エレメント). . . . . . . . マウス・クリック・アクション (<mouseclick> エレメント) 一時停止アクション (<pause> エレメント) . . . . . . 実行アクション (<perform> エレメント) . . . . . . . PlayMacro アクション (<playmacro> エレメント) . . . . プロンプト・アクション (<prompt> エレメント) . . . . SQLQuery アクション (<sqlquery> エレメント) . . . . トレース・アクション (<trace> エレメント) . . . . . 変数更新アクション (<varupdate> エレメント) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 61 63 66 72 72 72 74 76 78 79 80 第 8 章 タイミングの問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 マクロのタイミングおよび遅延特性 . . . . . . . . . . . . . . . . . . 各エレメントおよび属性の役割 . . . . . . . . . . . . . . . . . . . HATS マクロ処理エンジンがこれらのタイミング・エレメントと属性を使用する方法 . 画面のアクションの完了後に発生するもの . . . . . . . . . . . . . . . マクロ・エンジン処理の高水準なテキスト・フロー . . . . . . . . . . . . アクション後の一時停止 . . . . . . . . . . . . . . . . . . . . . . アクションの処理速度 . . . . . . . . . . . . . . . . . . . . . . pausetime 属性 . . . . . . . . . . . . . . . . . . . . . . . . pause 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . 特定のアクションの後に一時停止を追加する . . . . . . . . . . . . . . 画面の完了 . . . . . . . . . . . . . . . . . . . . . . . . . . 次のマクロ画面の認識が早すぎる . . . . . . . . . . . . . . . . . . 画面の完了に関係する属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 85 86 88 88 89 89 89 90 90 90 90 93 第 9 章 変数とインポートした Java クラス . . . . . . . . . . . . . . . . . . . . 97 HATS 変数 . . . . . . . . . . . . . . . . . グローバル変数 . . . . . . . . . . . . . . . マクロ変数 . . . . . . . . . . . . . . . . マクロ変数とインポート済みタイプの概要 . . . . . . . 拡張マクロ形式が必要 . . . . . . . . . . . . . 変数の有効範囲 . . . . . . . . . . . . . . . 変数の作成 . . . . . . . . . . . . . . . . Java クラスのインポート済みタイプを作成 . . . . . . 一般的な問題 . . . . . . . . . . . . . . . . Java ライブラリーまたはクラスの配置 . . . . . . . 変数名とタイプ名 . . . . . . . . . . . . . . マクロ間での変数の転送. . . . . . . . . . . . フィールド変数. . . . . . . . . . . . . . . 変数の使用 . . . . . . . . . . . . . . . . . 標準タイプに属する変数の使用 . . . . . . . . . インポート済みタイプに属する変数の使用. . . . . . 同じインポート済みタイプの変数の比較 . . . . . . Java メソッドの呼び出し . . . . . . . . . . . . メソッド呼び出しを使用できる個所 . . . . . . . . メソッド呼び出しの構文. . . . . . . . . . . . マクロ・ランタイムが呼び出し先メソッドを検索する方法 Macro Utility Libraries (HML ライブラリー) . . . . . . HML ライブラリーに属するメソッドの呼び出し. . . . HML で始まる変数名は予約済み . . . . . . . . . $HMLFormatUtil$ . . . . . . . . . . . . . . $HMLPSUtil$ . . . . . . . . . . . . . . . $HMLSessionUtil$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 . 97 . 97 . 98 . 98 . 98 . 99 . 99 . 100 . 100 . 101 . 101 . 101 . 102 . 102 . 103 . 104 . 105 . 105 . 105 . 105 . 106 . 107 . 107 . 107 . 109 . 114 目次 v $HMLSQLUtil$ . . . . . . . . . . . . . . . FormatNumberToString() および FormatStringToNumber() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 . 118 第 10 章 Visual Macro Editor . . . . . . . . . . . . . . . . . . . . . . . . . 119 | 新規マクロの作成 . . . . . . . . . . エディターの使用 . . . . . . . . . . 設計タブ . . . . . . . . . . . . パレット・ビュー . . . . . . . . . 統合端末 . . . . . . . . . . . . ソース・タブ . . . . . . . . . . マクロの操作 . . . . . . . . . . . マクロのプロパティーの編集 . . . . . マクロの実行 . . . . . . . . . . 画面の操作 . . . . . . . . . . . . マクロ画面のプロパティーの編集. . . . マクロ画面の追加 . . . . . . . . . マクロ画面を画面キャプチャーに関連付ける 画面のプレビュー . . . . . . . . . デフォルト画面認識基準. . . . . . . 画面の切り取り、削除、コピー、貼り付け. アクションの操作 . . . . . . . . . . アクションの追加と編集. . . . . . . アクションの非表示および表示 . . . . アクション . . . . . . . . . . . カスタム・アクション . . . . . . . Evaluate (If) アクション . . . . . . . 抽出アクション. . . . . . . . . . 「すべて抽出」アクション . . . . . . 「入力」アクション . . . . . . . . 「一時停止」アクション. . . . . . . 「実行」アクション . . . . . . . . 「マクロを実行」アクション . . . . . 「プロンプト」アクション . . . . . . 「すべてにプロンプト」アクション . . . 「カーソル位置を設定」アクション . . . 「トレース」アクション. . . . . . . 「マクロ変数の更新」アクション. . . . 次の画面接続の操作 . . . . . . . . . 次の画面接続をパレットから追加する . . 次の画面接続の再配列と変更 . . . . . VME の設定の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 120 121 123 124 125 125 125 126 126 126 128 128 129 129 129 132 132 133 134 134 134 135 139 140 141 141 141 142 145 145 145 146 146 146 146 147 第 11 章 拡張マクロ・エディター . . . . . . . . . . . . . . . . . . . . . . . . 149 エディターの使用 . . . . . . マクロ・タブ . . . . . . 「画面」タブ . . . . . . リンク・タブ . . . . . . 「変数 (Variables)」タブ. . . アクションの操作 . . . . . . 通信待機アクション . . . . 条件付きアクション . . . . 抽出アクション. . . . . . 「入力」アクション . . . . マウス・クリック・アクション 「一時停止」アクション. . . 「実行」アクション . . . . vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IBM Host Access Transformation Services: 拡張マクロ・ガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 150 152 163 165 169 170 170 171 173 173 174 174 Playmacro アクション . 「プロンプト」アクション SQLQuery アクション . 「トレース」アクション. 変数更新アクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 175 178 183 184 第 2 部 Host On-Demand マクロ言語 . . . . . . . . . . . . . . . . . . . . 185 第 12 章 マクロ言語の機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 構文と編集 . . . . . . . . . . . . . . . . . Host On-Demand マクロ言語の XML 構文. . . . . . ソース表示編集. . . . . . . . . . . . . . . エレメントの階層 . . . . . . . . . . . . . . . マクロ・スクリプトへのコメントの挿入 . . . . . . . コメント・エラー . . . . . . . . . . . . . . コメントの例 . . . . . . . . . . . . . . . <trace> エレメントを使用したマクロ・スクリプトのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 187 188 188 189 190 190 190 第 13 章 マクロ言語エレメント . . . . . . . . . . . . . . . . . . . . . . . . . 193 属性の指定 . . . . . . . XML 要件 . . . . . . 属性値の拡張形式 . . . . タイプ付きデータ . . . . <actions> エレメント . . . . 属性 . . . . . . . . XML サンプル . . . . . <attrib> エレメント . . . . 属性 . . . . . . . . XML サンプル . . . . . <comment> エレメント . . . 属性 . . . . . . . . XML サンプル . . . . . コメントを挿入する代替方式 <commwait> エレメント . . . 属性 . . . . . . . . XML サンプル . . . . . <condition> エレメント . . . 属性 . . . . . . . . XML サンプル . . . . . <create> エレメント . . . . 属性 . . . . . . . . XML サンプル . . . . . <cursor> エレメント . . . . 属性 . . . . . . . . XML サンプル . . . . . <custom> エレメント . . . . 属性 . . . . . . . . XML サンプル . . . . . <customreco> エレメント . . 属性 . . . . . . . . XML サンプル . . . . . <description> エレメント. . . 属性 . . . . . . . . XML サンプル . . . . . <else> エレメント . . . . . 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 目次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 193 193 193 194 194 195 195 195 195 195 196 196 196 196 196 197 197 197 198 198 198 198 199 199 199 199 200 200 200 200 201 201 201 201 201 202 vii XML サンプル . . . . <extract> エレメント . . . 属性 . . . . . . . XML サンプル . . . . <HAScript> エレメント . . 属性 . . . . . . . XML サンプル . . . . <if> エレメント . . . . 属性 . . . . . . . XML サンプル . . . . <import> エレメント . . . 属性 . . . . . . . XML サンプル . . . . <input> エレメント . . . 属性 . . . . . . . XML サンプル . . . . <mouseclick> エレメント . 属性 . . . . . . . XML サンプル . . . . <nextscreen> エレメント . . 属性 . . . . . . . XML サンプル . . . . <nextscreens> エレメント . 属性 . . . . . . . XML サンプル . . . . <numfields> エレメント . . 属性 . . . . . . . XML サンプル . . . . <numinputfields> エレメント 属性 . . . . . . . XML サンプル . . . . <oia> エレメント . . . . 属性 . . . . . . . XML サンプル . . . . <pause> エレメント . . . 属性 . . . . . . . XML サンプル . . . . <perform> エレメント . . 属性 . . . . . . . XML サンプル . . . . <playmacro> エレメント . . 属性 . . . . . . . XML サンプル . . . . <prompt> エレメント . . . 属性 . . . . . . . XML サンプル . . . . <recolimit> エレメント . . 属性 . . . . . . . XML サンプル . . . . <screen> エレメント . . . 属性 . . . . . . . XML サンプル . . . . <sqlquery> エレメント . . 属性 . . . . . . . XML サンプル . . . . <string> エレメント . . . viii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IBM Host Access Transformation Services: 拡張マクロ・ガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 202 202 203 203 204 205 205 206 206 206 207 207 207 207 208 208 208 208 208 208 208 209 209 209 210 210 210 210 210 210 211 211 211 211 211 212 212 212 212 213 213 213 213 213 214 215 215 215 215 216 216 216 216 217 217 属性 . . . . . XML サンプル . . <trace> エレメント . 属性 . . . . . XML サンプル . . <type> エレメント. . 属性 . . . . . XML サンプル . . <vars> エレメント . . 属性 . . . . . XML サンプル . . <varupdate> エレメント 属性 . . . . . XML サンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 218 218 218 219 219 219 219 220 220 220 220 221 221 付録 A. 追加情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 1 つのマクロ画面における複数の記述子のデフォルト規則 入力アクションの略号キーワード. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 . 223 付録 B. 特記事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 プログラミング・インターフェース情報 商標 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 目次 . 228 . 229 ix x IBM Host Access Transformation Services: 拡張マクロ・ガイド 図 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 単純なマクロ構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 サンプル XML エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 省略形式で書かれたサンプル XML エレメント . . . . . . . . . . . . . . . . . . . . . 12 マクロ・スクリプトの概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 サンプル・アプリケーション画面「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 <screen> エレメントの概念視点 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」 . . . . . . . . . . 27 「Utility Selection Panel」アプリケーション画面 . . . . . . . . . . . . . . . . . . . . . 28 <description> エレメントの uselogic 属性の例 . . . . . . . . . . . . . . . . . . . . . . 42 アプリケーション画面の行 14 から 18 . . . . . . . . . . . . . . . . . . . . . . . . 47 ScreenB の <description> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . 50 画面認識タイムアウトのエラー・メッセージ . . . . . . . . . . . . . . . . . . . . . . 55 ホスト端末に表示されるエラー・メッセージ . . . . . . . . . . . . . . . . . . . . . . 55 通信待機アクションの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 条件アクションを示すサンプル・コード . . . . . . . . . . . . . . . . . . . . . . . . 63 暗号化されていない入力キー・シーケンスが入っている <input> エレメント . . . . . . . . . . . . 68 暗号化された入力キー・シーケンスが入っている <input> エレメント . . . . . . . . . . . . . . 68 実行アクションの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 PlayMacro アクションの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 サンプル・コード TRACE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 pausetimevalue の例 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 pausetimevalue の例 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 注意喚起メッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 サンプル <vars> エレメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 インポート済みタイプとそのタイプの変数 . . . . . . . . . . . . . . . . . . . . . . . 100 HML メソッドを呼び出す場合の例 . . . . . . . . . . . . . . . . . . . . . . . . . 107 numberToString() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 stringToNumber() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 表示スペースでの行と列の位置の対応 . . . . . . . . . . . . . . . . . . . . . . . . 110 行 1、列 1 に「Message」が表示される場合のレイアウト . . . . . . . . . . . . . . . . . 111 convertPosToCol() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 convertPosToRow() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 enableRoundTrip() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 getCursorCol() の例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 getCursorPos() の例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 getCursorRow() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 getSize() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 getSizeCols() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 getSizeRows() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 getString() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 searchString() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 getHost() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 getLabel() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 getName() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 getColumnSize() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 getDataByIndex() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 getDataByName() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 getRowSize() の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Visual Macro Editor のパーツ . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 © Copyright IBM Corp. 2003, 2015 xi 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. Visual Macro Editor の設計タブ . . . . . . . . . . . . . . . . . . . Visual Macro Editor のパレット・ビュー . . . . . . . . . . . . . . . . Visual Macro Editor の統合端末 . . . . . . . . . . . . . . . . . . . 画面の削除の例 - 切り取りまたは削除前 . . . . . . . . . . . . . . . . 画面の削除の例 - 切り取りまたは削除後 . . . . . . . . . . . . . . . . 画面コピーの例 . . . . . . . . . . . . . . . . . . . . . . . . . 画面の貼り付けの例 . . . . . . . . . . . . . . . . . . . . . . . Visual Macro Editor のアクション. . . . . . . . . . . . . . . . . . . 画面アクションを非表示にする . . . . . . . . . . . . . . . . . . . 画面アクションの表示 . . . . . . . . . . . . . . . . . . . . . . 拡張マクロ・エディター . . . . . . . . . . . . . . . . . . . . . . AME のマクロ・タブ . . . . . . . . . . . . . . . . . . . . . . . サンプル <HAScript> エレメント . . . . . . . . . . . . . . . . . . . 「画面」タブ . . . . . . . . . . . . . . . . . . . . . . . . . <screen> エレメントの開始タグと終了タグ . . . . . . . . . . . . . . . . サンプル XML <screen> エレメント . . . . . . . . . . . . . . . . . . 「説明」タブ . . . . . . . . . . . . . . . . . . . . . . . . . 実際の記述子が 1 つある「記述子 (Descriptor)」リスト・ボックスの内容 . . . . . 実際の記述子が 2 つある「記述子 (Descriptor)」リスト・ボックスの内容 . . . . . 3 つのディスクリプターを持つ <description> エレメント . . . . . . . . . . . アクション・タブ . . . . . . . . . . . . . . . . . . . . . . . . 作成済みアクションがない状態での「アクション」リスト・ボックスのリストの内容 . 実際のアクションが 1 つある状態での「アクション」リスト・ボックスのリストの内容 リンク・タブ . . . . . . . . . . . . . . . . . . . . . . . . . <nextscreens> エレメントがあるマクロ画面 ScreenR . . . . . . . . . . . . . 「変数 (Variables)」タブ . . . . . . . . . . . . . . . . . . . . . . インポート済みタイプを宣言した後の「タイプ」リスト・ボックスの内容 . . . . . 複数行にまたがって書き込まれた SQL ステートメント . . . . . . . . . . . 1 行に書き込まれた同じ SQL ステートメント . . . . . . . . . . . . . . 基本マクロ形式で作成された SQL ステートメント . . . . . . . . . . . . . 拡張マクロ形式用の同じ SQL ステートメント . . . . . . . . . . . . . . 同等の大文字および小文字の例 . . . . . . . . . . . . . . . . . . . HATS でサポートされる Host On-Demand マクロ言語のエレメントの階層 . . . . . <trace> エレメントの使用例. . . . . . . . . . . . . . . . . . . . . <trace> エレメントの使用例の出力 . . . . . . . . . . . . . . . . . . <actions> エレメントの例 . . . . . . . . . . . . . . . . . . . . . <attrib> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . <comment> エレメントの例 . . . . . . . . . . . . . . . . . . . . . <commwait> エレメントの例 . . . . . . . . . . . . . . . . . . . . <condition> エレメントの例 . . . . . . . . . . . . . . . . . . . . . <create> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . <cursor> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . <custom> エレメントの例 . . . . . . . . . . . . . . . . . . . . . <customreco> エレメントの例 . . . . . . . . . . . . . . . . . . . . <description> エレメントの例 . . . . . . . . . . . . . . . . . . . . <else> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . <extract> エレメントの例 . . . . . . . . . . . . . . . . . . . . . <HAScript> エレメントの例 . . . . . . . . . . . . . . . . . . . . . <if> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . . <import> エレメントの例. . . . . . . . . . . . . . . . . . . . . . <input> エレメントの例 . . . . . . . . . . . . . . . . . . . . . . <mouseclick> エレメントの例 . . . . . . . . . . . . . . . . . . . . <nextscreen> エレメントの例 . . . . . . . . . . . . . . . . . . . . <nextscreens> エレメントの例 . . . . . . . . . . . . . . . . . . . . <numfields> エレメントの例. . . . . . . . . . . . . . . . . . . . . <numinputfields> エレメントの例 . . . . . . . . . . . . . . . . . . . xii IBM Host Access Transformation Services: 拡張マクロ・ガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 123 124 130 130 131 132 133 133 134 150 151 152 153 154 155 156 157 157 159 161 162 163 163 165 166 167 181 181 182 182 182 189 191 191 195 195 196 197 198 199 199 200 201 201 202 203 205 206 207 208 208 209 209 210 211 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. <oia> エレメントの例 . . . <pause> エレメントの例 . . <perform> エレメントの例 . <playmacro> エレメントの例 <prompt> エレメントの例 . <recolimit> エレメントの例 . <screen> エレメントの例 . . <sqlquery> エレメントの例 . <string> エレメントの例 . . <trace> エレメントの例 . . <type> エレメントの例 . . <vars> エレメントの例 . . <varupdate> エレメントの例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 図 . . . . . . . . . . . . . 211 212 212 213 215 215 216 217 218 219 219 220 221 xiii xiv IBM Host Access Transformation Services: 拡張マクロ・ガイド 表 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 用語の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 算術演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 条件演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 論理演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 行の負の値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 列の負の値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 マクロ画面 Screen1 の内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 マクロ画面 Screen2 の内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 uselogic 属性の論理演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 記述子のタイプ、各タイプで使用できる数 . . . . . . . . . . . . . . . . . . . . . . . 43 変数名と値の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 マクロ・ランタイムがマクロのデータ・タイプを Java データ・タイプにマップする方法 . . . . . . . 105 HML 変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 $HMLFormatUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . . 107 $HMLPSUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . . . 109 表示スペースに関連する値を計算するための公式 . . . . . . . . . . . . . . . . . . . . 111 $HMLSessionUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . . 115 $HMLSQLUtil$ のメソッドの要約 . . . . . . . . . . . . . . . . . . . . . . . . . . 116 結果を含む 2 次元配列の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 3 つのタイプの <description> エレメント記述子 . . . . . . . . . . . . . . . . . . . . . 158 「OIA が禁止解除になるのを待つ (Wait for OIA to Become Uninhibited)」ディスクリプターの有効な設定値 160 変数のデフォルト初期値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 通信状態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 入力アクションのキーワード . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 入力アクションの双方向キーワード . . . . . . . . . . . . . . . . . . . . . . . . . 225 © Copyright IBM Corp. 2003, 2015 xv xvi IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 1 部 マクロの開発 © Copyright IBM Corp. 2003, 2015 1 2 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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.5 では非 推奨になりました。現在までサポートされていましたが、IBM はこれ以降の製 品リリースでこの機能を削除することができます。このサポートは Visual Macro Editor で置き換えられました。 HATS で使用する場合の Host On-Demand マクロの適応 本資料では、Host On-Demand マクロ言語とその使用法について説明します。本資 料は「Host On-Demand マクロ・プログラミング・ガイド バージョン 10」からの 抜粋であり、マクロの実装および HATS 内でのエディターの使用に合わせてセクシ ョンが変更されています。このセクションでは、HATS 内で使用するために Host On-Demand マクロを適合させる方法について説明します。 Host On-Demand 環境でのマクロは通常、ユーザーのワークステーションで実行さ れます。マクロは、HATS リッチ・クライアント環境では一般的にユーザーのワー クステーションで実行されますが、HATS Web 環境では一般的に中央サーバーで実 行されます。 このような違いにより、HATS ではマクロで使用するデータについて のプロンプトを出す方法も別にする必要があります。このマニュアルでは、ユーザ ーのワークステーションでプロンプト・パネルを開く方法について説明しますが、 HATS では行われません。代わりに HATS は、HATS グローバル変数、ユーザ ー・リスト、HATS 統合オブジェクトの入力プロパティー、またはユーザーのワー クステーションに送信される HTML 入力フォームを使用してユーザーから、マク ロ・プロンプトのデータを検索します。同様に、ホスト画面から抽出されたデータ は、HATS ユーザーのワークステーション上に即座に表示することはできません。 その代わりデータは、HATS グローバル変数にコピー、HATS 統合オブジェクトの 出力プロパティーにコピー、または HTML ページ内でユーザーのワークステーシ © Copyright IBM Corp. 2003, 2015 3 ョンに送信されます。 HATS ランタイムのマクロ・エンジンによってこれら追加の マクロ対話機能を提供できるようにするため、HATS Toolkit は、HATS Toolkit と ランタイムにマクロ・スクリプトについての追加情報を提供する XML の別のレイ ヤーで各 Host On-Demand マクロ・スクリプトをカプセル化します。 このマニュアルで説明する Host On-Demand マクロ・スクリプトは、<HAScript> タ グで始まり、</HAScript> タグで終わります。HATS では、各 Host On-Demand マ クロ・スクリプトが <macro> 開始タグと </macro> 終了タグの内側にラップされま す。<macro> タグには、次の 4 つのエレメントがあります。 v <associatedConnections> タグは、このマクロに関連付ける接続定義を定義しま す。 – これにより、HATS アプリケーションをビルドおよび構成するときに、Toolkit でマクロ名のドロップダウン・リストを作成できるようにします。 – このエレメントは、HATS ランタイム・マクロ・エンジンにより無視されま す。 v <extracts> タグは、HATS マクロ・エンジンに対して、マクロの実行中にホスト 画面から抽出されるデータの処理方法を定義します。このエレメント内の情報 は、マクロを使用して統合オブジェクトを作成する場合に、作成される統合オブ ジェクトの出力プロパティーのサイズとタイプを示すためにも使用されます。 – マクロを実行アクションまたはマクロ・トランザクションを実行アクションに よってマクロが再生される場合は、このエレメントによって、抽出データをグ ローバル変数に保管するか、または HTML ページによりユーザーのワークス テーションに送信するかどうかが制御されます。 – このマクロが HATS ランタイムのマクロ・エンジンの外部で再生される場 合、このエレメントは無視されます。例えばマクロを、HATS 統合オブジェク トを介して Web サービスとして、EJB として、または JSP ページのセット として実行する場合、抽出されたデータは統合オブジェクトの出力プロパティ ーにコピーされ、これにより、それぞれ Web サービス、EJB Access Bean、ま たは JSP ページで使用可能になります。 – <extracts> タグはランタイムに統合オブジェクトによって使用されることはあ りませんが、<extracts> タグを使用して HATS マクロから統合オブジェクトを 作成する方法を選択できます。特に、統合オブジェクトの出力プロパティーの 構造は、このエレメントによって決まります。<extracts> エレメント内の情報 は、Host On-Demand マクロ・スクリプト自体に含まれる実際の <extract> ア クションと一致している必要があります。それ以外の場合は、ランタイムに抽 出されるデータが統合オブジェクトの出力プロパティーに正しく適合せず、デ ータを失う可能性があります。<extracts> タグには、データの各列の名前、 幅、およびエレメント数が記録されるので、この点はデータのテーブルを抽出 する場合に特に重要になります。Host On-Demand マクロの <extract> タグは 同じ領域を示し、列出力プロパティーへのデータの構文解析が正しく実行され るようにする必要があります。 v <prompts> タグには、HATS マクロ・エンジン用として、マクロの実行を完了す るために必要なデータの処理方法が記述されます。このエレメント内の情報は、 マクロを使用して統合オブジェクトを作成する場合に、作成される統合オブジェ クトの入力プロパティーのサイズとタイプを示すためにも使用されます。 4 IBM Host Access Transformation Services: 拡張マクロ・ガイド – HATS マクロ・エンジンが画面のカスタマイズ中に (マクロを実行アクション かマクロ・トランザクションを実行アクションを使用して) マクロを実行して いる場合、このエレメントは、必要なデータをグローバル変数から取得する か、指定されたストリング・リテラルから取得するか、または HTML ページ によりエンド・ユーザーから要求されるようにするかどうかを制御します。 – このマクロが HATS ランタイムのマクロ・エンジンの外部で再生される場 合、このエレメントは無視され、必要とされるすべてのデータはマクロが実行 されている環境 (例えば、Web サービス、EJB、または統合オブジェクト) に よって供給されます。 – <prompts> タグはランタイムに統合オブジェクトによって使用されることはあ りませんが、HATS マクロから統合オブジェクトを作成する方法を選択する場 合には、<prompts> タグを使用します。特に、統合オブジェクトの入力プロパ ティーの構造はこのエレメントによって決まります。<prompts> エレメント内 の情報は、Host On-Demand マクロ・スクリプト自体に含まれる実際の <prompts> アクションと一致している必要があります。それ以外の場合は、ラ ンタイムに統合オブジェクトによって供給されるデータは、Host On-Demand マクロの <prompt> アクションで必要とされるデータとしては不十分となり、 マクロが正しく再生されなくなります。 v <HAScript> タグは、このマニュアルで説明する Host On-Demand マクロのスク リプトです。 次の例は、2 つの prompts と 1 つの extracts を含む単純なマクロの構造を示して います。 第 1 章 拡張マクロの紹介 5 <?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. 単純なマクロ構造 図 1 のサンプル・マクロは、マクロを実行するエンジンに応じて異なる方法でその 環境と対話します。 6 IBM Host Access Transformation Services: 拡張マクロ・ガイド 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 Access Transformation Services ユーザーと管理者のガイド」の章『マクロとホスト端末』 を参照してください。 v 基本 HATS マクロ・エディターの「概要」ページで「拡張エディター」をクリッ クし、拡張マクロ・エディターを使用して、マクロを操作します。 第 1 章 拡張マクロの紹介 7 用語の定義 表 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: 拡張マクロ・ガイド a. 「マクロの記録」アイコンをクリックする。「マクロの記録」ウィザードが 開く。 b. 「完了」をクリックしてデフォルト値を受け入れる。「画面認識基準の定 義」ウィザードが開く。 c. 「完了」をクリックしてデフォルト値を受け入れる。ホスト端末ウィンドウ のタイトル・バーに、「記録中...」と表示される。 d. 「マクロの停止」アイコンをクリックする。「画面認識基準の定義」ウィザ ードが開く。 e. 「完了」をクリックしてデフォルト値を受け入れる。 f. 「マクロを保存」アイコンをクリックする。 3. 記録したマクロを編集する。 a. HATS プロジェクト表示の「マクロ」フォルダーで、記録したマクロの名前 をダブルクリックする。 b. エディターの下部にある「ソース (Source)」タブをクリックして、ソース表 示をオープンする。 c. ソース表示で、<HAScript> で始まり </HAScript> で終わる行を削除する。 d. このマニュアルから、マクロ・スクリプトのテキスト全体をシステムのクリ ップボードにコピーする。 e. コピーしたマクロ・スクリプトをソース表示に貼り付ける。 f. 「ファイル」 > 「保存」をクリックして (または Ctrl+S を押して)、マク ロ・スクリプトを保存する。 マクロは、どの HATS マクロ・エディターを使用しても、さらに編集できます。 注: このマニュアルのサンプルの中には、不完全なマクロ・スクリプトもありま す。完全なマクロ・スクリプトは、<HAScript> エレメントで開始および終了 し、省略符号は含まれていません (省略符号は、サンプル内の未表示情報を示し ます)。他のサンプルはマクロ・コード・スニペットであり、既存の完全なマク ロ内部の適切な場所に貼り付ける必要があります。 第 1 章 拡張マクロの紹介 9 10 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 部 Host On-Demand マクロ言語』で詳しく説明しています。 XML マクロ・エレメント名は、不等号括弧によって囲まれています。例えば、 <HAScript> エレメント、<screen> エレメントなどです。 12 ページの図 2 は、XML エレメントの例を示しています。 © Copyright IBM Corp. 2003, 2015 11 <SampleElement attribute1="value1" attribute2="value2"> ... </SampleElement> 図 2. サンプル XML エレメント 図 2 に示されるエレメント <SampleElement>には、すべてのマクロ・エレメントの キー・コンポーネントが含まれています。最初の行は、開始タグです。開始タグ は、左不等号括弧 (<) の後に、XML エレメントの名前 (SampleElement)、属性定 義、右不等号括弧 (>) の順に続きます。2 行目は省略符号 (...) で構成されていま す。この省略記号は、XML 構文の一部ではありませんが、上の図では、 <SampleElement> エレメント内部に他のエレメントが存在する可能性を示すために 使用されています。3 行目は、終了タグです。終了タグでは、エレメント名が不等 号括弧で囲まれ、最初の不等号括弧の後にスラッシュが付きます (</Sample Element>)。 開始タグでは、属性を指定するのに、属性名 (例えば、attribute1) の後に、等号 (=)、引用符で囲まれた属性値 (例えば、"value1") の順に続きます。開始タグの内 部には、任意の数の属性が存在する可能性があります。 マクロ・エレメントに他の XML エレメントが含まれていない場合、図 3 のよう に、省略形式で書き込むことができます。 <SampleElement attribute1="value1" attribute2="value2" /> 図 3. 省略形式で書かれたサンプル XML エレメント 図 3 では、<SampleElement> エレメントは左不等号括弧 (<) の後に、名前 (SampleElement)、属性、スラッシュ、右不等号括弧 (/>) の順に続けて書き込まれて います。このように、XML エレメント全体が 1 対の不等号括弧内に書き込まれま す。 マクロ・スクリプトの概念視点 Host On-Demand マクロ・スクリプトは、最大 3 つの主なタイプのサブエレメント を含むことが可能な、1 つの <HAScript> エレメントから構成されます。 v 1 つの <import> エレメント (オプション) v 1 つの <vars> エレメント (オプション) v 1 つ以上の <screen> エレメント 13 ページの図 4 は、サンプル・マクロ・スクリプトの概念視点を示しています。 12 IBM Host Access Transformation Services: 拡張マクロ・ガイド HAScript インポート Screen1 Screen2 Screen3 図 4. マクロ・スクリプトの概念視点 図 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> エレメント内で指定さ れます。 第 2 章 マクロの構造 13 マクロ画面とそのサブコンポーネント ここでは、マクロ画面とその主なサブコンポーネントについて説明します。マクロ 画面の定義は、別の条件であるアプリケーション画面によって決まります。 アプリケーション画面 アプリケーション画面は、ホスト・アプリケーションによってホスト端末上に表示 される、意味のある文字配置です。アプリケーション画面の一例は、図 5 に表示さ れている「OS/390® ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」です。 main - Host Terminal Host Terminal Host Screen Preview Menu Utilities Compilers Status Help OS/ 390 Primary Option Menu Option ===> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 D DAT Options Settings View Edit Utilities Foreground Batch Command Dialog Test LM Facility IBM Products SCLM Workplace OS/390 System OS/390 User Db2 SDSF DB2 TOOL More: Terminal and user parameters Display source data or listings Create or change source data Perform utility functions Interactive language processing Submit job for language processing Enter TSO or Workstation commands Perform dialog testing Library administrator functions IBM program development products SW Configuration Library Manager ISPF Object/Action Workplace OS/390 system programmer applications OS/390 user applications DB2 V9 Subsystem SDSF DB2 Administration Tool Version 7.2 + User ID . : Time . . . : Terminal . : Screen . . : Language : Appl ID . . : TSO logon : TSO prefix : System ID : MVS acct. : Release . : TODD 12:54 3278 1 ENGLISH ISR OS390D9 TODD RALNS31 **NONE** ISPF 5.9 Enter X to Terminate using log/list defaults MA* a 04/014 PF1 PF2 PF3 PF4 PF5 PF6 Enter PA1 PF7 PF8 PF9 PF10 PF711 PF12 Clear PA2 Attn NewLine SysReq NextPad 図 5. サンプル・アプリケーション画面「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」 図 5 で、このアプリケーション画面には、一番上の行にメニュー選択項目 (Menu、 Utilities、Compilers、Options など)、上部付近にタイトル (OS/390 Primary Option Menu)、左側にオプションのリスト (0 から DAT)、およびオプション番号ま たは文字を入力する入力フィールド (Option ===>) が表示されています。ユーザー が入力すると (例えば、3 (Utilities を表す) を入力した後、Enter キーを入力する と)、ISPF アプリケーションは、ホスト端末からこれらの表示項目をすべて除去 し、別のアプリケーション画面を表示します。 14 IBM Host Access Transformation Services: 拡張マクロ・ガイド マクロ画面 マクロ画面は、特定のアプリケーション画面へのアクセスを管理する方法をマク ロ・ランタイムに指示する、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 Screen1 アクション な 図 6. <screen> エレメントの概念視点 図 6 は、3 つの必須サブエレメント (<description> エレメント (説明)、<actions> エ レメント (アクション)、および <nextscreens> エレメント (有効な次画面 (Valid Next 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 章 画面認識』で説明してい ます。 16 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 3 章 データ・タイプ、演算子、および式 基本マクロ形式と拡張マクロ形式 マクロは、基本マクロ形式または拡張マクロ形式で保管することができます。ホス ト端末を使用してマクロを記録した場合、そのマクロは基本マクロ形式で保管され ます。マクロを編集し、変数と演算式に対するサポートを追加すると、マクロは拡 張マクロ形式に切り替えられます。 基本マクロ形式により、整数、倍精度、ブール (true または false)、およびストリン グを含むリテラル値を入力できます。 拡張マクロ形式では、基本マクロ形式の機能に加えて、次の追加機能が提供されま す。 v 正符号 (+) ストリング演算子を使用してストリング連結を許可する v 演算式を許可する v 条件式を許可する v 変数を許可する v インポートされた Java 変数タイプとメソッドを許可する ストリングと非英数字文字の表記 基本マクロ形式を選択したか、拡張マクロ形式を選択したかに応じて、マクロ内で ストリングと 2 つの特殊文字 (単一引用符 (') と円記号 (¥)) の書き込み方法が異な ります。また、基本マクロ形式では通常の文字である一部の文字を、拡張マクロ形 式では演算子として使用します。これらの文字には例えば、正符号 (+) や大なり記 号 (>) があります。 ただし、これらの規則は、画面 (名前は除く)、画面アクション、および変数とタイ プの定義に使用される、エディターのタブ上に配置されている入力フィールドのみ に影響します。 その他の入力フィールドの場合は、常に基本マクロ形式の規則を使用してくださ い。 以下のセクションで、こうした規則の違いについて説明します。 基本マクロ形式の規則 基本マクロ形式を選択した場合は、画面 (名前は除く)、画面アクション、および変 数とタイプの定義に使用される、エディターのタブ上に配置されている入力フィー ルドに対しては、次の規則を使用します。 v ストリングは、単一引用符で囲まずに書き込まれなければならない。例えば、次 のとおりです。 apple banana To be or not to be John Smith © Copyright IBM Corp. 2003, 2015 17 v 単一引用符 (') と円記号 (¥) は、先行する円記号なしに、その文字自体によって 表される。例えば、次のとおりです。 New Year’s Day c:¥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: 拡張マクロ・ガイド 拡張形式マクロから基本形式への変換 拡張マクロ形式から基本マクロ形式へのマクロの変換は、非常に困難な場合があり ます。変数と演算式を使用するためのオプションのチェックマークを外しても、自 動変換は行われません。このとき自動的に起こるのは、マクロの拡張機能が使用不 可になることだけです。 ストリング表示のすべてと 2 つの特殊文字を、一度に 1 つずつ手動で変更して、 元の基本表示に戻す必要があります。さらにそのマクロ内にある、拡張機能が使用 されているインスタンスすべてを削除する必要があります。削除しないと、スクリ プトを保管または実行しようとするときに、エラーまたは予期しない結果を検出す る場合があります。残っている拡張マクロ形式の演算子文字は、演算子ではなくリ テラル文字として処理されます。 標準データ・タイプ マクロ・オブジェクトは、次の標準データ・タイプをサポートします。 v ブール値 v 整数 v 倍精度 v ストリング これらのタイプについては、以降のサブセクションで説明します。 ブール・データ ブール値 true と false は、大文字と小文字の任意の組み合わせで書き込むことがで きます (例えば、True、TRUE、FALSE、falsE など)。 ブール値を必要とするフィールドの例は、マクロ画面定義用の「エントリー画 面」、「終了画面」、および「一時画面」フィールドです。条件を true に設定する には true を入力し、false に設定するには false を入力してください。 ブール値はストリングではない ブール値はストリングではないため、決して単一引用符で囲まないでください。例 えば、基本マクロ形式と拡張マクロ形式のいずれを使用するとしても、ブール値は 必ず true および false と記述し、’true’ や ’false’ とは記述しません。 ただし、ブールのコンテキスト内では、ストリング値がブール値に変換されます ( 23 ページの『ブールへの変換』を参照)。したがって、拡張マクロ形式を使用する 場合は、ブール・フィールド内にストリング ’true’ を入力できます。これは、マ クロ・エディターにより、’true’ ストリングがブール値 true に変換されるからで す。 整数 整数は、コンマまたはその他の区切り文字なしに書き込まれます。例えば、次のと おりです。 10000 0 -140 第 3 章 データ・タイプ、演算子、および式 19 整数定数 マクロ・エディターには、すべて大文字を使用して書き込まれる複数の整数定数が あります。これらの値は、ストリングとしてではなく、整数として扱われます。例 えば、次のとおりです。 v NOTINHIBITED v FIELD_PLANE v COLOR_PLANE 倍精度 倍精度は、コンマまたはその他の区切り文字なしに書き込まれます。例えば、次の とおりです。 3.1416 4.557e5 -119.0431 ストリング ストリングは任意の一連の文字であり、ブランク文字を先行させたり、末尾に付け たり、間に入れたりすることができます。マクロが使用するように設定されている 形式が基本マクロ形式か、拡張マクロ形式かに応じて、一部の入力フィールド内の ストリングの表記が異なります。 17 ページの『ストリングと非英数字文字の表記』 を参照してください。 次の例では、拡張マクロ形式表記を使用します。 ’apple’ ’User4’ ’Total number of users’ ’ This string has 3 leading blanks.’ ’This string has 3 trailing blanks. ’ 次に、基本マクロ形式表記を使用した同じ例を示します。 apple User4 Total 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: 拡張マクロ・ガイド 空ストリングを表すために null を使用しないでください。空ストリングを表すに は、拡張マクロ形式では 1 対の単一引用符 ('') を使用し、基本マクロ形式では何も 使用しないでください。 (例えば、ストリング変数に割り当てることによって) スト リング・コンテキストで値 null を使用する場合、マクロ・エディター またはマク ロ・ランタイムは、値 null をストリング ’null’ に変換します。 算術演算子および式 演算式を使用するには、最初に VME のマクロ・プロパティーの「変数およびタイ プ」タブ上にある「変数および演算式のサポート可能」チェック・ボックス選択す るか、AME の「マクロ」タブ上にある「マクロで変数と演算式を使用する」チェッ ク・ボックスを選択する必要があります。詳しくは、 17 ページの『ストリングと非 英数字文字の表記』を参照してください。 算術演算子を表 2 に示します。 表 2. 算術演算子 演算子 働き + 加算 - 減算 * 乗算 / 割り算 % モジュロ 演算式では、条件は左から右に評価されます。演算子の優先順位は *、/、%、+、です。例えば、次の式の結果は 8 です。 4 * 2 + 16 / 8 - 1 * 2 次のように小括弧を使用すると、式が評価される順序を指定できます。 (4 * 2) + (16 / 8) - (1 * 2) 4 * (( 2 + 16) / (8 - 1)) * 2 は 8 になります。 は 20.571 になります。 演算式の使用 演算式は、算術値を使用できる場所であれば、ほとんどどこでも使用できます。例 えば、次のとおりです。 v 画面のパラメーターとしては、例えば次の処理を行います。 – 画面の認識限界を指定する。 – 画面の一時停止時間を指定する。 v 記述子のパラメーターとしては、例えば次の処理を行います。 – カーソル記述子の行または列を指定する。 – 数値フィールド・カウント記述子内のフィールド数を指定する。 – 属性記述子の行、列、または属性値を指定する。 – 条件記述子の条件として。 v アクションのパラメーターとしては、例えば次の処理を行います。 – マウス・クリック・アクションで行または列を指定する。 第 3 章 データ・タイプ、演算子、および式 21 – 一時停止アクションのミリ秒数として。 – 変数更新アクションで値を指定する。 – 条件アクションの条件として。 v 変数の初期値として ストリング連結演算子 (+) ストリング連結演算子の正符号 (+) は、マクロ内で変数と演算式を使用する場合に のみ、使用できます。 17 ページの『基本マクロ形式と拡張マクロ形式』を参照して ください。 複数の連結が入っているストリング式を作成することができます。次の例では、拡 張形式に必要なストリング表記を使用します ( 17 ページの『ストリングと非英数字 文字の表記』を参照)。 式: 評価結果: ’Hello ’ + ’Fred’ + ’!’ ’Hi’ ’There’ ’Hello Fred!’ (エラー。ストリングを連結するには、 1 つの + 演算子が必要です) ’HiThere’ ’Hi’ + ’There’ 条件演算子と論理演算子および式 条件演算子を表 3 に示します。 表 3. 条件演算子 演算子 働き == 等しい != 等しくない > より大 < より小 >= より大か等しい <= より小か等しい 論理演算子を表 4 に示します。 表 4. 論理演算子 演算子 働き && AND || OR ! NOT HTML または XML エディターで && と入力する場合は、&& と入力す る必要がある場合があります。 条件式では、条件は左から右に評価されます。演算子の優先順位は、上記の表にリ ストされている順序と同じです。次のように小括弧を使用すると、式が評価される 順序を指定できます。例えば、次のとおりです。 22 IBM Host Access Transformation Services: 拡張マクロ・ガイド 式: 評価結果: (4 > 3) !(4 > 3 ) (4 > 3) && (8 > 10) (4 > 3) || (8 > 10) true false false true 条件式には、演算式、変数、およびインポートされた Java クラスのメソッドの呼び 出しを含むことができます。 条件演算子と論理演算子は、次の 2 つのコンテキストでしか使用できません。 v 条件記述子の「条件」フィールド v 条件アクションの「条件」フィールド 自動データ・タイプ変換 コンテキストの影響 データの項目が 1 つの標準データ・タイプ (ブール、整数、倍精度、またはストリ ング) に属しているが、コンテキストが別の標準データ・タイプを必要とする場 合、データの評価時 (マクロ・エディター がデータを保存するとき、またはマク ロ・ランタイムがマクロを再生するときのいずれか) に、可能な場合は、コンテキ ストが必要とする標準データ・タイプに自動的に変換されます。 コンテキストの例は次のとおりです。 v 条件記述子の「条件」フィールド (ブール値を期待する) v 変数がフィールド変数である場合、変数更新アクションの「値」フィールド (ロ ケーション・ストリングを期待する) v 入力アクションの「行」値 (整数値を期待する) しかし、データを新しいデータ・タイプに変換できない (例えば、ストリング 123apple を整数に変換できない) 場合は、エラーが発生します。マクロ・エディタ ーがエラー・メッセージを表示します。マクロ・ランタイムは、マクロの再生を停 止し、エラー・メッセージを表示します。 次のサブセクションでは、各標準データ・タイプに対して行われる変換について説 明します。 ブールへの変換 ブール・コンテキスト内のストリング ’true’ (または ’TRUE’、’True’ など) は、 ブール true に変換されます。ブール・コンテキスト内のその他のすべてのストリン グ (’false’、’1’、’apple’ など) は、ブール false に変換されます。 ’true’ (ブール値が必要な入力フィールド内の値) は true に変換されます。 ’apple’ (ブール値が必要な入力フィールド内の値) は false に変換されます。 整数への変換 整数コンテキスト内の有効な整数形式のストリングは、整数に変換されます。 ’4096’ ’-9’ は 4096 に変換されます。 は -9 に変換されます。 第 3 章 データ・タイプ、演算子、および式 23 倍精度への変換 倍精度コンテキスト内の有効な倍精度形式のストリングは、倍精度に変換されま す。 ’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: 拡張マクロ・ガイド 行または列の負の値の意味 ストリング記述子や、その他のいくつかの記述子とアクションでは、行または列の 負の値は、ホスト端末の最後の行または最後の列からのオフセットを示します。マ クロ・ランタイムは、行または列の位置を次のように計算します。 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 26 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 このセクションでは、マクロ・ランタイムがマクロ画面を処理するときに発生する アクティビティーについて説明します。 マクロ・ランタイム処理の概要 例として使用されるシナリオ この章では、例としてマクロからのシナリオを使用します。このマクロには、 Screen1 と Screen2 の 2 つのマクロ画面のみが含まれています。 シナリオは、マクロ・ランタイムが Screen1 ですべてのアクションを実行し、次に 処理するマクロ画面を検索する準備ができた時点から始まります。 Screen1 は、「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」(図 7 を参照) を処理するマクロ画面です。 main - Host Terminal Host Terminal Host Screen Preview Menu Utilities Compilers Status Help OS/ 390 Primary Option Menu Option ===> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 D DAT Options Settings View Edit Utilities Foreground Batch Command Dialog Test LM Facility IBM Products SCLM Workplace OS/390 System OS/390 User Db2 SDSF DB2 TOOL More: Terminal and user parameters Display source data or listings Create or change source data Perform utility functions Interactive language processing Submit job for language processing Enter TSO or Workstation commands Perform dialog testing Library administrator functions IBM program development products SW Configuration Library Manager ISPF Object/Action Workplace OS/390 system programmer applications OS/390 user applications DB2 V9 Subsystem SDSF DB2 Administration Tool Version 7.2 + User ID . : Time . . . : Terminal . : Screen . . : Language : Appl ID . . : TSO logon : TSO prefix : System ID : MVS acct. : Release . : TODD 12:54 3278 1 ENGLISH ISR OS390D9 TODD RALNS31 **NONE** ISPF 5.9 Enter X to Terminate using log/list defaults MA* a 04/014 PF1 PF2 PF3 PF7 PF8 PF9 PF4 PF5 PF6 PF10 PF711 PF12 Enter PA1 Attn NewLine Clear PA2 SysReq NextPad 図 7. 「OS/390 ISPF 基本オプション・メニュー (OS/390 ISPF Primary Option Menu)」 28 ページの表 7 は、Screen1 の内容の概念ビューを示しています。 © Copyright IBM Corp. 2003, 2015 27 表 7. マクロ画面 Screen1 の内容 <screen> エレメント Screen1 に含まれる XML エレメント: XML エレメントの内容: <description> 記述子: v 入力禁止標識がクリアされています (入力 が禁止されていません)。 アクション: <actions> 1. テキスト・カーソルを行 4、列 14 に移 動します。 2. '3[enter]' を入力します。 このマクロ画面の後に表示されるマクロ画面 の名前: <nextscreens> v Screen2 Screen2 は、「Utility Selection Panel」(図 8 を参照) を処理するマクロ画面です。 main - Host Terminal Host Terminal Host Screen Preview File Edit Menu View Communication Actions Help Help Utility Selection Panel Option ===> 1 Library Compress or print data set. Print index listing. Print, rename, delete, browse, edit or view members 2 Data Set Allocate, rename, delete, catalog, uncatalog, or display information of an entire data set 3 Move/Copy Move, or copy members or data sets 4 Dslist Print or display (to process) list of data set names. Print or display VTOC information 5 Reset Reset statistics for members of ISPF library 6 Hardcopy Initiate hardcopy output 7 Transfer Download ISPF Client/Server or Transfer data set 8 Outlist Display, delete, or print held job output 9 Commands Create/change an application command table 11 Format Format definition for formatted data Edit/Browse 12 SuperC (Standard Dialog) Compare data sets 13 SuperCE (Extended Dialog) Compare data sets Extended 14 Search-For Search data sets for strings of data (Standard Dialog) 15 Search-ForE Search data sets fro strings of data Extended (Extended Dialog) 16 Tables ISPF Table Utility 17 Udlist Print or display (to process) z/OS UNIX directory list MA* a 04/014 PF1 PF2 PF3 PF4 PF5 PF6 PF7 PF8 PF9 PF10 PF11 PF12 Menu Enter Clear PA1 Attn NewLine PA2 SysReq NextPad Help 図 8. 「Utility Selection Panel」アプリケーション画面 29 ページの表 8 は、Screen2 の内容の概念ビューを示しています。 28 IBM Host Access Transformation Services: 拡張マクロ・ガイド 表 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 プロセス全体の 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: 拡張マクロ・ガイド ステップ 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 Option Menu)」の次に「Utility Selection Panel」を表示することを目的としています。これ は、次画面の表示に必要なアクション (’3[enter]’) が既に実行されており、予想し たアプリケーション画面が表示されるのをマクロ画面が待機している状態です。 マクロ・ランタイムによる候補マクロ画面名の選択方法 このセクションでは、マクロ・ランタイムが、有効な次画面のリストに入れるマク ロ画面名を選択する方法を説明します。次の 2 つの場合があります。 v 最初のマクロ画面が再生される場合、マクロ・ランタイムは、エントリー画面の マークが付いている、マクロ内の任意のマクロ画面の名前を選択します。 v 後続のすべてのマクロ画面が再生される場合、マクロ・ランタイムは、現行マク ロ画面の <nextscreens> エレメントで検出する名前を使用します。 最初のマクロ画面: マクロの再生が始まるときには、有効な次画面のリストは空で す (一時画面を除く。 32 ページの『一時画面』を参照)。 最初に処理されるマクロ画面の候補を見つけるために、マクロ・ランタイムは、マ クロ全体を検索し、エントリー画面のマークが付いている各マクロ画面を見つけ、 これらのマクロ画面の名前をリストに追加します。 エントリー画面の設定 (<screen> エレメントの属性) は、この目的のために存在 し、最初に処理される画面として表示可能なマクロ画面にマークを付けます。 マクロが記録されるときに、マクロ・オブジェクトは、デフォルトで、最初に記録 されるマクロ画面のみにエントリー画面のマークを付けます。記録が完了した後、 第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 31 ユーザーは、任意のマクロ画面にエントリー画面のマークを付けたり、マークを解 除したりすることができます。複数のエントリー画面が存在できます。 エントリー画面については、 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: 拡張マクロ・ガイド このプロセスは、画面認識と呼ばれます。これは、マクロ・ランタイムが、リスト 上のマクロ画面の 1 つを、ホスト端末に現在表示されているアプリケーション画面 に対応するものとして認識するからです。 評価の概要 マクロ・ランタイムは、候補マクロ画面を、有効な次画面のリスト内にそれらの名 前が表示されている順に評価します。 マクロ・ランタイムが、候補の 1 つがアプリケーション画面と一致することを検出 すると、ただちに評価を停止し、リストから候補名を除去する次のステップ (ステ ップ 1(c)) に進みます。一致する画面は、次に処理されるマクロ画面になります (ス テージ 2)。 しかし、マクロ・ランタイムは、リストに含まれるすべてのマクロ画面を評価して も一致を検出できない場合には、評価を一時的に停止し、ホスト端末が更新される までは何も実行しません。 繰り返し画面評価 マクロ・ランタイムが画面認識を実行する一方で、ホスト・アプリケーションはホ スト端末を新しいアプリケーション画面で更新します。例のシナリオでは、ホス ト・アプリケーションは、「Utility Selection Panel」が表示されるようにホスト端末 を更新しています。このプロセスには数百ミリ秒かかり、ホストから数パケット分 のデータが必要になる場合があります。 この状況は、画面が更新されるまでマクロ・ランタイムが画面認識を一時的に停止 する理由の説明になります。画面認識が失敗した場合、新しいアプリケーション画 面が不完全であることが理由である可能性があります。したがって、マクロ・ラン タイムは待機します。 マクロ・ランタイムは、OIA 行またはホスト端末の表示スペースが更新されるたび に、有効な次画面のリストを調べ、現行のアプリケーション画面との一致を検出し ようとします。一致が見つからない場合、マクロ・ランタイムは再び待機します。 マクロ・ランタイムは、画面認識が正常に行われるまでに、待機と評価のサイクル を数回繰り返す場合があります。 最終的に、必要な新しいアプリケーション画面に到達し、マクロ・ランタイムは、 リストに名前が指定されたマクロ画面の 1 つを、新しいアプリケーション画面と一 致させることができます。 マクロ画面がアプリケーション画面と一致するかどうかの判別 マクロ・ランタイムは、マクロ画面内の個々の記述子を現行のホスト端末画面と比 較することによって、そのマクロ画面が現行のアプリケーション画面に一致するか どうかを判別します。 例のシナリオでは、マクロ・ランタイムは有効な次画面のリストで名前 Screen2 を 検索して、Screen2 を取得します。また、その記述子を検索して、記述子をホスト端 末と比較します。 第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 33 各マクロ画面には、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: 拡張マクロ・ガイド 例のシナリオでは、マクロ・ランタイムは Screen2 を新しい現行マクロ画面にしま す。ホスト端末には、新しいアプリケーション画面である「Utility Selection Panel」 が表示されます ( 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 属性』を参照)。 また、特定のアクションに対して、アクション後に一時停止アクションを追加する ことによって、遅延を増やすこともできます ( 72 ページの『一時停止アクション (<pause> エレメント)』を参照)。 第 4 章 マクロ・ランタイムによるマクロ画面の処理方法 35 処理サイクルの繰り返し マクロ・ランタイムが現行マクロ画面の <actions> エレメント内のすべてのアクシ ョンを実行した後、マクロ・ランタイムは、新しい現行マクロ画面の <nextscreens> エレメントにリストされている候補マクロ画面を使用して、ステップ 1(a) からただ ちに処理サイクルを再開します。 マクロの終了 次画面があるかどうかに関係なく、マクロ・ランタイムは、終了画面としてマーク が付けられたマクロ画面の処理が終了すると、マクロを終了します。 例のシナリオでは、Screen2 には終了画面のマークが付いています ( 29 ページの表 8 を参照)。 終了画面の設定 (<screen> エレメントの属性) は、この目的のために存在し、マク ロを終了するマクロ画面にマークを付けます。 マクロが記録されるときに、マクロ・オブジェクトは、デフォルトで、最後に記録 されるマクロ画面に終了画面のマークを付けます。記録が完了した後、ユーザー は、任意のマクロ画面に終了画面のマークを付けたり、マークを解除したりするこ とができます。複数の終了画面が存在できます。 終了画面については、 52 ページの『終了画面』で詳しく説明しています。 36 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 較します。最終的に、マクロ・ランタイムがリスト上のマクロ画面のいずれ かをアプリケーション画面と一致させることができる (例えば、ストリング 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: 拡張マクロ・ガイド ト (通常、非常に短いリスト) と比較することです ( 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 メソッドを使用します。 v デフォルトの結合メソッドを使用する場合 第 5 章 画面記述 39 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 にする。 デフォルト結合メソッドの働きを十分理解している場合を除いて、他のシナリオに デフォルトのメソッドを使用しないでください。 デフォルト結合メソッドは、次のものを使用します。 v 個々の記述子のブール結果 (『個々の記述子の評価』を参照) 40 IBM Host Access Transformation Services: 拡張マクロ・ガイド 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 つのマクロ画面における複数の記述子の デフォルト規則』を参照してください。 また、規則とその意味を十分に理解している場合を除いて、1 つのマクロ画面内の 複数の記述子のオプション属性に異なる値を設定 (一部を true とし、残りを false と設定) しないでください。 第 5 章 画面記述 41 uselogic 属性 <description> エレメントの uselogic 属性を使用すると、上記のセクションで説明し たデフォルト結合メソッドで使用可能な複数の記述子間で、より複雑な論理関係を 定義できます。 HATS では、マクロを記録すると、デフォルトの uselogic 属性が <description> タ グに追加されます。この属性は、マクロをホスト端末またはマクロ・エディターで 編集すると、再生成されます。ソース表示でマクロを編集した場合には、再生成さ れません。 注: uselogic 属性を使用すると、マクロ・ランタイムは、個々の記述子の invertmatch 属性と Optional 属性を無視します。 uselogic 属性の値は、単純化された論理式であり、その条件は、後続の記述子の 1 ベースのインデックスです。図 9 は、uselogic 属性を含む <description> エレメント の例を示しています (分かりやすくするために、<string> エレメントの属性の一部が 省略されています)。 <description uselogic="(1 and 2) or (!1 and 3)" /> <oia status="NOTINHIBITED" optional="false" invertmatch="false"/> <string value="'Foreground' row="5" col="8"/> <cursor row="18" col="19" optional="false" invertmatch="false"/> </description> 図 9. <description> エレメントの uselogic 属性の例 図 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 (包含) ! 論理 NOT (否定) v 条件をグループ化するには、小括弧 () を使用できます。 v 以下のエンティティーは使用できません。 42 IBM Host Access Transformation Services: 拡張マクロ・ガイド – 算術演算子および式 – 条件演算子および式 – 変数 – Java メソッドの呼び出し 42 ページの図 9 の例では、次のいずれかの状態が発生すると、マクロ・ランタイム は記述子が全体として true かどうかを判別します。 v 最初の記述子の結果が true であり、2 番目の記述子の結果が true である (1 and 2) v 最初の記述子の結果が false であり、3 番目の記述子の結果が true である (!1 and 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 ストリング記述子 0 またはそれ以上 カーソル記述子 0 または 1 属性記述子 0 またはそれ以上 条件記述子 0 またはそれ以上 カスタム記述子 0 またはそれ以上 以下のサブセクションでは、各タイプの記述子を詳しく説明しています。 第 5 章 画面記述 43 OIA 記述子 (<oia> エレメント) ほぼすべてのシナリオで、この記述子のデフォルト設定を受け入れることができま す。デフォルト設定は NOTINHIBITED です。画面認識時には、次のことが行われま す。 v ホスト端末の入力禁止標識が設定されている (つまり、入力が禁止されている) 場 合、マクロ・ランタイムはこの記述子を false と評価します。 v しかし、入力禁止標識がクリアされる (つまり、入力が禁止されない) 場合、マク ロ・ランタイムはこの記述子を true として評価します。 これらは、予期した結果です。通常、入力禁止標識が設定されている間に、マク ロ・ランタイムがマクロ画面を認識して、アクションの処理をただちに開始するこ とを、ユーザーは希望しません。 (タイミングについて詳しくは、 90 ページの『画 面の完了』を参照してください)。ただし、その問題の解決方法にかかわらず、ほと んどの場合、この記述子はデフォルト設定 (NOTINHIBITED) のままにしておく必要が あります。 しかし、マクロ・ランタイムに入力禁止状態を無視させるシナリオの場合は、この 記述子を DONTCARE に設定してください。 「フィールド数」記述子 (<numfields> エレメント) 「フィールド数」記述子は、3270 または 5250 フィールドという特定の数を指定し ます。「フィールド数」入力フィールドには、整数、または整数に評価される任意 のエンティティー (例えば、変数、演算式、または外部 Java メソッドの呼び出し) を使用できます。 画面認識時にマクロ・ランタイムは次のことを行います。 1. この記述子を評価し、整数の結果を取得する。 2. アプリケーション画面 (現在の状態) 内のフィールド数をカウントする。 3. この 2 つの数字を比較する。 2 つの数字が等しい場合、マクロ・ランタイムはこの記述子を true と評価します。 等しくない場合、マクロ・ランタイムはこの記述子を false として評価します。 マクロ・ランタイムがホスト端末上のフィールドをカウントするときには、入力フ ィールドを含む、すべてのタイプの 3270 または 5250 フィールドをカウントしま す。 この記述子を使用したくない場合は、「フィールド数」入力フィールドをブランク に設定してください。 「入力フィールド数 (Number of Input Fields)」記述子 (<numinputfields> エレメント) 「入力フィールド数」記述子は、上記のセクションで説明した「フィールド数」記 述子と非常によく似ています。違いは、「入力フィールド数」記述子が 3270 また は 5250 入力フィールドの数を指定するのに対して、「フィールド数」記述子は、 (入力フィールドを含む) すべてのタイプのフィールドの数を指定することです。 44 IBM Host Access Transformation Services: 拡張マクロ・ガイド 「入力フィールド数」フィールドには、整数、または整数に評価される任意のエン ティティー (例えば、変数、演算式、または外部 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’ があるとしま す。この長方形域は、そのストリングがちょうど入る大きさです。アプリケーショ ン画面のこの位置に常にこのストリングがある場合、正確な長方形域を指定できま す。 ただし、マクロ画面に突き合わせるアプリケーション画面のその領域内に同じスト リング ’Terminal and user parameters’ があっても、アプリケーション画面のど の行にそのストリングが含まれているかについては予測できないとします。この場 合、長方形域 (1,1)、(-1,-1) を指定できます。これは、マクロ・ランタイムがアプリ ケーション画面のすべての行を検索して、その識別ストリングを見つけることを示 します。 第 5 章 画面記述 45 ストリング値の場合、ストリング、またはストリングに評価される任意のエンティ ティー (例えば、変数、式、または外部 Java メソッドの呼び出し) を使用できま す。このストリングは、選択したマクロのフォーマット (基本または拡張) に必須な 形式である必要があります。 画面認識時にマクロ・ランタイムは次のことを行います。 1. 行と列の値を評価し、値ごとに整数の結果を取得する。 2. ストリング値を評価し、ストリングの結果を取得する。 3. 行と列の値によって指定されたアプリケーション画面 (現在の状態) 内の長方形 のテキスト・ブロック内の任意の場所で、ストリングを探す。 マクロ・ランタイムが長方形のテキスト・ブロック内でストリングを見つけると、 マクロ・ランタイムは、この記述子を true と評価します。見つからない場合、マク ロ・ランタイムはこの記述子を false と評価します。 マクロ・ランタイムが長方形域を検索する方法 (Wrap 属性) Wrap 属性が「false」(デフォルト設定) に設定されている場合、マクロ・ランタイム は、長方形域の各行を別々に検索します。このメソッドが有効なのは、ストリング 全体が 1 つの行に入っている場合です。例えば、ストリングが Utility Selection Panel であり、長方形域が (1,1)、(24,80) である場合、マクロ・ランタイムは次の ようにこのストリングを検索します。 1. 長方形域の最初の行を取得する。ストリングがこの行にあるかどうかを判別しま す。ない場合は、次の行を検索します。 2. 長方形域の 2 番目の行を取得する。ストリングがこの行にあるかどうかを判別 します。ない場合は、次の行を検索します。 3. 以降も同様です。 一方、Wrap 属性が「true」に設定されている場合、マクロ・ランタイムは、次のよ うにストリングを検索します。 1. 長方形域のすべての行を取得し、それらを、順に連結する。 2. 連結された行内にストリングがあるかどうかを判別する。 検索対象のストリングが、ホスト端末上のある行から次の行に折り返される可能性 がある場合は、Wrap 属性を「true」に設定してください。この属性を、抽出アクシ ョンの Unwrap 属性と混同しないください。抽出アクションの Unwrap 属性は、テ キスト・ブロックではなく、フィールドに基づきます ( 65 ページの『unwrap 属 性』を参照)。 次の記述は、Wrap 属性が「true」に設定されている例を示しています。 47 ページの図 10 は、アプリケーション画面の行 14 から 18 を示しています。 46 IBM Host Access Transformation Services: 拡張マクロ・ガイド 6 7 8 9 * Hardcopy Transfer Outlist Commands Reserved ハードコピー出力の開始 ISPF クライアント/サーバーまたは転送データ・セットのダウンロード 保留ジョブ出力の表示、削除、印刷 アプリケーション・コマンド・テーブルの作成/変更 This option reserved for future expansion 図 10. アプリケーション画面の行 14 から 18 図 10 では、各行の最初の文字がブランク・スペースになっています。例えば、行 14 では、先頭の 2 文字は ’ 6’ です。つまり、ブランクのスペースの後に数表示 6 が続いたものです。このアプリケーション画面で、次の長方形のテキスト・ブロ ックがあるかどうか検査するストリング記述子をセットアップするものとします。 Hardcopy Transfer Outlist Commands Reserved この複数行のブロックのストリング記述子をセットアップする手順は、次のとおり です。 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」に設定されている場合に、複数行のテ キストを抽出するときです。 同じ <description> エレメント内の複数のストリング記述子 同じ <description> エレメント内に複数のストリング記述子を作成できます。信頼性 の高い記述を作成するには、必要な数のストリング記述子を使用する必要がありま す。 第 5 章 画面記述 47 同じ <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 ページの 『条件演算子と論理演算子および式』を参照してください。 画面認識時にマクロ・ランタイムは、条件式を評価し、ブール結果を得ます。 条件式が true に評価される場合、マクロ・ランタイムはこの記述子を true と評価 します。条件式が true に評価されない場合、マクロ・ランタイムはこの記述子を false と評価します。 48 IBM Host Access Transformation Services: 拡張マクロ・ガイド 条件記述子は、マクロ・ランタイムが、1 つ以上の変数の値、または Java メソッド の呼び出しの結果に基づいて、次に処理されるマクロ画面を判別できるようにする ことによって、画面認識の柔軟性と能力を向上させます。 カスタム記述子 (<customreco> エレメント) カスタム記述子では、カスタム記述コードを呼び出すことができます。 カスタム記述子を作成するには、ソース表示を使用して、<customreco> エレメント を 1 つマクロ画面の <description> エレメントに追加する必要があります。このエ レメントについて詳しくは、 200 ページの『<customreco> エレメント』を参照して ください。 注: HATS マクロの画面記述子でカスタム画面認識を使用している場合で、そのマ クロが <playmacro> アクションを介して別のマクロ内から呼び出されている場 合は、そのカスタム画面認識のロジックは正しく機能しません。 HATS は、チェーンの先頭のマクロ内のカスタム認識イベントに対するリスナ ーとしてのみ登録できます。HATS は、そのチェーン内の後続のマクロに対す るリスナーとしては登録できません。 この問題を解決するには、HATS カスタム画面認識を使用する際は、チェーン されていないマクロを使用します。 変数更新アクション (<varupdate> エレメント) 変数更新項目は記述子ではありません。マクロ言語により <description> エレメント 内で発生するのを許可されているアクションです。 <description> エレメント内の変数更新アクションは、<actions> エレメントで実行す るのと同じタイプの操作を実行します。つまり、指定された値を指定された変数に 保管します。 変数更新アクションの作成については、 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照してください。 説明内の変数更新アクションの処理 変数更新アクションが <description> エレメント内にあるときに、マクロ・ランタイ ムが 1 つ以上の変数更新アクションを処理する方法に注意してください。 1. マクロ・ランタイムは、すべての変数更新アクションの順番が先頭であるかのよ うに、これらのアクションをただちに実行する。 2. その後、マクロ・ランタイムは、説明内の残りの項目 (記述子) を通常どおりに 評価し、全体的なブール結果を得る。変数更新アクションは、ブール結果に影響 しません。 上記で説明したように、マクロ・ランタイムは、マクロ画面をアプリケーション画 面と一致させる前に、画面認識プロセスを複数回実行する場合があります ( 33 ペー ジの『繰り返し画面評価』を参照)。したがって、<description> エレメントに 1 つ 以上の変数更新アクションが含まれている場合、マクロ・ランタイムは、 <description> エレメントを評価するたびに、変数更新アクションを実行します。 第 5 章 画面記述 49 例えば、マクロが再生中であり、画面名 ScreenB が有効な次画面のリスト上にあ り、図 11 に表示されているような <description> エレメントが ScreenB に含まれて いるとします。 <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> エレメント マクロ・ランタイムが ScreenB を現行のアプリケーション画面と突き合わせようと するたびに、次のことを行います。 1. マクロ・ランタイムは <varupdate> アクションを見てそのアクションを実行し、 $intUpdate$ の値を 1 つ大きくします。 2. マクロ・ランタイムは、<oia> 記述子と <attrib> 記述子を評価し、<description> エレメント全体のブール結果を得る。 uselogic 属性を使用した変数更新 <description> エレメント内の変数更新アクションを、先頭以外の順序でマクロ・ラ ンタイムに実行させたい場合は、デフォルト結合規則ではなく、<description> エレ メントの uselogic 属性を使用して、実行の順序を変更できます ( 42 ページの 『uselogic 属性』を参照)。 uselogic 属性で変数更新アクションが使用される場合は、次のようになります。 v マクロ・ランタイムは、uselogic 属性で指定されるのと同じ順序で変数更新アク ションを実行する。 v マクロ・ランタイムは、常に変数更新アクションを true に評価する。 50 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 す。例えば、画面 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: 拡張マクロ・ガイド 数は予測不能 (ユーザーが無効なデータを入力したとき) であり、マクロ開発者とし てこのエラー画面に対して行う必要があるアクションは、エラー画面を消去してマ クロを元どおり実行することだけです。 マクロ・ランタイムは、マクロの再生を準備する際に、エントリー画面の名前を有 効な次画面のランタイム・リストに追加する時点で、一時画面のマークが付けられ たマクロ画面があれば、その名前もすべてリストの末尾に追加します。 一時画面は、エントリー画面としてのマークが付けられていないエントリー画面と 見なされます。一時画面をエントリー画面として選択すると、そのアクションが実 行され、続いてマクロがすべてのエントリー画面とすべての一時画面を検査して、 一致する次の画面を決定します。 これらの一時画面のリストは、マクロの再生全体を通して、有効な次画面のランタ イム・リストに残ります。マクロ・ランタイムが新しい候補マクロ画面の名前を (現行マクロ画面の <nextscreens> エレメントから) リストに追加するとき、マク ロ・ランタイムはこれらの新しい候補名を一時画面の名前の前に追加するので、一 時画面の名前は必ずリストの最後にあります。 マクロ・ランタイムが画面認識を実行するとき、リストにあるすべての名前のマク ロ画面を通常の方法で評価します。マクロ・ランタイムは、リストに名前がある候 補マクロ画面の中からアプリケーション画面との一致を見つけられない場合、リス トを下に向かって進み、アプリケーション画面のリストに指定された一時マクロ画 面の 1 つとの突き合わせを試みます。 現行アプリケーション画面といずれかの一時マクロ画面との一致を検出した場合、 マクロ・ランタイムはリストから名前を除去しません。代わりに、マクロ・ランタ イムは一時マクロ画面のアクション (予期しないアプリケーション画面を消去する) を実行し、予期しないアプリケーション画面が発生したときに行っていた画面認識 処理に戻ります。 一時画面の処理の例 マクロ・ランタイムが画面認識を行っていて、有効な次画面のリストに 3 つのマク ロ画面の名前があるとします。これらの画面は、ScreenB と ScreenD (候補画面の名 前)、および ScreenR (一時画面の名前) です。マクロ・ランタイムは次のステップ を実行します。 1. ホスト端末の表示スペースが更新されると、マクロ・ランタイムは有効な次画面 のリストに名前がある画面を通常の方法で評価します。 2. 予期しないアプリケーション画面が発生したため、ScreenB または ScreenD は 現行アプリケーション画面と一致せず、ScreenR は現行アプリケーション画面と 一致したとします。 3. 一時画面が認識されたので、マクロ・ランタイムは有効な次画面のリストから名 前を除去しません。 4. マクロ・ランタイムは、ScreenR を処理対象の現行マクロ画面にします。 5. マクロ・ランタイムは、ScreenR のアクションを実行します。これらのアクショ ンは、予期しないアプリケーション画面を消去します。 6. マクロ・ランタイムは、ScreenR 内の <nextscreens> エレメント (ある場合) を 無視します。 第 6 章 画面認識 53 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: 拡張マクロ・ガイド マーを設定します。マクロ・ランタイムが画面認識を完了する前にタイマーが満了 した場合、マクロ・ランタイムはマクロを終了します。ブラウザーにエラー・ペー ジが表示され、サーバー・コンソールに次のようなメッセージが表示されます。 Macro timed out: (Macro=ispf_ex2, Screen=screen_address_type) 図 12. 画面認識タイムアウトのエラー・メッセージ このメッセージには、マクロの名前と、タイムアウトが発生したときに処理してい た画面の名前が表示されていることに注意してください。例えば、このメッセージ に指定されている画面が ScreenA ならば、マクロ・ランタイムはすでに ScreenA のアクションをすべて実行済みで、ScreenA の有効な次画面リストにあるマクロ画 面とアプリケーション画面の一致を検索していました。 マクロがホスト端末で再生されている場合は、次のメッセージが表示されます。 The host terminal does not match any expected screens. 図 13. ホスト端末に表示されるエラー・メッセージ 指定される場合、デフォルトのタイムアウト値は 60000 ミリ秒 (60 秒) に設定され ます。 <nextscreens> エレメントの timeout 属性 <nextscreens> エレメントの timeout 属性は、画面認識のタイムアウト値を指定しま す。この属性は、VME ではソース・タブを使用することにより、および AME で は「タイムアウト」フィールドを使用することにより、設定できます。 163 ページ の図 73 を参照してください。この値がゼロ以外の場合、マクロ・ランタイムは、 <HAScript> エレメントの timeout 属性に設定されている値を使用しないで、この値 を、有効な次画面の現行のリストのマクロ画面の画面認識に対するランタイム値 (ミリ秒単位) として使用します。 マクロ・ランタイムが画面認識を完了する前にタイマーが満了した場合、マクロ・ ランタイムは図 12 のメッセージを表示します。 認識限界 認識限界を設定すると、マクロ・ランタイムが特定のマクロ画面を処理する回数が 多すぎる場合に、何らかのアクションを行うことができます。マクロ・ランタイム が同じマクロ画面を処理する回数が多い場合 (100 など)、その理由はおそらく、マ クロ内でエラーが発生して、マクロがエンドレス・ループから抜け出せなくなって いるためです。 認識限界は、<screen> エレメントの開始タグ内の属性ではなく、<screen> エレメン ト内でオプションとして指定できる別個のエレメント (<recolimit> エレメント) で す (<description>、<actions>、および <nextscreens> の各エレメントと同レベル)。 第 6 章 画面認識 55 <recolimit> エレメントは、VME と AME の両方で、「認識限界の設定 (Set Recognition 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 画面名」入力フィールドを使用して、属性の値としてターゲット・マクロ画面の名 前を指定します ( 215 ページの『<recolimit> エレメント』を参照)。 goto 属性を使用すると、マクロ・ランタイムはマクロを終了せず、代わりに属性に 指定されたマクロ画面の処理を開始します。 56 IBM Host Access Transformation Services: 拡張マクロ・ガイド ターゲット・マクロ画面はどの目的にも使用できます。考えられる用途には次のも のがあります。 v デバッグの場合 v マクロを終了する前にユーザーに対して情報メッセージを表示する v マクロの処理を継続する 第 6 章 画面認識 57 58 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 7 章 マクロ・アクション 機能別のアクション 次に、すべてのアクションのリストを機能別にグループ分けして示します。 v ユーザーとの対話 – 入力 (キー・ストローク、およびクリップボードへのコピーなど、キーによっ てアクティブになる機能) – マウス・クリック – プロンプト v アプリケーションからのデータの取得 – 抽出 – SQLQuery – 変数更新 v 待機 – 通信待機 – 一時停止 v プログラミング – 条件 – 実行 (Java メソッドの呼び出し) – マクロ再生 (別のマクロへのチェーン) – 変数更新 v デバッグ – トレース アクションの実行方法 ランタイムのコンテキスト 27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』で説明し たとおり、マクロ・ランタイムが新しい現行マクロ画面を選択した場合、マクロ・ ランタイムは、そのマクロ画面の <actions> エレメントにあるアクションの実行を 即時に開始します。 マクロ・ランタイムは、すべてのアクションを実行後すぐに、次に処理するマクロ 画面を判別する次のステップに進みます。 マクロ画面のコンテキスト 単一のマクロ画面内では、マクロ・ランタイムは <actions> エレメント内での出現 順にアクションを実行します。この順序は、「アクション」リストで設定したアク ションの順序と同じです。 © Copyright IBM Corp. 2003, 2015 59 マクロ画面のアクションの作成は必須ではありません。 <actions> エレメントがな い場合、または <actions> エレメントが空の場合、マクロ・ランタイムはただちに マクロ画面処理の次のセクション (次に処理するマクロ画面の選択) に移ります。 アクションのパラメーターの指定 一般に、アクションのパラメーターを指定する際には、特定の標準データ・タイプ の即時値を受け入れるコンテキストはすべて、同じデータ・タイプのエンティティ ーをどれでも受け入れることに注意してください。例えば、ある入力フィールドが ストリング値を受け入れる場合、そのフィールドは、ストリングに評価される式、 ストリングに変換される値、ストリング変数、またはストリングを戻すインポート 済みメソッドの呼び出しも受け入れます ( 24 ページの『等価』を参照)。 ただし、変数を使用できないフィールドがいくつかあります ( 102 ページの『変数 が保持する値の使用』を参照)。 VME を使用したアクションの指定方法については、 132 ページの『アクションの操 作』を、AME を使用した指定方法については、 161 ページの『アクション・タブ』 を参照してください。 アクション 通信待機アクション (<commwait> エレメント) 通信待機アクションは、セッションの通信状況がアクションに指定した状態に変わ るまで待ちます。例えば、セッションが完全に接続状態になるまで待つ通信待機ア クションを作成できます。 このアクションは、VME ではソース・タブを使用して、 AME ではアクション・ タブを使用して指定することができます。 170 ページの『通信待機アクション』を 参照してください。 アクションの動作 マクロ・ランタイムが通信待機アクションの実行を開始すると、ランタイムは通信 待機アクションに指定された通信状況を注視し、セッションの実際の通信状況と比 較します。2 つの状況が一致した場合、マクロ・ランタイムは通信待機アクション が完了したと判断し、マクロ・ランタイムは次のアクションの実行に進みます。 ただし、2 つの状況が一致しない場合、マクロ・ランタイムは他の処理を行わず、 通信待機アクションに指定された通信状況がセッション内で実際に発生するまで単 に待ちます。 タイムアウト値の有効期間が切れるとマクロ・ランタイムが通信待機アクションを 終了するように、通信待機アクションにミリ秒単位のタイムアウト値を指定できま す。つまり、マクロ・ランタイムが待っている通信状況にならなくても、タイムア ウト値の有効期限が切れるとマクロ・ランタイムはアクションを終了します。 60 IBM Host Access Transformation Services: 拡張マクロ・ガイド 通信待機アクション後、セッションが必要とする通信状況に実際になったか、また は通信待機アクションがタイムアウトのために終了したかを示すアプリケーション 画面の特性を確認するために、抽出アクションなどの他のアクションを使用したい 場合があります。 永続的な通信状況の指定 通常、セッションの接続または切断時には、通信状況はいくつかの状態を素早く通 過してから (例えば、保留アクティブ、アクティブ、作動可能の順に)、安定した状 態を一定期間保つ特定の状態 (CONNECTION_WORKSTATION_ID_READY など) に達します。ほとんどの場合、その永続的な終了状態を通信待機アクションに指定 する必要があります。 代わりに保留アクティブなどの過渡的な状態を指定した場合、マクロ・ランタイム が通信待機アクションを実行する機会を得る前に、セッションがその状態を通過し て次の状態に進む可能性があります。このため、マクロ・ランタイムが通信待機ア クションを実行すると、すでに発生した状態をいつまでも待つことになります。 例 図 14 に、Telnet セッション折衝が開始されるか、Telnet 折衝セッションが行われ ずに 10 秒が経過するかのいずれかの状況が先に生じるまで待機する通信状態の指 定例を示します。 <commwait value="CONNECTION_READY" timeout="10000" /> 図 14. 通信待機アクションの例 詳しくは、 196 ページの『<commwait> エレメント』を参照してください。 条件アクション (<if> エレメントおよび <else> エレメント) 条件アクションには次の項目があります。 v マクロ・ランタイムが真または偽として評価する条件式。 v 条件が真として評価された場合にマクロ・ランタイムが実行するアクションのリ スト (オプション) v 条件が偽として評価された場合にマクロ・ランタイムが実行するアクションのリ スト (オプション) 条件アクションには、if 文または if-else 文の機能があります。 このアクションを指定するには、VME を使用する ( 134 ページの『Evaluate (If) ア クション』を参照) 方法と、 AME を使用する ( 170 ページの『条件付きアクショ ン』を参照) 方法があります。 条件アクションの中で使用できない条件アクション マクロ・エディターでは、条件アクションを別の条件アクションの中に作成できま せん。このため、別の if 文の中にネストされた if 文や、else 文の中にネストされ た if 文に相当するものは使用できません。 第 7 章 マクロ・アクション 61 例 次のコードは、ユーザーに入力を指示します。入力ストリングが 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: 拡張マクロ・ガイド <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. 条件アクションを示すサンプル・コード 詳しくは、 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。 第 7 章 マクロ・アクション 63 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-up or 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: 拡張マクロ・ガイド の最後の文字から行 22 の最初の文字に折り返します。最後に、マクロ・ランタイ ムは結果ストリング全体を結果変数 $strTmp$ に格納します。変数 $strTmp$ には、 次に示す 92 文字のストリングが格納されます (次に示すテキストは、本書のペー ジに収めるために行末ハイフン付けが行われていますが、実際にはハイフンなしの 1 つのストリングを表します)。 ’Enter / on the data set list command field for the command 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 display information of an entire data set............................................... さらに、上記の行の中で次のテキスト域がフィールドであるとします。 Reset statistics Catalog or display information of an entire data set 第 7 章 マクロ・アクション 65 最後に、次のように仮定します。 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: 拡張マクロ・ガイド (例えば、直前のマウス・クリック・アクションによってテキスト・カーソルが特定 の位置に移動した場合や、アプリケーションがアプリケーション画面を表示する際 にテキスト・カーソルの位置を指定した場合) を除いては、行または列に 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 例えば 図 16 は、暗号化されていない入力キー・シーケンス (’myPassword’) が入 っている <input> エレメントを示します。 input value="'myPassword'" row="20" col="16" movecursor="true" xlatehostkeys="true" encrypted="false" /> 図 16. 暗号化されていない入力キー・シーケンスが入っている <input> エレメント これに対し、図 17 は、暗号化された入力キー・シーケンス (I7xae6rSVlVFF6qzhWRfKw==) が入っている同じ <input> エレメントを示します。こ の例では、<input> エレメントの encrypted 属性が true に設定されていることに注 意してください。 input value="I7xae6rSVlVFF6qzhWRfKw==" row="20" col="16" movecursor="true" xlatehostkeys="true" encrypted="true" /> 図 17. 暗号化された入力キー・シーケンスが入っている <input> エレメント マクロ・エディターでは、暗号化された入力キー・シーケンスはアスタリスクで表 示されます (例えば ’myPassword’ の暗号化バージョンは、 I7xae6rSVlVFF6qzhWRfKw== ではなく ************************ と「ストリング」 フィールドに表示されます)。 暗号化によって、パスワードのような機密データを表示することなく入力アクショ ンに組み込むことができます。許可のないユーザーが、テキスト・エディターやマ クロ・エディターによるマクロ・スクリプトの表示から、またはソースの表示か ら、機密データを見つけることはできません。 入力キー・シーケンスが暗号化されると Host On-Demand は、ユーザー自身や他の ユーザーがマクロ・エディターまたはソース表示を使用して暗号化解除できないよ うにします。マクロ・ランタイムがマクロ再生中に入力アクションを処理するま で、Host On-Demand は暗号化された入力アクションの入力キー・シーケンスを暗 号化解除しません。マクロ・ランタイムは入力アクションを処理するとき、暗号化 された入力キー・シーケンスを暗号化解除し、暗号化されていないバージョンを指 定された行および列の位置からセッション・ウィンドウに入力します。 特に 3270 または 5250 環境では、パスワードのような機密入力キー・シーケンス のために、ホスト・アプリケーションは入力キー・シーケンスの宛先として非表示 入力フィールドを作成するため、プレーン・テキストでなくブランクまたはアスタ リスク (*) が表示されます。 ただし、略式すぎる表示にマクロ・スクリプトが公開された場合、機密漏れの可能 性が残ります。悪意のあるユーザーがマクロ・スクリプトのコピーにアクセスする 権限を持つと、マクロの実行中にマクロ・ランタイムが暗号化解除された入力キ ー・シーケンスを標準の表示可能フィールドに入力するよう入力アクションの 「行」および「列」フィールドを編集し、オリジナルの暗号化されていない入力キ ー・シーケンスを見つけることが可能になります。 68 IBM Host Access Transformation Services: 拡張マクロ・ガイド セキュリティーを強化するには、入力アクションの代わりにプロンプト・アクショ ンを使用できます。プロンプト・アクションを使用すると、入力キー・シーケンス は、たとえ暗号化された形式でもマクロ・スクリプトに保管されることはありませ ん。その代わり、マクロの再生中にプロンプト・アクションを処理するとき、マク ロ・ランタイムは入力フィールドと、入力キー・シーケンスを入力するようエン ド・ユーザーに指示するメッセージが入ったウィンドウをポップアップ表示しま す。エンド・ユーザーが入力キー・シーケンスを入力して「OK」をクリックする と、マクロ・ランタイムはポップアップ・ウィンドウを消去し、その入力キー・シ ーケンスをセッション・ウィンドウの指定された行および列の位置に入力します。 注: プロンプトのデフォルト値は、暗号化されずにマクロ・ファイルに保管されま す。デフォルト値は、マクロ・エディターでプロンプトを編集するときにはプ レーン・テキストで表示されます。したがって、プロンプトを使用してパスワ ードを指定する方法を実行するのは適切ですが、セキュリティー上の理由か ら、パスワードのデフォルト値は指定しないようにします。 入力アクションを使用すると、エンド・ユーザーの介入なしでマクロの再生中にマ クロ・スクリプトを自動的に実行する、という利点があります。ただし、機密デー タが変更される (例えば、パスワードの期限が切れ、新しい別のパスワードが必要 になる) と、新しい入力キー・シーケンスで入力アクションを更新する必要があり ます。 マクロ記録中の自動暗号化: マクロ記録中、3270 ディスプレイおよび 5250 ディ スプレイ・セッションの場合のみ、HATS はパスワード入力シーケンスを暗号化さ れた入力キー・シーケンスで、入力アクションとして自動的に記録します。 「暗号化ストリング」(VME) または「パスワード」(AME) チェック・ボックスの 使用方法: 入力キー・シーケンスがマクロ記録中に自動的に暗号化された場合、マ クロ・エディターで入力アクションを調べると、「暗号化ストリング」(VME) また は「パスワード」(AME) チェック・ボックスが選択され、「ストリング 」フィー ルドに、暗号化された入力キー・シーケンスを表す数個のアスタリスク (例えば ******) が入っていることが分かります。 これに対し、入力キー・シーケンスがマクロ記録中に自動的に暗号化されなかった (多くの場合、セッションが 3270 または 5250 ディスプレイ・セッションではなか ったか、入力フィールドが非表示入力フィールドではなかったことが原因で) 場 合、チェック・ボックスはクリアされ、「ストリング」フィールドには暗号化され ていない入力キー・シーケンスが入ります。 入力キー・シーケンスがマクロ記録中に自動的に暗号化されなかった場合は、マク ロ・エディターで暗号化できます。入力キー・シーケンスを暗号化するには、以下 のステップに従ってください。まず、チェック・ボックスがクリアされていない場 合、そのチェック・マークを外してください。 1. 目的の入力キー・シーケンスが「ストリング」フィールドに入っていない場合、 入力キー・シーケンスを「ストリング」フィールドに入力してください。 v 入力キー・シーケンスは、通常どおり (例えば ’myPassWord’) に「ストリン グ」フィールドに表示されます。 v 拡張マクロ形式を使用している場合は、入力キー・シーケンスを単一引用符で 囲む (例えば ’myPassWord’) ことを忘れないでください。 第 7 章 マクロ・アクション 69 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: 拡張マクロ・ガイド 暗号化された入力キー・シーケンスを変更するため、「ストリング」フィールドの アスタリスクのストリング (*******) に文字を上書きまたは挿入することはできま せん。これを行うと、暗号化されていない修正によって、暗号化された入力キー・ シーケンスが破壊されます。この場合、マクロ・エディターは暗号化されていない ストリングが入力されたものと想定し、壊れているシーケンスを再び暗号化しま す。その結果、マクロの再生中にマクロ・ランタイムが入力アクションを処理する とき、暗号化解除されたシーケンスは、ユーザーの意図した入力キー・シーケンス になりません。 (また、拡張マクロ形式を使用しているときに、壊れた入力キー・ シーケンスを単一引用符で囲まないと、マクロ・エディターはエラー・メッセージ を表示します。) ソース表示の使用: ソース表示は、入力キー・シーケンスの暗号化について、マク ロ・エディターと同じ規則に従っています。 ソース表示では常に、以下のアクションのいずれかを実行できます。 v 入力キー・シーケンスを暗号化する新しい <input> エレメントを編集可能テキス ト域に入力 v 入力キー・シーケンスを暗号化する <input> エレメントをシステム・クリップボ ードから編集可能テキスト域に貼り付け またソース表示を使用している間、encrypted 属性の値 (暗号化をアクティブ化また は非アクティブ化する) を true から false に、または false から true に変更するこ ともできます。 ただし、ソース表示を使用して value 属性 (暗号化された、または暗号化されてい ない入力キー・シーケンスが入っている) の値を変更する場合、encrypted 属性が true に設定されていれば、 (value="" になるように) 暗号化された入力キー・シー ケンスを完全に削除し、暗号化する新しい入力キー・シーケンスを入力してくださ い。 入力キー・シーケンスを変更するために、value 属性の暗号化された入力キー・シー ケンスに文字を上書きまたは挿入することはできません。これを行うと、暗号化さ れていない修正によって、暗号化された入力キー・シーケンスが破壊されます。 変数名の暗号化: 変数名 (例えば $var1$) をマクロ・エディターの「ストリング」 フィールドに (またはソース表示の value 属性の値の部分に) 入力し、その変数の 名前を (標準の入力キー・シーケンスを暗号化するときと同じステップで) 暗号化で きますが、この方法は通常お勧めしません。変数名を暗号化すると、変数名を構成 している文字だけが暗号化されるからです。変数それ自身の内容は暗号化されませ ん。 マクロの再生中、マクロ・ランタイムは暗号化されたテキストを暗号化解除してプ レーン・テキスト (例えば $var1$) に変え、そのプレーン・テキストが変数名であ ると判断して変数を通常どおりに処理します。 詳しくは、 207 ページの『<input> エレメント』を参照してください。 第 7 章 マクロ・アクション 71 マウス・クリック・アクション (<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 変数更新アクションを使用して、メソッドを呼び出し、変数に戻り値を割り当て ることができます。戻り値を受け取る変数は、標準タイプに属する変数 (boolean、 integer、 string、 double)、またはインポート済みタイプに属する変数 (例えば、Java クラス Object に基づく、インポート済みタイプ Object に属する 変数 $objTmp$) のどちらかです。 72 IBM Host Access Transformation Services: 拡張マクロ・ガイド 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 <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. 実行アクションの例 詳しくは、 212 ページの『<perform> エレメント』を参照してください。 PlayMacro アクション (<playmacro> エレメント) PlayMacro アクションは、別のマクロを起動します。 このアクションを指定するには、VME を使用する ( 141 ページの『「マクロを実 行」アクション』を参照) 方法と、 AME を使用する ( 174 ページの『Playmacro ア クション』を参照) 方法があります。 マクロ・ランタイムが PlayMacro アクションを実行すると、現行マクロ (PlayMacro アクションを指定したマクロ) は終了し、ターゲット・マクロの指定されたマクロ 画面の処理が開始されます。この処理はチェーニングと呼ばれ、呼び出し側マクロ をターゲット・マクロに「チェーニングする」といいます。呼び出し側マクロへの 戻りはありません。 PlayMacro アクションには、ターゲット・マクロの名前を指定する必要があり、ま たオプションで、マクロ・ランタイムが最初に処理するターゲット・マクロ内のマ クロ画面の名前を指定します。 呼び出し側マクロからターゲット・マクロにすべての変数とその内容を転送するよ うに、マクロ・ランタイムに指示できます。 PlayMacro アクションの追加 条件エレメント外では、マクロ画面に PlayMacro アクションを 1 つだけ追加する ことができ、その PlayMacro アクションは、マクロ画面のアクション・リスト (<actions> エレメント) の最後のアクションでなければなりません。 条件エレメントの中に追加する場合: v 真のブランチ (<if> エレメント) には PlayMacro アクションを 1 つ追加でき、 その PlayMacro アクションはブランチ (<if> エレメント) の最後のアクションで なければなりません。 74 IBM Host Access Transformation Services: 拡張マクロ・ガイド 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 転送変数がインポート済みタイプに属していて Java オブジェクトを含んでいる場合 でも、ターゲット・マクロは転送変数を参照して Java オブジェクトのメソッドを呼 び出すことができ、またその転送変数に他のオブジェクトを書き込むこともできま す。 変数を転送するための要件: ターゲット・マクロは、拡張マクロ形式を選択してい る必要があります ( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。 制限: 次の制約事項は、転送変数のすべてのタイプに適用されます。ターゲット・ マクロに定義された変数の「初期値」フィールドの転送変数は使用できません。 追加情報: ターゲット・マクロが、転送変数と同名、同タイプの変数を作成した場 合、マクロ・ランタイムは転送変数ではなく作成された変数を使用します。 ターゲット・マクロがタイプをインポートする必要がある場合: ターゲット・マク ロ内で、インポート済みタイプに属する転送変数を使用したい場合は、同じタイプ をターゲット・マクロにインポートする必要はありません。タイプをインポートす る必要がない操作の例は、次のとおりです。 v 転送変数を属性の値として使用する。 v 転送変数に対してメソッドを呼び出す。 ただし、インポート済みタイプの名前をターゲット・マクロ内で使用したい場合 は、そのタイプをインポートする必要があります。タイプをインポートする必要が ある操作の例は、次のとおりです。 v インポート済みタイプの新規変数を宣言する。 v インポート済みタイプの新規インスタンスを作成する。 v インポート済みタイプの静的メソッドを作成する。 次に、PlayMacro アクションの例を示します。 <actions> <playmacro name="TargetMacro" startscreen="*DEFAULT*" transferVars="Transfer" /> </actions> 図 19. PlayMacro アクションの例 詳しくは、 213 ページの『<playmacro> エレメント』を参照してください。 プロンプト・アクション (<prompt> エレメント) プロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 または 5250 アプリケーションに送るか、変数に格納するための強力な機能を備えていま す。 このアクションを指定するには、VME を使用する ( 142 ページの『「プロンプト」 アクション』を参照) 方法と、 AME を使用する ( 175 ページの『「プロンプト」 アクション』を参照) 方法があります。 76 IBM Host Access Transformation Services: 拡張マクロ・ガイド プロンプト・アクションは、ホスト端末の前面にプロンプト・ウィンドウを表示し ます。このウィンドウには、メッセージ、入力フィールド、および 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 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 ディレクトリーに追加する必要がありま す。 詳しくは、 216 ページの『<sqlquery> エレメント』を参照してください。 78 IBM Host Access Transformation Services: 拡張マクロ・ガイド トレース・アクション (<trace> エレメント) 「トレース」アクションは、指定のトレース宛先 (HATS Toolkit コンソールや WebSphere® コンソールなど) にトレース・メッセージを送信します。また、HATS はマクロ・トレースを HATS ランタイム・トレースに追加します。 このアクションは、VME ではソース・タブを使用して、 AME ではアクション・ タブを使用して指定することができます。 183 ページの『「トレース」アクショ ン』を参照してください。 例 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 <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 図 20 のスクリプトを実行すると、マクロ・ランタイムは次のデータを送ります。 The value is +{$strData$ = Original value} The value is +{$strData$ = Updated value} 上記のトレース出力の中で、$strData$ の値を単に表示する代わりに、デバッグ・ア クションが変数の名前とその値の両方を中括弧の中に表示している点に注意してく ださい。 詳しくは、 218 ページの『<trace> エレメント』を参照してください。 変数更新アクション (<varupdate> エレメント) <varupdate> エレメントは、変数に値を格納します。マクロの実行中に、マクロ・ラ ンタイムはアクションを実行して、指定の値を指定された変数に格納します。 次の項目を指定する必要があります。 v 変数の名前 v 変数に格納する値 このアクションを指定するには、VME を使用する ( 146 ページの『「マクロ変数の 更新」アクション』を参照) 方法と、 AME を使用する ( 184 ページの『変数更新 アクション』を参照) 方法があります。 <description> エレメント内で変数更新アクションを使用することもできます ( 49 ペ ージの『説明内の変数更新アクションの処理』を参照)。 値には演算式を使用でき、また変数とインポートしたメソッドの呼び出しを値に含 めることができます。値が式の場合、マクロの再生中にマクロ・ランタイムは式を 評価し、結果の値を指定の変数に格納します。 変数更新アクションは、プログラミング言語の代入ステートメントと同様に機能し ます。 Java プログラムでは、次のような代入ステートメントを書くことができま す。 80 IBM Host Access Transformation Services: 拡張マクロ・ガイド 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 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: 拡張マクロ・ガイド 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 番目の位置がフィールドの最後を越えている場合、マクロ・ランタイムは最初の 位置からフィールドの最後までストリングを読み取ります。その後マクロ・ランタ イムは、このストリングをフィールド変数に格納します。 詳しくは、 220 ページの『<varupdate> エレメント』を参照してください。 第 7 章 マクロ・アクション 83 84 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 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: 拡張マクロ・ガイド 終了画面として定義されているマクロ画面の場合 (exitscreen 属性は「true」に設 定)、pausetime 属性 (およびその終了画面に定義されている pause 属性) は実質的 に無視され、すべての画面のアクションが完了した後に自動的に実行される追加の 遅延はありません。これによって、マクロ・エンジンはマクロの最終画面までナビ ゲートすると、遅延を追加しません。 さらに、すべてのマクロ画面について、画面の最後のアクションでない <prompt> または <insert> の後、pausetimevalue /2 の時間、マクロはスリープ状態になりま す。 例えば、図 21 で示すように、pausetime="1000" で、他の pause 属性が画面に定義 されていない場合、マクロは最初のアクション (prompt) の後に 500 ミリ秒、4 番 目のアクションの後に 500 ミリ秒、そして (現在の画面が終了画面でない場合) す べてのアクションが実行された後に 1000 ミリ秒の、合計 2000 ミリ秒の間スリー プ状態になります。 <actions> <prompt... <extract... <extract... <prompt... <insert... </actions> 図 21. pausetimevalue の例 1 マクロ内で、<pause> エレメントはどこに配置されていてもインラインで実行さ れ、pausetime 属性または pause 属性の設定でオーバーライドされませんが、 <HAScript> エレメントの ignorepauseforenhancedtn 属性が「true」に設定されている 場合、この属性でオーバーライドされることがあります。 上の例を拡張して、図 22 で示すように、pausetime="1000" で、他の pause 属性が 画面に定義されていない場合、マクロは最初のアクション (prompt) の後に 500 ミ リ秒、4 番目のアクションの後に 500 ミリ秒、5 番目のアクション (insert) の後に 500 ミリ秒、6 番目のアクション (<pause> エレメント) の後に 150 ミリ秒、そし て (現在の画面が終了画面でない場合) すべてのアクションが実行された後に 1000 ミリ秒の、合計 2650 ミリ秒の間スリープ状態になります。 <actions> <prompt... <extract... <extract... <prompt... <insert... <pause value="150"/> </actions> 図 22. pausetimevalue の例 2 これが終了画面の場合、合計スリープ時間は 1650 ミリ秒です。また、<HAScript> エレメントの ignorepauseforenhancedtn 属性と、<pause> エレメントの 第 8 章 タイミングの問題 87 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: 拡張マクロ・ガイド アクション後の一時停止 ここでは、前のアクションに未完了の副次作用があるために、アクションが期待ど おりに実行されないシナリオについて説明します。 次の 2 つの属性を使用して、実行時にアクション後の一時停止を追加できます。 v <HAScript> エレメントの pausetime 属性。 v <Screen> エレメントの pause 属性。 アクションの処理速度 マクロ・ランタイムは人間のユーザーよりはるかに迅速にアクションを実行するの で、マクロの再生中に予測しない問題が発生し、アクションが予想通りに実行され ない可能性があります。この原因は、前のアクションへの依存関係が生じることで す。 アプリケーション画面を切り替えるキー・ストロークを例に取ります。アプリケー ション画面がすでに切り替わっていることを後続のアクションが予期しているにも かかわらず、実際にはアプリケーション画面がまだ更新の途中である場合、後続の アクションは失敗します。 マクロ・ランタイムがそれぞれのアクションを前のアクションの直後に実行する と、他の状況でアクション間の時間依存エラーが発生します。 pausetime 属性 <HAScript> エレメントの pausetime 属性は、 次のようにマクロ・ランタイムが待 機する時間を指定します。 v 入力アクションまたはプロンプト・アクションの実行後に、これらの 2 つのアク ションのいずれかを完了させることによる考えられるすべての副次作用を許可す る。 v マクロ画面での最後のアクションの実行後に、アクションの処理を完了させるこ とによる他の副次作用を許可する。 HATS バージョン 5 までは、pausetime 属性は、入力アクションとプロンプト・ア クションの後のみでなく、あらゆるタイプのアクション後の一時停止としてインプ リメントされました。現在では以下のように実装されています。 v マクロ・ランタイムは以下の場合待機します。 – マクロ画面の最後のアクションを除く、すべての入力アクションとプロンプ ト・アクションの後の一時停止時間の 50% に等しい間隔。 – マクロ画面の最後のアクション後の一時停止時間の 100% に等しい間隔。 v マクロ・ランタイムは以下の場合は待機しません。 – マクロ画面の最後の入力アクションまたはプロンプト・アクションがマクロ画 面での最後のアクションではない限り、これらのアクションの後。 – 他のタイプのアクションがマクロ画面での最後のアクションではない限り、こ れらのアクションの後。 第 8 章 タイミングの問題 89 デフォルトでは、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: 拡張マクロ・ガイド この問題を分析すると、次のことが確認されます。 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 ホストが新しいホスト・アプリケーション・データ画面を完全に表示するまで、こ のプロセスは継続します。クライアントは、ホスト・アプリケーションの画面が完 了したかどうか分からない状態で待機し続けます (詳しくは、 27 ページの『第 4 章 マクロ・ランタイムによるマクロ画面の処理方法』を参照してください)。 このプロセスが、人間のオペレーターにとって問題になることはありません。 ただし、このプロセスは、マクロ・ランタイムにとっては画面認識中に問題になり ます。マクロ・ランタイムは、画面認識中に画面が更新されるたびおよび OIA イベ ントが発生するたび ( 33 ページの『繰り返し画面評価』を参照) に、アプリケーシ ョン画面と一致する有効な次のマクロ画面を検索することに留意してください。こ のため、マクロ・ランタイムは画面が完全に更新される前に一致を検出する可能性 があります。例えば、アプリケーション画面の行 3 に「ISPF Primary Option Menu」という文字があるときに認識が発生するように、ストリング記述子が指示し ているとします。ホストが行 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: 拡張マクロ・ガイド 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 ョンを挿入)、コンテンションを解消する環境でもそのマクロを不要な遅延なく (一 時停止アクションを無視して) 実行したい場合に、この属性を使用できます。 この属性を 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: 拡張マクロ・ガイド 適応させることができます。 その際、個々の画面をテストして、画面更新の問題が ある各画面に一時停止アクションを挿入する必要はありません。 第 8 章 タイミングの問題 95 96 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 マクロ変数とインポート済みタイプの概要 マクロ変数は、マクロにプログラミングで高度な動作を加えるために役立ちます。 変数を使用すれば、値の格納、結果の保存、カウントの保持、テキスト・ストリン グの保存、成果の記憶など、プログラミングに不可欠なあらゆることを実行できま す。 標準データ・タイプ (ストリング、整数、倍精度、ブール、およびフィールド) のい ずれかに属する変数を作成できます。 また、Java クラスを表すインポート済みタイプに属する変数も作成できます。その 後クラスのインスタンスを作成し、インスタンスに対してメソッドを呼び出すこと ができます。この機能を利用すれば、Java ランタイム環境 (JRE) ライブラリー、自 分でインプリメントしたクラスやライブラリー、他のソースから提供された Java の クラスやライブラリーなどの、各種 Java クラス・ライブラリーに備わっている豊富 な機能を使用できるようになります。 拡張マクロ形式が必要 変数を使用するには、マクロに対して拡張マクロ形式を使用する必要があります ( 17 ページの『基本マクロ形式と拡張マクロ形式』を参照)。このため、基本マクロ 形式のマクロに変数を追加するには、マクロを拡張マクロ形式に変換するかどうか 決定する必要があります。多数のユーザーが使用していて、完全に機能している基 本マクロ形式の古いマクロがある場合は、マクロを現状のままにしておくこともで きます。 ただし、記録済みマクロはすべて基本マクロ形式で記録されていることに注意して ください。つまり、マクロを最近記録し、そのマクロの改良を始めようとしている 場合は、単に拡張マクロ形式への切り替えをまだ済ませていないだけの可能性があ ります。 マクロ・エディターは、基本マクロ形式のままのマクロに変数を定義しようとする と、ポップアップ・ウィンドウに次のメッセージを表示して、これら両方の状況に 対応します。 高度なマクロ機能を使用しようとしています。処理の継続を選択すると、 マクロは自動的に拡張マクロ形式に変換されます。 継続しますか? 図 23. 注意喚起メッセージ 作成するマクロで変数を使用する予定にしている場合は「はい」をクリックし、基 本マクロ形式のマクロを変換したくない場合は「いいえ」をクリックします。 変数の有効範囲 それぞれの変数のスコープは、変数を作成する対象のマクロに関してグローバルで す。つまり、マクロにある任意のマクロ画面から、マクロの変数すべてにアクセス できます。マクロ画面内のアクションまたは記述子が変数にアクセスするため必要 なのは、単に変数名を使用することだけです。 98 IBM Host Access Transformation Services: 拡張マクロ・ガイド 例えば、$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> エレメントを示します。 <vars> <create <create <create <create <create </vars> name="$strAccountName$" type="string" value="" /> name="$intAmount$" type="integer" value="0" /> name="$dblDistance$" type="double" value="0.0" /> name="$boolSignedUp$" type="boolean" value="false" /> name="$fldFunction$" type="field" /> 図 24. サンプル <vars> エレメント 図 24 の <vars> エレメントは、それぞれの標準データ・タイプ (string、integer、double、boolean、および field) から変数を 1 つ作成します。 変数の作成 (<create> エレメント) は、すべて <vars> エレメントの中に置く必要が あります。<vars> エレメント自体は、<import> エレメントがあればその後 (次のセ クションを参照)、かつ最初のマクロ画面 (<screen> エレメント) の前に置く必要が あります。 Java クラスのインポート済みタイプを作成 ソース表示で、<type> エレメントを使用してインポート済みタイプを作成します。 マクロ・スクリプト内のインポート済みタイプすべてを含む収容エレメント <import> があり、それぞれのインポート済みタイプごとに <type> エレメントがあ ります。 100 ページの図 25 は、インポート済みタイプを宣言する <import> エレメ ントと、それに続く、インポート済みタイプに属する変数を作成および初期化する <vars> エレメントを示しています。 第 9 章 変数とインポートした Java クラス 99 <import> <type class="java.util.Hashtable" name="Hashtable" /> </import> <vars> <create name=$ht$ type="Hashtable" value="$new Hashtable(40)$" /> </vars> 図 25. インポート済みタイプとそのタイプの変数 上の図で、<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 Utility Libraries (HML ライブラリー)』を参照)。 マクロ・スクリプトによって呼び出されるメソッドを含む他のすべての Java クラス は、マクロ・ランタイムが検出できる場所に配置する必要があります。環境に応じ て、クラス・ファイルとして、または Java クラスを含むライブラリーとして Java クラスを配置できます。 100 IBM Host Access Transformation Services: 拡張マクロ・ガイド 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 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: 拡張マクロ・ガイド 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 インポート済みタイプの変数にマクロがこれらの無効なタイプの 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: 拡張マクロ・ガイド 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 マクロ・ランタイムは、呼び出し先メソッドを次のように検索します。 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 変数 106 HML 変数: メソッドの説明: $HMLFormatUtil$ ストリングをフォーマット設定するためのメソッド。 $HMLPSUtil$ セッション・ウィンドウの表示スペースにアクセスするメ ソッド。 IBM Host Access Transformation Services: 拡張マクロ・ガイド 表 13. HML 変数 (続き) HML 変数: メソッドの説明: $HMLSessionUtil$ セッション値を戻すメソッド。 $HMLSQLUtil$ 最新の SQLQuery アクションの結果に関する情報を返す メソッド。 HML ライブラリーに属するメソッドの呼び出し HML ライブラリーに属するメソッドを呼び出すには、変数名、メソッド名、および 入力パラメーターを通常の方法で指定します。 $HMLFormatUtil.numberToString(1.44)$ $HMLPSUtil.getCursorPos()$ $HMLSessionUtil.getHost()$ 図 26. HML メソッドを呼び出す場合の例 HML で始まる変数名は予約済み 通常の変数と HML 変数を混同しないようにするために、先頭が HML の変数名は予 約されています。先頭が HML の変数を作成しようとすると、Host On-Demand はエ ラー・メッセージを生成します。 $HMLFormatUtil$ $HMLFormatUtil$ で呼び出されるメソッドは、メソッドをフォーマット設定しま す。 表 14 は、これらのメソッドの要約を示します。 表 14. $HMLFormatUtil$ のメソッドの要約 METHOD SUMMARY: $HMLFormatUtil$ ストリング (String) int または double numberToString(Object obj) 数値を、現在構成されているロケールに従ってフォーマット設定し たストリングに変換します。入力パラメーターのタイプは、整数ま たは倍精度です。 stringToNumber(String str) ロケール形式の数値ストリング ('1111.56'、'1,111.56'、または '1111,56' など) を数値に変換します。戻される数値のタイプは、入 力ストリングに応じて、整数または倍精度になります。 数値と現行ロケールの形式との相互変換 ロケールは、特定の各国語と地域に関連するフォーマット設定の規則セットです。 例えば、クライアント・ワークステーションの構成に使用されているロケールに応 じて、1111.22 などの 10 進値は、以下のいずれかのストリングで表すことができま す。 第 9 章 変数とインポートした Java クラス 107 ’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()$ を置換します。 <input value="$HMLFormatUtil.numberToString(1111.44)$" row="20" col="16" movecursor="true" xlatehostkeys="true" encrypted="false" /> 図 27. numberToString() の例 stringToNumber(): public int stringToNumber(String str) public double stringToNumber(String str) このメソッドは、現在構成されているロケールに従ってフォーマット設定されてい る数値ストリングを数値に変換します。戻される数値のタイプは、入力ストリング に応じて、整数または倍精度になります。 このメソッドは、推奨されないスタンドアロン・メソッド $FormatStringToNumber()$ を置換します。 108 IBM Host Access Transformation Services: 拡張マクロ・ガイド <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() の例 $HMLPSUtil$ $HMLPSUtil$ で呼び出されるメソッドは、セッション・ウィンドウの表示スペース に影響を与えるか、またはセッション・ウィンドウの表示スペースに関する情報を 戻します。表 15 は、これらのメソッドの要約を示します。 表 15. $HMLPSUtil$ のメソッドの要約 METHOD SUMMARY: $HMLPSUtil$ int int void int int int int int int ストリング (String) convertPosToCol(int pos) 表示スペースでの指定の位置のカラム番号を戻します。 convertPosToRow(int Pos) 表示スペースでの指定の位置の行番号を戻します。 enableRoundTrip(boolean flag) 双方向言語の場合は、前に双方向文字が付いた数表示が、場所と数 表示を交換するかどうかを決定します。 getCursorCol() 表示スペースでのテキスト・カーソルのカラム番号を戻します。 getCursorPos() 表示スペースでのテキスト・カーソルの位置を戻します。 getCursorRow() 表示スペースでのテキスト・カーソルの行番号を戻します。 getSize() 表示スペースのサイズ (表示スペースでの文字の位置の数) を戻し ます。 getSizeCols() 表示スペースのカラム数を戻します。 getSizeRows() 表示スペースの行数を戻します。 getString(int pos, int len) 表示スペースでの指定位置で始まり、指定された長さで続くテキス ト・ストリングを戻します。 第 9 章 変数とインポートした Java クラス 109 表 15. $HMLPSUtil$ のメソッドの要約 (続き) METHOD SUMMARY: $HMLPSUtil$ int searchString(String str) 指定されたストリングの表示スペースでの位置を戻します (指定さ れたストリングが表示スペースにない場合は 0)。 表示スペース 表示スペースは、セッション・ウィンドウでの行とカラムの各位置のエレメントを 含む (ただし、オペレーター情報域に使用されるセッション・ウィンドウの最後の 行を含まない) データ構造です。表示スペースのサイズは、セッション・ウィンド ウのサイズによって異なります。例えば、セッション・ウィンドウに 24 の行と 80 のカラムがある場合は、表示スペースのサイズは 24 * 80 = 1920 です。 表示スペースでのエレメントの位置は、セッション・ウィンドウでの行とカラムの 位置に直列的に (左から右、上から下) 対応します。例えば、セッション・ウィンド ウに 80 の行と 25 のカラムがある場合は、行とカラムの位置は、図 29 で示すよう になります。 Row of Session Window: 1 1 1 ... 1 2 2 2 ... 24 24 Column of Session Window: 1 2 3 Corresponds to element at this position in PS: 1 2 3 80 1 2 3 80 81 82 83 79 80 1919 1920 図 29. 表示スペースでの行と列の位置の対応 Host On-Demand は、表示スペースを使用して、セッション・ウィンドウで表示さ れる文字を格納します。表示スペースの各エレメントを使用して、文字 (および輝 度などのその文字に関する情報) を格納します。例えば、セッション・ウィンドウ の行 1 とカラム 1 にストリング Message が表示される場合、その位置に対応する 行とカラムは、 111 ページの図 30 で示すようになります。 110 IBM Host Access Transformation Services: 拡張マクロ・ガイド Row of Session Window: Column of Session Window: 1 1 1 1 1 1 1 1 2 3 4 5 6 7 Corresponds to element at this position in PS: 1 2 3 4 5 6 7 Character stored in this element: M e s s a g e 図 30. 行 1、列 1 に「Message」が表示される場合のレイアウト 通常は使用する必要はありませんが、表 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) このメソッドは、表示スペースでの指定の位置に関連付けられた列番号を返しま す。 第 9 章 変数とインポートした Java クラス 111 <varupdate name="$cursor_col$ value="$HMLPSUtil.convertPosToCol($HMLPSUtil.getCursorPos()$) $" /> 図 31. convertPosToCol() の例 convertPosToRow(): public int convertPosToRow(int pos) このメソッドは、表示スペースでの指定の位置に関連する行番号を戻します。 <varupdate name="$cursor_row$" value=$HMLPSUtil.convertPosToRow($HMLPSUtil.getCursorPos()$)$" /> 図 32. convertPosToRow() の例 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() を呼び出します。 <perform value="$HMLPSUtil.enableRoundTrip(true)$" /> 図 33. enableRoundTrip() の例 getCursorCol(): public int getCursorCol() このメソッドは、表示スペースでのテキスト・カーソルの列位置を返します。 <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: 拡張マクロ・ガイド getCursorPos(): public int getCursorPos() このメソッドは、表示スペースでのテキスト・カーソルの位置を戻します。 <varupdate name="$cursor_pos$" value="$HMLPSUtil.getCursorPos()$" /> 図 35. getCursorPos() の例 getCursorRow(): public int getCursorRow() このメソッドは、表示スペースでのテキスト・カーソルの行位置を返します。 <input value="$HMLSessionUtil.getHost()$" row="$HMLPSUtil.getCursorRow()$" col="$HMLPSUtil.getCursorCol()$+2" movecursor="true" xlatehostkeys="true" encrypted="false" /> 図 36. getCursorRow() の例 getSize(): public int getSize() このメソッドは、表示スペースのサイズ (表示スペースでの文字の位置の数) を戻し ます。例えば、セッション・ウィンドウが 25 行と 80 列である場合、表示スペー スのサイズは 24 * 80 = 1920 です。 <varupdate name="$size$" value="HMLPSUtil.getSize()$" /> 図 37. getSize() の例 getSizeCols(): public int getSizeCols() このメソッドは、表示スペースのカラム数を戻します。表示スペースには、セッシ ョン・ウィンドウと同じカラム数があります。例えば、セッション・ウィンドウが 25 行と 80 列である場合、表示スペースの列数は 80 です。 <varupdate name="$size_cols$" value="$HMLPSUtil.getSizeCols()$" /> 図 38. getSizeCols() の例 第 9 章 変数とインポートした Java クラス 113 getSizeRows(): public int getSizeRows() このメソッドは、表示スペースの行数を戻します。表示スペースには、セッショ ン・ウィンドウの行数より 1 少ない行があります (これは、オペレーター情報域を 含むセッション・ウィンドウの最後の行が表示スペースに含まれていないためで す)。例えば、セッション・ウィンドウが 25 行と 80 列である場合、表示スペース の行数は 24 です。 <varupdate name="$size_rows$" value="$HMLPSUtil.getSizeRows()$" /> 図 39. getSizeRows() の例 getString(): public String getString(int pos, int len) このメソッドは、表示スペース内の指定した位置から始まる、指定した文字数のテ キスト・ストリングを返します。 <varupdate name="$text_of_row_18$" value="$HMLPSUtil.getString( $HMLPSUtil.getSizeCols()$*17+1, $HMLPSUtil.getSizeCols()$)$" /> 図 40. getString() の例 searchString(): public int searchString(String str) このメソッドは、指定されたストリングの表示スペースでの位置を戻します。この メソッドは、表示スペースにストリングが見つからない場合は 0 を返します。 <varupdate name="$pos_ofIBM$" value="$HMLPSUtil.searchString(’IBM’)$" /> 図 41. searchString() の例 $HMLSessionUtil$ $HMLSessionUtil$ で呼び出されるこのメソッドは、セッションに関連する値を戻し ます。 115 ページの表 17 は、これらのメソッドの要約を示します。 114 IBM Host Access Transformation Services: 拡張マクロ・ガイド 表 17. $HMLSessionUtil$ のメソッドの要約 METHOD SUMMARY: $HMLSessionUtil$ ストリング (String) ストリング (String) ストリング (String) getHost() セッション構成の Destination Address フィールドで指定されたテ キスト・ストリングを戻します。 getLabel() セッション構成の Session Name フィールドで指定されたストリン グを戻します。 getName() ホストによってセッションに割り当てられたセッション・インスタ ンス ID を戻します。 メソッドの詳細 getHost(): public String getHost() このメソッドは、セッション構成の「接続 (Connection)」セクションの「宛先アドレ ス (Destination Address)」フィールドに入力したホスト名またはホスト・アドレス を戻します (myhost.myloc.mycompany.com または 9.27.63.45 など)。 <varupdate name="$host$" value="$HMLSessionUtil.getHost()$" /> 図 42. getHost() の例 getLabel(): public String getLabel() このメソッドは、セッション構成の「接続 (Connection)」セッションの「セッション 名 (Session Name)」フィールドに入力したセッション名を戻します (3270 Display または 5250 Display などの名前)。 <varupdate name="$label$" value="$HMLSessionUtil.getLabel()$" /> 図 43. getLabel() の例 getName(): public String getName() このメソッドは、ホストがセッションに割り当てた識別名を戻します (A、B、また は C など)。セッションを開始すると、ホストは、開始された可能性がある同じセ ッションの他のインスタンスと区別するために、そのセッションに名前を割り当て ます。 第 9 章 変数とインポートした Java クラス 115 <varupdate name="$name$" value="$HMLSessionUtil.getName()$" /> 図 44. getName() の例 $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 にある項目には、空ストリングが含まれています。行 116 IBM Host Access Transformation Services: 拡張マクロ・ガイド 0 の残りには、データベースのフィールド名 (TOPICID、EXMPLID、DESCRIPT) が 含まれています。カラム 0 の残りには、行 (0、1、2、3、4) の索引番号が含まれて います。実際のデータは、配列の残りに含まれています。値はすべてストリングで す。 メソッドの詳細 getColumnSize(): public int getColumnSize() このメソッドは、追加された列 0 を含む、配列内のデータの実際の列数を返しま す。例えば、 116 ページの表 19 の配列の場合、このメソッドは 4 を返します。 <varupdate name="$col_size$" value="$HMLSessionUtil.getColumnSize()$" /> 図 45. getColumnSize() の例 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) はストリング '製品を編集します。' を戻す。 <varupdate name="$data$" value="$HMLSessionUtil.getDataByIndex(3,3)$" /> 図 46. getDataByIndex() の例 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' を戻す。 第 9 章 変数とインポートした Java クラス 117 <varupdate name="$data$" value="$HMLSessionUtil.getDataByName(3,’DESCRIPT’)$" /> 図 47. getDataByName() の例 getRowSize(): public int getRowSize() このメソッドは、追加された行 0 を含む、配列内のデータの実際の行数を返しま す。例えば、 116 ページの表 19 の配列の場合、このメソッドは 6 を返します。 <varupdate name="$row_size$" value="$HMLSessionUtil.getRowSize()$" /> 図 48. getRowSize() の例 FormatNumberToString() および FormatStringToNumber() $FormatNumberToString()$ の代わりに $HMLFormatUtil.numberToString()$ を使用 してください。前者は、後者と同じ入力パラメーターと戻りタイプを持ちます ( 108 ページの『numberToString()』を参照)。 $FormatStringToNumber()$ の代わりに $HMLFormatUtil.stringToNumber()$ を使用 してください。前者は、後者と同じ入力パラメーターと戻りタイプを持ちます ( 108 ページの『stringToNumber()』を参照)。 118 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 10 章 Visual Macro Editor Visual Macro Editor (VME) により、HATS マクロを視覚的に開発できます。VME は、HATS ホスト端末、基本マクロ・エディター、および拡張マクロ・エディター の多くの機能を結合し、マクロのオフライン開発を可能にします。また、マクロ間 でのフローのコピーを許可するとともに、新規画面を追加するためのドラッグ・ア ンド・ドロップをサポートします。 VME は HATS マクロのデフォルト・エディターです。 マクロ・エディターは従来どおり、マクロを右クリックして、「オープン先を指 定」>「マクロ・エディター」を選択することにより、開くことができます。拡張マ クロ・エディターは従来どおり、マクロ・エディターの「概要」ページから開くこ とができます。また、「プロンプトおよび抽出」もマクロ・エディターから編集で きます。 注: Macro Editor および Advanced Macro Editor のサポートは、HATS V9.5 では非 推奨になりました。現在までサポートされていましたが、 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 エディターの使用 VME は HATS マクロのデフォルト・エディターです。マクロ・オブジェクト (.hma ファイル) をダブルクリックすると、VME が開きます。 VME は次のパーツから構成されています。 1. 設計タブ 2. パレット・ビュー 3. 統合端末 4. ソース・タブ 図 49. Visual Macro Editor のパーツ 120 IBM Host Access Transformation Services: 拡張マクロ・ガイド 設計タブ 設計タブ (すなわち、キャンバス) が、VME の主な作業領域です。マクロ・オブジ ェクト (マクロ画面、アクション、次画面接続) がグラフィカルに表示され、各オブ ジェクトの変更およびグローバル・マクロ・プロパティーの変更を行うことができ ます。 SignOn MainMenu Prompt for userName Input 'go celdial[enter]' Prompt for password Send [enter] CelDialCommunications の Input '1[enter]' DisplayProgramMessages Send [enter] CustomerInquiry Prompt for customerNumber マクロ Send [enter] CustomerDetail Extract number マクロ・キャンバス BadCustomerNumber Extract errorMessage Extract name Extract address アクション Extract city Extract country 3 more actions... 図 50. Visual Macro Editor の設計タブ オブジェクトのポップアップ・メニュー (オブジェクトを右クリック) を使用すれ ば、オブジェクトごとに、さまざまなアクションが使用可能になります。ポップア ップ・メニューまたはメニュー・バーの「編集」メニューから「元に戻す」を選択 すると、すべてのアクションを元に戻すことができます。ポップアップ・メニュー または「編集」メニューから「やり直し (Redo)」を選択すると、やり直すことがで きます。マクロは、保存してしまうと、変更を元に戻すことはできません。ソー ス・タブで変更を行うと、設計タブで行ったそれ以前のアクションは元に戻すこと はできません。設計タブで行われた変更はソース・タブに反映され、その逆も同様 です。 「マクロ」メニュー 以下のアクションは、マクロのポップアップ・メニュー (白いマクロ・キャンバス を右クリック) で使用できます。 保存 マクロをファイルに保存します。「元に戻す」アクションと「やり直し」ア クションが無効になります。 第 10 章 Visual Macro Editor 121 イメージとしてコピー マクロのイメージ全体をシステムのクリップボードにコピーします。この機 能はマクロのイメージを電子メールまたは設計文書に貼り付けるのに役立ち ます。 貼り付け 画面コピーまたは切り取り後のみに使用可能になります。 レイアウトのリセット マクロ画面を、次の画面間の相互接続回線の数を最小化するよう試行するこ とにより、リセットします。エントリー画面は上部に配置されます。終了画 面は下部に配置されます。デフォルトでは、レイアウトは画面が統合端末を 使用して追加されたときリセットされます。HATS の以前のバージョンで作 成されたマクロのレイアウトは、マクロが最初に VME で開かれたときに 自動的に設定されます (同じアルゴリズムが使用されます)。 プロパティー マクロ・レベルの設定の編集を許可します。 「画面」メニュー 以下のアクションは、画面のポップアップ・メニュー (マクロ画面オブジェクトを 右クリック) で実行できます。 切り取り マクロ画面を削除およびコピーします。詳しくは、 129 ページの『画面の切 り取り、削除、コピー、貼り付け』を参照してください。 コピー マクロ画面をコピーし、同じマクロまたは別のマクロに貼り付けを許可しま す。詳しくは、 129 ページの『画面の切り取り、削除、コピー、貼り付け』 を参照してください。 貼り付け 画面コピーまたは切り取り後のみに使用可能になります。 削除 マクロからマクロ画面を削除します。詳しくは、 129 ページの『画面の切り 取り、削除、コピー、貼り付け』を参照してください。 名前変更 マクロ画面の名前変更を許可します。複数の画面が選択されている場合は使 用不可になります。 プロパティー マクロの画面レベルの設定の編集を許可します。複数の画面が選択されてい る場合は使用不可になります。 「アクション」メニュー 以下のアクションは、画面アクションのポップアップ・メニュー (画面アクション を右クリック) で実行できます。 122 編集 画面アクションの編集を許可します。アクションが 1 つ選択されていると きのみ使用可能になります。詳しくは、 132 ページの『アクションの追加と 編集』を参照してください。 除去 マクロ画面からアクションを除去します。 IBM Host Access Transformation Services: 拡張マクロ・ガイド 上に移動 画面アクションのリスト内のアクションを上に移動します。最初のアクショ ンに対しては使用不可になります。 下に移動 画面アクションのリスト内のアクションを下に移動します。最後のアクショ ンに対しては使用不可になります。 「次の画面接続」メニュー 以下のアクションは、次の画面接続のポップアップ・メニュー (次の画面接続オブ ジェクトを右クリック) で実行できます。 削除 マクロから次の画面接続を削除します。 再配列 次の画面接続に対して、同じ画面から発生する他の次の画面接続が存在する 場合に、使用可能になります。複数の次の画面が選択されている場合は使用 不可になります。詳しくは、 146 ページの『次の画面接続の再配列と変更』 を参照してください。 パレット・ビュー パレット・ビューを使用して、以下の操作ができます。 v 「選択」ツールを使用した、オブジェクトの選択。 v 「囲み枠」ツールを使用した、キャンバス上の複数のオブジェクトの選択。 v 「画面」ツールを使用した、マクロ画面の追加。詳しくは、 128 ページの『パレ ットから画面を追加する』を参照してください。 v 「次の画面接続」ツールを使用した、次の画面接続の追加。詳しくは、 146 ペー ジの『次の画面接続をパレットから追加する』を参照してください。 v 「アクション」ドロワーにリストされているアクションの 1 つを追加。詳しく は、 133 ページの『パレットからアクションを画面に追加する』を参照してくだ さい。 図 51. Visual Macro Editor のパレット・ビュー 第 10 章 Visual Macro Editor 123 統合端末 統合端末のツールバーにより以下のアクションが許可されます。 接続 ホストに接続します。 切断 ホストから切断します。 画面の追加 128 ページの『統合端末から画面を追加する』を参照してください。 マクロの実行 126 ページの『マクロの実行』を参照してください。 マクロの停止 126 ページの『マクロの実行』を参照してください。 ホスト・キーパッド ホスト・キーパッド・プルダウンを使用して、ホストと対話します。 注: 統合端末でホスト・アプリケーションをナビゲートする場合、 F12 キ ーは IBM® Rational Software Delivery Platform (Rational SDP) により中 断され、フォーカスは VME の設計ペインに移動されます。F12 キーが ホスト・アプリケーションに送信されることはありません。この問題を 回避する場合、および他のホスト・キーが必要な場合は、ツールバーか らホスト・キーパッド・プルダウンを使用します。 図 52. Visual Macro Editor の統合端末 124 IBM Host Access Transformation Services: 拡張マクロ・ガイド ソース・タブ ソース・タブでマクロの XML ソースの変更が使用可能になります。これは、カス タム画面認識基準の追加などの拡張編集で必要です。 VME では、キャンバス上でのマクロ画面の位置や関連する画面キャプチャーなどの 情報を保持するために、Host On-Demand <comment> タグを使用します。 <comment> タグは、開発者がコメントを画面に追加するために使用することもでき ます。コメントを追加するには他にも、「<!– ここにコメントを記述 –>」という形 式を使用する方法があります。以前からある開発者のコメントが失われないよう に、VME は、<comment> タグ内で検出した、VME が認識しない (例えば visualinfo のようなキーワードを含まない) テキストを、<!- -> 形式を使用して 画面のコメントに変換します。 マクロに構文エラーがある場合は、マクロを保存するときにエラー・マーカーが表 示されます。マーカーはソース内および問題ビュー内に表示されます。ソース・エ ラーの場合はマクロ・キャンバスは表示されず、代わりにエラー・メッセージが表 示されます。この場合は、ソース・タブに切り替え、エラーを訂正します。 デフォルトでは、コンテンツ・アシスタンスは、プロジェクト内のすべてのマクロ で使用可能になっています。「ソース」タブでマクロを編集中にコンテンツ・アシ スタンスを起動するには、Crtl+Space を押してください。プロジェクト内のどのマ クロでコンテンツ・アシスタンスを提供するかを構成できます。手順については、 『マクロ・コンテンツ・アシスタンス』を参照してください。 マクロの操作 マクロのプロパティーの編集 すべてのマクロ・レベルの設定は、マクロ・プロパティーのパネルに含まれていま す。マクロ・レベルのプロパティーを編集するには、マクロ・キャンバスをダブル クリックするか右クリックして、「プロパティー」を選択します。 「プロパティー」パネルには、「一般」タブと「変数およびタイプ」タブが含まれ ます。 「一般」タブ 「一般」タブは、以下のマクロ・プロパティーの表示と変更を許可します。 名前 マクロ名 (表示のみ)。 説明 マクロの説明。オプション。 作成者 マクロの作成者。オプション。 作成日 マクロが作成された日時。オプション。 アクション間の一時停止 マクロ再生エンジンがマクロ画面のアクションの実行後次の実行までの間待 機する時間 (ミリ秒単位)。 画面間のタイムアウト マクロ再生エンジンが次の画面が表示されるのを待つ時間 (ミリ秒単位)。 第 10 章 Visual Macro Editor 125 マクロの開始時にすべてのプロンプトを処理 マクロの開始時に、マクロのすべてのプロンプトに関して、ユーザーにプロ ンプトを出すかどうかを指定します。 接続 プロジェクト内で使用する接続名。単一の接続を持つ HATS プロジェクト の場合は、接続は通常 main という名前です。この値が、IO の作成時に生 成される IO にハードコーディングされ、使用する接続を選択するのに実行 時に使用されるために、この設定は、マクロが統合オブジェクト (IO) で使 用される場合、重要です。 マクロを開くときに端末を自動的に接続 マクロを開いたときに統合端末を自動的に接続するかどうかを指定します。 「変数およびタイプ」タブ 「変数およびタイプ」タブでは、マクロ変数とユーザー定義 (インポート済み) タイ プを定義できます。 「変数および演算式のサポート可能」チェック・ボックスは、デフォルトではクリ アされています。一度のみ選択でき、その後、使用不可になります。このチェッ ク・ボックスが選択されていると、マクロは拡張マクロ形式に変換されます。この 操作は元に戻せないため、警告メッセージが発行されます。 「はい」をクリックして、警告メッセージをクリアすると、変数とユーザー定義の タイプのテーブルが使用可能になり、テーブルに対して項目の「追加」、「編 集」、「除去」が可能になります。 VME では、変数名をドル記号 ($) の間に含める必要はありません。エディターに より、ドル記号 ($) は、マクロ・ソース内では変数名の前後に追加され、変数名を 表示するときは除去されます。 詳しくは、 17 ページの『第 3 章 データ・タイプ、演算子、および式』および 97 ページの『第 9 章 変数とインポートした Java クラス』を参照してください。 マクロの実行 統合端末の「マクロの実行」ボタンはマクロのテストを許可します。マクロが端末 で再生されているときは、そのパスがキャンバス内に強調表示されます。マクロ は、キャンバス上で選択されている現行の画面とは関係なく、常に最初から開始さ れます。 画面の操作 マクロ画面のプロパティーの編集 マクロ画面のプロパティーを編集するには、マクロ・キャンバス内のオブジェクト をダブルクリックするか右クリックして、「プロパティー」を選択します。 画面プロパティーのパネルには、「一般」タブ、「画面認識」タブ、およびアクシ ョン・タブが含まれます。 126 IBM Host Access Transformation Services: 拡張マクロ・ガイド 「一般」タブ 「一般」タブは以下のプロパティーの変更を許可します。 名前 マクロ画面名 画面キャプチャー 画面キャプチャーがマクロ画面に関連付けられている場合は、画面キャプチ ャー領域にプレビューが表示されます。画面キャプチャーがマクロ画面に関 連付けられていない場合は、画面キャプチャー領域にメッセージが表示され ます。 「参照」ボタンを使用すると、新規画面キャプチャーを選択でき、「クリ ア」ボタンを使用すると、画面キャプチャーに対する関連付けを除去できま す。詳しくは、 128 ページの『マクロ画面を画面キャプチャーに関連付け る』を参照してください。 エントリー画面 マクロが開始できる画面を指定します。 終了 マクロが終了できる画面を指定します。 一時画面 任意の時点で表示される可能性がある予測不可能な画面を指定します。 | 認識限界の設定 | | | | マクロ・ランタイムがマクロ画面を認識する回数を指定します。マクロ・ラ ンタイムは、指定された回数までマクロ画面を認識すると、このマクロ画面 のアクションを処理しませんが、代わりに指定されたアクションを実行しま す。 | | | | | デフォルトでは、「認識限界の設定」チェック・ボックスはクリアされてい て、入力フィールドは使用不可です。このチェック・ボックスを選択する と、マクロ・エディターは「エラーになる前の画面」入力フィールドのデフ ォルト値を 100 に設定します。この値の設定は増減できます。詳しくは、 55 ページの『認識限界』を参照してください。 | | 一時停止時間の設定 特定のマクロ画面のアクション間の時間を指定します。 「画面認識」タブ 「画面認識」タブは、画面キャプチャーがマクロ画面と関連付けられている場合に のみ使用可能になります。マクロ機能の画面記述について詳しくは、 37 ページの 『第 5 章 画面記述』を参照してください。 アクション・タブ アクション・タブによって、画面が認識されたときに実行するようアクションを構 成できます。 「上へ」ボタンと「下へ」ボタンを使用して、「追加」、「編集」、「除去」、お よびアクションの順序の変更ができます。詳しくは、 132 ページの『アクションの 追加と編集』を参照してください。 第 10 章 Visual Macro Editor 127 マクロ画面の追加 画面キャプチャーをドラッグして画面を追加する 任意のプロジェクトから画面キャプチャーをドラッグすることにより、新規画面を キャンバスに追加できます。 マクロを含むプロジェクトとは異なるプロジェクトからドラッグすると、画面キャ プチャー・ファイルをターゲット・プロジェクトにインポートするかどうかを選択 するようプロンプトが表示されます。「はい」をクリックすると、ファイルが (マ クロ固有のフォルダーではなく) プロジェクトのメイン「画面キャプチャー」フォ ルダーにコピーされ、キャンバス上の新規マクロ画面に関連付けられます。「いい え」をクリックすると、ファイルはインポートされず、画面キャプチャーはキャン バス上の新規マクロ画面に関連付けられません。 デフォルトの認識基準が定義されている場合は ( 129 ページの『デフォルト画面認 識基準』を参照)、その基準が新しい画面認識基準に適用され、選択した画面キャプ チャーに合わせて調整されます。 新規画面をダブルクリックすることによって完全に画面を構成でき、パレット上の 「次の画面接続」ツールを使用してマクロ内の他の画面にそれをワイヤー接続でき ます。 統合端末から画面を追加する 統合端末の「画面の追加」ボタンを使用すると、端末の現行画面をマクロに追加 し、適切に構成することができます。 「画面の追加」ウィザードを使用して、以下の操作ができます。 v 画面の属性と画面の関連の定義。 v 画面認識基準の定義 ( 127 ページの『「画面認識」タブ』を参照)。 v アクションの追加 ( 132 ページの『アクションの追加と編集』を参照)。 パレットから画面を追加する パレットの「画面」ツールは、新規画面をマクロに追加することを許可します。 画面を追加するには、パレットの「画面」をクリックして、それからキャンバス上 をクリックします。この操作により、『統合端末から画面を追加する』で説明され ているように、「画面の追加」ウィザードが開始します。ウィザードにより、画面 の構成を許可される前に、『マクロ画面を画面キャプチャーに関連付ける』で説明 されているように、「画面キャプチャー」パネルを使用して画面キャプチャーを選 択するよう強制されます。 マクロ画面を画面キャプチャーに関連付ける 画面プロパティーのパネルの「一般」タブにある「参照」ボタン ( 126 ページの 『マクロ画面のプロパティーの編集』を参照) は、プロジェクトから画面キャプチ ャーを選択してマクロ画面に関連付けるのに使用されます。「画面キャプチャー」 パネルに、プロジェクトのすべての画面キャプチャー (画面キャプチャー・マクロ のフォルダーの中または外にあります) のプレビューが表示されます。 128 IBM Host Access Transformation Services: 拡張マクロ・ガイド 「画面キャプチャー」パネルは、ユーザーが画面をパレットから追加したときにも 表示されます。 画面のプレビュー マウスをキャンバス上の画面の上に置くと、画面に関連付けられた画面キャプチャ ーのプレビューが表示されます (存在する場合)。 デフォルト画面認識基準 パレットまたは統合端末から「画面の追加」ウィザードを使用して画面をマクロに 追加する場合は、その画面認識基準を、パレットまたは統合端末から、あるいは画 面キャプチャーのドラッグからマクロに追加される、すべての画面のデフォルト認 識基準として保存するオプションがあります。このオプションを指定するには、 「画面認識基準」パネルの「次回のために基準を記憶」チェック・ボックスを選択 します。 この機能は多くの画面で同じ認識基準を共用するときに役立ちます。例えば、すべ ての画面の左上隅に画面を一意的に識別する 5 文字の名前またはコードがある場 合、デフォルトの認識基準を構成して、マクロに記録または追加された新規画面の すべてで、画面のその領域のストリング認識を使用するようにできます。この方法 では画面ごとに認識基準を構成する必要がなくなるため、時間を節約できます。 保存されるデフォルトの認識基準は、プロジェクト全体で 1 つのみです。この基準 がプロジェクト内のすべてのマクロに適用されます。 デフォルトの認識基準は、「次回のために基準を記憶」チェック・ボックスを選択 した状態で定義された最新の画面認識基準によりオーバーライドされます。 デフォルトの認識基準が定義されていると、「画面の追加」ウィザードが開始され るたびに適用され、さらに新規画面に関連付けられた画面キャプチャーに合わせて 調整されます。 画面の切り取り、削除、コピー、貼り付け 1 つ以上の画面を切り取りまたはコピーして、同じマクロまたは他のマクロに貼り 付けることができます。この操作は元に戻すことができます。 1 つ以上の画面を選択し、「切り取り」または「削除」のいずれかを実行すると、 選択した画面と送信および受信の次の画面接続のすべてがマクロのキャンバスから 除去されます。この操作により、除去されなかった画面を開始点とした、次の画面 接続の再配列が強制される場合があります。以下の例で、CelDialCommunications 画 面には DisplayProgramMessages 画面からの接続と MainMenu 画面への接続があり ます。また、SignOn 画面からの次の画面接続の順序では 2 番目でもあります。 第 10 章 Visual Macro Editor 129 図 53. 画面の削除の例 - 切り取りまたは削除前 CelDialCommunications 画面を切り取りまたは削除した後、その画面に対して出入り するすべての次の画面接続が除去され、SignOn 画面からの次の画面接続の順序で、 MainMenu 画面が (3 番目ではなく) 2 番目になります。 図 54. 画面の削除の例 - 切り取りまたは削除後 「コピー」または「切り取り」の後、「貼り付け」が実行されると、操作中は、内 部的な次の画面接続 (他の選択した画面への次の画面接続) が保持されます。以下の 例で、SignOn、DisplayProgramMessages、および MainMenu 画面はコピーするため に選択されています。 130 IBM Host Access Transformation Services: 拡張マクロ・ガイド 図 55. 画面コピーの例 コピーした画面を同じマクロのキャンバスに貼り付けて戻すと、選択した 3 つの画 面の間のすべての次の画面接続もコピーされることに注意してください。MainMenu 画面から CelDialCommunications 画面への次の画面接続のみがコピーされません。 第 10 章 Visual Macro Editor 131 図 56. 画面の貼り付けの例 拡張マクロ形式のマクロから、または拡張マクロ形式のマクロへ 1 つ以上の画面を 貼り付ける場合は、多少の検討を必要とします。 v 画面を拡張マクロ形式でないマクロから拡張形式のマクロに貼り付ける場合は、 コピーされる画面は拡張形式に変換されます。 v 画面を拡張マクロ形式のマクロから拡張形式でないマクロに貼り付ける場合は、 警告メッセージが表示され、ターゲット・マクロを変換するかどうか選択できま す。 v 貼り付けられる画面で使用されていた変数およびユーザー定義タイプはコピーさ れません。 アクションの操作 アクションの追加と編集 マクロ画面のプロパティーからアクションを追加および編集する アクションは、マクロ画面のプロパティーのアクション・タブからマクロ画面に追 加できます ( 126 ページの『マクロ画面のプロパティーの編集』を参照)。「アクシ 132 IBM Host Access Transformation Services: 拡張マクロ・ガイド ョンの追加」ウィザードに、マクロ画面への追加および編集が可能なアクションの リストが表示されます。 図 57. Visual Macro Editor のアクション パレットからアクションを画面に追加する パレットの「アクション」ツールは、新規アクションをマクロ画面に追加するのを 許可します。 アクションを追加するには、パレット内のアクションをクリックして、そのアクシ ョンを追加するマクロ画面をクリックします。 アクションのプロパティーを編集できるように、選択したアクション・タイプに適 用できるパネルが表示されます。 アクションの非表示および表示 画面アクションは、画面図形の右上角にあるトグルをクリックすることにより、非 表示にしたり、表示することができます。 CustomerDetail 図 58. 画面アクションを非表示にする 第 10 章 Visual Macro Editor 133 画面が表示が許されているアクション数よりも多いアクションを持つ場合 ( 147 ペ ージの『VME の設定の操作』を参照) は、「nnn アクションが続く」と読み取れる 行が表示されます。 図 59. 画面アクションの表示 アクション 次のセクションで、VME を使用して追加および編集が可能なすべてのアクションに ついて説明をします。マクロ・アクションおよび各アクションについて詳しくは、 59 ページの『第 7 章 マクロ・アクション』を参照してください。 カスタム・アクション カスタム・アクションは、Java プログラムをマクロ・アクションとして呼び出し、 必要に応じてプログラムに引数を受け渡すことを許可します。 指定できるフィールドは以下のとおりです。 ID 実行する Java プログラムを識別する任意のストリング。 引数 オプション。Java プログラムに受け渡す引数。 詳しくは、 199 ページの『<custom> エレメント』を参照してください。 Evaluate (If) アクション Evaluate (If) アクションは、if ステートメントまたは if-else ステートメントの機能 を提供します。 条件 「条件」フィールドに、マクロ・ランタイムに評価させる条件式を指定しま す。条件式には論理演算子と条件演算子を指定でき、また演算式、即時値、 変数、および Java メソッドの呼び出しを含む項を指定できます。詳しく は、 22 ページの『条件演算子と論理演算子および式』を参照してくださ い。 If True このタブをクリックし、「追加」をクリックして、「条件」が true の場合 に実行するアクションを追加します。 134 IBM Host Access Transformation Services: 拡張マクロ・ガイド If False このタブをクリックし、「追加」をクリックして、「条件」が false の場 合に実行するアクションを追加します。 アクションを「追加」「編集」、「除去」「上へ」移動、または「下へ」移動し、 それぞれの場合に対して実行できます。 注: 「If True」および「If False」条件に対して多くのアクションが定義されている場合 でも、「条件の評価 (Evaluate condition)」のみがマクロ・キャンバス上の画面オブ ジェクトのアクションとしてリストされます。 詳しくは、 61 ページの『条件アクション (<if> エレメントおよび <else> エレメン ト)』を参照してください。 抽出アクション 抽出アクションは、ホスト端末からデータを抽出し、オプションでそのデータを変 数に格納します。このアクションは非常に有用で、アプリケーション・データの読 み取り用にマクロ・オブジェクトが提供する基本的な方法です (ツールキットのプ ログラミング API の使用に代わるものです)。 名前 抽出名を指定します。 同じ名前の抽出が既に存在する場合は、警告メッセージが表示され、続行す ると既存の抽出の設定がオーバーライドされることが通知されます。 「領域」セクションを使用して抽出するホスト画面の領域を指定します。 開始行、開始列、終了行、終了列 抽出するホスト画面の領域の行座標と列座標を指定します。マウスを使用し てホスト画面の領域をマークすると、これらのフィールドに値が塗りつぶさ れます。 「抽出形式」セクションを使用して、抽出データの形式を指定します。テキスト平 面から抽出されたデータは、選択された抽出形式に基づいて単一ストリングまたは ストリングのリストに格納されて返されます。他 (非テキスト) の平面から抽出され たデータは、選択された抽出形式に基づいて文字配列の形式で返されます。 この領域を 1 つのストリングとして抽出 テキスト平面から抽出する場合、抽出したテキストを文字が横に並んだ単一 のストリングとして保存することを指定します。このオプションは、統合オ ブジェクト、マクロ・ハンドラー、グローバル変数、およびマクロ変数でサ ポートされます。 他 (非テキスト) の平面から抽出する場合、抽出したデータを 2 次元文字配 列の形式で単一オブジェクトとしてグローバル変数に保存することを指定し ます。このオプションは、グローバル変数でのみサポートされます。 この領域をストリングのリストとして抽出 テキスト平面から抽出する場合、抽出したテキストをストリングの縦方向の リストとして保存することを指定します。このオプションは、マクロ・ハン 第 10 章 Visual Macro Editor 135 ドラー、グローバル変数、およびマクロ変数でサポートされます。統合オブ ジェクトの場合は、ストリングのリストは 1 つの連続したストリングとし て扱われます。 他 (非テキスト) の平面から抽出する場合、2 次元文字配列として抽出した データを個別の 1 次元配列に分解 (各配列が抽出された単一行を表す) し、 各行をグローバル変数内の添字に格納することを指定します。このオプショ ンは、グローバル変数でのみサポートされます。 この領域をテーブルとして抽出 テキスト平面から抽出する場合、抽出したテキストを行および列を持つ、横 方向および縦方向のストリングのテーブルとして保存することを指定しま す。このオプションは、統合オブジェクト、マクロ・ハンドラー、およびマ クロ変数でサポートされます。グローバル変数の場合は、テーブルとして抽 出されたストリングは 1 つの連続したストリングになります。 注: 他 (非テキスト) の平面から抽出する場合、この非テキスト・データは ユーザーに対して直接表示することを目的としていないため、このオプ ションは使用不可になります。代わりに、このオプションは、特定のホ スト画面の表示方法または処理方法を識別するのに特別なデータが必要 な開発者向けです。 「定義」をクリックして、テーブルを定義します。 テーブル抽出の構成 このページを使用してテーブルの列の形式を設定します。 v 列名 このフィールドを使用して、選択した列の見出しを変更します。 v 列の展開 列の展開は、文字を列間で移動させます。ある列を強調表示した 状態にします。「左方」ボタンにより、その列の各行の最後の文 字が強調表示した列の左側に移動し、強調表示した列の各行の最 初の文字になります。「右方」ボタンにより、その列の各行の最 初の文字が強調表示した列の右側に移動し、強調表示した列の各 行の最後の文字になります。 v 列の削減 列の削減は、文字を列間で移動させます。ある列を強調表示した 状態にします。「左方」ボタンにより、強調表示した列の各行の 最初の文字が移動して、強調表示した列の左隣の列の各行の最後 の文字になります。「右方」ボタンにより、強調表示した列の各 行の最後の文字が移動して、強調表示した列の右隣の列の各行の 最初の文字になります。 v マージ このボタンは、2 つの強調表示した列を単一の列にマージするた めに使用します。強調表示した列の文字列は 1 つの列内で結合さ れます。 v 分割 136 IBM Host Access Transformation Services: 拡張マクロ・ガイド このボタンは、強調表示した 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 Knowledge Center 第 10 章 Visual Macro Editor 137 (http://www.ibm.com/support/knowledgecenter/SSXKAY_9.5.0?topic=/ com.ibm.hats.doc/doc/rcpjavadoc/index.html) の『HATS RCP API Reference』 セクションを参照してください。 グローバル変数として保存 グローバル変数の名前は「名前」フィールドに入力できます。または、ドロ ップダウン・メニューを使用して既存の変数を選択することもできます。 「名前」フィールドで既存のグローバル変数を選択した場合は、「拡張」を クリックして、次のラジオ・ボタンのいずれかを選択することにより、既存 の変数の取り扱い方法を指定します。 v この新しい値で既存の値を上書き。 v 特定の索引から開始して既存の値をこの新しい値で上書き。 v この新しい値を既存の値の末尾に追加。 (Append this new value to the end of the existing value.) v 特定の索引でこの新しい値を既存の値に挿入。 「共用」チェック・ボックスを選択することにより、この変数を共用するか どうかを指定することもできます。 抽出データをグローバル変数として保存することを選択すると、「抽出する 平面」設定の「テキスト」オプションが自動的に選択されます。 注: 値を抽出して、抽出によって設定されているグローバル変数に割り当 て、そのグローバル変数の値をプロンプトに使用するには、promptall 属性を false に設定する必要があります。 promptall 属性が true に 設定されていると、プロンプトの値が取り出されるまで抽出アクション は実行されません。このため、プロンプトによって使用されるグローバ ル変数には値が入っていません。 HATS で記録されるマクロは、デフ ォルトで promptall=true になっています。promptall 属性について詳 しくは、 77 ページの『promptall 属性』を参照してください。 統合オブジェクトでは、グローバル変数に直接抽出しません。その代わ り、統合オブジェクトの出力ページで、統合オブジェクトを実行した 後、そのオブジェクトからデータを取得し、グローバル変数を設定しま す。統合オブジェクトからアクセスできるのは、共用グローバル変数の みです。 マクロ変数として保存 抽出データを保存するマクロ変数を指定する場合、このボックスを選択しま す。このオプションはマクロ変数がマクロに使用可能になっている場合の み、表示されます。 抽出データをマクロ変数として保存することを選択すると、「抽出する平 面」設定の「テキスト」オプションが自動的に選択されます。マクロ変数に 保存できるのは、テキスト平面からのデータのみです。 変数 抽出データを保存する変数を選択します。ドロップダウン・メニュ ーには、マクロで定義されているすべての変数が取り込まれていま す。 「拡張」セクションを使用して以下のオプションを設定します。 138 IBM Host Access Transformation Services: 拡張マクロ・ガイド 1 つの連続領域として抽出 長方形のテキスト・ブロックを取り込む場合は、このボックスをクリアしま す。詳しくは、 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 Access Transformation Services ユーザーと管理者のガイド」の『マクロ・プロンプトおよび 抽出の双方向オプション』を参照してください。 「すべて抽出」アクション 「すべて抽出」アクションは、画面上のすべてのフィールドに対して、一度に複数 の抽出アクションを追加することを使用可能にします。 簡単に、単一のフィールド、空のすべての保護フィールド、またはすべての入力フ ィールドを除外し、抽出名を設定できます。 第 10 章 Visual Macro Editor 139 同じ名前の抽出が既に存在する場合は、警告メッセージが表示され、続行すると既 存の抽出の設定がオーバーライドされることが通知されます。 「グローバル変数として保存」オプションを選択すると、「抽出名とグローバル変 数名を同期化する」かどうかを選択することもできます。選択した場合は、名前の 同期が維持されます。選択しない場合は、グローバル変数を編集して、抽出名とは 異なる名前にすることができます。 このアクションに関する 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: 拡張マクロ・ガイド 「一時停止」アクション 一時停止アクションは、指定されたミリ秒数の間だけ待機した後、終了します。 具体的には、マクロ・ランタイムは <pause> エレメントを検出し、期間の値を読み 取って、指定されたミリ秒数だけ待機します。その後、マクロ・ランタイムは次の 項目の実行に進みます。 このアクションは次の場合に使用します。 v 何らかの状況で待機を挿入したいとき。 v ホストがホスト端末を更新するまで待機するとき。詳しくは、 90 ページの『画面 の完了』を参照してください。 v デバッグの目的で遅延を追加するとき。 期間 (ミリ秒) 待機するミリ秒数を指定します。デフォルトは 10000 ミリ秒 (10 秒) です。 詳しくは、 211 ページの『<pause> エレメント』を参照してください。 「実行」アクション 「実行」アクションは、実行する Java メソッドを指定することを許可します。この アクションは、拡張マクロ形式のマクロの場合にのみ追加できます。 このアクションは、ユーザー定義タイプとしてインポートした Java クラスに属する メソッドを呼び出します ( 126 ページの『「変数およびタイプ」タブ』を参照)。 Java メソッド 実行するメソッドを指定します。変数と同じように、メソッド呼び出しをド ル記号 ($) で囲む必要があります ( 105 ページの『メソッド呼び出しの構 文』を参照)。マクロ・ランタイムがメソッドを呼び出します。 105 ページ の『マクロ・ランタイムが呼び出し先メソッドを検索する方法』も参照して ください。 詳しくは、 72 ページの『実行アクション (<perform> エレメント)』を参照してくだ さい。 「マクロを実行」アクション 「マクロを実行」アクションは別のマクロを実行します。 マクロ このリスト・ボックスから実行するマクロを選択します。リスト・ボックス には、プロジェクトのすべてのマクロが取り込まれています。 開始画面 このリスト・ボックスから、マクロ・ランタイムに最初に処理させるターゲ ット・マクロ内のマクロ画面を選択します。通常の開始画面でターゲット・ マクロを開始する場合は、「(デフォルト)」を選択します。 マクロ変数の転送 このボックスを選択すると、マクロ・ランタイムは、呼び出し側マクロに属 するすべての変数 (変数の内容を含む) をターゲット・マクロに転送しま す。 第 10 章 Visual Macro Editor 141 詳しくは、 74 ページの『PlayMacro アクション (<playmacro> エレメント)』を参照 してください。 「プロンプト」アクション プロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 または 5250 アプリケーションに送るか、変数に格納するための強力な機能を備えていま す。 名前 プロンプト名を指定します。この名前はユーザーに対するプロンプト内に表 示されます。そのため、この名前を使用して、プロンプト・フィールドに関 係する説明を提供できます。 同じ名前のプロンプトが既に存在する場合は、警告メッセージが表示され、 続行すると既存のプロンプトの設定がオーバーライドされることが通知され ます。 デフォルト値 プロンプト・フィールド用に使用するデフォルト値を指定します。 パスワード非表示 ユーザーにより入力されるプロンプトの入力を暗号化する場合、このボック スを選択します。 注: プロンプト用に指定したデフォルト値はマクロ・ファイルに暗号化され ないで保管されます。デフォルト値は、マクロ・エディターを使用して プロンプトを編集しているときは、暗号化されない状態で表示されま す。したがって、プロンプトを使用してパスワードを指定する方法を実 行するのは適切ですが、セキュリティー上の理由から、パスワードのデ フォルト値は指定しないようにします。 マクロ変数に値を保存 プロンプト入力を保存するマクロ変数を指定する場合、このボックスを選択 します。このオプションはマクロ変数がマクロに使用可能になっている場合 のみ、表示されます。「マクロ変数に値を保存」が選択されている場合は、 「このフィールドに値を挿入しない」オプションのみが使用可能になりま す。 変数 プロンプト入力を保存する変数を選択します。ドロップダウン・メ ニューには、マクロで定義されているすべての変数が取り込まれて います。 このフィールドに値を挿入しない このボックスを選択すると、マクロ・ランタイムは、入力フィール ドにプロンプト入力を表示しません。このフィールドは、「マクロ 変数に値を保存」ボックスが選択されている場合にのみ、使用可能 になります。 値の挿入前にフィールドをクリア このボックスを選択すると、マクロ・ランタイムは、入力開始前に、入力フ ィールドの内容をクリアします。 現行カーソル位置に挿入 このボックスを選択すると、マクロ・ランタイムは、ホスト端末の現行カー ソル位置にプロンプト入力を挿入します。カーソルの「行」と「列 142 IBM Host Access Transformation Services: 拡張マクロ・ガイド (Column)」フィールドを自身で設定する場合は、このボックスをクリアしま す。プロンプト入力を挿入するカーソル行および列を入力します。画面キャ プチャーが使用可能な場合は、その上をクリックすることにより、カーソル の行と列を設定できます。「行」フィールドと「列」フィールドに変数名を $var$ の形式で入力することもできます。 ホスト・アクション・キーを変換 このボックスを選択すると (デフォルト値)、マクロ・ランタイムは、アクシ ョン・キーのストリング ([enter] など) を、リテラル・ストリングではな く、アクション・キーとして解釈します。 入力の末尾へカーソルを移動 このボックスを選択すると、マクロ・ランタイムはテキスト・カー ソルを入力の末尾に移動します。 「ハンドラー」セクションにより、プロンプトを処理する方法の決定が可能になり ます。以下のいずれかのラジオ・ボタンを選択できます。 ハンドラーを表示 HATS Web プロジェクトの場合は、ユーザーに必要な情報の入力を求める プロンプト (その情報をユーザーが送信するボタン付き) を出力するため に、.jsp ファイルを選択することができます。default.jsp という名前のデフ ォルトのマクロ・ハンドラーが HATS とともに出荷されます。このファイ ルは、Toolkit の HATS プロジェクト・ビューをクリックして、プロジェク ト名を展開し、「Web コンテンツ」>「マクロ・イベント・ハンドラー」を 展開することにより、見つけることができます。独自のハンドラーを作成す る場合は、必ず HATS ランタイムに制御を戻してください。 注: 統合オブジェクトでは、選択した .jsp ハンドラーは無視されます。代 わりに、統合オブジェクト用の入力ページが作成され、その入力ページ に値の入力を求めるプロンプトが配置されます。入力ページを使用して 入力された値は、統合オブジェクトが実行される前に、生成された出力 ページにより統合オブジェクトにコピーされます。 HATS リッチ・クライアント プロジェクトの場合は、ユーザーに必要な情 報の入力を求めるプロンプト (その情報をユーザーが送信するボタン付き) を出力するために、カスタム・マクロ・ハンドラーを指定するか、リッチ・ クライアント プロジェクト内に定義されているカスタム・マクロハンドラ ーのリストを参照して選択できます。DefaultMacroHandler という名前のデ フォルトのマクロ・ハンドラーが HATS とともに出荷されます。このファ イルは、HATS プロジェクト・ビューで、プロジェクト名を展開し、「リ ッチ・クライアント・コンテンツ」>「マクロ・イベント・ハンドラー」を 展開することにより、見つけることができます。独自のハンドラーを作成す る場合は、カスタム・マクロ・ハンドラーの render() メソッド内で createButtonArea() メソッドと createButtons() メソッドを呼び出すことによ り、必ず HATS ランタイムに制御を戻してください。これらのメソッド は、RcpMacroHandler.render() メソッドのデフォルトの実装環境では呼び出 されます。RcpMacroHandler について詳しくは、HATS Knowledge Center (http://www.ibm.com/support/knowledgecenter/SSXKAY_9.5.0?topic=/ com.ibm.hats.doc/doc/rcpjavadoc/index.html) の『HATS RCP API Reference』 セクションを参照してください。 第 10 章 Visual Macro Editor 143 プロンプトをストリングに設定 プロンプトから戻す値がわかっている場合は、そのストリングを「ストリン グ」フィールドに入力できます。 プロンプトをグローバル変数に設定 プロンプトの値をグローバル変数により入力する場合は、そのグローバル変 数の名前を「名前」フィールドに入力するか、「グローバル変数」フィール ドの隣のドロップダウン・メニューを使用して既存の変数を選択します。 「拡張」ボタンをクリックすると、変数が共用または索引付きであるかどう かを指定できます。索引付き変数の場合は、すべての索引を表示するのか、 単一の索引を表示するのかを指定する必要があります。グローバル変数につ いての詳細は、「Host Access Transformation Services ユーザーと管理者の ガイド」の章『グローバル変数との対話』を参照してください。 注: プロンプトの値が抽出によって設定されたグローバル変数に基づいてい て、 promptall 属性が true に設定されている場合、プロンプトの値が 取り出されるまで抽出アクションは実行されません。このため、プロン プトによって使用されるグローバル変数には値が入っていません。グロ ーバル変数を抽出およびプロンプトで使用する場合、promptall 属性を false に設定しなければなりません。 promptall 属性について詳しく は、 77 ページの『promptall 属性』を参照してください。 統合オブジェクトでは、グローバル変数に直接アクセスしません。代わ りに、統合オブジェクトの入力ページと出力ページがグローバル変数の 値を取得し、統合オブジェクトが実行される前に、その値を統合オブジ ェクトに設定します。統合オブジェクトでアクセスできるのは共用グロ ーバル変数のみです。 プロンプトをユーザー・リストからのプロパティーに設定 プロンプトでユーザー・リストにアクセスするには、ドロップダウン・リス トから「ユーザー・プロファイル」を選択します。ユーザー・プロファイル は、「ユーザー・リスト・プロパティー」として、ユーザー ID または パ スワードを使用するかどうかの決定に関するキーになります。ユーザー・リ ストについて詳しくは、「Host Access Transformation Services ユーザーと 管理者のガイド」の『ユーザー・リスト』のセクションを参照してくださ い。 注: ユーザー・リストのプロンプトは、接続マクロ内でのみ使用できます。 Web 高速ログオンを使用する HATS アプリケーションを Web 高速ログオンを使用するように構成してあ る場合は、ユーザー ID またはパスワードとしてプロンプト・タイプを「プ ロンプト・タイプ」ドロップダウン・リストで入力し、アプリケーション ID を「アプリケーション ID」フィールドに入力します。 注: 「プロンプト・タイプ」には正しい値が事前に入力されている必要があ ります。 詳しくは、 76 ページの『プロンプト・アクション (<prompt> エレメント)』を参照 してください。双方向言語サポートを使用するときの考慮事項については、「Host 144 IBM Host Access Transformation Services: 拡張マクロ・ガイド Access Transformation Services ユーザーと管理者のガイド」の『マクロ・プロンプ トおよび抽出の双方向オプション』を参照してください。 「すべてにプロンプト」アクション 「すべてにプロンプト」アクションは、画面上のすべてのフィールドに対して、一 度に複数のプロンプト・アクションを追加することを使用可能にします。 簡単に、フィールドを除外することやプロンプト名を設定することが可能です。 同じ名前のプロンプトが既に存在する場合は、警告メッセージが表示され、続行す ると既存のプロンプトの設定がオーバーライドされることが通知されます。 「プロンプトをグローバル変数に設定」オプションを選択すると、「プロンプト名 とグローバル変数名を同期化する」かどうかを選択することもできます。選択した 場合は、名前の同期が維持されます。選択しない場合は、グローバル変数名を編集 して、プロンプト名とは異なる名前にすることができます。 このアクションに関する VME のその他の設定については、 142 ページの『「プロ ンプト」アクション』を参照してください。一般的な情報について詳しくは、 76 ペ ージの『プロンプト・アクション (<prompt> エレメント)』を参照してください。 「カーソル位置を設定」アクション 「カーソル位置を設定」アクションは、ホスト端末上のユーザーのマウス・クリッ クをシミュレートします。実際のマウス・クリックと同様に、クリックが行われた ときにマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャン プします。 マウス・クリックを発生させる「行」と「列」の位置を指定します。画面キャプチ ャーが、使用可能であれば、表示されます。その場合、その上をクリックすること により、「行」フィールドと「列」フィールドを設定できます。「行」フィールド と「列」フィールドに変数名を $var$ の形式で入力することもできます。 詳しくは、 208 ページの『<mouseclick> エレメント』を参照してください。 | 「トレース」アクション | | | 「トレース」アクションは、指定のトレース宛先 (HATS Toolkit コンソールや WebSphere コンソールなど) にトレース・メッセージを送信します。また、HATS はマクロ・トレースを HATS ランタイム・トレースに追加します。 | トレースの仕様 | | 「トレース・ハンドラー」リスト・ボックスを使用して、トレース・メッセージを 送信する宛先を指定します。 | | v トレース・メッセージを Host On-Demand トレース機能に送るには、「Host On-Demand トレース機能」を選択します。 | | v トレース・メッセージをユーザー・トレース・ハンドラーに送るには、「ユーザ ー・トレース・イベント」を選択します。 | v メッセージをコンソールに送信するには、「コマンド行」を選択します。 第 10 章 Visual Macro Editor 145 | | トレース宛先に送信したいストリングを指定するには、「値」入力フィールドを使 用します。 | | 詳しくは、 79 ページの『トレース・アクション (<trace> エレメント)』を参照して ください。 「マクロ変数の更新」アクション 「マクロ変数の更新」アクションを使用して、マクロ変数の値を更新できます。こ のアクションは、拡張マクロ形式のマクロの場合にのみ追加できます。 変数 このリスト・ボックスから、更新するマクロ変数の名前を選択します。リス ト・ボックス・ドロップダウンには、マクロ用に定義されているすべての変 数があります。 タイプ 選択したマクロ変数のタイプが表示されます。 値 マクロ変数に割り当てる値を指定します。値は、そのタイプの正しい形式で ある必要があります。 詳しくは、 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照し てください。 次の画面接続の操作 次の画面接続をパレットから追加する パレットの「次の画面接続」ツールは、新規の次の画面接続の定義を許可します。 2 つの画面間の次の画面接続を追加するには、パレットで「次の画面接続」をクリ ックし、ソース画面をクリックして次にターゲット画面をクリックします。 同じソース画面から開始された他の接続がある場合は、新しい接続が最高の順序 (優先順位) を持つことになります。順序は、次の画面接続のポップアップ・メニュ ーにある「再配列アクション」を使用して変更できます。 ループ (つまり、ソースとターゲットが同じ次の画面接続) を作成するには、同じ画 面を 2 回クリックします。ループは、その画面に他の次の画面接続が定義されてい ない場合は、矢印として表示され、1 つ以上定義されている場合は、順序を表示す る円として表示されています。 次の画面接続の再配列と変更 次の画面接続のポップアップ・メニューにある「再配列アクション」を使用して、 接続の順序 (優先順位) を変更することができます。これは、同じ画面から発生する 他の次の画面接続すべての順序に影響を与えます。 「再配列」アクションは、「上へ」および「下へ」と同じように機能します。つま り、順序 2 の接続を順序 3 に変更すると (1 つ下げる) 、順序 3 であった接続は 順序 2 になります (1 つ上がる)。 次の画面接続のソースまたはターゲットは、その接続の適切な端を新しいソースま たはターゲットの画面にドラッグすることにより変更できます。 146 IBM Host Access Transformation Services: 拡張マクロ・ガイド VME の設定の操作 VME の設定を操作するには、メニュー・バーから「ウィンドウ」>「設定」 >「HATS」>「Visual Macro Editor」を選択します。以下の設定を変更できます。 デフォルトで画面アクションを表示 この設定を選択すると、デフォルトで、マクロ画面オブジェクト上にアクシ ョンを表示します。この設定をクリアすると、デフォルトで、アクションを 非表示にします。マクロ画面上のアクションをトグルでクリックすると、特 定の画面のアクションを表示/非表示にします。この設定は VME で始めて 開いたマクロのみに影響します。デフォルトが選択されています。 表示する画面アクション数の制限 1 つのマクロ画面オブジェクトに対して表示されるアクションの最大数を指 定します。これは、すべてのアクションを表示するとインターフェースが複 雑すぎる、複雑なマクロの場合、有用です。デフォルトは「5」です。 第 10 章 Visual Macro Editor 147 148 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 11 章 拡張マクロ・エディター 拡張マクロ・エディター (AME) では、macro 属性および screen-level 属性の設定、 画面説明の編集、およびアクション、リンク (次の画面接続)、変数の追加を行うこ とができます。 基本マクロ・エディターは、マクロを右クリックして「オープン先を指定」 -> 「マクロ・エディター」を選択して開きます。拡張マクロ・エディターは、マク ロ・エディターの「概要」ページから開くことができます。また、「プロンプトお よび抽出」もマクロ・エディターから編集できます。 マクロを VME ではなくマクロ・エディターで開くと、マクロ・エディターがその マクロのデフォルト・エディター (そのマクロのみ) になります。 注: Macro Editor および Advanced Macro Editor のサポートは、HATS V9.5 では非 推奨になりました。現在までサポートされていましたが、 IBM は、これ以降の 製品リリースでこの機能を削除することができます。このサポートは Visual Macro Editor で置き換えられました。 エディターの使用 拡張マクロ・エディターは、マクロの各部を編集するためのグラフィカル・ユーザ ー・インターフェースであり、ボタン、入力フィールド、リスト・ボックスなどを 備えています。 150 ページの図 60 に、拡張マクロ・エディターを示します。 © Copyright IBM Corp. 2003, 2015 149 図 60. 拡張マクロ・エディター 注: 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> エレメントと非常に密接に対応し 150 IBM Host Access Transformation Services: 拡張マクロ・ガイド ます。実際に、「マクロ」タブは、<HAScript> エレメントの開始タグの属性に保管 される情報に対するグラフィカル・ユーザー・インターフェースです。 したがって、<HAScript> エレメントはマクロ・スクリプトのマスター・エレメント であり、マクロ全体に適用される情報 (例えば、マクロ記述) がその属性に含まれる ため、同様に「マクロ」タブは、AME の最初のタブであり、同じグローバル情報の 一部にアクセスできます。 図 61 は、「マクロ」タブが選択された状態の AME を示しています。 図 61. AME のマクロ・タブ 図 61 では、「マクロ」タブに数個のチェック・ボックスとともにマクロの説明およ びその他の情報の入力フィールドがあります。また、次の点も知ることができま す。。 「マクロ名」フィールドには、マクロに割り当てる名前が入ります。この名前は、 マクロを編集または実行するときに選択する名前と同じです。マクロ名では大文字 と小文字を区別します。例えば、macro_1 は、Macro_1、MACRO_1、などとは別の名 前です。 「マクロで変数と演算式を使用する」チェック・ボックスは、マクロ・オブジェク トがこのマクロに基本マクロ形式を使用するか、拡張マクロ形式を使用するかを決 定します。上記の図では、このチェック・ボックスは選択されていません。これ は、基本マクロ形式が使用されることを示します ( 17 ページの『基本マクロ形式と 拡張マクロ形式』を参照)。 第 11 章 拡張マクロ・エディター 151 図 62 は、 151 ページの図 61 の「マクロ」タブに表示されているのと同じ情報およ びいくつかの追加情報が含まれている、サンプル <HAScript> エレメントを示して います。ソース表示では、<HAScript> エレメントが 1 行に書き込まれますが、こ こではそのエレメントが複数行に書き込まれているため、属性を確認することがで きます。 <HAScript name="macro_1" description=" " timeout="60000" pausetime="300" promptall="true" author="" creationdate="" supressclearevents="false" usevars="false" ignorepauseforenhancedtn="false" delayifnotenhancedtn="0"> ... </HAScript> 図 62. サンプル <HAScript> エレメント 図 62 の <HAScript> エレメント内には、 151 ページの図 61 に示される「マクロ」 タブの各入力フィールドに対応する属性があります。例えば、 <HAScript> エレメ ント内の usevars 属性 (usevars="false") は「マクロ」タブの「マクロで変数と演 算式を使用する」チェック・ボックスに対応します。図 62 には、 151 ページの図 61 には表示されない追加属性があります。 「画面」タブ このセクションでは、AME の「画面」タブと、直前のセクションで説明されている XML <screen> エレメントとの関連を示します。 153 ページの図 63 は、「画面」タ ブが選択された状態の AME を示しています。 152 IBM Host Access Transformation Services: 拡張マクロ・ガイド 図 63. 「画面」タブ 図 63 の「画面」タブには、以下が含まれています。 v このタブの上部にある「画面名」リスト・ボックス v 3 つの従属タブ (「一般」、「説明」、および「アクション」) 現在、「一般」タブが選択されています。 「画面」タブには次の 2 つの「画面名」フィールドがあることに注意してくださ い。 v 「画面」タブの一番上にある「画面名」フィールドは、マクロ内のすべてのマク ロ画面の名前が入っているリスト・ボックスです。 v 「一般」サブタブの一番上にある「画面名」フィールドは、現在選択されている 画面に割り当てたい名前を入力する入力フィールドです。 「画面」タブの一番上にある「画面名」リスト・ボックスでは、作業対象のマクロ 画面の名前 (例えば、Screen1) をクリックします。AME は、そのマクロ画面に属 する情報をサブタブに表示します。例えば、図 63 では、リスト・ボックスは、マク ロ画面名 Screen1 を表示し、サブタブは、Screen1 に属する情報を表示します。ユ ーザーがリスト・ボックス内の別のマクロ画面名 (例えば、Screen10) を選択した場 合、AME は、マクロ画面 Screen10 に属する情報をサブタブに表示します。 「一般」タブの下の「画面名」入力フィールドには、現在選択されているマクロ画 面に割り当てたい名前を入力します。Screenx のような画面名 (ここで x は整数を 表します。例えば、Screen1) は、マクロ・オブジェクトがマクロ画面を作成すると きにその画面に与えるデフォルトの名前です。この名前をそのまま使用すること 第 11 章 拡張マクロ・エディター 153 も、より覚えやすい記述名に置き換えることもできます。 (すべてのマクロ画面 に、Screen3、Screen10、Screen24 のような名前がある場合、どのマクロ画面が何を 実行するかを覚えるのは困難です。) 「画面」タブの「一般」、「説明」、および「アクション」の各サブタブは、前の セクションで説明された XML <screen> エレメントの主要部分に対応します。具体 的には、次のとおりです。 v 「一般」サブタブは、<screen> エレメントの属性に保管されている情報を提示し ます。 v 「説明」サブタブは、<screen> エレメントの <description> サブエレメントに保 管されている情報を提示します。 v 「アクション」サブタブは、<screen> エレメントの <actions> サブエレメントに 保管されている情報を提示します。 しかし、<nextscreens> サブエレメントについてはどうでしょうか。使いやすくする ために、<nextscreens> エレメントに属する情報は、上位の「リンク」タブに表示さ れます。 153 ページの図 63 の「画面」タブのすぐ右に、「リンク」タブが表示され ています。 図 64 は、Screen1 という名前のサンプル <screen> エレメントの XML 開始タグと 終了タグを示しています。 <screen name="Screen1" entryscreen="true" exitscreen="false" transient="false"> ... </screen> 図 64. <screen> エレメントの開始タグと終了タグ 図 64 において、省略符号 (...) は XML テキストの一部ではありませんが、簡略化 するために <screen> エレメント内部に含まれる必須エレメントが省略されているこ とを示します。開始タグの属性は、 153 ページの図 63 に示される「一般」タブのフ ィールドに対応します。例えば、name 属性 (name="Screen1") は「一般」タブ上の 「画面名」入力フィールドに対応し、entryscreen 属性 (entryscreen="true") は 「一般」タブ上の「エントリー画面」リスト・ボックスに対応します。 155 ページの図 65 は、囲まれているエレメントを含めて、<screen> エレメント全 体の XML テキストを示しています。 154 IBM Host Access Transformation Services: 拡張マクロ・ガイド <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> エレメント 図 65 では、<screen> エレメントに、必須の <description>、<actions>、および <nextscreens> エレメントが入っていることに注目してください。 デフォルトでは、「認識限界の設定」チェック・ボックスはクリアされていて、入 力フィールドは使用不可です。このチェック・ボックスを選択すると、マクロ・エ ディターは「エラーになる前の画面」入力フィールドのデフォルト値を 100 に設定 します。この値の設定は増減できます。詳しくは、 55 ページの『認識限界』を参照 してください。 「説明」タブ AME の「画面」タブ上の「説明」タブは、マクロ画面の <description> エレメント 内に保管されている情報にアクセスします。 156 ページの図 66 は、「説明」タブの 例を示しています。 第 11 章 拡張マクロ・エディター 155 図 66. 「説明」タブ 図 66 では、AME の「画面」タブが選択されています。現在選択されている画面の 名前 Screen1 が、「画面」タブの一番上の「画面名」フィールドに表示されていま す。「画面名」フィールドの下には、「一般」、「説明」、および「アクション」 のサブタブがあります。「説明」タブが選択されています。 上記の図の「説明」タブを見ると、上部領域と下部領域があることが分かります。 上部領域には、単一の記述子エレメントを全体と見なして作用するコントロールが あります。特に、「説明」タブの左上隅にある「記述子」リスト・ボックスには、 現在選択されている記述子の名前が入っています。上記の図では、現在選択されて いる記述子は、リストの一番上にある「フィールド数および OIA」記述子です。(記 述子には名前がありません。「フィールド数および OIA」は、記述子のタイプで す。) 「説明」タブの下部領域には、現在選択されている記述子の内容が表示されます。 現在選択されている記述子は「フィールド数および OIA」記述子であるので、「説 明」タブの下部は、そのタイプの記述子に適した内容を提示します。ユーザーが別 のタイプの記述子 (例えば、ストリング記述子) を作成し、選択した場合、下部領域 には、ストリング記述子に該当する内容が提示されます。 図 66 の「説明」タブの下部領域をもっと詳しく調べると、「フィールド数および OIA」記述子には、次の 3 つの ID テストが含まれていることが分かります。 v 画面には 80 個のフィールドがある (「フィールド数」フィールドが 80 に設定 されている) v 画面には 3 個の入力フィールドがある (「入力フィールドの数」フィールドが 3 に設定されている) 156 IBM Host Access Transformation Services: 拡張マクロ・ガイド v 画面の入力禁止標識がクリアされている (「OIA が禁止解除になるのを待つ」リ スト・ボックスが true に設定されている)。 マクロ・ランタイムは、このマクロ画面をアプリケーション画面に一致させようと するときに、これらの 3 つの ID テストを適用します。 注: AME は「フィールド数および OIA」記述子を、3 つのテストが含まれている 1 つの記述子として提示しますが、実際にマクロ言語は、これらの 3 つのテス トを別々の独立した 3 つの記述子として定義します。 158 ページの『「Field Counts and OIA」ディスクリプター』を参照してください。 156 ページの図 66 の「説明」タブの下部領域には、「フィールド数および OIA」記述子のこれら 3 つのテストごとに、「オプション」というラベルのフ ィールドも表示されます。ここでは、このフィールドを無視してかまいませ ん。「フィールド数」記述子と「入力フィールドの数」記述子には、「逆記述 子」というラベルのフィールドもあります。このフィールドもここでは無視し てかまいません。これらのフィールドについては、 40 ページの『デフォルト結 合メソッド』のセクションで説明されます。 新しい記述子の作成: 156 ページの図 66 の「説明」リスト・ボックスをもう一度 見ると、最初のエントリーだけが実際の記述子になっていることが分かります。残 りの選択項目は、すべて不等号括弧で囲まれ、「新規」という語で始まっていま す。これらの選択項目は、新しい記述子を作成するためのものです。以下に 156 ペ ージの図 66 から抜粋したリストを示します。 フィールド数および OIA <新規ストリング記述子> <新規カーソル記述子> <新規属性記述子> <新規条件記述子> <新規変数更新> 図 67. 実際の記述子が 1 つある「記述子 (Descriptor)」リスト・ボックスの内容 例えば、<新規ストリング記述子> をクリックした場合、マクロ・オブジェクトは、 新しいストリング記述子を作成し、リストの先頭に置きます。「説明」タブの下部 領域では、ストリング記述子に属するさまざまなフィールド (例えば、行と列の位 置や、文字ストリング) に入力できます。「記述子 (Descriptor)」リスト・ボックス は次のようになります。 ストリング記述子 (3, 29) フィールド数および OIA <新規ストリング記述子> <新規カーソル記述子> <新規属性記述子> <新規条件記述子> <新規変数更新> 図 68. 実際の記述子が 2 つある「記述子 (Descriptor)」リスト・ボックスの内容 第 11 章 拡張マクロ・エディター 157 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: 拡張マクロ・ガイド 例えば、AME の「説明」タブに表示される「フィールド数および OIA」記述子を 最初に見て、次にソース表示を見ます。 156 ページの図 66 は、「説明」タブの「フ ィールド数および OIA」記述子を示しています。「Field Counts and OIA」ディス クリプターの 3 つの部分の設定値は、次のように設定されます。 Number of Fields: 80 Number of Input fields: 3 Wait for OIA to Become Uninhibited: true 一方、対応する <description> エレメントをソース表示で調べると、次のように表示 されます。 <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> エレメント 図 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 マクロ・ランタイムが設定をどのように評価するか 第 11 章 拡張マクロ・エディター 159 表 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: 拡張マクロ・ガイド 複数のディスクリプターの評価の詳細については、 39 ページの『記述子の評価』を 参照してください。 新規ストリング・ディスクリプターにおける '*' ストリング: 新規ストリング記述 子を作成すると、AME は、初期デフォルト値としてストリング ’*’ を「ストリン グ」入力フィールドに入れます。この初期ストリングを消去して、必要なストリン グを入力してください。アスタリスク (*) には意味も機能もありません。この初期 ストリングは「デフォルト・ストリング値」を示し、同じ効果があります。 アクション・タブ AME の「画面」タブにある「アクション」タブを使用して、アクションを作成およ び編集できます。「アクション」タブでアクションを作成すると、 AME は、現在 選択されている画面の <actions> エレメントに新規アクションを挿入します。図 70 に、「アクション」タブの例を示します。 図 70. アクション・タブ 図 70 では、AME の「画面」タブが選択されています。現在選択されている画面の 名前 (Screen1) が、「画面」タブの「画面名」フィールドに表示されています。 「画面名」フィールドの下には、「一般」、「説明」、および「アクション」のサ ブタブがあります。「アクション」タブが選択されています。 「説明」タブと同様に、「アクション」タブには上部領域と下部領域があります。 上部領域には、単一のアクション・エレメントを全体と見なして作用するコントロ ールがあります。具体的には、「アクション」タブの左上隅にある「アクション」 第 11 章 拡張マクロ・エディター 161 リスト・ボックスに、現在選択されているアクションの名前が表示されます。上の 図では、まだアクションが作成されていないので、現在選択されているアクション はありません。 「アクション」タブの下部領域には、現在選択されているアクションがある場合は その内容が表示されます。現在選択されているアクションが入力アクションの場 合、「アクション」タブの下部領域にはそのタイプのアクションに該当する内容が 表示されます。抽出アクションなど、別のタイプのアクションをユーザーが作成ま たは選択した場合、下部領域には抽出アクションに該当する内容が表示されます。 新規アクションの作成: 161 ページの図 70 の「アクション」リスト・ボックスに もう一度注目すると、このリスト・ボックスにはまだアクションが入っていないこ とが分かります。不等号括弧で囲まれ、「新規」という語で始まる選択項目は、す べて新規アクションの作成用です。 161 ページの図 70 でも分かるように、「アク ション」リスト・ボックスは、リスト全体を一度に表示するには高さが不足してい ます。以下にリストの全体を示します。 <新規入力アクション> <新規抽出アクション> <新規プロンプト・アクション> <新規一時停止アクション> <新規通信待機アクション> <新規トレース・アクション> <新規マウス・クリック・アクション> <新規変数更新アクション> <新規マクロ実行アクション> <新規実行アクション> <新規条件付きアクション> <新規 SQL 照会アクション> 図 71. 作成済みアクションがない状態での「アクション」リスト・ボックスのリストの内容 例えば、「<新規入力アクション>」をクリックすると、マクロ・オブジェクトは新 規の入力アクションを作成し、リストの一番上に配置します。「アクション」タブ の下部領域では、入力アクションに属する各種フィールド (入力キー・シーケンス など) に入力できます。「アクション」リスト・ボックスの選択領域に新規の入力 項目が表示され、リスト・ボックスのリスト部分は次のようになります。 162 IBM Host Access Transformation Services: 拡張マクロ・ガイド 入力アクション 1 (0,0) <新規入力アクション> <新規抽出アクション> <新規プロンプト・アクション> <新規一時停止アクション> <新規通信待機アクション> <新規トレース・アクション> <新規マウス・クリック・アクション> <新規変数更新アクション> <新規マクロ実行アクション> <新規実行アクション> <新規条件付きアクション> <新規 SQL 照会アクション> 図 72. 実際のアクションが 1 つある状態での「アクション」リスト・ボックスのリストの内 容 マクロ・ランタイムがこのマクロ画面を処理する際には、「アクション」リスト・ ボックスのリスト順と同じ順序でアクションが実行されます。実際のアクションの 順序を変更するには、「アクション」リスト・ボックスの右側にある「順序変更」 ボタンをクリックします。 リンク・タブ AME では、「リンク」タブをユーザー・インターフェースとして使用して、マクロ 画面の <nextscreens> エレメントに候補マクロ画面の名前を保管します。図 73 に、 「リンク」タブの例を示します。 図 73. リンク・タブ 第 11 章 拡張マクロ・エディター 163 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: 拡張マクロ・ガイド <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 図 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 に、「変数」タブの例を示します。 第 11 章 拡張マクロ・エディター 165 図 75. 「変数 (Variables)」タブ 図 75 では、AME の「変数」タブが選択されています。現在選択されている変数の 名前 $strUserName$ が、「変数」リスト・ボックスに表示されています。その他 3 つのフィールド、「名前」入力フィールド、「タイプ」リスト・ボックス、および 「初期値」入力フィールドといった、マクロ・ランタイムがこの変数を作成するた めに必要とする情報があります。 「変数」リスト・ボックスには、このマクロ用に作成された変数すべての名前があ ります。編集または除去する変数をこのリスト・ボックスから選択でき、また変数 を新規に作成するための <新規変数> 項目もあります。 現在選択されている変数の項目が、別のストリングの後に括弧で囲んで表示されて いることに注意してください。 Variable1($strUserName$) ストリング Variable1 は、作成した変数の数を示す設定値で、マクロ・スクリプト には保存されません。変数の実名は $strUserName$ であり、変数を使用するときに は、マクロ全体でこの名前を単独で使用する必要があります。 変数名 $strUserName$ がドル記号 ($) で囲まれていることにお気付きかもしれませ ん。これは要件であり、マクロ内で変数を使用するときには、必ず変数名をドル記 号 ($) で囲む必要があります。 「名前」入力フィールドは、現在選択されている変数 $strUserName$ の名前を表示 します。既存の名前に上書き入力することによって、変数名を変更できます。通 常、このフィールドは、新規に作成した変数に名前を割り当てるためだけに使用し てください。後でいつでもこのパネルに戻ってこの変数の名前を変更できますが 166 IBM Host Access Transformation Services: 拡張マクロ・ガイド (例えば $strUserFirstName$ に)、マクロ内のどこかで、アクションや記述子にこの 変数の以前の名前をすでに使用している可能性があるので注意してください。この 「変数」タブで名前を変更した場合は、マクロ内でこの変数を使用したすべての場 所にも戻って、以前の変数名を新しい変数名に変更する必要があります。 任意の変数名を選択できますが、選択できる文字にはいくつかの制限があります ( 101 ページの『変数名とタイプ名』を参照)。本書で行っているように、データ・タ イプの省略形で始まる名前を選択する必要はありません (ストリング変数 $strUserName$ の str のように)。 「タイプ」リスト・ボックスには、変数に使用可能なタイプがリストされ、新規変 数に使用するタイプをここから選択できます。標準タイプは、 string、integer、double、 boolean、および field です。また、java.util.Hashtable などの Java クラスをインポート済みタイプとしてインポートすると、「タイプ」リ スト・ボックスにはこのインポート済みタイプが取り込まれ、図 76 に示すように使 用可能なタイプのリストに追加されます。 string integer double boolean field java.util.Hashtable 図 76. インポート済みタイプを宣言した後の「タイプ」リスト・ボックスの内容 このリスト・ボックスは、新規に作成した変数にタイプを割り当てるためだけに使 用してください。後でこのパネルに戻ってこの変数のタイプを別のタイプに変更で きますが、変数名の場合と同様に、マクロの中で最初に選択したタイプを必要とす るコンテキストで、すでにこの変数を使用している可能性があるので注意してくだ さい。該当する場合は、それらの各箇所で、変数を使用しているコンテキストが新 しいタイプに適切であるかを確認する必要があります。 「初期値」入力フィールドには、変数の初期値を指定できます。AME は、タイプに 応じて次のデフォルト値を提供します。 表 22. 変数のデフォルト初期値 変数のタイプ: デフォルト初期値: ストリング ストリングなし 整数 0 倍精度 0.0 ブール false フィールド (初期値なし) (すべてのインポート済みタイプ) ヌル 新しい初期値を指定するには、単にデフォルト値に上書きして入力します。 「除去」ボタンは、現在選択されている変数を除去します。 第 11 章 拡張マクロ・エディター 167 「インポート」ボタンと「インポート」ポップアップ・ウィンドウについては、 『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: 拡張マクロ・ガイド 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 通信待機アクション 通信状態 「接続状態」リスト・ボックスにリストした状態のいずれかを指定できます。表 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: 拡張マクロ・ガイド 「条件が真」タブには、「アクション」タブのコントロールとほとんど同一のコン トロールがあります。具体的には、次のとおりです。 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 「連続抽出 (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: 拡張マクロ・ガイド 「入力」アクション 入力ストリング 「ストリング」フィールドは、アクションに実行させるキー・シーケンスを指定す るための入力フィールドです。 文字を表示するキー (a、b、c、#、& など) を指定するには、そのキー自体を入力 します。 キーを「アクション・キー」リスト・ボックスから指定するには、目的のキー ([backspace] など) までリストをスクロールし、「アクション・キーの挿入」をク リックします。「ストリング」フィールドの次の入力位置に、キーの名前が大括弧 で囲まれて表示されます。「アクション・キー」リスト・ボックスにあるキーは、 アルファベット順にリストされていないので注意してください。必要なキーを見つ けるために、リストをスクロールし続ける必要が生じることがあります。 別の方法として、単に名前自体を大括弧で囲んで入力フィールドに入力する (例: [backspace]) ことにより、アクション・キーを指定することもできます。 3270 ディスプレイ・セッションの「アクション・キー」リストには、次のコピー・ アンド・ペースト・キーが表示されます。 [copy] [copyappend] [cut] [mark down] [mark left] [mark right] [mark up] [paste] [pastenext] [unmark] HATS はディスプレイ・セッション (Host On-Demand 端末) を作成しないため、こ れらのキーは HATS によってサポートされていません。 その他のキーについては、 223 ページの『入力アクションの略号キーワード』を参 照してください。 詳しくは、 66 ページの『入力アクション (<input> エレメント)』を参照してくださ い。 マウス・クリック・アクション マウス・クリック・アクションは、ユーザーによるホスト端末上でのマウス・クリ ックをシミュレートします。実際のマウス・クリックと同様に、クリックが行われ たときにマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャ ンプします。 行と列の指定 アクション・タブの下部領域で、マウス・クリックを発生させるホスト端末上の位 置 (行と列) を指定します。または、ホスト端末をクリックします。これにより、マ クロ・エディターの「行」フィールドと「列」フィールドの値が更新され、テキス ト・カーソルの新しい位置が反映されます。 詳しくは、 208 ページの『<mouseclick> エレメント』を参照してください。 第 11 章 拡張マクロ・エディター 173 「一時停止」アクション 一時停止アクションは、指定されたミリ秒数の間だけ待機した後、終了します。 具体的には、マクロ・ランタイムは <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: 拡張マクロ・ガイド 「プロンプト」アクション プロンプト・アクションは、ユーザーによる直接のキーボード入力を 3270 または 5250 アプリケーションに送るか、変数に格納するための強力な機能を備えていま す。 プロンプト・ウィンドウの表示 プロンプト・ウィンドウの各部分: プロンプト・テキスト (「パスワードを入力し てください: (’Please type your password:')」など) は、「プロンプト・テキス ト」フィールドではなく「プロンプト名」フィールドに入力する必要があります。 (「プロンプト・テキスト」フィールドは、特定のプロンプト・アクションの詳細を 説明するメモの保管に使用できるオプションのフィールドです。) マクロ・ランタイムが表示するプロンプト・ウィンドウには、次の特性がありま す。 v プロンプト・ウィンドウはセッション・ウィンドウの前面に表示され、システム のデスクトップ・ウィンドウの中央に配置されます。 v プロンプト・ウィンドウのタイトルは、フィールドが空白になっていないか、ま たはマクロに複数のプロンプトが存在して、マクロの開始時にすべてのプロンプ トが表示されるように構成されていない限り、「プロンプト・タイトル (Prompt Title)」フィールドの値になります。それら 2 つのインスタンスでは、プロンプ ト・ウィンドウのタイトルが「プロンプト」になります。 v 「プロンプト名」フィールドに入力したメッセージは、プロンプト・ウィンドウ の中央に表示され、その後に入力フィールドが表示されます。 v プロンプト・ウィンドウの下部にあるボタン行には、次の 3 つのボタンがありま す。 – 「OK」ボタンを押すと、マクロ・ランタイムは入力フィールドの内容を処理 します。 – 「キャンセル」ボタンは、マクロを停止します。 – 「ヘルプ」ボタンは、プロンプト・ウィンドウの使用法を説明するヘルプ・テ キストを表示します。 デフォルトの応答: 「デフォルトの応答」フィールド (オプション) には、プロン プト・ウィンドウが表示されたときに、プロンプト・ウィンドウの入力フィールド に表示したいデフォルト応答のテキストを入力できます。ユーザーがプロンプト・ ウィンドウの入力フィールドにキーボードで入力せず、単に「OK」をクリックして 入力完了を指示した場合、マクロ・ランタイムは入力フィールドに入っているデフ ォルト応答を処理します。 例えば、ユーザーが通常は ApplicationA を使用し、ときどき ApplicationB を使用 する場合は、「デフォルトの応答」フィールドに ApplicationA と入力できます。 マクロ・ランタイムがプロンプト・アクションを実行すると、入力フィールドにテ キスト ApplicationA がすでに表示された状態で、プロンプト・ウィンドウが表示 されます。「OK」をクリックするか (この場合、マクロは入力フィールドの内容と して ApplicationA を処理します)、入力フィールドに ApplicationB と入力して 「OK」をクリックできます (この場合、マクロは入力フィールドの内容として ApplicationB を処理します)。 第 11 章 拡張マクロ・エディター 175 パスワードの応答: 「パスワードの応答」リスト・ボックスで 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: 拡張マクロ・ガイド - 「キャンセル」をクリックすると、マクロ再生は終了します。 このように、「応答が必要 (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 実行時に 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: 拡張マクロ・ガイド ザー 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 ステートメント・セクションのフィールドの使用 SQL ステートメントを SQL ウィザードで作成する代わりに、情報をステートメン ト・セクションのフィールドに直接入力することもできます。また、SQL ステート メントを作成した後も、どのフィールドにも入力できます。 データベース URL: 「データベース URL」フィールドに、データベースへのアク セスを提供するデータベース・サーバーのデータベース URL を入力します。デー タベース URL の形式は、データベースにアクセスするために使用する Java Database 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 はそのパスワードをアスタリスク (******) で表示します。 v 入力フォーカスを別の入力フィールドに移動すると、AME は以下のように処理 します。 180 IBM Host Access Transformation Services: 拡張マクロ・ガイド 1. パスワードの暗号化バージョン (例えば q0eqOskTUBQ=) を生成します。 2. 「パスワード」フィールドに、パスワードの暗号化バージョンをアスタリスク (************) で表示します。(このパスワードの暗号化バージョンは、AME で実際の文字を見ることができます。) v パスワードはストリングです。そのため、拡張マクロ形式を使用している場合 は、パスワードを単一引用符で囲んで入力することに注意してください (例えば ’mypass’)。 AME は、単一引用符を含め、ストリング全体を暗号化します。 v AME が暗号化した後でパスワードを変更する必要がある場合、新しいパスワー ドを入力する前に、必ずフィールドの文字を完全に削除してください。 注: プロンプトのデフォルト値は、暗号化されずにマクロ・ファイルに保管されま す。デフォルト値は、マクロ・エディターでプロンプトを編集するときにはプ レーン・テキストで表示されます。したがって、プロンプトを使用してパスワ ードを指定する方法を実行するのは適切ですが、セキュリティー上の理由か ら、パスワードのデフォルト値は指定しないようにします。 ステートメント: SQL ステートメントを「ステートメント (Statement)」フィール ドに貼り付けるか、入力します。既に SQL ステートメントが「ステートメント」 フィールドに入っていれば、 (その SQL ステートメントが SQL ウィザードで作成 されたものであっても) 編集できます。 AME は、SQL ステートメントの形式の妥当性を検査しません。形式が無効である 場合、マクロ・ランタイムが SQLQuery アクションを実行するときにランタイム・ エラーが発生します。 SQL ステートメントを複数行にわたって書き込むことも、すべてを 1 行に書き込 むこともできます。図 77 および図 78 は、同じ SQL ステートメントが、複数行に わたって書き込まれた場合と 1 行に書き込まれた場合を示します。どちらも正しい 方法です。 SELECT * FROM SQLTEST.EX01 WHERE ( ( SQLTEST.EX01.DESCRIPT is not null ) ) 図 77. 複数行にまたがって書き込まれた SQL ステートメント SELECT * FROM SQLTEST.EX01 WHERE((SQLTEST.EX01.DESCRIPT is not null)) 図 78. 1 行に書き込まれた同じ SQL ステートメント 拡張マクロ形式を使用している場合、SQL ステートメントを単一引用符で囲まなけ ればならないこと、また特殊文字の規則に従わなければならないことに注意してく ださい。下記の 182 ページの図 79 および 182 ページの図 80 は、基本マクロ形式 第 11 章 拡張マクロ・エディター 181 用と拡張マクロ形式用の同じ SQL ステートメントを示しています。 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)、およびデータベース名とフィールド (例えば hodtest.ex01.descript) には大文字も小文字も使用できますが、マッチング・スト リング (例えば ’Edit Products’) には大/小文字を正しく使用する必要がありま す。したがって、図 81 の 2 つの SQL ステートメントは同等です。 select * from hodtest.ex01 where ((hodtest.ex01.descript=’Edit Products’)) SELECT * FROM HODTEST.EX01 WHERE ((HODTEST.EX01.DESCRIPT=’Edit Products’)) 図 81. 同等の大文字および小文字の例 結果セクションの使用 結果セクションのフィールドは、SQL ステートメントから生成されたデータを SQLQuery アクションがどのように使用するかを制御します。データは、 Host On-Demand マクロ変数に書き込むことができます。 データをマクロ変数 ($HMLSQLUtil$) に保管: SQLQuery アクションで生成され たデータのデフォルト宛先は、 Host On-Demand マクロ変数 $HMLSQLUtil$ で す。Host On-Demand ランタイムは、常にこの変数を正しく完了した SQLQuery ア クションの結果で更新します。 データを $HMLSQLUtil$ に保管するには、「結果の出力先 (Output Result To)」リ スト・ボックスを展開して $HMLSQLUtil$ をクリックします。 $HMLSQLUtil$ に保管されているデータを後続のマクロ・アクションで使用するに は、$HMLSQLUtil$ に関連する Host On-Demand マクロ・ユーティリティー・ライ ブラリー (HML ライブラリー) からメソッドを呼び出す必要があります。 116 ペ ージの『$HMLSQLUtil$』を参照してください。 SQLQuery アクションを双方向言語で使用 双方向言語 (アラビア語およびヘブライ語) の場合、SQLQuery が正しく機能するた めには、一部の特定のパラメーターを設定する必要があります。 AME には、オプ 182 IBM Host Access Transformation Services: 拡張マクロ・ガイド ションにアクセスするための「拡張」ボタンがあります。この「拡張」ボタンは、 ワークステーションが双方向言語用に構成されている場合のみ、表示されます。 追加のプロパティーは以下のとおりです。 ホスト・ファイル・タイプ (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> エレメント)』を参照し てください。 「トレース」アクション 「トレース」アクションは、指定のトレース宛先 (HATS Toolkit コンソールや WebSphere コンソールなど) にトレース・メッセージを送信します。また、HATS はマクロ・トレースを HATS ランタイム・トレースに追加します。 第 11 章 拡張マクロ・エディター 183 トレースの仕様 「トレース・ハンドラー」リスト・ボックスを使用して、トレース・メッセージを 送信する宛先を指定します。 v トレース・メッセージを Host On-Demand トレース機能に送るには、「Host On-Demand トレース機能」を選択します。 v トレース・メッセージをユーザー・トレース・ハンドラーに送るには、「ユーザ ー・トレース・イベント」を選択します。 v メッセージをコンソールに送信するには、「コマンド行」を選択します。 トレース宛先に送るストリングを指定するには、「トレース・テキスト」入力フィ ールドを使用します。 詳しくは、 79 ページの『トレース・アクション (<trace> エレメント)』を参照して ください。 変数更新アクション 変数更新アクションは、変数に値を格納します。マクロの実行中に、マクロ・ラン タイムはアクションを実行して、指定の値を指定された変数に格納します。 次の項目を指定する必要があります。 v 変数の名前 v 変数に格納する値 詳しくは、 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照し てください。 184 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 2 部 Host On-Demand マクロ言語 © Copyright IBM Corp. 2003, 2015 185 186 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 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: 拡張マクロ・ガイド <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 マクロ言語のエレメントの階層 エレメントの階層と、対応するマクロ・スクリプトの構造については、本書のさま ざまな個所で説明しています。特に、次のセクションを参照してください。 v <HAScript> エレメントについては、 12 ページの『マクロ・スクリプトの概念視 点』を参照。 v <screen> エレメントについては、 15 ページの『マクロ画面の概念視点』を参照。 個々のエレメントの説明については、 193 ページの『第 13 章 マクロ言語エレメン ト』を参照してください。 マクロ・スクリプトへのコメントの挿入 XML スタイルのコメント・ブラケット <!-- --> を使用してコメントのテキストを 囲むことにより、<HAScript> エレメント内の任意の個所にコメントを挿入できま す。 コメントは、次の用途に便利です。 v 説明文を付けてマクロ・スクリプトを整理する。 v 複雑な事項を説明してマクロ・スクリプトを文書化する。 v マクロ・スクリプトをデバッグする際に、エレメントのどの部分が問題の原因に なっているか判別するために、実行可能なエレメントをコメント化する。 第 12 章 マクロ言語の機能 189 コメント・エラー ソース表示は、次の状況が発生するとエラー・メッセージを表示します。 v コメントがネストしている v コメントが実行可能エレメントの一部をコメント化している また、<HAScript> エレメントの外側でブラケット <!-- --> を使用することはでき ません。このようにした場合、ソース表示は、スクリプトを保存する際にこれらの コメント・ブラケットとその内側のテキストを破棄します。 コメントの例 以下に、コメント・ブラケット <!-- --> を使用してコメントを挿入する例をいく つか示します。 <!-A multi-line comment that comments on the 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> <!-BEGIN An accidental comment that surrounds part of a <nextscreens> element, thereby corrupting the macro script. You will get an error when you try to save this macro script <nextscreens timeout="0" > <nextscreen name="Screen2" /> END of accidental comment --> </nextscreens> </screen> <trace> エレメントを使用したマクロ・スクリプトのデバッグ デバッグの際に <trace> エレメントを使用して、テキストと値をトレース出力先に 送ることができます。特に、出力に変数の名前を組み込むと、マクロ・ランタイム は変数の名前と値の両方を中括弧 {} で囲んで出力に表示します。次に例を示しま す。 190 IBM Host Access Transformation Services: 拡張マクロ・ガイド <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> エレメントの使用例の出力 <trace> アクションでは各変数が中括弧 {} で囲まれて表示され、括弧内には変数名 と変数の内容が含まれています。 第 12 章 マクロ言語の機能 191 192 IBM Host Access Transformation Services: 拡張マクロ・ガイド 第 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 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: 拡張マクロ・ガイド XML サンプル <actions promptall="true"> ... </actions> 図 85. <actions> エレメントの例 <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 サンプル <attrib value="0x3" row="4" col="14" plane="COLOR_PLANE" optional="false" invertmatch="false" /> 図 86. <attrib> エレメントの例 <comment> エレメント <comment> エレメントは、テキスト・コメントを <screen> エレメント内のサブエ レメントとして挿入します。制限事項は次のとおりです。 v <screen> エレメントの外で <comment> エレメントを使用できない。 第 13 章 マクロ言語エレメント 195 v 同じ <screen> エレメント内で複数の <comment> エレメントを使用できない。こ のようにした場合、ソース表示は、<screen> エレメント内の <comment> エレメ ントを、最後の 1 つを除いてすべて破棄します。 v <screen> エレメント内のどこに <comment> エレメントを置いても、ソース表示 は、そのコメントを上に移動して、<screen> エレメント内の最初のエレメントに する。 属性 なし。 XML サンプル <screen name="Screen2" entryscreen="false" exitscreen="true" transient="false"> <comment>This comment provides information about this macro screen. </comment> ... </screen> 図 87. <comment> エレメントの例 コメントを挿入する代替方式 コメントを挿入する代替方式では、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 196 IBM Host Access Transformation Services: 拡張マクロ・ガイド timeout 必須の整数。ミリ秒単位のタイムアウト値。指定された通信状況が発生しな いうちにタイムアウトになる場合、マクロ・ランタイムはアクションを終了 します。 XML サンプル <commwait value="CONNECTION_READY" timeout="10000" /> 図 88. <commwait> エレメントの例 <condition> エレメント <condition> エレメントは、マクロ・ランタイムが画面認識時に評価する条件式を指 定します。式が true に評価される場合、マクロ・ランタイムはこの記述子を true と評価します。式が false に評価される場合、マクロ・ランタイムはこの記述子を false と評価します ( 48 ページの『条件記述子 (<condition> エレメント)』を参照)。 条件式の詳細については、 22 ページの『条件演算子と論理演算子および式』を参照 してください。 属性 value 必須式。マクロ・ランタイムが評価する条件式。この条件式には、演算式、 変数、Java メソッド呼び出しからの戻り値、およびその他の条件式を含む ことができます。 optional オプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を 参照。 invertmatch オプションのブール。 41 ページの『Invertmatch 属性』を参照。 第 13 章 マクロ言語エレメント 197 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> エレメントの例 <create> エレメント <create> エレメントは変数を作成し、初期化します ( 99 ページの『変数の作成』を 参照)。 <create> エレメントは、<vars> エレメント内に存在する必要があります。 属性 name 必須。変数に割り当てる名前。変数名のスペルには、いくつかの制限があり ます ( 101 ページの『変数名とタイプ名』を参照)。 type 必須。変数のタイプ。標準のタイプは、ストリング、整数、倍精度、ブー ル、フィールドです。また、Java クラスを表すインポート済みタイプも定 義できます ( 99 ページの『Java クラスのインポート済みタイプを作成』を 参照)。 value オプション。変数の初期値。初期値を指定しない場合、デフォルトの初期値 は変数のタイプによって異なります。 XML サンプル 198 IBM Host Access Transformation Services: 拡張マクロ・ガイド <HAScript ... usevars="true" ... > <import> <type class="java.util.Properties" name="Properties" /> </import> <vars> <create <create <create <create <create <create </vars> ... </HAScript> name="$prp$" type="Properties" value="$new Properties()$" /> name="$strAccountName$" type="string" value="" /> name="$intAmount$" type="integer" value="0" /> name="$dblDistance$" type="double" value="0.0" /> name="$boolSignedUp$" type="boolean" value="false" /> name="$fldFunction$" type="field" /> 図 90. <create> エレメントの例 <cursor> エレメント <cursor> エレメントは、ホスト端末上のテキスト・カーソルの行と列の位置を指定 する記述子です ( 48 ページの『カーソル記述子 (<cursor> エレメント)』を参照)。 属性 row 必須の整数。テキスト・カーソルの行の位置。 col 必須の整数。テキスト・カーソルの列の位置。 optional オプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を 参照。 invertmatch オプションのブール。 41 ページの『Invertmatch 属性』を参照。 XML サンプル <cursor row="4" col="14" optional="false" invertmatch="false" /> 図 91. <cursor> エレメントの例 <custom> エレメント <custom> エレメントによって、マクロ画面の <actions> エレメント内からカスタム Java プログラムを呼び出すことができます。 プロセスの概要は次のとおりです。 1. マクロ画面の <actions> エレメントの処理中にアクションとして呼び出す Java プログラムがあると仮定します。 第 13 章 マクロ言語エレメント 199 2. マクロ・エディターで、カスタムの Java プログラムを呼び出す場所にある <actions> エレメントに次の行を追加します。 <custom id="’MyProgram1’" args="’arg1 arg2 arg3’" /> 3. MacroActionCustom クラスの指示に従います。MacroCustomActionListener を インプリメントするクラスを作成します。マクロ・ランタイムがステップ 2 の <custom> アクションを実行すると、イベントで、execute() メソッドが呼び出さ れます。 属性 id 必須。実行するカスタムの Java プログラムを示す任意のストリング。 args オプション。カスタムの Java プログラムに渡す引数。 XML サンプル <custom id="’MyProgram1’" args="’arg1 arg2 arg3’" /> <custom id="’MyProgram2’" args="’arg1 arg2’" /> 図 92. <custom> エレメントの例 <customreco> エレメント <customreco> エレメントを使用すると、カスタム記述コードを呼び出すことができ ます。 カスタム記述子を作成する手順は、次のとおりです。 1. カスタム記述を識別するストリング (例えば、MyCustomDescriptor01) を選択す る。複数のタイプのカスタム記述を作成できるので、ID は必須です。 2. ECLCustomRecoListener インターフェースをインプリメントする。doReco() メ ソッドで、次のことを行います。 a. ストリングが自分のものであることを確認するために、ID ストリングを調べ るためのコードを追加する。 b. カスタム記述コードを追加する。 c. カスタム記述に適合する場合は true を戻し、適合しない場合は false を戻 す。 3. ソース表示を使用して、<customreco> エレメントをマクロ画面の <description> エレメントに追加する。<customreco> エレメントは、ステップ 2 で選択した ID を指定する必要があります。 マクロ・ランタイムは、他のすべての記述子を実行した後、<customreco> エレメン トを実行します。 属性 id 200 必須のストリング。このカスタム記述に割り当てた ID。 IBM Host Access Transformation Services: 拡張マクロ・ガイド optional オプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を 参照。 invertmatch オプションのブール。 41 ページの『Invertmatch 属性』を参照。 XML サンプル <customreco id="’MyCustomDescriptor01’" optional="false" invertmatch="false" /> 図 93. <customreco> エレメントの例 <description> エレメント <actions> エレメント、<description> エレメント、および <nextscreens> エレメント は、<screen> エレメント内に存在する 3 つの基本構造エレメントです ( 15 ページ の『マクロ画面の概念視点』を参照)。 <description> エレメントには、記述子と呼ばれるエレメントが含まれます。各記述 子は、アプリケーション画面の識別特性を指定します ( 37 ページの『第 5 章 画面 記述』を参照)。マクロ・ランタイムは、記述子を使用して、マクロ画面をアプリケ ーション画面と一致させます。 属性 uselogic オプションのブール。デフォルト結合メソッドで使用可能な複数の記述子間 で、より複雑な論理関係を定義できます ( 42 ページの『uselogic 属性』を参 照)。 XML サンプル <description uselogic="true"> ... </actions> 図 94. <description> エレメントの例 <else> エレメント <else> エレメントは、一連のマクロ・アクションを含み、<if> エレメントの直後に 存在しなければなりません。マクロ・ランタイムは、<if> エレメント内の条件式を 評価します。次に、 v 条件式が true である場合 第 13 章 マクロ言語エレメント 201 – マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションを 実行する。 – マクロ・ランタイムは、後続の <else> エレメントがあれば、これをスキップ する。 v 条件式が false である場合 – マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションを スキップする。 – マクロ・ランタイムは、後続の <else> エレメント内のマクロ・アクションが あれば、これを実行する。 マクロ・オブジェクトは、<if> エレメント、および必要に応じて <else> エレメン トを使用して、条件アクションを保管します ( 61 ページの『条件アクション (<if> エレメントおよび <else> エレメント)』を参照)。 属性 なし。 XML サンプル <if condition="($var_int$ > 10)"> ... </if> <else> ... </else> 図 95. <else> エレメントの例 <extract> エレメント <extract> エレメントは、ホスト端末からデータを取り込みます ( 63 ページの『抽出 アクション (<extract> エレメント)』を参照)。 属性 下記のすべての属性の使用については、 63 ページの『抽出アクション (<extract> エ レメント)』を参照してください。 name 必須のストリング。抽出されたデータに割り当てられる名前。 planetype 必須。データ抽出元の平面。有効な値は次のとおりです。 v TEXT_PLANE v FIELD_PLANE v COLOR_PLANE v EXFIELD_PLANE 202 IBM Host Access Transformation Services: 拡張マクロ・ガイド v DBCS_PLANE v GRID_PLANE srow 必須の整数。行と列の座標の最初のペアの行。 scol 必須の整数。行と列の座標の最初のペアの列。 erow 必須の整数。行と列の座標の 2 番目のペアの行。 scol 必須の整数。行と列の座標の 2 番目のペアの列。 unwrap オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、指定された長方形内で始まる任意のフィールドの内容全体を取り込みま す。 65 ページの『unwrap 属性』を参照してください。 continuous オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、必要に応じて次の行に折り返す連続した一連のデータの開始と終了の位 置として、行と列の座標を解釈します。この属性を false に設定すると、マ クロ・ランタイムは、長方形のテキスト域の左上隅と右下隅として、行と列 の座標を解釈します。 64 ページの『ホスト端末からのテキスト・シーケン スのキャプチャー』を参照してください。 assigntovar オプションの変数名。この属性を変数名に設定すると、マクロ・ランタイム は、テキスト平面データをストリング値として変数に保管します。変数が、 ストリング以外の標準タイプ (つまり、ブール、整数、または倍精度) であ る場合、可能であれば、データはその標準タイプに変換されます。データが 変換できない場合、マクロは、ランタイム・エラーになり、終了します。 screenorientation オプションのストリング。この属性は、実行時のマクロ再生中の抽出に使用 するホスト画面方向を定義する場合に使用します。オプションは LTR と RTL です。 XML サンプル <extract name="’Get Data’" srow="1" scol="1" erow="11" ecol="11" assignto="$strText$" planetype="TEXT_PLANE" /> 図 96. <extract> エレメントの例 <HAScript> エレメント <HAScript> エレメントは、マクロ・スクリプトのマスター・エレメントです。その 他のエレメントを含み、マクロについてのグローバル情報を指定します ( 12 ページ の『マクロ・スクリプトの概念視点』を参照)。 第 13 章 マクロ言語エレメント 203 属性 name 必須。マクロの名前。 description オプション。このマクロについての記述テキスト。このマクロについて覚え ておきたい情報をここに組み込みます。 timeout オプションの整数。画面認識に使用できるミリ秒数。このタイムアウト値が 指定されているときに、これを超えると、マクロ・ランタイムは、マクロを 終了し、メッセージを表示します ( 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 に設定 される場合、セッションが、コンテンション解消モードで実行される 204 IBM Host Access Transformation Services: 拡張マクロ・ガイド TN3270E セッションであれば、マクロ・ランタイムは、すべての <pause> エレメントをスキップします ( 93 ページの『画面の完了に関係する属性』 を参照)。特定の <pause> エレメントを再度使用可能にするには、<pause> エレメントの ignorepauseoverrideforenhancedtn 属性を参照してください。 delayifnotenhancedtn オプション。3270 ディスプレイ・セッションのみ。この属性は、ミリ秒単 位で値を指定し、セッションがコンテンション解消モードで実行される TN3270E セッションでない 場合だけ効果があります。その状態では、この 属性により、マクロ・ランタイムは、OIA 標識が変更されたという通知を 受け取るたびに、指定された期間の一時停止を追加します ( 93 ページの 『画面の完了に関係する属性』を参照)。 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> エレメントの例 <if> エレメント <if> エレメントには、条件式と一連のマクロ・アクションが含まれています。マク ロ・ランタイムは、<if> エレメント内の条件式を評価します。次に、 v 条件式が true である場合 – マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションを 実行する。 – マクロ・ランタイムは、後続の <else> エレメントがあれば、これをスキップ する。 v 条件式が false である場合 – マクロ・ランタイムは、<if> エレメント内のその一連のマクロ・アクションを スキップする。 – マクロ・ランタイムは、後続の <else> エレメント内のマクロ・アクションが あれば、これを実行する。 マクロ・オブジェクトは、<if> エレメント、および必要に応じて <else> エレメン トを使用して、条件アクションを保管します ( 61 ページの『条件アクション (<if> エレメントおよび <else> エレメント)』を参照)。 第 13 章 マクロ言語エレメント 205 属性 condition 必須。条件式。条件式には論理演算子と条件演算子を指定でき、また演算 式、即時値、変数、および Java メソッドの呼び出しを含む項を指定できま す ( 22 ページの『条件演算子と論理演算子および式』を参照)。 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> エレメントの例 <import> エレメント <import> エレメント、<vars> エレメント、および <screen> エレメントは、 <HAScript> エレメント内に存在する 3 つの基本構造エレメントです ( 12 ページの 『マクロ・スクリプトの概念視点』を参照)。 <import> エレメントはオプションです。これには <type> エレメントが含まれ、そ れぞれが、Java クラスに基づいてインポート済みタイプを宣言します ( 99 ページの 『Java クラスのインポート済みタイプを作成』を参照)。 <import> エレメントは、<HAScript> 開始タグの後、かつ <vars> エレメントの前に 存在しなければなりません。 206 IBM Host Access Transformation Services: 拡張マクロ・ガイド 属性 なし。 XML サンプル <HAScript .... > <import> <type class="java.util.Properties" name="Properties" /> </import> <vars> <create name="$prp$" type="Properties" value="$new Properties()$" /> </vars> ... </HAScript> 図 99. <import> エレメントの例 <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 属性』を参照)。 第 13 章 マクロ言語エレメント 207 XML サンプル <input value="’3[enter]’" row="4" column="14" movecursor="true" xlatehostkeys="true" encrypted="false" /> 図 100. <input> エレメントの例 <mouseclick> エレメント <mouseclick> エレメントは、ユーザーによるホスト端末上でのマウス・クリックを シミュレートします。実際のマウス・クリックと同様に、クリックが行われたとき にマウス・アイコンが指していた行と列の位置にテキスト・カーソルがジャンプし ます。 属性 row 必須の整数。マウス・クリックが行われるホスト端末上の行と列の位置の 行。 col 必須の整数。マウス・クリックが行われるホスト端末上の行と列の位置の 列。 XML サンプル <mouseclick row="20" col="16" /> 図 101. <mouseclick> エレメントの例 <nextscreen> エレメント <nextscreen> エレメントは、マクロ・ランタイムが、特に次に処理するマクロ画面 の候補と見なす <screen> エレメント (マクロ画面) の名前を指定します ( 51 ページ の『有効な次画面の認識』を参照)。 <nextscreen> エレメントは、<nextscreens> エレメント内に存在する必要がありま す。 属性 name 必須。次に処理するマクロ画面の候補である <screen> エレメントの名前。 XML サンプル 208 IBM Host Access Transformation Services: 拡張マクロ・ガイド <!-The effect of the following <nextscreens> element and its contents is that when the macro runtime finishes performing the actions in the current screen, it adds ScreenS and ScreenG to the runtime list of valid next screens. --> <nextscreens> <nextscreen name="ScreenS"> <nextscreen name="ScreenG"> </nextscreens> 図 102. <nextscreen> エレメントの例 <nextscreens> エレメント <actions> エレメント、<description> エレメント、および <nextscreens> エレメント は、<screen> エレメント内に存在する 3 つの基本構造エレメントです ( 15 ページ の『マクロ画面の概念視点』を参照)。 <nextscreens> エレメントには、複数の <nextscreen> エレメントが含まれ、各エレメ ントは、現行のマクロ画面の後に表示されるマクロ画面の名前を指定します ( 51 ペ ージの『第 6 章 画面認識』を参照)。 属性 timeout オプションの整数。画面認識タイムアウトの値 (ミリ秒)。マクロ・ランタイ ムは、このタイムアウト値が満了する前に、名前が有効な次画面のランタイ ム・リスト上にあるマクロ画面をアプリケーション画面と一致させることが できない場合、マクロを終了します ( 54 ページの『画面認識のタイムアウ ト設定』を参照)。 XML サンプル <!-The effect of the following <nextscreens> element and its contents is that when the macro runtime finishes performing the actions in the current screen, it will attempt to recognize ScreenS and ScreenG. --> <nextscreens> <nextscreen name="ScreenS"> <nextscreen name="ScreenG"> </nextscreens> 図 103. <nextscreens> エレメントの例 第 13 章 マクロ言語エレメント 209 <numfields> エレメント <numfields> エレメントは、ホスト端末上のすべてのタイプの 3270 フィールドまた は 5250 フィールドの数を指定する記述子です ( 44 ページの『「フィールド数」記 述子 (<numfields> エレメント)』を参照)。 属性 number 必須の整数。ホスト端末上のフィールドの数。 optional オプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を 参照。 invertmatch オプションのブール (デフォルトは false)。 41 ページの『Invertmatch 属 性』を参照。 XML サンプル <numfields number="10" optional="false" invertmatch="false" /> 図 104. <numfields> エレメントの例 <numinputfields> エレメント <numinputfields> エレメントは、ホスト端末上の 3270 入力フィールドまたは 5250 入力フィールドの数を指定する記述子です ( 44 ページの『「入力フィールド数 (Number of Input Fields)」記述子 (<numinputfields> エレメント)』を参照)。 属性 number 必須の整数。ホスト端末上のフィールドの数。 optional オプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を 参照。 invertmatch オプションのブール (デフォルトは false)。 41 ページの『Invertmatch 属 性』を参照。 XML サンプル 210 IBM Host Access Transformation Services: 拡張マクロ・ガイド <numinputfields number="10" optional="false" invertmatch="false" /> 図 105. <numinputfields> エレメントの例 <oia> エレメント <oia> エレメントは、ホスト端末の入力禁止標識の状態を記述する記述子です ( 44 ページの『OIA 記述子 (<oia> エレメント)』を参照)。 属性 status 必須。次の値にすることができます。 v NOTINHIBITED マクロ・ランタイムは、入力禁止標識がクリアされているときはこの記述 子を true として評価し、入力禁止標識が設定されている場合は false と して評価します。 v DONTCARE マクロ・ランタイムは、常にこの記述子を true として評価します。 v NOTINHIBITED か DONTCARE のどちらかに評価される式 マクロ・ランタイムは、この式を評価してから、その結果に応じて、通常 通りに記述子を評価します。 optional オプションのブール (デフォルトは false)。 41 ページの『Optional 属性』を 参照。 invertmatch オプションのブール。 41 ページの『Invertmatch 属性』を参照。 XML サンプル <oia status="NOTINHIBITED" optional="false" invertmatch="false" /> 図 106. <oia> エレメントの例 <pause> エレメント <pause> エレメントは、指定されたミリ秒数の間、待機します ( 72 ページの『一時 停止アクション (<pause> エレメント)』を参照)。 属性 value オプションの整数。待機するミリ秒数。この属性を指定しない場合、マク 第 13 章 マクロ言語エレメント 211 ロ・オブジェクトは、スクリプトを保存するときに、属性 "value=10000" (10 秒) をこのエレメントに追加します。 ignorepauseoverride オプションのブール (デフォルトは false)。3270 ディスプレイ・セッション 専用。この属性を true に設定すると、マクロ・ランタイムは、<HAScript> エレメントの ignorepauseforenhancedtn 属性が true に設定されている場合 であっても、<pause> エレメントを処理します ( 93 ページの『画面の完了 に関係する属性』を参照)。 XML サンプル <pause timeout="5000"> 図 107. <pause> エレメントの例 <perform> エレメント <perform> エレメントは、インポートした Java クラスに属するメソッドを呼び出し ます ( 99 ページの『Java クラスのインポート済みタイプを作成』を参照)。 <perform> エレメント以外の多くのコンテキストでも、メソッドを呼び出すことが できます。しかし、値を戻さないメソッドを呼び出したい場合は、<perform> エレ メントが便利です ( 72 ページの『実行アクション (<perform> エレメント)』を参 照)。 属性 value 必須。変数と同じように、メソッド呼び出しをドル記号 ($) で囲む必要があ ります ( 105 ページの『メソッド呼び出しの構文』を参照)。マクロ・エディ ターで実行アクションを作成する場合に使用するのと同じ形式で、メソッド 呼び出しのパラメーター (ある場合) を指定する必要があります。 XML サンプル <!-- Call the update() method associated with the class to which importedVar belongs (such as mypackage.MyClass). --> <perform value="$importedVar.update( 5, ’Application’, $str$)$" /> 図 108. <perform> エレメントの例 212 IBM Host Access Transformation Services: 拡張マクロ・ガイド <playmacro> エレメント <playmacro> エレメントは、現行のマクロを終了し、別のマクロを起動します ( 74 ページの『PlayMacro アクション (<playmacro> エレメント)』を参照)。このプロセ スは、マクロのチェーニングと呼ばれます。 <playmacro> エレメントを <actions> エレメント内に配置する場所には、制限があ ります ( 74 ページの『PlayMacro アクションの追加』を参照)。 属性 name 必須。ターゲット・マクロの名前。ターゲット・マクロは、呼び出し側マク ロと同じロケーションに存在する必要があります。 startscreen オプション。マクロ・ランタイムがターゲット・マクロの処理を開始するマ クロ画面 (<screen> エレメント) の名前。マクロ・ランタイムに、ターゲッ ト・マクロの通常の開始画面から開始させるには、値 *DEFAULT* を使用 するか、このパラメーターを省略してください。 transfervars 必須。この属性を Transfer に設定すると、マクロ・ランタイムは、呼び出 し側マクロに属する変数をターゲット・マクロに転送します ( 75 ページの 『変数の転送』を参照)。デフォルトは No Transfer です。 XML サンプル <playmacro name="ispf_ex1.mac" startscreen="ScreenA" transfervars="Transfer" /> 図 109. <playmacro> エレメントの例 <prompt> エレメント <prompt> エレメントは、ユーザーに入力を求めるポップアップ・ウィンドウを表示 し、ユーザーが「OK」をクリックするのを待ってから、その入力をホスト端末に送 ります ( 76 ページの『プロンプト・アクション (<prompt> エレメント)』を参照)。 属性 name オプションのストリング。’Enter your response here:’ のような、ポップ アップ・ウィンドウに表示されるテキスト。 description オプションのストリング。このアクションの記述。この記述は表示されませ ん。 row 必須の整数。マクロ・ランタイムがユーザー入力データの入力を開始する、 ホスト端末上の行。 第 13 章 マクロ言語エレメント 213 col 必須の整数。マクロ・ランタイムにユーザー からの入力データの入力を開 始させる、ホスト端末上の列。 len 必須の整数。ユーザーがプロンプト入力フィールドに入力できる文字数。 default オプションのストリング。ポップアップ・ウィンドウの入力フィールドに表 示されるテキスト。ユーザーが入力フィールドにデータを入力せずに単に 「OK」をクリックすると、マクロ・ランタイムはこのデフォルト入力をホ スト端末に送ります。 clearfield オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、入力シーケンスをホスト端末に送る前に、指定の行と列の位置がある、 ホスト端末の入力フィールドをクリアします。 encrypted オプションのブール。この属性を true に設定すると、ユーザーがウィンド ウの入力フィールドにキーを入力するときに、マクロ・ランタイムは、その キーに関連した文字ではなく、アスタリスク (*) を表示します。 movecursor オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、カーソルを入力の末尾に移動します。 xlatehostkeys オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、アクション・キー (例えば、[enter]) の名前を、文字シーケンスとして ではなく、アクション・キーとして解釈します。 assigntovar オプションの変数名。この属性を変数名に設定すると、マクロ・ランタイム は、ユーザーがここで指定する名前を持つ変数に入力を保管します。 varupdateonly オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、入力を変数に保管し、ホスト端末にはその入力を送りません。 この属 性が有効なのは、assigntovar 属性が true に設定されている場合だけです。 required オプションのブール。この属性を true に設定すると、マクロ・ランタイム は、プロンプト・ウィンドウの入力フィールドにテキストが入力されるま で、プロンプト・ウィンドウで「OK」ボタンを使用不可にします。デフォ ルトの応答を指定してあるか、テキストを入力フィールドに入力している と、入力フィールドにはテキストが入っています。 screenorientation オプションのストリング。この属性は、実行時のマクロ再生中のプロンプト に使用するホスト画面方向を定義する場合に使用します。オプションは LTR と RTL です。 XML サンプル 214 IBM Host Access Transformation Services: 拡張マクロ・ガイド <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> エレメント <recolimit> エレメントは、<description>、<actions>、および <nextscreens> エレメン トと同じレベルで、<screen> エレメント内に存在するオプションのエレメントです ( 55 ページの『認識限界』を参照)。 <recolimit> エレメントを使用すると、指定された回数より多くこのエレメントが表 示されるマクロ画面をマクロ・ランタイムが処理する場合、アクションを取ること ができます。 属性 value 必須の整数。認識限界。マクロ・ランタイムがマクロ画面を何度も認識する 場合、マクロ・ランタイムは、このマクロ画面のアクションを処理するので はなく、指定されたアクションを実行します。 goto オプションのストリング (デフォルトは、マクロ・ランタイムがエラー・メ ッセージを表示し、マクロを終了することです)。認識限界に達したときに マクロ・ランタイムが処理を開始する、マクロ画面の名前。 XML サンプル <recolimit value="1" goto="RecoveryScreen1" /> 図 111. <recolimit> エレメントの例 <screen> エレメント <screen> エレメント、<import> エレメント、および <vars> エレメントは、 <HAScript> エレメント内に存在する 3 つの基本構造エレメントです ( 12 ページの 『マクロ・スクリプトの概念視点』を参照)。 マクロ内には、複数の screen エレメントが存在できます。 1 つの <screen> エレメ ントには、1 つのマクロ画面のすべての情報が入っています ( 14 ページの『マクロ 画面とそのサブコンポーネント』を参照)。 <screen> エレメントには、3 つの基本構造エレメント (<actions> エレメント、 <description> エレメント、および <nextscreens> エレメント) が含まれます ( 15 ペ ージの『マクロ画面の概念視点』を参照)。 第 13 章 マクロ言語エレメント 215 属性 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> エレメントの例 <sqlquery> エレメント <sqlquery> エレメントは、SQL ステートメントをデータベースに送信し、SQL ス テートメントの結果のデータがあれば取得します。次に、マクロ変数にデータを格 納します ( 78 ページの『SQLQuery アクション (<sqlquery> エレメント)』を参照)。 属性 url 216 必須のストリング。SQL ステートメントの送信先のデータベース・サーバ ーのデータベース URL(例えば、jdbc:as400://myHost)。 IBM Host Access Transformation Services: 拡張マクロ・ガイド driver 必須のストリング。データベース・サーバーと接続するために使用するドラ イバーの完全修飾パッケージ名 (例えば、 COM.ibm.db2.jdbc.app.DB2DRIVER)。このパッケージは、クライアント・ワ ークステーションに存在しなければなりません。 userid オプションのストリング。データベースにアクセスするために必要なユーザ ー ID (必要な場合)。 password オプションのストリング。データベースにアクセスするために必要なパスワ ード (必要な場合)。 statement 必須のストリング。SQL ステートメント。 outputtype 必須の整数。SQL ステートメントによって生成されたデータを送信する宛 先。有効な値は 0 (データは、マクロ変数 $HMLSQLUtil$ に保管される) です。この変数に対するメソッドを呼び出して、データを取得できます。 XML サンプル <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> エレメントの例 <string> エレメント <string> エレメントは、文字のシーケンスや、ホスト端末上にある文字のシーケン スが含まれる長方形域を指定する記述子です ( 45 ページの『ストリング記述子 (<string> エレメント)』を参照)。 文字のシーケンスは、長方形ブロック内の任意の場所に存在することができます。 属性 value 必須のストリング。文字のシーケンス。 row オプションの整数 (デフォルトは画面全体の検索)。長方形のテキスト・ブロ ックの一方のコーナーの行位置。 col オプションの整数。長方形のテキスト・ブロックの一方のコーナーの列位 置。 erow オプションの整数。長方形のテキスト・ブロックの向かい側のコーナーの行 位置。 第 13 章 マクロ言語エレメント 217 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> エレメントの例 <trace> エレメント <trace> エレメントは、指定のトレース宛先 (コンソールなど) にトレース・メッセ ージを送ります ( 79 ページの『トレース・アクション (<trace> エレメント)』を参 照)。 属性 type 必須。トレース・データの宛先。この宛先は、次のいずれかでなければなり ません。 v HODTRACE: Host On-Demand トレース機能 v USER: ユーザー・トレース・ハンドラー 218 IBM Host Access Transformation Services: 拡張マクロ・ガイド v SYSOUT: WebSphere コンソール value 必須のストリング。トレースの宛先に送信されるストリング。 XML サンプル <trace type="SYSOUT" value="'The value is '+$strData$" /> 図 115. <trace> エレメントの例 <type> エレメント <type> エレメントは、Java クラス (例えば、java.util.Properties) を表すインポ ート済みタイプ (例えば、Properties) を宣言します。タイプを宣言した後、そのタ イプに基づいて変数を作成し、Java クラスのインスタンスを作成し、そのインスタ ンスでメソッドを呼び出すことができます ( 99 ページの『Java クラスのインポート 済みタイプを作成』を参照)。 また、型は、静的メソッドを直接呼び出すのにも使用できます (インスタンスを生 成する必要がありません)。 <type> エレメントは、<import> エレメント内に存在する必要があります。 属性 class 必須。パッケージ名 (例えば、java.util.Properties) があれば、これを含 めて、インポートされるクラスの完全修飾クラス名。 name オプション。インポート済みタイプを参照するためにマクロ内の他の場所で 使用できる、短い名前 (例えば、Properties)。短い名前を指定しない場合、 短い名前は、完全修飾クラス名と同じになります。タイプ名のスペルには、 いくつかの制限があります ( 101 ページの『変数名とタイプ名』を参照)。 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> エレメントの例 第 13 章 マクロ言語エレメント 219 <vars> エレメント <vars> エレメント、<import> エレメント、および <screen> エレメントは、 <HAScript> エレメント内に存在する 3 つの基本構造エレメントです ( 12 ページの 『マクロ・スクリプトの概念視点』を参照)。 <vars> エレメントはオプションです。このエレメントには、複数の <create> エレ メントが含まれ、各エレメントは、変数を宣言し、初期化します ( 99 ページの『変 数の作成』を参照)。 <vars> エレメントは、<import> エレメントの後、かつ最初の <screen> エレメントの前に存在しなければなりません。 変数を使用するには、<HAScript> 内の usevars エレメントを true に設定する必要 があります。 属性 なし。 XML サンプル <HAScript ... usevars="true" .... > <import> <type class="java.util.Properties" name="Properties" /> </import> <vars> <create <create <create <create <create <create </vars> ... </HAScript> name="$prp$" type="Properties" value="$new Properties()$" /> name="$strAccountName$" type="string" value="" /> name="$intAmount$" type="integer" value="0" /> name="$dblDistance$" type="double" value="0.0" /> name="$boolSignedUp$" type="boolean" value="false" /> name="$fldFunction$" type="field" /> 図 117. <vars> エレメントの例 <varupdate> エレメント <varupdate> エレメントにより、マクロ・ランタイムは、指定された値を指定された 変数に保管します。この値は、即時値、変数、Java メソッドの呼び出し、またはこ れらの値のいずれかを含むことができる演算式にすることができます。値が式であ る場合、マクロの再生時に、マクロ・ランタイムはその式を評価し、指定された変 数に結果の値を保管します ( 80 ページの『変数更新アクション (<varupdate> エレメ ント)』を参照)。 また、<description> エレメント内の <varupdate> アクションを使用することもでき ます ( 80 ページの『変数更新アクション (<varupdate> エレメント)』を参照)。 220 IBM Host Access Transformation Services: 拡張マクロ・ガイド 変数の詳細については、 97 ページの『第 9 章 変数とインポートした Java クラ ス』を参照してください。 属性 name 必須。変数の名前。 value 必須のストリング。変数に割り当てられる値または式。 XML サンプル <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$" <varupdate name="$var_int1$" <varupdate name="$var_double1$" <varupdate name="$var_string1$" <varupdate name="$var_field1$" value="false" /> value="5" /> value="5" /> value="’oak tree’" /> 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> エレメントの例 第 13 章 マクロ言語エレメント 221 222 IBM Host Access Transformation Services: 拡張マクロ・ガイド 付録 A. 追加情報 1 つのマクロ画面における複数の記述子のデフォルト規則 1 つのマクロ画面で複数の記述子が結合されている場合、デフォルトの処理規則を 適用します。これはデフォルトの結合規則と呼ばれており、以下のように作動しま す。 1. すべての必須記述子 (すなわち「オプション」フィールドが false に設定され ている記述子) を評価する。 a. すべて true である場合、画面が一致します。 b. それ以外の場合は、ステップ 2 に進みます。 2. オプション記述子 (「オプション」フィールドが true に設定されている記述子) の評価を開始する。 a. いずれかのオプション記述子が true である場合、画面が一致します。 b. それ以外の場合は、ステップ 3 に進みます。 3. この段階に達した場合、このマクロ画面はアプリケーション画面と一致しませ ん。 入力アクションの略号キーワード ここでは、入力アクションの略号キーワード、および略号がサポートされているセ ッションのタイプを説明します。所定の略号に対するセッション・サポートは X で 示され、その機能に適用される特別な注が付きます。 表 24. 入力アクションのキーワード 機能: キーワード: 3270: 5250: アテンション [attn] x x 3 VT: x3 代替ビュー [altview] x Backspace [backspace] x x 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, SO/SI の表示 [dspsosi] x3 x3 フィールドの複 製 [dup] x x © Copyright IBM Corp. 2003, 2015 x1 2 223 表 24. 入力アクションのキーワード (続き) 224 機能: キーワード: 3270: 5250: VT: Enter [enter] x x x フィールドの末 尾 [eof] x x x1, EOF 消去 [eraseeof] x x フィールドの消 去 [erasefld] x x 入力消去 [erinp] x x フィールドの終 了 [fldext] フィールド・マ ーク [fieldmark] フィールドのマ イナス [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] ホーム [home] IBM Host Access Transformation Services: 拡張マクロ・ガイド 2 x x x x x x x1, 2 表 24. 入力アクションのキーワード (続き) 機能: キーワード: 3270: 5250: VT: 挿入 [insert] x x x1, キーパッド 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 2 キーパッド 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 テスト要求 [test] x1 x 1. VT はこの機能をサポートしますが、この機能に影響を与えるのは、ホスト・ア プリケーションです。 2. VT200 モードのみでサポートされます。 3. この機能は、DBCS セッションのみで使用可能です。 次の表は、入力アクションの双方向キーワードを示しています。 表 25. 入力アクションの双方向キーワード 機能: キーワード: 3270: 自動プッシュ [autopush] x 自動反転 [autorev] x ベース [base] x 5250: VT: x x 付録 A. 追加情報 225 表 25. 入力アクションの双方向キーワード (続き) 226 機能: キーワード: BIDI レイヤー [bidilayer] 閉じる [close] CSD [csd] x プッシュの終了 [endpush] x フィールド反転 [fldrev] x フィールド・シ ェイプ [fieldshape] x 最終 [final] x 初期 [initial] x 隔離 [isolated] x Latin レイヤー [latinlayer] x 中 [middle] x プッシュ [push] x 画面を反転 [screenrev] x IBM Host Access Transformation Services: 拡張マクロ・ガイド 3270: 5250: x x x x VT: 付録 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 Intellectual Property Dept. for Rational Software IBM Corporation 5 Technology Park Drive Westford, MA 01886 U.S.A. 本プログラムに関する上記の情報は、適切な使用条件の下で使用することができま すが、有償の場合もあります。 本書で説明されているライセンス・プログラムまたはその他のライセンス資料は、 IBM 所定のプログラム契約の契約条項、IBM プログラムのご使用条件、またはそれ と同等の条項に基づいて、 IBM より提供されます。 IBM 以外の製品に関する情報は、その製品の供給者、出版物、もしくはその他の公 に利用可能なソースから入手したものです。IBM は、それらの製品のテストは行っ ておりません。したがって、他社製品に関する実行性、互換性、またはその他の要 求については確証できません。 IBM 以外の製品の性能に関する質問は、それらの 製品の供給者にお願いします。 本書には、日常の業務処理で用いられるデータや報告書の例が含まれています。よ り具体性を与えるために、それらの例には、個人、企業、ブランド、あるいは製品 などの名前が含まれている場合があります。これらの名称はすべて架空のものであ り、名称や住所が類似する企業が実在しているとしても、それは偶然にすぎませ ん。 著作権使用許諾: 本書には、様々なオペレーティング・プラットフォームでのプログラミング手法を 例示するサンプル・アプリケーション・プログラムがソース言語で掲載されていま す。お客様は、サンプル・プログラムが書かれているオペレーティング・プラット フォームのアプリケーション・プログラミング・インターフェースに準拠したアプ リケーション・プログラムの開発、使用、販売、配布を目的として、いかなる形式 においても、IBM に対価を支払うことなくこれを複製し、改変し、配布することが できます。このサンプル・プログラムは、あらゆる条件下における完全なテストを 経ていません。従って IBM は、これらのサンプル・プログラムについて信頼性、 利便性もしくは機能性があることをほのめかしたり、保証することはできません。 これらのサンプル・プログラムは特定物として現存するままの状態で提供されるも のであり、いかなる保証も提供されません。IBM は、お客様の当該サンプル・プロ グラムの使用から生ずるいかなる損害に対しても一切の責任を負いません。 この情報をソフトコピーでご覧になっている場合は、写真やカラーの図表は表示さ れない場合があります。 プログラミング・インターフェース情報 この拡張マクロ・ガイドには、プログラムを作成するユーザーが HATS のサービス を使用するためのプログラミング・インターフェースに関する情報があります。 228 IBM Host Access Transformation Services: 拡張マクロ・ガイド 商標 IBM、IBM ロゴおよび ibm.com は、世界の多くの国で登録された International Business Machines Corporation の商標です。他の製品名およびサービス名等は、それ ぞれ IBM または各社の商標である場合があります。現時点での IBM の商標リスト については、http://www.ibm.com/legal/copytrade.shtml をご覧ください。 Java およびすべての Java 関連の商標およびロゴは Oracle やその関連会社の米国お よびその他の国における商標または登録商標です。 付録 B. 特記事項 229 230 IBM Host Access Transformation Services: 拡張マクロ・ガイド IBM® Printed in Japan SA88-5381-01