PC5250/CA400

36. BIFF形式とXLSXとは何か?

5250エミュレータのデータ転送のファイル形式において
BIFF4, BIFF8 とかの BIFF形式や XLSX形式とは Excel のデータ形式であることは
わかるのだが、一体どのように違うのだろうか?
また Excel としてダウンロードするならどの形式を選択すればよいのだろうか?

IBM PCOMM/CA400 (iAccess) にはダウンロードするファイル形式として
BIFF4 や BIFF8 は選択肢として書かれているが意味の説明がない。
そこでこれらの分類をわかりやすく説明しよう。

ファイル形式 Excel バージョン 拡張子 CCSID
BIFF4 Excel4 .XLS 1202
BIFF8 Excel97-2003 .XLS 1202
XLSX Excel2007- .XLS 1202

拡張子.XLS 形式の Excel ブックは Microsoft の OLE (=オブジェクト埋め込み) 形式の構造で
Microsoft が公開しているかなり複雑な構造の FAT 形式のファイルである。
これに対して XLSX 形式の Excel ブックは XML の構造体で書かれた XML を
ZIP 形式で圧縮したファイルである。
つまり拡張子 .XLSX を .ZIP に変更して解凍すれば XLSX の XML が浮かび上がってくる。
これらはテキスト・ベースの XML であるので見た目にも非常にわかりやすい。
IBM i に ZIP解凍の API が用意されているはずだし、Qshell コマンドでも
簡単に解凍することができる。

最後に Excel の CCSID はすべて 1202 として構成されている。
Excel ブックを IBM i の IFS にアップロードしたとしても CCSID:1202 を
IBM i 内部では EBCDIC コードには変換することはできない。
i5/OS で CCSID:1202 の変換テーブルを持っていないので API: QDCXLATE, API: iconv を
使っても CCSID:1202 を EBCDIC として変換して読み取ることはできないのだ。

AutoWeb のデータ転送では CCSID:1202 は読めません、というわけにはいかないので
CCSID:1202 との変換を独自の方法で用意している。
このため CA400 (=Client Access または iAccess) のデータ転送記述 (CCSID:1202) や
Excelブック (CCSID:1202) を IFS にアップロードしても AutoWeb のデータ転送で
読み書きできるようになっている。

今では BIFF8 (Excel97-2003) を扱う人も少ないはずだが、ソフトウェア・メーカーとしては
広くユーザーをサポートするために .XLS の FAT 形式の構造体も
Microsoft の英文マニュアルに従って解析し、サポートできるように製品化したのだが
XLSX 形式に比べて解析はかなり複雑で困難であった。
データ転送のアップロード機能の開発だけで3ヶ月以上を要した。
多くの IBM ユーザーのお役に立てれば幸いである。