無料ブログはココログ

« (620)HP200LXの「月間表示」を見やすくする(Viewsのチェックを外す) | トップページ | (終了)勉強会セミナーの自己評価 (200LX金融電卓とLotus1-2-3) »

2013年6月12日 (水)

(621)必要な回数だけシステムマクロを自動実行する。

(621)必要な回数だけシステムマクロを自動実行する。

HP200LXのシステム・マクロは、同じ作業を繰り返し実行するときに、非常に強力な機能です。
ところが、「有限回数だけ自動実行する」ということが、できませんでした。

できるのは、一回ごとにマクロを起動させて複数回の作業をするか、chain機能でループを作ってマクロを無限回行うかの二者択一でした。(ループ的な動きで永遠に動作しますので、それを止めるには [ctrl]+[menu](break)を押します)

私は、10年以上前から、なんとか「自動実行して、自動的に停止」できないか?と考えていました。
FHPPCの過去記事を全部読み直しても、「有限回実行して停止させる」方法を書いている人はいません。
HP PALMTOP PAPER の過去記事を全部読み直しても、その方法は見つかりません。
INTERNETで世界中の記事を検索しても、だれも考えついていないようです。

今回、やっとのことで「システム・マクロを、必要な回数だけ実行して、停止する」ことができるようになったので、お話しします。

 

もともと、200LXのシステムマクロは、シスマネ内部だけで動作する機能です。シスマネからDOSに降りたら、その時点で止まります。

マニュアルの23-1ページに、「トップカード画面、あるいはDOSとシステム・マクロ以外のすべてのアプリケーションで」実行できる、と書いてあります。

23-2ページにも、「DOSまたはシステム・マクロからシステム・マクロを実行することはできません」とあります。

23-5ページには、念を入れて、「システム・マクロで1-2-3のマクロを実行することができます」とありますが、「1-2-3マクロでシステム・マクロを実行することはできません。そのような処理を行えるマクロ命令は1-2-3には用意されていません」と書いてあります。

 

「(210)システムマクロでくり返しの作業を自動実行させる」http://we-love-200lx.cocolog-nifty.com/blog/2008/03/210_92b2.html
で書いたように、システムマクロには「(2)条件判断の機能がないので、一定の条件で条件分岐させたり、その動作をストップさせたりすることが」できないのです。

「シスマネ上で[if]の「条件判断」が使えるのは、A.exkey、B.solver、C.lotus1-2-3、の3つ」ですので、「シスマネ上で組み合わせるとしたらA.~C.だけ」になります。

「システムマクロをexkeyで呼び出すこと」はできますが、その逆は「結局できません」。 そのため、「システムマクロと別のアプリケーションを組み合わせて、条件分岐させる」のは、半分あきらめていました。

それでも、2008年3月に(210)(209)を書いたあとも、「なんとか、自動停止ができないか!」と、そのため方法を考え続けてもいました。

 

今回、システムマクロと、そのCHAIN機能と、Lotus1-2-3のマクロ、を組み合わせることで、自動停止ができるようになりました。

詳しい手順をお話しする前に、この方式の概略をお話ししておきます。

 

(1) 実行したいシステムマクロを作ります。
(2) LOTUS 1-2-3 上で、
 1. 減算カウンターの機能の[1-2-3]マクロを作成します。
 2. カウンターがゼロの場合、条件分岐して、ジャンプできるようにしておきます。
 3. ジャンプ先として、DOSに降りる[1-2-3]マクロも作ります。
 4. DOSに降りてしまえば、[1-2-3]マクロはストップします。
(3) 条件分岐でDOSに降りない場合、チェーン機能で、(1)の元システム・マクロに戻ることになります。

以上のように動作させることで、システム・マクロを指定回数だけ実行して、そのマクロをストップさせることができました。

 

I. 手順の前準備として、chain機能でループ的に無限に動作するシステムマクロを作ってみましょう。

[MEMO]上で、「[1][2][3] という文字を入力して、改行する」という手順をマクロ化してみます。

