名称
	catdump - 電子ブック/EPWINGのカタログをダンプ/アンダンプする

バージョン
	1.1 - 2000/04/11

形式
	catdump [-g] [-d] <カタログファイル>
	catdump [-g] -u <テキストファイル> <カタログファイル>

オプション
        -g:     EBG 専用モードで起動する。
	-d:	<カタログファイル>の内容をテキストに変換して標準出力に書き出
		す(標準)
	-u:	<テキストファイル>の内容をカタログ形式に変換して<カタログフ
		ァイル>に書き出す
	<カタログファイル>
		電子ブック/EPWINGのカタログファイル(catalogまたはcatalogs)
	<テキストファイル>
		catdumpで出力した形式のテキストファイル

使用例
	DドライブのEPWING CD-ROMにあるカタログをテキストに変換してcatalog.txt
	に書き出す(MS-DOS)
	  C> catdump d:\catalogs > catlogs.txt

	catalogs.txtの内容をカタログ形式に変換してc:\dic\catalogsに書き出す
	(MS-DOS)
	  C> catdump -u catalogs.txt c:\dic\catalogs

説明
	電子ブックやEPWINGのCD-ROMのトップディレクトリーには、CD-ROMにどんな
	書籍が含まれているかを示すカタログファイルが置かれている。カタログフ
	ァイルは電子ブックではcatalog、EPWINGではcatalogsという名前になって
	いる。catdumpはこのカタログファイルの内容をテキストデータに変換した
	り、テキストデータからカタログファイルを生成したりする。

	catdumpを使うと、カタログファイルから不要な書籍を削除したり、複数の
	カタログファイルを統合したりすることが可能だ。catdumpはEBXAのロゴの
	ある電子ブック(1994年以降のもの)とEPWING V1〜V4に対応している。V5に
	ついては動作確認を行っていない。

	catdumpで電子ブック版広辞苑のカタログファイルをダンプした結果が次の
	出力だ。

	  C> catdump d:\catalog
	  ; 電子ブック/EPWING カタログ内容 (generated by catdump v1.0)

	  [Catalog]
	  FileName   = d:\catalog
	  Type       = EB
	  Books      = 2

	  [Book]
	  Title      = "広辞苑　第四版　電子ブック版"
	  BookType   = 0100
	  Directory  = "KOUJIEN"

	  [Book]
	  Title      = "付属資料"
	  BookType   = 0200
	  Directory  = "FUROKU"

	先頭の[Catalog]というブロックには、カタログのヘッダー情報が含まれる。
	ここではカタログ形式が電子ブック(EB)であること、カタログに含まれる書
	籍数が2であることが示されている。

	それ以降には[Book]というブロックが書籍数だけ続いている。ここには各書
	籍のタイトル、書籍種別、書籍本体(電子ブックの場合はstartというファイ
	ル)が置かれているディレクトリー名の情報がある。書籍種別のところには、
	電子ブックの場合は書籍の順序番号が書かれているようだが、詳しいことは
	わからない。

	以下はEPWING版広辞苑のカタログファイルをダンプした結果だ。

	  C> catdump d:\catalogs
	  ; 電子ブック/EPWING カタログ内容 (generated by catdump v1.0)

	  [Catalog]
	  FileName   = d:\catalogs
	  Type       = EPWING2
	  Books      = 4
	  BookSelect = 4

	  [Book]
	  BookType   = 0002 (00:国語辞典, 02:EPWING2)
	  Title      = "広辞苑　第四版"
	  Directory  = "KOUJIEN"
	  InfoBlock  = 0001
	  ZenGaiji   = "GA16FULLGA24FULLGA30FULLGA48FULL"
	  HanGaiji   = "GA16HALFGA24HALFGA30HALFGA48HALF"
	  BookFile   = "HONMON"
	  Reserved1  = 000B0000

	  [Book]
	  BookType   = 0001 (00:国語辞典, 01:EPWING1)
	  Title      = "付属資料"
	  Directory  = "FUROKU"
	  InfoBlock  = 0001
	  ZenGaiji   = "GA16FULLGA24FULLGA30FULLGA48FULL"
	  HanGaiji   = "GA16HALFGA24HALFGA30HALFGA48HALF"

	  [Book]
	  BookType   = F002 (F0:ストリーム, 02:EPWING2)
	  Title      = "「広辞苑」紹介"
	  Directory  = "GUIDE"
	  StreamFile = "PLAY"
	  Reserved1  = 00100000

	  [Book]
	  BookType   = F002 (F0:ストリーム, 02:EPWING2)
	  Title      = "書籍選択画面"
	  Directory  = "BKSLCT"
	  StreamFile = "SELECT"
	  Reserved1  = 00100000

	[Catalog]の情報からは、カタログの形式がEPWING V2(EPWING2)であること、
	書籍数が4であること、EPWING V2対応の検索ソフトで使われる書籍選択画面
	が4番めの書籍であることがわかる。

	先頭の書籍に対応する[Book]項目からは、タイトル、EPWING書籍種別(種別
	は国語辞典、形式はEPWING2)、書籍本体(EPWINGの場合はhonmonなど)が置か
	れたディレクトリー(KOUJIEN)、書籍本体の書籍情報ブロック番号、各種外
	字(gaijiディレクトリーにある)のファイル名、書籍本体のファイル名、そ
	の他の情報がわかる。

	[Catalog]項目のタグ名とその意味は次の通りだ。括弧でEPWINGのバージョ
	ンが書かれているものは、EPWINGのそのバージョン以降でしか使われない。

	  FileName	カタログファイルのパス名
	  Books		カタログに含まれる書籍数
	  Type		カタログ形式(電子ブックまたはEPWING)
	  BookSelect	書籍選択画面の書籍番号(EPWING V2)
	  Reserved	不明(EPWING V4以降ではハードディスクインストールや
	  		ネットワークインストールの可否が含まれる)

	[Book]項目には次のようなタグがある。

	  BookType	書籍種別(電子ブックの場合は詳細不明)
	  Title		書籍名称(電子ブックは15文字、EPWINGは40文字まで)
	  Directory	書籍本体の置かれたディレクトリー
	  DirPos	ディレクトリー位置(詳細は不明だが、ハードディスクに
			インストールした書籍の場合は無関係のようだ)

	以下はEPWINGでのみ使われる[Book]のタグだ。

	  InfoBlock	書籍本体にある書籍情報のブロック番号
	  AppDef	アプリケーション定義の情報(詳細不明)
	  ZenGaiji	16/24/30/48ドットの全角外字ファイル名(8バイト×4)
	  HanGaiji	16/24/30/48ドットの半角外字ファイル名(8バイト×4)

	以下はEPWING V2以降で使われる[Book]のタグだ。

	  Reserved1	詳細不明(EPWING V4以降の圧縮フラグなど?)
	  BookFile	書籍ファイル名(通常はHONMON。HONMON2ならEPWING V4以
	  		降の圧縮ファイルのようだ)
	  Padding1	詳細不明(おそらく空白)
	  StreamFile	ストリーム(動画・音声)書籍ファイル名
	  Padding2	詳細不明(おそらく空白)
	  Reserved2	詳細不明
	  Padding3	詳細不明(おそらく空白)

	カタログファイルをダンプ/アンダンプして新しいカタログファイルを作る
	場合の指針を以下に示す。

	カタログファイルからある書籍を削除するには、その書籍に対応する[Book]
	項目全体を削除し、[Catalog]にある書籍数(Books)と書籍選択画面の書籍番
	号(BookSelect)の値を適当に調整してから、catdump -uで新しいカタログフ
	ァイルを作ればよい。

	複数のカタログファイルを統合するには、それらの[Book]項目を適当に並べ、
	それに合わせて[Catalog]項目を調整してから、catdump -uで新しいカタロ
	グファイルを作ればよい。異なるバージョンのEPWINGカタログを統合するこ
	とも可能であり、その場合は最も高いバージョンを[Catalog]に指定してお
	く。電子ブックとEPWINGのカタログを統合することはできない。

	[Book]項目にある情報のうちあるものは変更してかまわない。Titleを変更
	すれば、検索ソフトの書籍名表示が変わる。ただし、Titleには(空白を含め
	て)2バイト文字しか指定できない。文字数の上限は、電子ブックの場合は15
	文字、EPWINGの場合は40文字になっている。Directoryを変更すれば、複数
	のカタログを統合するときにディレクトリー名の衝突を避けられるかもしれ
	ない。EPWINGでは、ZenGaijiとHanGaijiを変更すれば使われる外字ファイル
	を減らすことができる。たとえばEPWING版広辞苑の外字ファイルは

	  ZenGaiji   = "GA16FULLGA24FULLGA30FULLGA48FULL"
	  HanGaiji   = "GA16HALFGA24HALFGA30HALFGA48HALF"

	となっているが、これを

	  ZenGaiji   = "GA16FULLGA24FULL"
	  HanGaiji   = "GA16HALFGA24HALF"

	に変更すれば、30ドットと48ドットの外字ファイルは参照されない。

	検索ソフトとしてEPWING V1対応のものを利用する場合、[Book]項目にある
	情報のうち、EPWING V2以降でのみ必要とされるものは削除してかまわない。
	EPWING V2以降の書籍のうちEPWING V1対応の検索ソフトでも読めるものにつ
	いては、ここには標準的な値しか書かれていない。

