# 第１０章 付属ユーティリティ

## １０.１ EZKEY

&emsp;EZKEYは、メモリに常駐してキー入力割込みint9をフックし、次のような機能をサポートするツールです。
- VZ上で[**GRPH**]+[**英字**]，[**NFER**]，[**Ctrl**]+[**f･n**]キー入力のサポート
- [**Shift**]押下時の裏ファンクションキー表示
- [**Ctrl**]+[**GRPH**]+[**キー**]によるホットキー機能
- ブルーバック／ホワイトバック機能（アナログRGB使用）
- [**Caps**]，[**カナ**]キーの表示、およびマスク機能
### ■ 動作環境
&emsp;PC-9801シリーズ全機種（LTを除く）<br>　（Ver1.30から一部の機能を除いてハイレゾモードに対応します）

**※ EPSONの98互換機、およびEPSON DOSでの動作は、保証しません。**

### ■ 組み込み方法
&emsp;EZKEYは、「AUTOEXEC.BAT」に記述し、メモリに常駐させてお使いください。VZも常駐させる場合は、これより前に指定します。

［例］

	ezkey -b3 -f6 -@2

常駐を解除する場合は、コマンドラインで

	C:¥VZ>ezkey⏎

と実行します。ただし、EZKEYの後から別の常駐ソフト、あるいはFEPを組み込んでいると、常駐解除できない場合があります。

	C:¥VZ>ezkey -?⏎

で、オプションの一覧を表示します。

&emsp;EZKEY常駐時に実行できるホットキーコマンドを次に説明します。コマンドは、

	[Ctrl]+[GRPH]+[キー]

で実行します。これらのコマンドは、[**キー**]に対応する英字（記号）をコマンドライン
オプションとして指定することで、その機能を使えなくできます。

［例］

	ezkey -!-	（[Ctrl]+[GRPH]+[DEL]によるリセット機能の抑止）
### ■ [**G**] clear Graphic vram
&emsp;グラフィックVRAM（バンク0）を消去します。E0000h～E8000h の16色表示用VRAMも含みます。
### ■ [**T**] clear Text vram
&emsp;テキストVRAM（ページ0）を消去します。文字の属性は、DOSの既定値で初期化します。
### ■ [**S**] Save text vram
&emsp;表（ページ0）テキストVRAMの内容を、裏（ページ1）テキストVRAMへ保存します。後で参照したい画面を保存するときに使います。
### ■ [**X**] eXchange text vram
&emsp;画面に表示するテキストVRAMを、表（ページ0）または裏（ページ1）とで切り替えます。[**S**]で保存した画面を参照するときに使います。

**※ [**S**]および[**X**]コマンドは、ハイレゾモードでは使えません。今度の版から30行BIOS等による行数拡大モードに対応しました。**
### ■ [**L**] Lock keyboard
&emsp;キーボードをロックします。再度[**Ctrl**]+[**GRPH**]+[**L**]を押すと、ロックは解除されます。### ■ [**DEL**] reset cpu
&emsp;マシンをリセットします。機種や仮想86のドライバによっては、正常にリセットしない場合があります。他のリブートユーティリティをお使いの場合は、「-!-」を指定してこの機能を抑止してください。

&emsp;EZKEY常駐時に使えるその他の機能について説明します。以下の機能はコマンドラインオプションで指定できますが、

	[Ctrl]+[GRPH]+[英字]

を入力することでいつでもオン／オフを切り替えることができます。
### ■ [**D**] Display graphic vram
&emsp;グラフィックVRAMの表示／非表示を切り替えます。
### ■ [**A**] Analog／digital mode
&emsp;デジタル／アナログRGBモードを切り替えます。（ノーマルモードのみ）
### ■ [**B**] Blue back
&emsp;アナログRGBで、青の背景色を表示します。数値は「0～7」で明るさを指定します。標準設定の明るさは「4」です。
[**Ctrl**]+[**GRPH**]+[**B**]で、表示のON／OFFを切り替えます。

［例］

	ezkey -b	（明るさは4）
	ezkey -b7	（明るさは7）
