2.Tcplinkマクロのチューニング・最適化

By 岡田 - Posted: 2016/05/22 Last updated: 2016/05/24 - Leave a Comment
印刷用ページの表示 印刷用ページの表示
1.効率化したい手順を記録させる にてマクロ記録を使って操作をマクロファイルとして作成する方法を説明しました。

ここでは、作成したマクロファイルの品質や作業効率を上げるための方法について説明します。
また後半では、相対入力と絶対入力について説明します。

1.1.マクロの品質・作業効率向上のための改良
前回作成したマクロファイル(c:\LOGON.MAC)をもう一度確認します
##・・・・+・・・・1・・・・+・・・・2・・・・+・・・・3
01:string “AAAAAAAA”
02:emulator key [enter]
03:wait 4
04:string “BBBBBBBB”
05:emulator key [enter]
06:wait 1
07:emulator key [enter]

マクロを実行させる場合、以下の事を認識しておく必要があります
・Z/OSなどメインフレームの環境
・エミュレータを実行するPC側の環境

<メインフレーム側の認識事項>
1)スタートがENTER LOGONというユーザIDを聞かれている状態である事
2)マクロ機能開始時にキー入力が出来る状態であること
3) 2行目のENTERキー操作から4行目に至るまで4秒間のWAIT(待ち時間)があります。その間に、パスワード応答要求が出て、且つキー入力可能な状態になっていること
4) 3)と同様、5行目から7行目に至るまでの1秒間のWAIT中にTSO(TSS)のLOGONが完了し、キー入力が出来る状態であること

LOGONするOS(LPARなど)がマクロ記録をした時より忙しかったり、ネットワークが混んでいるとレスポンスがマクロ記録時より遅くなっている場合があります。その際、上記2)及び4)の時間を越えてしまうとLOGON.MACは正常に動作しなくなります。また、LOGON.MACが動作する最初の画面もチェックしたいです。

<PC側の認識事項>
1)PCの処理能力の調整
PCの処理能力によって人間が行っている動作”(メッセージ出力)→目で観る→脳で認識及び入力内容の確定→キー入力”
という当然の動作がCPUの能力によって変動する(不安定さ)事により、期待した動作をしない場合があります。

そこで、以下の命令を入れていきます。
a)until string 命令・・・指定した場所に特定文字が出るまで待機する
b)until input命令・・・・入力可能状態になるまで待つ

<<マクロ記述について>>・・・2016/5/24追記
1)マクロは1行1命令で書きます
2)マクロの中で「コメント行」が必要な場合、1カラム目をセミコロン”;”にして下さい(最大260文字)


上記の命令を差し込んだのが以下になります
##・・・・+・・・・1・・・・+・・・・2・・・・+・・・・3
01:until string (01,01) “IKJ56700A”
02:until input
03:wait 1
04:string “AAAAAAAA”
05:emulator key [enter]
06:until input
07:wait 1
08:string “BBBBBBBB”
09:emulator key [enter]
10:until input
11:wait 1
12:emulator key [enter]

<上記の説明>
01:画面の1行目、1カラム目に”IKJ56700A”が出てくるまで待機する・・・ENTER LOGON状態になるのを待つ
02及び03:入力可能状態(KBロックでないこと)になるまで待機し、入力可能状態になったら、1秒待つ・・・PCの処理能力によって、マクロの動作の不安定さの防止策として1秒のWAITを入れるようにしています。(今までの経験です)

#until stringの他にif stringでも対応は可能なのですが、until stringの方が文法的に少ない記述が可能なので、こちらで対応します。if stringについては、Tcplinkマクロコマンドのヘルプを確認して下さい

例題ではパスワード応答画面の確認やLOGON完了後の画面の確認を省略していますので、until string命令を応用してみてください

1.2.相対入力と絶対入力(ここでご説明するための、個人的表現です)
Tcplinkの「マクロ記録」を行い、LOGON.MACを作成したファイルは人間がキー操作した内容をそのまま記録します。
TSO画面では以下のようにマクロが実行されたと思います(画面内の”.”はカラム位置を判りやすくするために入れています)
LOGON1

これは、04行目のstring “AAAAAAAA”を入力する時に、カーソルがIKJ56700Aの下の行(2行目1カラム目)にあったからです。

カーソルがある位置にそのまま文字を入力(string ”文字列”)する事をここでは「相対入力」とします。
対照的なのが、「絶対入力」です。
「絶対入力」は「絶対(入力する場所を特定)させて入力」する方法です。

上記04行目を絶対入力で記述すると string “AAAAAAAA” (02,01) になります

絶対入力のメリットは。。
1)画面が表示された直後に置かれているカーソルの位置と文字を入力したい場所が異なる場合
2)処理の高速化

です。
相対入力では、入力したい位置までカーソルを上下左右やTABキーで移動させる必要があります。マクロ記録ではキーボードでカーソルを移動させている状態も記録されるので、動作はするのですが、カーソルの移動時間によっては動作時間が変ってきます。絶対入力ではそれが1コマンドで行えます。

先ほどのLOGON画面で相対入力と絶対入力の違いを確認します。

例題として、以下の環境を用意しました(カーソルは2行目1カラム目にある事とします)
logon3

この画面の3行目1カラム目から”CCCCCCCC”のユーザIDを入力するというものです。

相対入力では、一度↓矢印キーでカーソルを1行下に移動(emulator key [down])させて、”CCCCCCCC”を入力するという2行のコマンドになるのに対し、絶対入力では”CCCCCCCC”の文字列を3行目1カラム目から入力する1行のコマンドのみで事足ります

(相対入力のマクロ記述例)
##・・・・+・・・・1・・・・+・・・・2・・・・+・・・・3
:
04:emulator key [down]
05:string “CCCCCCCC”

(絶対入力のマクロ記述例)
##・・・・+・・・・1・・・・+・・・・2・・・・+・・・・3
:
05:string “CCCCCCCC” (03,01)

絶対入力も入力したい画面が運用や事情により変化する可能性がある場合、文字列の入力位置が変っている可能性があるため、マクロの見直しが必要になります

次回は、Tcplinkマクロと他の環境(z/osのISPFライブラリ、VOS3のCLIST・MODE/PNL)との違いについて説明します

 

2016/5/24追記
修正したマクロファイルにエラーがある場合、マクロを読込時にエラーがある箇所(行番号)を通知してくれます(実行されません)
Posted in Tcplinkマクロ活用 • • Top Of Page