最近とても忙しくなってすっかりご無沙汰しています。
物忘れがますますひどくなってきたので、備忘録を続けます。
Rollupしてはコピーって…大変です
AS400のソースコードなどをデータ転送で取得したい!でもできないっ。という時には連結コピー
Rollupして連結コピー
パーソナル・コミュニケーションズのエミュレータには「連結コピー」という機能があります。50行くらいのCLプログラムならソースコードをデータ転送するよりも、コピーしてRollupして連結コピー を数回繰り返す方が早いです。
でも、何百行もあると、画面をコピー、ロールアップして連結コピー、またロールアップして連結コピー…なんて面倒です。途中で連結コピーせずにRollupすることもあったり。AS400のパーソナル・コミュニケーションズのエミュレータにはマクロ機能があるのでこれをうまく活用したいと思います。
Rollupしては連結コピー 自動化マクロ
作成したのが下記マクロです。ツールバーに登録すると一発で全行コピーしてくれます。
とにかく省力化の努力が大切です。
[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]"
にする必要があります。