### ■ [**W**] White back
&emsp;アナログRGBで、グレーの背景色を表示します。色以外は[**B**]と同じです。
### ■ [**R**] echo [**CAPS**]，[**カナ**] key
&emsp;[**CAPS**]または[**カナ**］キーがロックされていると、画面最下行のファンクションキーの右端に「CAPS」または「カナ」を表示します。RA以降のソフトキーロックのキーボードでのみ有効です。数値は「1～7」の表示色を指定します。標準設定の表示色は「5」（水色）です。
［例］
	ezkey -r6	（黄色で表示）
	ezkey -r-	（[**CAPS**],[カナ］の表示をしない）

**※ 日本語FEPがオンの状態では、表示されません。**
### ■ [**K**] mask [**CAPS**]，[**カナ**],key
&emsp;[**CAPS**]キー、および[**カナ**]キーを無効にします。RA以降のソフトキーロックのキーボードでのみ有効です。また、無効にしてもLEDは点灯します。

	-k1	[カナ]ロックを無効にします。
	-k2	[CAPS]ロックを無効にします。
	-k3	[カナ],[CAPS]ロックを無効にします。
### ■ [**C**] Click sound
&emsp;キー入力時にクリック音を発生します。数値は「0～7」で、音の長さを指定します。標準設定の音長は「4」です。これは、CPUの速度に影響されます。
### ■ [**F**] shift Function key
&emsp;[**SHIFT**]キーを押している間、裏ファンクションキーの内容を表示します。<br>　ファンクションキーを独自に表示しているアプリケーション下で、この機能が動作
してしまうと、表示が乱れる場合があります。このような時は、下記のように数値を
指定してください。

	-f2	VZ動作中のみ
	-f4	ファンクションキーの色が「白」の時の
	-f6	VZ動作中で、なおかつファンクションキーの色が「白」の時のみ
### ■ [￥] character
&emsp;[**SHIFT**]+[**^**]でバッククォート文字［**`**］を入力します。
### ■ [＠] activate [**GRPH**] key ※
&emsp;VZ上で、[**GRPH**]+[**英字**]コマンド、および [**GRPH**]+[**テンキー**]による全角記号の入力を可能にします。
### ■ [**N**] activate [**NFER**] key ※
&emsp;VZ上で、[**NFER**]キーを使用可能にします。
### ■ [＾] activate [**Ctrl**]+[f･n] key
&emsp;VZ上で、[**Ctrl**]+[**f･n**]キーを使用可能にします。<br>　MS-DOS3.3以上では、この機能の代わりに、VZでオプション***FK***+を指定してください。

**※ 日本語FEPがオンになっている時は、これらのキーは使えません。ただし、WXⅡでは、「WXK.SYS」に「/EZ」オプションを指定し、EZKEYで「-@2」を指定すると、WXIIがオンでも、未入力状態であれば、[**GRPH**]キーが使えます。**



## １０.２ VMAP

&emsp;VMAPは、メインメモリ、EMS、XMSメモリの利用状況を表示する、MS-DOS汎用ツールです。
### ■ 起動方法

	C:¥VZ>vmap⏎
	C:¥VZ>vmap <ｵﾌﾟｼｮﾝﾘｽﾄ>⏎
### ■ オプションリスト

	c	 Conventional Memory			コンベンショナルメモリ
	u	 Upper Memory Blocks (UMB)		UMB
	m	 Conventional & Upper Memory	「cu」と同等
	e	 EMS & XMS						EMS＆XMS
	n	 No compress multi blocks		複数ブロックをまとめずに表示

### ■ 実行例

	C:¥VZ>vmap
	VMAP Version 2.01  Copyright (C) 1989-91 by c.mos

	addr PSP  blks   size  owner/parameters           hooked vectors
	---- ---- ---- ------  -------------------------  ---------------------
	D2E0 sys    1     512  xrdisk
	D301 sys    1     112  setver
	D309 sys    1    4128  kkcfunc
	D40C 0A49   1    8192  smartdrv
	D60D <--    1    1024  30sys111
	D64E-D7FE   1    6912  <free>
	DC02 <--    1    1872  ezkey -f6 -@2 -n- -k3      E0
	DC78-E000   1   14464  <free>
 			       --- UMB total:  37 KB ---
	058C sys    1    2144  himem
	0613 sys    1    3968  emm386                     67
	070C sys    4   12992  <config>
	0A3C        1     192  <free>
	0A49 <--    1   13712  smartdrv A- C- D- /Q /B:8  1B 1F 25 26 DC
	0DA3 <--    3    3728  command                    22 23 24 2E
	0E8F        1     336  <free>
	0EA5 0009   1   45792  adddrv CON     
	19D4 <--    1   22720  vt                         09 0A 0C 18 28 E2
	1F61 <--    1    1536  vwx 1.03  -z2 -x1 -v       2F
	1FC2 <--    1    3808  vz 1.59g -z @@             06 21 29
	20B1-9FFF   1  521440  <free>
 	
	----- EMS ver4.0 (frame: C000h) -----       ----- XMS ver3.00 -----
	handle pages   size  name                   HMA used: 62 KB by DOS
	------ ----- ------  --------               EMB free: 2164 KB
	     1     8   128k  WX2K    
	     2     2    32k  WX2     
	     3     1    16k  WX2TX   
	     4     1    16k  WX2TM   
	     5    10   160k  VC Term
	     6     1    16k  for Vwx!
	     7     6    96k  VZ
	  free    99  1584k
	 total   128  2048k

### ■ 各種シンボルの説明
|項目|説明|
|---|---|
|addr|メモリブロックの開始セグメント|
|PSP|メモリブロックのオーナーセグメント<br><--　　:addrと同じ<br>sys　　:オーナー 0008h のシステムコード、データ<br>空き　:フリーエリア<br>-????　:フリーエリア終了セグメント|
|blks|同じオーナーまたはサイズの、連続するメモリブロック数|
|size|メモリブロックのバイト数|
|owner|オーナー名|
|parameters|実行時のパラメータ（CONデバイスの場合はデバイス名）|
|hooked vectors|プログラムがフックする割り込み番号<br>（<...> タイプのオーナーの場合は表示しない）|
|〈free〉|フリーエリア|
|〈config〉|config.sys|
|command|command.com|
|(env)|環境エリア|
|〈buffers〉|ディスクバッファ|
|〈files|FILES= ※|
|〈fcbs〉|FCBS= ※|
|〈lastdrv〉|LASTDRIVE= ※|
|〈stacks〉|STACKS= ※|
|handle|EMSハンドル番号|
|pages|使用ページ数|
|size|使用ページの合計KB数|
|name|ハンドル名|
|frame:|ページ・フレーム開始セグメント|
|HMA used:|HMAの使用メモリサイズ、オーナー名|
|EMB free:|EMBのフリーメモリサイズ<br>・EMBがサポートされていない、あるいはフリーエリアがない場合は、表示しない。<br>・最大ブロックサイズがそれと異なる場合は(max: ?KB)を追加表示。|

※ DOS4以降の「vmap n」で表示<br>


## １０.３ ZCOPY

&emsp;ZCOPYは、DOSコマンドのXCOPYをパワーアップした、DOS汎用のコマンドです。名前は「ZCOPY」ですが、コピー以外にも各種の機能をもっています。

- ライト時に、複数ファイルをオープンして一度に書き込む、「マルチライト・オープン』方式を採用、少ないシーク動作で高速コピー
- 複数のディレクトリ／ファイルマスクの指定（排他指定あり）
- ディレクトリ一括コピー（/s）時のディレクトリ位置の保存、およびディレクトリ・タイムスタンプのコピー機能（/t）
- サイズの増加した部分のみコピーする、『インクリメンタル・コピー』機能（/i）
- ディレクトリ一括も可能なmove機能（/m）およびdelete機能（/del）
- ファイルの高速コンペア機能（/c）
- レスポンスファイルの参照機能

### ■ 書式

	zcopy <src> {<mask>|[<mask>]} [<dst>] {/<opt>}
	zcopy [<src>] @filelist [<dst>] {/<opt>}
 		<src>		ソースパス（source path）
 		@filelist	レスポンスファイル
 		<mask>		ディレクトリまたはファイルマスク
 		[<mask>]	<mask>の排他指定
 		<dst>		ターゲットパス（destination path）
 		/<opt>		オプション

### ■ オプション

	/a: Archive(xcopy /a)	/n: No overwrite
	/b: Backup (xcopy /m)	/o: Overwrite only
	/c: Compare				/s: Subdirectories
	/del: Delete			/t: Time stamp copy
	/e: Echo				/u: Update new files
	/g: Gather				/v: Verify
	/i: Incremental copy	/x: hidden files too
	/m: Move
	
#### /a: Archive (xcopy /a)
&emsp;XCOPYのオプション「/A」と同様に、アーカイブ属性の付いたファイルだけをコピーます。あまり使い道はありません。コピー以外の操作（移動・比較・削除）時にも指定できます。

#### /b: Backup (xcopy /m)
&emsp;XCOPYのオプション「/M」と同様に、アーカイブ属性の付いたファイルだけをコピーし、コピー後にソースファイルのアーカイブ属性をクリアします。このオプションを使えば、タイムスタンプの比較なしに、一度だけバックアップを取ることができます。

#### /c: Compare
&emsp;ソースとターゲットのファイルを比較します。両方のディレクトリに存在するファイルのみを比較の対象とし、結果をファイル名の後に表示します。

	表示なし		:一致
	mismatch!	:相違箇所あり
	longer		:ソースの方が長い
	shorter		:ソースの方が短い

**※ ファイルの中身を実際に比較するのは、サイズが等しい場合のみです。**

#### /del: Delete
&emsp;ソースで指定したファイル／ディレクトリを削除します。確認のキー入力はありませんので、誤操作を防ぐために3文字のオプション名になっています。<br>　リードオンリ属性の付いたファイル／ディレクトリも削除します。不可視属性、システム属性の付いたファイルも削除する場合は、オプション「/del /x」を指定します。

#### /e: Echo
&emsp;コピー／移動／比較の場合は、画面にファイル名を表示するだけで、何も実行しません。<br>　削除の場合は、削除するファイル名を表示した後、削除を実行します。

#### /g: Gather
&emsp;「/s」と同様に下位のサブディレクトリまでコピーの対象としますが、ファイルを1つのターゲット・ディレクトリに集めます。<br>　ソースの別ディレクトリに存在する同名ファイルは、そのサイズ・時間が一致した場合は上書きし、異なる場合は、拡張子を「.001, .002, ...」というように順次リネームした上でコピーします。

**※ このオプション指定時は、『マルチ・ライトオープン』機能は働きません。**

#### /i: Incremental copy
&emsp;「/u」と同様に、日付が新しいファイルのみコピーしますが、ソースファイルがターゲットファイルより大きい場合は、ファイルの末尾を比較し、一致した場合にはサイズの増えた部分（＋α）しかコピーしません。<br>　このオプションは、サイズが大きく、かつ追加されていくだけの、通信のログファイルのバックアップに最適です。

#### /m: Move
&emsp;ファイルを移動します。同一ドライブ内で別ディレクトリへ移動する場合は、ディレクトリエントリの書き換えだけでコピーはしません。別ドライブへ移動する場合は、コピー終了後、ソースファイル／ディレクトリを削除します。

#### /n: No overwrite
&emsp;ターゲット・ディレクトリに既に存在するファイルは、コピーしません。

#### /o: Overwrite only
&emsp;ターゲット・ディレクトリにも存在するファイルのみ、コピーします。

#### /s: Sub-directories
&emsp;XCOPYのオプション「/S」と同様に、下位のサブディレクトリまでディレクトリ構造ごとコピーします。

#### /t: Time stamp copy
&emsp;「/S」でディレクトリ一括コピーする際に、ターゲット側に作るディレクトリのタイムスタンプを、ソースからコピーします。

#### /u: Update new files
&emsp;ターゲット・ディレクトリに同名ファイルが存在する場合は、ソースファイルの方が日付が新しい場合のみコピーします。

#### /v: Verify
&emsp;ライト直後にファイルをリードし、メモリの内容と比較します。相違が生じた場合は、エラーメッセージを表示してコピーを停止します。

#### /x: hidden files too
&emsp;不可視属性、システム属性の付いたファイルも、コピーします。


## １０.４ VWX

&emsp;VZの文字列検索で正規表現による検索を可能にしたり、全角半角を同一視する検索
を可能にするためのサービス・プログラムです。<br>　VZでの文字列検索利用前に、VWXをメモリに常駐させておくことで正規表現などが使
用出来ます。

**※ 常駐プログラムに拒否反応を示す方もいらっしゃるようですが、VWX は自分だけでは何も出来ない、おとなしいプログラムです。**
### ■ VWXの組み込み
  VWXをメモリに常駐させる場合の書式は、次のとおりです。

	C:¥>vwx {-<オプション>[+|-]}

［例］

	A>vwx -z2 -x1

&emsp;取り外す時は、

	A>vwx -r 

&emsp;を実行します。
### ■ 利用方法
&emsp;VZには***RX***、***ZH***というスイッチが定義されていますので、これを適宜指定して下さい。

1. ***RX***+で、検索文字列に正規表現が使用可能となります。ただし、検索文字列にVZで定義されている検索用の特殊文字、¥n,¥l,¥rが含まれる場合は正規表現と扱われません。mオプションで正規表現とすることも可能です。
2. ***ZH***+で、全角・半角を同一視した検索が可能となります。ただし、VWX を x オプション付きで起動する必要があります。大・小文字同一視と併せて、例えば、VZ で vz Vｚ ｖｚ VZ  Ｖｚ ＶＺ 
     などを見つけます。
3. 検索文字列にタグ付き正規表現が使われているとき、置換文字列にタグを利用した文字列指定が行えます。
### ■ オプション
&emsp;用意しているオプションは次の通りです。VWX -z2 -l3000などと指定します。オプションの大文字・小文字は区別していません。

#### -zn :常駐にUMB/EMSを使用
&emsp;常駐にEMSを利用します。メインメモリの常駐サイズが1536バイトとなります。<br>　必要なEMSのページ数はデフォルトでは１ページですが、l オプション等での指定により連続した２ページの物理ページが必要となる場合もあります。

#### -r :常駐の解除
&emsp;VWXの常駐を解除します。<br>　VZ を使用していない時に VWX を常駐したままでも実害は無いはずですが、メモリが足りない場合などのために、常駐を解除するためのオプションを用意しています。

#### -lnnnn :1行の最大長
&emsp;VWXでは１行の最大長は1024文字として処理していますが、このオプションでこの文字
数を変更出来ます。nnnnに１行の最大長を512バイトから8192バイトの間で指定して下さ
い。<br>　例えば3000文字としたい場合は -l3000 とします。<br>　この値によりメインメモリの常駐サイズは変化します。<br>　ただし、-z2で常駐した場合にはこの指定の大小によりメインメモリの常駐サイズは変
化しません。

#### -mn :メタキャラクタの扱い
&emsp;m1 : VZで定義されている検索用の特殊文字（¥n,¥l,¥r）が検索文字列中にあってもVZオリジナルの検索ルーチンを使用しない。

&emsp;m2 : ¥c はメタキャラクタに限らず任意の文字c について文字c そのものと扱う。¥t、¥sもt、sと扱われる。

#### -xn :同一視レベル
&emsp;このオプションでは、VZで***ZH***+を指定した時の同一視のレベルを指定します。

1. n = 0 の時（x オプションを指定しない場合も同じ）<br>
      ***ZH***+を指定しても意味を持ちません。

2. n = 1 の時（単に x だけを指定しても同じ）<br>
      ***ZH***+の時は、全角と半角を同一視します。

3. n = 2 の時<br>
      ***ZH***+の時は、ひらがなとカタカナを同一視します。

4. n = 3 の時<br>
      ***ZH***+の時は、全角、半角、ひらがな、カタカナを同一視します。

&emsp;このオプションを指定すると常駐サイズが若干増加しますので、ZH+ を使用しない場
合は、指定しないことをお勧めします。<br>　また、このオプションは常駐後にも変更可能です。ただし、x オプション付きで常駐
した場合に限ります。

#### -vn :検索処理条件指定
&emsp;このオプションでは、検索文字列の処理に関する指定を行います。<br>　n は0から3の値を取ることが出来、その意味は以下の通りです。

&emsp;+1:　¥a,¥0,¥A,¥０,¥ａ,¥Ａ でそれぞれ以下の正規表現の代用が出来ます。<br>　　　[a-z]+,[0-9]+,[A-Z]+,[０-９]+,[ａ-ｚ]+,[Ａ-Ｚ]+<br>
&emsp;+2:　***RX***-、***ZH***+ の指定の時にも、|,& を正規表現として認識するようになります。

&emsp;このオプションは常駐後にも変更可能です
### ■ VZマクロとの相性
&emsp;VZの既存のマクロでは、当然ながら検索文字列が正規表現と解釈され得ることを想定
していないため、***RX***+が指定してあると予期せぬ動作となることがあります。<br>　この様な無用な問題を防ぐために、実際に文字列を検索する時にのみ、***RX***+とするのが安全であると思います。
### ■ 正規表現
&emsp;利用可能な正規表現は次の通りです。

|正規表現|説明|
|---|---|
|c|以下に示すメタキャラクタを除き文字 c は、その文字自身を意味する。|
|¥c|メタキャラクタとしての意味を打ち消す場合に使用し、文字cそのものを表わす。ただし、¥tはタブ記号、¥sは空白文字を意味する。<br>（mオプションの項参照）|
|^|パターンの先頭に存在するときのみ、行の先頭を意味する。|
|$|パターンの最後尾に存在するときのみ、行の末尾を意味する。|
|.|改行を除いた任意の１文字を表す。全角文字も１文字と扱う。|
|[...]|[] 内に含まれる任意の１文字を表す。a-z、あ-お等のような範囲指定も可能。|
|[^...]|[] 内に含まれない任意の１文字を表す。(6)と同じく範囲指定も可能。|
|r*|正規表現 r を０回以上繰返したものを意味する。|
|r+|正規表現 r を１回以上繰り返したものを意味する。|
|r?|正規表現 r の０回または１回を意味する。|
|r1|r2|正規表現 r1 または r2 を意味する。|
|¥(r¥)|正規表現 r を出現順に最大9個まで記憶する。(タグ付き正規表現)|
|¥N|タグ付き正規表現により記憶した N 番目の文字列を示す。|
|r1&r2&emsp;&emsp;|正規表現 r1 かつ r2 を意味する。|

### ■ テクニカルノート
&emsp;付属のVWX.DOCを参照して下さい。
### ■ 動作環境
&emsp;Ver3.1以降の日本語MS-DOSが必要です。
### ■ 制限事項など
1. バイナリ・ファイルでの正規表現は使わない方が安全です。動作は保証しません。
2. 行をまたがった検索は出来ません。
### ■ その他
1. VWXはフリーソフトウェアです。<br>著作権は石田暢彦(wing)が所有します。
2. 転載・配布は自由ですが、一言声を掛けていただけるとうれしいです。
3. このプログラムを使用したことによって生じた損害は、全く保証しません。


## １０.５ WGREP

&emsp;本ユティリティはファイルの中から文字列を検索するツールです。文字列検索ツール
はすでに優れたものがいくつも公開されていますが、このツールは通常のテキストファ
イル内を検索することは勿論のこと、拡張子によりアーカイブファイル(いわゆるLZH,LZ
S,ZIP,ARCの4つの圧縮ファイル形式に対応)と判断された場合は、自動的に解凍し文字列
を検索する点に特徴があります。

&emsp;LZH,LZS形式のアーカイブファイルはWGREPに組み込まれた解凍ルーチンで処理するた
め特にアーカイバは必要としません。<br>　ZIP,ARC形式のアーカイブファイル内を検索するためには、別途ディスク上に専用アー
カイバが必要です。ただしその場合もメモリ上でのみ処理するような（ﾄﾝﾃﾞﾓﾅｲ!?）細工
をしていますので、一時的にもディスク上にファイルの作成は行いませんし、またディ
スク容量に空きがなくても利用出来るようにしてあります。
### ■ 書式

	wgrep [ｵﾌﾟｼｮﾝ] 検索ﾊﾟﾀｰﾝ 検索対象ﾌｧｲﾙ群

［例］

	wgrep -i -t VZ vz.doc

- 各々のパラメータはスペースまたはタブにより区切られます。
- 検索パターンにスペースまたはタブを指定したい場合には、引用符｢'｣または二重引用符｢"｣により囲って下さい。（スペースまたはタブの直後が'または"であると検索パターンの開始、その後'または"の直後がスペースかタブであると検索パターンの終了、と認識します。）

**［例］if (を検索したい場合は、**<br>
&emsp;　　　'if ('または"if ("とします。<br>

- 検索パターンには正規表現（付録参照）が利用出来ます。<br>オプションを指定することで全角でも正規表現が可能です。
- 検索対象ﾌｧｲﾙ群には検索対象となるファイルを並べて下さい。その際ワイルドカード(?、*)も利用出来ます。<br>
（ファイル名に対する正規表現はサポートしていません）<br>
検索対象ﾌｧｲﾙ群が指定されない場合は標準入力が使用されます。
- 検索対象のファイルがアーカイブであり、その中の検索対象ファイルを限定したい場合はファイル名の後に｢+｣または｢;｣を付加し、続けて検索対象となるアーカイブ内のファイル名を｢,｣で区切って指定して下さい。<br>
｢+｣または｢;｣の指定が無い場合は、アーカイブ内の全ファイルが検索対象となります。<br>
このファイル名にもワイルドカードが利用出来ます。

**［例］test.lzh内のtest＊.docとtest＊.txtだけを検索対象としたい場合は、**<br>
&emsp;　　　test.lzh+test*.doc,test*.txt <br>
&emsp;　　　または、test.lzh;test*.doc,test*.txtとします。 <br>

- 複数のアーカイブファイルに対して、同じファイルを検索対象としたい場合は、アーカイブファイルを、｢,｣で区切って指定して下さい。

**［例］test1.lzh内とtest2.lzh内の、test＊.docとtest＊.txtを検索対象としたい場合は、**<br>
&emsp;　　　test1.lzh,test2.lzh+test*.doc,test*.txt<br>
&emsp;　　　または、test1.lzh,test2.lzh;test*.doc,test*.txtとします。 <br>
### ■ 機能
&emsp;指定されたファイルの中を検索して、パターンに一致する文字列を含む行を見つける
と、標準出力に出力します。<br>　指定されたファイルが以下に示す拡張子を持つとそれはアーカイブファイルと認識
し、ファイルを解凍してから検索します。(検索対象ファイルについてはgｵﾌﾟｼｮﾝを参考
にして下さい。)
&emsp;終了コードとして、一致行があった時は 0、一致行が無かった時は 1、エラーが発生した時は 2を返します。

- アーカイブファイルと認識する拡張子<br>
LZH,ZIP,ARC,LZSの４種類
- アーカイブファイルの解凍方法
1. LZH,LZSはWGREP内部に組み込まれた解凍ルーチンで解凍
2. ZIP,ARC,あるいはXオプション指定時のLZH,LZSは以下の外部アーカイバを起動して解凍
&emsp;　　　.LZH  ･･･ LHA<br>
&emsp;　　　.ZIP  ･･･ PKUNZIP<br>
&emsp;　　　.ARC  ･･･ PKXARC(PKUNPAKが手元に見つからず、確認できなかったので)<br>
&emsp;　　　.LZS  ･･･ LHA<br>

- アーカイバの検索順序
1. 環境変数ARCPATHで指定されたディレクトリ(例:ARCPATH=A:¥UTL)
2. カレントディレクトリ
3. PATHで定義されたディレクトリ<br>
以上のいずれにもアーカイバが存在しない場合はエラーメッセージを表示。
### ■ オプション
&emsp;サポートしているオプションは以下の通りです。現在の所はオプション文字の大文字
と小文字の区別はしていません。また、同じオプションを複数指定すると最後のものが
有効となります。

**【オプション一覧】**<br>
|オプション|説明|
|---|---|
|-a|AND 検索|
|-c|マッチ行数の表示|
|-dn|表示形式の指定|
|-e ﾊﾟﾀｰﾝ|検索パターンの指定|
|-f ﾌｧｲﾙ名|検索パターンをファイルから読む|
|-gn|検索の対象となるファイルの指定|
|-hn|ファイル名タイトルヘッダ表示の表示条件を規定|
|-i|英小文字と英大文字（半角・全角共に）を同一視|
|-jn|同一視文字種の指定|
|-k 拡張子群|検索の対象から除外する拡張子|
|-l|マッチする行の存在するファイル名のみを表示|
|-n|マッチ行を表示する際に行番号を付加|
|-r|正規表現を使用しない|
|-sn|行またがり検索とタブ、スペースを無視した検索|
|-t|タグ情報の付加|
|-u|該当のディレクトリ下の全てのディレクトリを検索|
|-v|マッチしない行を表示|
|-w|ワードサーチ|
|-x|解凍にLHA.EXEを利用|
|-?n|ヘルプを表示|
|--|レスポンスファイルの認識しない|

**【オプション説明】**<br>
&emsp;オプションの詳細な内容に付いては付属のWGREP.DOCを参照して下さい。<br>
（付属のWGREP.DOCにはより詳細な説明と最新の情報が記載されています。）
### ■ レスポンスファイル
&emsp;ファイルの先頭が @ であると、レスポンスファイルとみなし、ファイルの内容をコマ
ンドラインに書いたものと同じに扱います。<br>　（@resfile ならば、resfile がレスポンスファイルとなります）

&emsp;コマンドラインでは入力長の制限で、多くのファイルを明示的に指定して検索するこ
とは不可能ですが、レスポンスファイルを使えば、よりたくさんのファイルが指定出来
ます。（検索パターン、オプションを書いておくことも出来ます）

&emsp;レスポンスファイル中の改行はスペースとみなしますので、改行は無視してコマンド
ラインからの指定と同じように定義出来ます。ただし、一つのオプションの途中で改行
があってはなりません。

&emsp;また、レスポンスファイル中に、@ があっても、それはレスポンスファイルとは扱わ
れません。（ネスト不可）<br>
&emsp;レスポンスファイルの最大サイズは16384バイトです。
### ■ 定義ファイル
&emsp;環境変数 WGREP が存在する時には WGREP.CFG という名称の定義ファイルにオプショ
ン指定を定義しておくことが出来ます。<br>　実際には検索パターン、ファイルも定義しておけますので コマンドラインから WGREP
とだけ入力して検索することも可能です。

&emsp;環境変数 WGREP の設定値は何でも構いません。

&emsp;　　　**［例］　SET WGREP=WGREP**<br>

&emsp;MSDOS Ver3以上の場合は、WGREP.COMが起動されたディレクトリ、なければカレント
ディレクトリの順に、そうでない場合はカレント・ディレクトリからWGREP.CFGを検索
し、WGREP.CFGが存在すれば、そこでの指定が有効になります。<br>　なお、コマンドラインでのオプション指定が優先されます。

&emsp;定義ファイル中の改行に関する注記はレスポンスファイルと同じです。
### ■ 動作環境
1. 日本語MS-DOS汎用<br>
&emsp;ただし、動作確認はPC9801RX2上のMS-DOS3.30Cで行っています。
2. 動作を確認したアーカイバのバージョンはWGREP.DOCを参照して下さい。
### ■ 制限事項など
1. 明示的に指定できる検索ファイルの個数は最大512個です。<br>
（ワイルドカードにより指定された複数のファイルの個数は１個でカウント）
2. 検索パターンの個数は最大１２８個、１つの検索パターンの最大長は256文字ですが、検索パターンにより可変となりますので、目安と考えて下さい。
3. 起動時にはプログラム・サイズとは別に最低でも48Ｋバイトが必要です。１行の最大長はメモリが十分あれば（144Kﾊﾞｲﾄ以上）16,376文字でこれを越えるものは分割し処理します。メモリが少ないとこの最大長は減少し最低は4,088文字となります。また、行数は429,496,725行までカウント可能でこれ以上になると0から再カウントとなります。<br>（この制約が問題になることはまずないでしょう。）

その他、付属のWGREP.DOCを参照して下さい。
### ■ その他
1. WGREPはフリーソフトウェアです。<br>
著作権は石田暢彦(wing)が所有します。<br>
（ただし、LZH,LZSの解凍ルーチンの著作権は吉崎栄泰氏が所有する）
2. 転載・配布は自由ですが、一言声を掛けていただけるとうれしいです。
3. このプログラムを使用したことによって生じた損害は、全く保証しません。