エラーメッセージ
	ダンプ時のエラー

	  <カタログファイル名> の情報が取得できません
	  <カタログファイル名> がオープンできません
	    指定したパス名のカタログファイルが存在しない。

	  カタログサイズが異常です
	    カタログファイルのサイズが2048バイト以下でも4096バイトでもない。
	    誤ったファイルを指定している可能性がある。

	  ファイルの読み込みに失敗しました
	    ファイルの読み込み時に何らかのエラーが発生した。

	アンダンプ時のエラー

	  <テキストファイル名>がオープンできません
	    存在しないテキストファイルを指定している。

	  <カタログファイル名> が作成できません
	    指定されたパス名のカタログファイルが新規作成できない。

	  書き込みに失敗しました
	    ファイルの書き込み時に何らかのエラーが発生した。

	  ERR: 項目 [Catalog] がありません
	    カタログ定義の始まりを示す[Catalog]がファイル中にない。

	  ERR: line <行番号>: 構文に誤りがあります
	    タグと値を区切る「=」がない。

	  ERR: line <行番号>: Type の値に誤りがあります(<値>)
	    Typeタグの値が次のいずれでもない。
		EB, EPWING1, EPWING2, EPWING3, EPWING4, EPWING5

	  ERR: line <行番号>: BookSelect の値に誤りがあります(<値>)
	    BookSelectタグの値が正の整数でない。

	  ERR: line <行番号>: 不明のタグです(<タグ名>)
	    タグ名が[Catalog]や[Book]に対して定義されているものでない。

	  ERR: line <行番号>: タグが二重定義されています(<タグ名>)
	    1つの項目中で同一のタグが複数回現れた。

	  ERR: line <行番号>: 値が不正です(<値>)
	    以下のいずれかに該当した。
	    ・16進数タグの値が期待した長さでない。
	    ・16進数タグの値に0〜9、A〜F、a〜f以外の文字が含まれている。
	    ・文字列タグの値が「"」で囲まれていない。
	    ・文字列タグの値の長さが上限を超えている。
	    ・ASCII文字列タグの値にASCII文字、「\0」、「\x??」(2桁の16進数)
	      以外の文字が含まれている。
	    ・JIS文字列タグの値にJIS漢字以外の文字が含まれている。

	  ERR: line <行番号>: Type が見つかりませんでした
	    <行番号>の直前にある[Catalog]項目にType指定がない。

	  ERR: line <行番号>: 不明な項目です(<項目名>)
	    [Catalog]、[Book]以外の項目名が指定されている。

	  ERR: line <行番号>: 項目 [Book] の個数が多すぎます
	    1つのカタログで定義可能な書籍数(電子ブックでは50、EPWINGでは12)
	    を超えている。

	  ERR: line <行番号>: Directory の値が重複しています(<値>)
	    異なる書籍に同じDirectoryの値が指定されている。

	  ERR: line <行番号>: このタグはEPWING専用です(<タグ名>)
	    電子ブックの書籍に以下のタグが指定されている。
	        DirPos, InfoBlock, AppDef, ZenGaiji, HanGaiji

	  ERR: line <行番号>: このタグはEPWING2以降専用です(<タグ名>)
	    電子ブックまたはEPWING1の書籍に以下のタグが指定されている。
	        BookFile, StreamFile, Reserved1, Reserved2,
	        Padding1, Padding2, Padding3

	  ERR: line <行番号>: BookType が見つかりませんでした
	    <行番号>の直前にある[Book]項目にBookType指定がない。

	  ERR: line <行番号>: Title が見つかりませんでした
	    <行番号>の直前にある[Book]項目にTitle指定がない。

	  ERR: line <行番号>: Directory が見つかりませんでした
	    <行番号>の直前にある[Book]項目にDirectory指定がない。

	  ERR: BookSelect の値が書籍数を超えています
	    BookSelectに1〜書籍数の範囲外の数値を指定した。
