CATALOGSには、媒体(CD-ROMなど)に含まれる書籍の情報が格納されています。 構造をC言語の構造体で表すと以下のとおりです。
/* EPWING Data type */ typedef unsigned char BYTE; typedef unsigned char WORD[2]; /* 2byte big endian integer */ typedef unsigned char LONG[4]; /* 4byte big endian integer */ #define EPW_CAT_BOOKNAME_LEN 80 #define EPW_CAT_DIRECTORY_LEN 8 /* EPWING CATALOGS Header */ struct { WORD books; /* 書籍数 */ BYTE dummy1; BYTE version; /* EPWING Version */ BYTE dummy2[12]; } EPW_CAT_HEADER; struct { BYTE booktype; /* 書籍の種類 */ BYTE version; /* EPWING Version */ BYTE bookname[EPW_CAT_BOOKNAME_LEN]; /* 書籍名称(JIS X0208) */ BYTE directory[EPW_CAT_DIRECTORY_LEN]; /* 書籍ディレクトリ名(JIS X0208) */ LONG dirlocation; /* 書籍ファイルディレクトリ位置(省略時0) */ WORD infoblock; /* 書籍管理情報記録位置 */ BYTE gaiji[68]; /* 外字ファイル情報 */ } EPW_CAT_BOOKINFO[書籍数];
なお、EPWINGではJISコード(漢字イン・アウトなし)が使用されています。
catalogviewer.cはCATALOGSの内容を解析して表示するプログラムです。
EPWINGを正面から解析するのならCATALOGSを解析してもいいのですが、例文を取り出すだけなら次で説明するHONMONを直接解析したほうがいいかもしれません。