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を直接解析したほうがいいかもしれません。