だいたい10年ぶりくらいに一太郎でマクロを作成してみた。一太郎のマクロ言語SuperPlayLiteは,多分自分が唯一扱えるマクロ言語である。
秀丸やWZ EDITOR,WordやExcelなどのマクロ言語は少しやってみたことはあるが難しくて自分には難易度が高い。サブルーチンの関数を呼び出すことや代数の導入,あるいは日付の挿入など,おそらく基礎的なテクニックでさえできなかったくらいで,つまりはプログラミングの基礎的な能力が無いのである。
一太郎マクロも扱えるとは言っても,自由に好きなことができるようなレベルではない。キーボードマクロを元に少し発展させる程度だ。それでも,以前にすこしだけやってみた経験と幾つかのサンプル,割と充実したヘルプがあったりデバッグの仕組みも整っているので何とかなることもある。
今回作ってみたのは,せいぜい次のこんなような程度のものである。
!!ミダシ入力 %dt=ThisDate() %tm=Mid(ThisTime(), 1, 5) %ret = Alert("ミダシ挿入?", 1) if %ret = 1 then call stts 文書頭() 下(.回数=1) 範囲選択開始(.単位=2) 下(.回数=5) クリップ() 範囲選択取消() 文書末() ペースト(.ID番号=0,.回数=1,.方向=1,.データ形式=1) 下(.回数=1) 右(.回数=6) 挿入(%dt & " " & %tm) 行末(2) 左(.回数=6) 挿入($stts2) 文書末() else stop end if sub stts() $arry = {"帰り","行き"} $stts1 = Alert("帰? 行?",1,{{$arry(1),"Y"},{$arry(2),"N"}}) if $stts1 = 1 then $stts2 = "帰" else $stts2 = "行" end if end sub
文書の冒頭にある数行の見出し書式部分を文書の末尾にコピーし,日付・時刻と分類記号を挿入するというだけのもの。
日本語コマンドの部分はほとんどキーボードマクロによるもので,それ以外の部分については自分で書いた。グローバル関数とローカル関数の違いなど,そういう基礎的なこともだいぶ忘れてしまっている。Alertダイアログの引数の書式が合わなくてここもだいぶ苦労した。