0000(1) [SHIFT]+[Fn]+[F10]を同時に押して、マクロ記録をはじめます。
(2) [1][2][3]と、文字を入力して、改行します。
(3) [SHIFT]+[Fn]+[F10]を同時に押して、記録を終了します。

0001(4) [Ctrl]+[F10]を押して、記録されたマクロを見てみます。
(5) これをチェーン化するには、カーソルをContentsの終端に置いておいて、


0002[F7](Chain)を押します。chain化するべき[F10] を選んで、[OK]を押します。
(6) マクロ書き込みのために、[OK]を押して終了です。


0005(7) [MEMO]に戻ってから、[Fn]+[F10]を同時に押して、マクロを実行してみると、えんえんと文字入力が続きます。(止めるには [ctrl]+[menu](break)を押します)

これで、無限ループの動作がわかっていただけたと思います。

 

II. では、次に、有限回実行してからストップする動作を組み込みます。

0011(8) Lotus1-2-3に「REPEAT02.LZH」をダウンロード のシートを読み込みます。


  画面の下方に、{Alt+P}のマクロ実行文字列を書き込んでおきました。
  この文字列を、上記(5)のchain指示の前に挿入します。

0008(9) {Alt+P}の文字列の前に、この1-2-3のマクロが[1-2-3]の内部で実行されるように、{123}と書き込んでおきます。 そして、マクロが終わったら [MEMO]に移るようにと、{Memo}という文字列も書き込んでおきます。

(10) マクロ書き込みのために、[OK]を押して終了させます。

 

III. じっさいに、有限回実行してからストップするというマクロを実行してみます。(Lotus1-2-3には、[A1]セルに[10]という数字を入れておいたので、マクロを10回繰り返します。

(11) [MEMO]画面を表示させておいて、[Fn]+[F10]を同時に押して、マクロを実行します。
   すると、(当然ですが)[1][2][3]という文字を10回入力してから、マクロがストップします。
   そして、DOS画面に移行して終了します。

(12) このDOS画面は「DOS窓」です。 [e][x][i][t][enter]と押してシスマネに戻ります。
   シスマネの[1-2-3]に戻ると、[1-2-3]マクロの残りを実行してから、[1-2-3]マクロが止まります。

0006_2(13) [MEMO]を見てみると、11行の文字列が縦に並んでいることがわかります。

 

IV. 今回のLotus1-2-3のマクロは、動作が洗練されていません。
  マクロ実行時に、画面がパタパタ変化します。
  そのため、もう少し洗練された動作に改良したいと思っています。

  あるいは、exkeyを組み合わせるとか、金融電卓のsolverにあるif関数を使うなどすることで、もっとスムースな動作に変えていけるかもしれません。

  もっと洗練されたら、また、お話しましょう。

 

以下は、今回の項目に関連する項目です。

(210)システムマクロでくり返しの作業を自動実行させる
http://we-love-200lx.cocolog-nifty.com/blog/2008/03/210_92b2.html

(211)VZエディターでなら、自動実行、自動停止ができるのに、、、
http://we-love-200lx.cocolog-nifty.com/blog/2008/03/211vz_120d.html

 

[Lotus1-2-3(英語版)に関するメモ]

200LXのLotus1-2-3(英語版)では、マクロ関係のキーが日本語のLotus1-2-3と違います。
その違いを書いて(記録して)おきます。

---------------
lotus 1-2-3 のマクロ作成 (200LX)
(1)/WL     →範囲
(2)Alt+F5  →キー記録   (同stop)
(3)/RNC    →マクロ登録 (\A~\Z)
(4)Alt+A   →マクロ実行
---------------

« (620)HP200LXの「月間表示」を見やすくする(Viewsのチェックを外す) | トップページ | (終了)勉強会セミナーの自己評価 (200LX金融電卓とLotus1-2-3) »

7. 200LXの操作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/175746/57574925

この記事へのトラックバック一覧です: (621)必要な回数だけシステムマクロを自動実行する。:

« (620)HP200LXの「月間表示」を見やすくする(Viewsのチェックを外す) | トップページ | (終了)勉強会セミナーの自己評価 (200LX金融電卓とLotus1-2-3) »