============================================================================== VZ Editor Version 1.56 Copyright (C) 1989 by c.mos MACRO.DOC ==============================================================================  このドキュメントには、VZのマクロを使用する際のいつくかの留意点、および数種類の追加マクロが記載されています。    目 次 -----------------------------------------   1.マクロを組み込む際の注意   2.追加マクロ集 ----------------------------------------- -----------------------------------------   1.マクロを組み込む際の注意 ----------------------------------------- ■ VZ.DEFにマクロを追加していった場合  vz.defの「* M マクロ」の項に、使用するマクロをどんどん加えていくと、そのうち メモリが足りません というエラーメッセージが表示されて、起動できなくなります。これは、vz.defの ファイルサイズが大きくなりすぎて、コードセグメント(64KB)内の空きエリアに 読み込めなくなってしまったためです。この場合は、vz.defの不用なコメントを削って ファイルサイズを小さくするか、マクロをいくつかのファイルに分け、「* E その他」 の1番にファイル名を記述して、読み込むようにしてください。  また、同じような状況で、エラーとはならずに起動するが、メニューの一部が欠けて しまう等の不具合が発生する場合があります。こんな時は、マクロ定義部の適当な箇所 に、 * M マクロ という1行を挿入してみて下さい。  ※この項は、readme.doc「5.使用上の注意事項」にも記述されています。 ■ 1つの大きなマクロを^K^で組み込む場合  1つの大きなマクロ(数字で始まる行から次の数字の行までのサイズ)を、^K^で 組み込むと、 ラインバッファがいっぱいです というエラーメッセージが表示されて、組み込めない事があります。この様な場合は、 組み込めるようになるまで、「オプションBl」の値を増やしてください。 -----------------------------------------   2.追加マクロ集 ----------------------------------------- ■ ワンキーセーブ  テキストが修正されていたらセーブします。[F10]等に割り当てておくと便利です。 --------------------------------------------------------------------- 50 ^\ "ワンキーセーブ" ?. (mr==1)?{ #S #m } --------------------------------------------------------------------- ■ テキスト切り替え  編集テキストをワンキーで順次切り替えます。全画面の時は全テキストで、分割時 は、反対側のウィンドウを現テキスト以外のもので切り替えます。 --------------------------------------------------------------------- 50 ^\ "テキスト切り替え" ?. (wt)??{ &#T(wn+1) .} (wc<3)?. m=wn, #W n=wn+1, (n==m)? n++, (n>wc)? n=1, (n==m)? n++, &#T(n) #W --------------------------------------------------------------------- ■ 全角括弧の入力  カーソル位置に全角括弧のペアを入力します。続けてマクロキーを押すと、 複数の括弧が選択できます。 --------------------------------------------------------------------- 50 ^\ "全角括弧入力" ?. p="「」『』()【】《》", &f(cd,p) n=r, mi-, (n>=0)?{ (n&1)?{ #s n--, } (n<8)? p+=n*2+4, ; 8 = 括弧の種類*2-2 mi+, } &?("%4s",p) mi-, #s --------------------------------------------------------------------- 【注意事項】 ・括弧の数を変える時は、コメントにあるように(n<8)の数値も変更して下さい。 ■ 文字コード表示  カーソル位置の文字コードを、シフトJIS、JIS、JIS区点コードの3種類 で表示します。 --------------------------------------------------------------------- 25 ^KJ "文字コード表示" ?. ep+, :A (s)??{ ax=cd, (ax<0)?{ &i("$(3C,80,14,61,72,02,2C,A2,D0,D4,05,21,1F,80,E4,7F,C3)") a=(ax>>8-$20)*100+ax&$FF-32, &m("文字コード: シフトJIS:%4xh JIS:%4xh クテン:%04d",cd,ax,a) }?{ &m("文字コード: %02xh",ax) } } &p (r!=#[)?{ &o(r) >A } ; [ESC]で終了 &m("") ep-, --------------------------------------------------------------------- ■ 表示行削除  VZで1行削除(^Y)を実行すると、改行から改行までの論理行が削除されます。 これを画面上の1行(表示行)単位にするのが次のマクロです。 --------------------------------------------------------------------- 50 ^\ "表示行削除" ?. (mb)?{ #y .} &s &x(0) #x #b #e mb=2, #y &d ek-, --------------------------------------------------------------------- 【注意事項】 ・削除を行なうと、カーソルは常に画面の左端に移動します。 ・ブロックペースト後のカーソル位置オプション「Ek」はリセットされます。 ・カーソルが最下行にある時は、画面が1行スクロールします。 ・マクロの実行キーを ^Y にする事もできます。この時、矩形ブロックマクロ  (block.def)も組み込んでいる場合は、次の部分を変更して下さい。 ----------------------------------------- 62 ^KK \[F08] "矩形ブロック記憶" m+, >01 1: ?. (mb != 4)?{ (m)? #k ? #y . } ↓ ~~ ?. (mb != 4)?{ (m)? #k ? >50 . } ; 表示行削除のマクロ番号 ----------------------------------------- ■ COBOL用TAB  TABキーで、7,12,63カラムまでスペースを挿入します。 --------------------------------------------------------------------- 50 [TAB] "COBOL" ?. (lx<6)?{ (6-lx){' '} . } (lx<11)?{ (11-lx){' '} .} (lx<62)?{ (62-lx){' '} .} --------------------------------------------------------------------- ■ 桁対応上書きモード    上書きモード(オーバーライト・モード)を、文字の大きさ単位で行なうように します。マクロを実行すると、画面下に 《桁対応》 と表示され、桁対応上書きモード となります。再度実行すると、画面下に 《文字対応》 と表示され、通常の文字対応 モードに戻ります。上書きモード/挿入モードは[INS]で切り換えて下さい。 --------------------------------------------------------------------- 50 ^\ "桁対応上書きモード" ?. (mm)?{ mm-, &m("文字対応") / } mm+, &m("桁対応") :A &p c=r, (s)? >N (c>=$100)? >N (mi && ct>1)? >B :N &o(c) >A :B &s (cd==9)? >T ; TAB k=ck, &o(c) (c>=$20 && k)?{ mi-, ' ' #s mi+, >C } ; 全角←半角 (c<$20 && k==0)?{ ; 半角←全角 (cd==9 && lx%ht)? >C (ck)?{ ' ' #s >C } (ct>1)? #g } :C #? >A :T x=lx, mi-, &o(c) mi+, (x/ht!=lx/ht)?{ (lx%ht+1){ #g } } >C --------------------------------------------------------------------- ■ タイムスタンプ  カーソル位置に、各種フォーマットで日付・時刻を入力します。お好きなフォーマッ トを残して、それ以外の行は先頭に「;」を入れてコメントにして下さい。  (日付:D1,D2,D3、曜日:W1,W2、時刻:T1,T2) --------------------------------------------------------------------- 50 ^\ "タイムスタンプ" ax=$2A00, &i($21) y=cx, m=dx>>8, d=dx&31, a=ax&7, ax=$2C00, &i($21) h=cx>>8, i=cx&63, j=dx>>8, y-=1900, ; 1990->90 &?("%d/%02d/%02d ",y,m,d) ; D1: 90/12/01 p="JanFebMarAprMayJunJulAugSepOctNovDec"+m*3-3, ; D2: &?("%d.%3s.'%d ",d,p,y) ; D2: 1.Nov.'90 p="SunMonTueWedThuFriSat"+a*3, ; W1: &?("(%3s) ",p) ; W1: (Sat) n='0', ; D3: &?("9%c年%c%c月%c%c日 ", n+y%10, (n+m/10)*(m>9), n+m%10, (n+d/10)*(d>9), n+d%10 ) ; D3: 90年12月1日 p="日月火水木金土"+a*2, ; W2: &?("(%2s) ",p) ; W2: (土) &?("%02d:%02d:%02d ",h,i,j) ; T1: 12:34:56 &?("%d:%02d %c.m. ",h%12,i,'a'+(h/12)*15) ; T2: 12:34 p.m. --------------------------------------------------------------------- 【注意事項】 ・D3フォーマットは、VZのVer1.56以降でないと使用できません。というのは、  このマクロでは%cに渡す値がゼロの時は、何も出力しない必要があるのですが、  Ver1.55以前では、マクロの実行時エラーとなってしまうためです。 ■ 指定桁折/連結  tool.defの「指定桁折」マクロに、以下の機能を追加したものです。  ・ブロックモードでは、ブロック内のみ処理。  ・「桁折位置」でゼロを入力すると、改行を削除してベタ書きに戻す。  ・禁則処理をする/しないの指定。(2ヵ所の「;」を削除)  ・画面表示を抑止して、代りに処理中の行の行番号を表示。 --------------------------------------------------------------------- 71 [ESC]Y "指定桁折/連結" ?. (yy)?? yy=70, &g("桁折位置($yy),0=連結") (r==-1)?. (r>=0)? yy=r, b="‘“(〔[{〈《「『【([{「", e="’”)〕]}〉》」』】、。,.?!!),.?]}」", f=" 。.?】", ; 連結する場合の行末文字 ; (yy)?{ &a("禁則処理をします") ; (r<0)?. (r)?? b=e="", } mi[, ei[, mi-, ei+, #M &s (mb)?{ p=cp, #B (cp>p)?{ p=cp, #B } } :A &k (r==$1B)? >Z ; [ESC]が押されたら中断 (mb)?{ (cp>=p)? >Z } &m("Line:%d",ln) (yy)?? >D &x(yy) (ct)?? >Z (ct<2)? { #x >A } :B #s &f(cd,b) (r>=0)? >B :C #d &f(cd,e) (r>=0)? >C (ct>1)?{ #m p+=2, }? #d >A :D (ct)?? >Z (ck)??{ #x >A } :E #> #s &f(cd,f) (r>=0)?{ #d #d >D } #d #g (ct<3)?{ #m >D } p-=2, >A :Z (mb)? #b ei], mi], #U &d --------------------------------------------------------------------- 【注意事項】 ・半角文字で始まる行は、連結しません。 ・桁折した文章を別の桁数で折り直したい場合は、いったん連結してから、再度桁折り  して下さい。 ・テキストバッファのサイズ(64KB)を越えるような大きなテキストでブロック  指定すると、正常にブロック範囲を処理できない場合があります。 ■ アウトラインプロセッサ  #、##で始まる見出し行を元に、アウトラインファイル(OL)を作成し、 以下の操作が可能です。  ・見出し行の抽出(OLの作成)  ・見出し行から本文へのジャンプ(OLジャンプ)  ・見出し行のカット&ペーストを本文へ反映(OLカット&ペースト) 【OLの作成】  ・#または##を含む行(見出し行)を抽出し、OLファイルを開きます。  ・OLファイル上でもう1度このマクロを実行すると、##を含む小見出しを   取り除き、#の大見出しだけにします。これ以降は何も起こりません。  ・OLファイルは、[ESC]Cでクローズします。  ※テキストの1行目には見出しを書かないで下さい。 【OLジャンプ】  ・OLファイル上で[CR]を押すと、元ファイルのその行へジャンプします。  ※^KWで元のテキストとOLファイルが切り替わる状態にしておいて下さい。  ※すでに[CR]キーが、別のマクロに割り当てられている場合は、空いている別の   キーを割り当てて下さい。 【OLカット&ペースト】  ・OLファイル上の見出し行を削除し、かつ元のテキストのその部分も削除   します。トグルになっており、もう1度実行すると、今度はカーソルのある   見出し行の上に、カットした見出しと元テキストをペーストします。 --------------------------------------------------------------------- 50 [ESC]V "OLの作成" ?. &s (mr==254)? >C wt[, &#Y(0) #N "outline" #m #67 #F '#' #m ; #:大見出し #W #^ #< :A #c (r)??{ #k #W #i #x #W #> >A } #U #W r], &#Y(r) >Z :C #^ #< #F "##" #m ; ##:小見出し :D #c (r)??{ #y #e #> >D } :Z #^ #< #@ &d 51 [CR] "OLジャンプ" ?. (mr!=254)?{ #m. } &01 #@ &d 52 [ESC]Z "OLカット&ペースト" ?. (mr!=254)? . &s (fa)?{ &01 #i #W #i fa-, >Z } &01 #b #W #y &01 #y #W fa+, :Z #@ &d 01: (ct)?{ #> #b #< #G #W #c (r)? #r . } #W #_ --------------------------------------------------------------------- 《元ファイルの例》  ----------------------------------------- (※ 先頭行には、見出しを書かない) #1 VZの過去  VZの過去はくらかった。 ##1.1 マニアックなEZ  ダイヤモンドキーなんか大きらいだぁ。 ##1.2 オタッキーなマクロ。  そういえばREXと呼んでいた頃もあったなぁ。 ##1.3 バグとの死闘  バグの需要と供給。 #2 VZの現在  VZの現在はなお混沌。 ##2.1 永遠のバグ  どうして取っても取っても無くならないの? ##2.2 サポートとは  ユーザーは、生かさず、殺さず。 #3 VZの未来  VZに未来はあるか? ##3.1 正規表現  そんなむずかしいの、わかんなーい。 ##3.2 マウス対応  Turboにゃ負けられん。でもサイズが・・。 ##3.3 Windowsへ  でも、所詮98じゃ、まともに動かんでしょう。 #4 付録 ----------------------------------------- 《OLの作成(1回目)》 ----------------------------------------- #1 VZの過去 ##1.1 マニアックなEZ ##1.2 オタッキーなマクロ。 ##1.3 バグとの死闘 #2 VZの現在 ##2.1 永遠のバグ ##2.2 サポートとは #3 VZの未来 ##3.1 正規表現 ##3.2 マウス対応 ##3.3 Windowsへ #4 付録 ----------------------------------------- 《OLの作成(2回目)》 ----------------------------------------- #1 VZの過去 #2 VZの現在 #3 VZの未来 #4 付録 ----------------------------------------- ■ コンパイルとタグジャンプ  編集テキストをコンパイル(tcc)します。エラーが生じたら、ただちにconsole ファイルを開きます。ここで、もう一度このマクロキーを押すと、エラー行をサーチ して、該当ファイルにタグジャンプします。 --------------------------------------------------------------------- 50 ^\ "コンパイル・タグジャンプ" ?. (wn)?? >A #S #m #E "tcc " #P #m (r)?{ #95 #U #< } . :A #60 (r)?{ #x (r)?. >A } #x a=wn, #O #e #a #s (cd!='-')?{ #[ >A } ; 行番号がない場合はスキップ #m (s)?{ #[ #[ >A } --------------------------------------------------------------------- ============================================================================== End of macro.doc ==============================================================================