2002年9月末に9Bの最新版が公開されました。
ところが現時点ではOUTPUTを実行すると、左上角に余分なペンタッチが発生してしまうようです。起動中のMOREによっては、このペンタッチで終了してしまい、うまく文字列を送出できないことがあります。
下のサンプルも、現在の9Bではうまく動かない場合があります。修正するかどうかは、今後の9BでOUTPUTが修正されるかどうか様子を見てから判断したいと思います。
なお現時点でこの問題をとりあえず回避するには、SCREEN文のところを SCREEN 0,0,16,16 あたりに変更して、ペンタッチを9Bプログラム自身で受けるようにしてみてください。
9BのOUTPUTコマンドですが、使ってみるとなかなかおもしろい・・・と、言うわけで、使い方のコツとともに、いくつかのサンプルと、結構便利かもしれないプログラムを紹介します。
が、その前にお断りを。
[お断り]
このページに掲載したプログラムを使用したことで、どのような損害または障害が発生したとしても、作者は一切その責任を負いません。
ご使用は、あくまで自己責任で行ってください。
2002/06/25版 9Bを使用し、MI-E1でのみ動作を確認しています。
9Bの今後のバージョンアップで仕様が変更され、動作しなくなる可能性があります。
また、アプリ操作は、個々の環境設定やアプリ構成によって、うまく動作しない可能性があります。E1とE21以降ではアプリケーション終了時の挙動が異なることがあるため、E21以降の機種でうまく動作しない可能性もなきにしもあらず。
プログラムのテクニックとして「ちょっとどうかなー」というところや、解釈が違っているところがあった場合は、正しい方向へご指導いただければ何よりです。
OUTPUTは、ほかのアプリに文字列を送信するコマンドです。
・・・ということは、ほかのアプリと併用しないと、何の役にも立ちません。つまり、
1. 9Bプログラムからアプリを実行するか、
2. エディタなどのアプリを実行している状態から、9Bプログラムを直接呼び出す
・・・必要があります。
前者はまだよいのですが、後者は Keiさん作の、らんちゃらんちゃを使用するなど、一工夫が必要です。
まずは、1. の方法。9Bプログラムからアプリを呼び出して、文字列を書き込む例です。
※以下のサンプルは、9B リファレンス(近日公開)のOUTPUTに掲載されているものと同じです。
※このサンプルでは、インクワープロの新規データを作成して、「テスト」と入力します。サンプル実行後、このデータは削除してかまいません。また、このサンプルは縦型機種以外では正しく動作しない可能性があります。
REM 944BASIC 'OUTPUT'
SCREEN 2,2,12,12: EVENT 100,999,1
MESSAGE 'このサンプルでは、インクワープロの新規データを作成します。'
REM MORE 起動
APL 'PINK'
REM [新規データ作成]をタッチ
SETPEN 0,188,36
REM 自分にタッチ
SETPEN 0,4,4
SYNC
REM 文字列出力
OUTPUT 'テスト'
REM 自分にタッチ
SETPEN 0,4,4
SYNC
END
ポイントは、OUTPUTを実行する前に「自分にタッチ」するところです。
APLコマンドを実行すると、アプリ側にフォーカスが移ります。しかし、OUTPUTで文字列を送出するときは、9Bプログラム自身にフォーカスを置く必要があるようです。
そのため、SETPENで9Bプログラム自身をペンタッチしています(テクニック的にどうかという気もするのですが・・・)。SETPENの次行のSYNCはなくても、動く場合が多いようです。
また最後の3行は、アプリ操作のため常駐化した9Bプログラムを終了するための処理です。アプリ操作を行った後で普通にENDを実行しても、9Bプログラムがうまく終了しないことがあります。このような場合は、自分にタッチした後でSYNCを実行すると、たいていうまくいくようです(うまくいかないこともありますし、SYNCがなくても大丈夫な場合もあります・・・この辺は、環境やアプリに依存するみたい)。
らんちゃらんちゃ(らんらん)などを使用して、エディタから直接9Bプログラムを呼び出すと、定型文入力プログラムを作ることができます。
※以下のサンプルは、らんちゃらんちゃとの併用が前提です。
※以下、ソース ファイルへのリンクを用意しています。右クリックなどを使用して、ファイルに保存してください。
KALUTKB0.BAS (ソース)
REM 944BASIC '定型文入力サンプル'
REM らんらんからの呼び出し推奨
REM 定型文 - LOADTEXTでファイルから
REM 読み込んだ方がいいが、サンプルな
REM のでさくっと。
DIM TEIKEI(3)='お世話になっております。','お疲れさまです。','折り返し、ご連絡ください。','以上、よろしくお願いいたします'
MENU TEIKEI,4,0
OUT=STR(TEIKEI(MENUNO))
REM ウィンドウを小さくする場合は、下のコメントを外す。
REM SCREEN 24,0,16,16
EVENT 100,999,1
REM 文字列出力
OUTPUT OUT
REM 自分にタッチ後SYNCすると、
REM ENDでうまく終了する。
SETPEN 0,26,2
SYNC
END
今回のポイントも最後の3行。OUTPUTで下のアプリに制御が移ってしまうのか、自分にペンタッチしてから終了するようにしています。
もう1つのポイントは、コメントアウトしていますが、「ウィンドウを小さく・・・」の次行にあるSCREENです。今回は、ウィンドウ サイズの小型化が必須ではないことを示すために、あえてコメントアウトしています。
9Bのメニュー(MENUコマンド)は、ある程度画面が大きくなければうまく表示されません。そこで全画面表示でMENUを実行して、メニューの選択後にOUTPUTコマンドを実行しています。
ところが、何らかの要因でこの9Bプログラムをうまく終了できなかった場合、全画面が真っ白に表示されたままになります。OUTPUTコマンドの関係でフォーカスは下のアプリに移っているため思うように操作できず、結構慌ててしまいます(このような場合、9Bを再度実行すると終了できます)。
こういった事情があるため、処理は若干遅くなりますが、SCREENコマンドを実行してウィンドウサイズを小型化しておく方が、いざというとき慌てずに済むように思います。
(なお、これ以降に掲載したプログラムでは、SCREENを使用して、ウィンドウのサイズを小型化しています)。
また、EVENTコマンドですが、これはSCREENを使用しない場合でも必須です。EVENTコマンドがないと、自分へのペンタッチを認識することができません。
OUTPUTの文字列は「なぞって検索」などで使用されるのと同じところ(セレクトバッファ)に入ることから、「なぞって・・・」対応のアプリと連携させるとおもしろいことができそうです。
「なぞって・・・」対応といえば辞書。辞書といえば、手前ミソですが、9B リファレンス。てなわけで、PDIC版 9B リファレンスをコマンド一覧から検索するプログラムを作ってみました。
※以下、長くなるのでサンプルファイルへのリンクのみ掲載します。
KALN9BR0.BAS (ソース)
KALN9BR0.TXT (コマンド一覧)
このプログラムは、単独で実行できます。らんちゃらんちゃとの連携は不要です。ただし、ZPDVIEWとPDIC版9B リファレンスを使えるようにしておく必要があります。
--
Keiさん作の、常駐いんふぉ(近々改名新装版リリース?)では、MORE識別子とMORE名の一覧リスト(F0:\__ZAURUS\MPSFLIST.TXT)が作成されます。
このファイルを活用して、MORE名の一覧から識別子を入力できるプログラムを作ってみました。
実は、これがOUTPUTを使った最初のプログラムだったのですが、各種設定ファイル作成に、実に実に便利でした。OUTPUTにはまり始めたきっかけです。
KALN9BR0.BAS (ソース)
このプログラムは、単独で実行しても、あまり意味がありません。らんちゃらんちゃとの連携を推奨します。
また、常駐いんふぉで事前にMOREリストを作成しておく必要があります。
識別子からMORE名を取り出せる関数が9Bにあれば、常駐いんふぉの力を借りずに、このプログラムを実現できるようになるのですが・・・。
--
勢いでいろいろ作ってきましたが、これらを1つ1つ、らんちゃらんちゃなどから起動するのは大変です。
ということで、上記のプログラムをひとまとめにして、日付入力や9Bのコマンド入力の機能を付け加えたプログラムを作成しました。らんらんには、このプログラムだけを割り当てておけばOKになります。
なお、上記2つのプログラムをダウンロードして、使えるようにしておく必要があります。
KALUTKB1.BAS (ソース)
このプログラムは、単独で実行しても、あまり意味がありません。らんちゃらんちゃとの連携を推奨します。
うーん、いざOUTPUTを試してみると意外に奥が深く、ついいろいろ作ってしまいました。アイコンやヘルプを作るのはちょっと大変ですし、サンプルとしての意味合いが強いものも多く、こんな形で掲載してみます。
改造・改良は大歓迎です。よりよいものができたら、ぜひ公開を。
もちろん、自分専用に徹底カスタマイズして使うのも、またよし。
[お断り]
このページに掲載したプログラムを使用したことで、どのような損害または障害が発生したとしても、作者は一切その責任を負いません。
ご使用は、あくまで自己責任で行ってください。