相変わらずツリーが乱れているようですが、大丈夫でしょうか。
実は、年度が変わって人が少なくなり、4月はそれまでの平均の倍の時間外労働
をやっている。といっても、たかが20時間前後なんでたいした事はない。
有給も取れているし。が、先日の金曜日から土曜日にかけて、臨時で宿直に
入ったら、明け方の仕事でやらかしてしまいまして。抜いてはいけないケーブル
を抜いてしまったのです。幸い、お客様にはたいした影響がなかったようです。
ということで、ストレス解消を兼ねて、続きをやってみました。
= renum.def
i:初期値 initial num
a:増分 addition
n:新行番号 new num
o:旧行番号 old num
N88-BASICのコードは半角大文字が前提(半角小文字はあえて未対応)
*m
1 ^^ "renum.def"
;初期設定 ;vwxの常駐確認とか?
a=10,
n=o=0,
;mp[=2, ps[=pa, RX[+,
;&s
#^ #< ;カーソルを先頭行の行頭にして
&n i=r, ;初期値取得
(r+1)??{ &m(41) >e } ;準備ができていないなら終了
;メインループ
;先頭行は行番号の変更なし
:w ;while(次の行に動ければ)
#> #d ;次の行にカーソルを移動し
#d (r==-1)?>u ;その結果が最終行ならループ脱出
#<
&n o=r, ;旧行番号取得
n=i+(ln-1)*a, ;新行番号算出
#t ;旧行番号削除
&?("%d",n) ;新行番号出力
#56 "\([ \t]+\)GOTO\([ \t]+\)" &?("%d",o) "$$" #m
"\1FGOTO\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)GOTO\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FGOTO\2" &?("%d",n) "\3" #m "ay"
#56 "\([ \t]+\)GOSUB\([ \t]+\)" &?("%d",o) "$$" #m
"\1FGOSUB\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)GOSUB\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FGOSUB\2" &?("%d",n) "\3" #m "ay"
#56 "\([ \t]+\)THEN\([ \t]+\)" &?("%d",o) "$$" #m
"\1FTHEN\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)THEN\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FTHEN\2" &?("%d",n) "\3" #m "ay"
#56 "\([ \t]+\)ELSE\([ \t]+\)" &?("%d",o) "$$" #m
"\1FELSE\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)ELSE\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FELSE\2" &?("%d",n) "\3" #m "ay"
#56 "\([ \t]+\)RESTORE\([ \t]+\)" &?("%d",o) "$$" #m
"\1FRESTORE\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)RESTORE\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FRESTORE\2" &?("%d",n) "\3" #m "ay"
#56 "\([ \t]+\)RESUME\([ \t]+\)" &?("%d",o) "$$" #m
"\1FRESUME\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)RESUME\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FRESUME\2" &?("%d",n) "\3" #m "ay"
>w
:u
;後処理
#56 "\([ \t]+\)FGOTO" #m "\1GOTO" #m "ay"
#56 "\([ \t]+\)FGOSUB" #m "\1GOSUB" #m "ay"
#56 "\([ \t]+\)FTHEN" #m "\1THEN" #m "ay"
#56 "\([ \t]+\)FELSE" #m "\1ELSE" #m "ay"
#56 "\([ \t]+\)FRESTORE" #m "\1RESTORE" #m "ay"
#56 "\([ \t]+\)FRESUME" #m "\1RESUME" #m "ay"
RX], ps], mp],
:e ;end
&d
*
きちんと動くこともあるようです。
が、遅い。行数が増えるほど遅くなる。&sで画面表示を抑止しても、
びっくりするほどは早くならない。速度は、めざらさんのマクロのほうが
圧勝です。
ただ、#5776 で危惧されている事象が発生することも確認できました。
う〜む、いくらトレードオフとはいえ、これはちょっと。
あと、上記のマクロでは対応しているつもりだけど、行番号が行末では
ないとき、なぜか変換してくれない。つまり
#56 "\([ \t]+\)GOTO\([ \t]+\)" &?("%d",o) "$$" #m
"\1FGOTO\2" &?("%d",n) #m "ay"
#56 "\([ \t]+\)GOTO\([ \t]+\)" &?("%d",o) "\([^0-9]\)" #m
"\1FGOTO\2" &?("%d",n) "\3" #m "ay"
最初の置換はきちんと動作するのに、次の置換はなぜかうまく動かない、
といった感じの挙動。でも、手作業で\[F7]で変換窓を開き、&?相当の
ところに数字を入れれば、後者の置換もきちんと動作してくれる。
うぅん、何を見逃しているのだ?
関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)
返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
- 以下のフォームから自分の投稿記事を修正・削除することができます -