相変わらずツリーが乱れているようですが、大丈夫でしょうか。 実は、年度が変わって人が少なくなり、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]で変換窓を開き、&?相当の ところに数字を入れれば、後者の置換もきちんと動作してくれる。 うぅん、何を見逃しているのだ?
関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)
返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
- 以下のフォームから自分の投稿記事を修正・削除することができます -