一所懸命に手抜きする

デスクワークばかりのスポーツ嫌いで50歳も過ぎ、いよいよ足腰に衰えを感じつつある昨今。

AS400エミュレーター画面を全行コピーするマクロ

 最近とても忙しくなってすっかりご無沙汰しています。
物忘れがますますひどくなってきたので、備忘録を続けます。

Rollupしてはコピーって…大変です

 AS400ソースコードなどをデータ転送で取得したい!でもできないっ。という時には連結コピー

Rollupして連結コピー

 パーソナル・コミュニケーションズのエミュレータには「連結コピー」という機能があります。50行くらいのCLプログラムならソースコードをデータ転送するよりも、コピーしてRollupして連結コピー を数回繰り返す方が早いです。
 でも、何百行もあると、画面をコピー、ロールアップして連結コピー、またロールアップして連結コピー…なんて面倒です。途中で連結コピーせずにRollupすることもあったり。AS400のパーソナル・コミュニケーションズのエミュレータにはマクロ機能があるのでこれをうまく活用したいと思います。

Rollupしては連結コピー 自動化マクロ

 作成したのが下記マクロです。ツールバーに登録すると一発で全行コピーしてくれます。
 とにかく省力化の努力が大切です。

Copy_Rollup_and_Append_Loop_Macro
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=
[PCOMM SCRIPT SOURCE]
OPTION EXPLICIT
autECLSession.SetConnectionByName(ThisSessionName)

REM This line calls the macro subroutine
subSub1_

sub subSub1_()
   autECLSession.autECLOIA.WaitForAppAvailable
   
   autECLSession.autECLOIA.WaitForInputReady
   autECLMacro "[edit-copy]"
Do
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[roll up]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[roll up]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLMacro "[edit-copyappend]"
 Loop Until autECLSession.autECLPS.GetText( 4,1, 4) = "    " 
   
   end sub

解説など…

1.パーソナル・コミュニケーションズではマクロ記録しても
 "[edit-copy]"の部分はCOPYキーを使わない限り記録されないはずです。
 メニューから Alt+EA Alt+ED などと選択してもマクロには記録されませんでした。
 ですから、この大切な部分は手動でコーディングすることになります。
2.全画面選択のコマンドが存在するかどうかはわかりませんが、
 autECLMacro "[edit-copy]"
 で表示されている画面全体をコピーしてくれます。
3.連結コピーは
 autECLMacro "[edit-copyappend]"
 です。
4.Do Loop で最終行までスクロールしています。
5.最終行の判定は .GetText( 4,1, 4) 左端4文字が空白としています。
 ページヘッダが3行あるので4行目で判断しています。
 自身の環境にあわせて終了条件を変更する必要があります。
6.不要行もコピーされるのでエディタなどで削除して下さい。
7.とても重要なこと
私はRollupキーで半ページスクロールに設定しています。1ページに設定してある場合には、

   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[roll up]"
   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[roll up]"

   autECLSession.autECLOIA.WaitForInputReady
   autECLSession.autECLPS.SendKeys "[roll up]"

にする必要があります。