化学構造データ変換プログラムMOLCONVの開発
- NEC 98からIBM PCへの移植 -
速水 健一
Return
1. はじめに
著者は、さまざまな化学アプリケーションソフトウェアで用いられている化学構造データファイルを他の形式に変換し、ソフトウェア間でそのデータを共有するための一方策としてMOLCONVを報告してきた[1] [2]。
近年、Microsoft Windowsの普及に伴い、日本にもIBM PCおよび、その互換機の利用者が急速に増えてきた。日本で発売されているMicrosoft Visual Basicの日本語MS-DOS版は、NEC PC-9801シリーズ用(VB 98)が中心で、IBM PC (DOS/V)用(VB IBM)は販売されていない。日本のMicrosoft社が、米国で発売されているVB IBMを輸入して、その販売を行ったこともあった。この製品は英語だけでなく、ヨーロッパを中心とする1バイト文字系の国々用の製品が1つのパッケージになったものである。どの国の言語でインストール行いたいのかを選択できるようになっている。この製品の日本での発売は、一時的であり、著者を含めた多くの者にとって入手することが難しい製品であった。そこで、Windows版へ移植してしまうという方策も考えられるが、プログラムをイベントドリブンなアルゴリズムに設計仕直さなければならない。しかし、MS-DOS版にはイベントドリブンなウィンドウプログラムが作成できる一方で、従来からのBASICのような手続き型言語との互換性が残されていて、資産継承という点から見逃すことのできない製品である。
今回、VB IBM (図1.1 )を入手し、VB 98から移植を行うことができた。そこで、その入手、移植、そして、新たに作成した
IBM PC用のMOLCONVについて報告する。
図1.1 米国のIBM PC用Visual Basic
2. IBM PC用MS-DOS版の入手
日本Microsoft社が米国社の製品を販売していたので、VB IBMの注文を行った。しかし、1995年の夏の時点で、VB IBMの日本Microsoft社からの出荷は終了していた。その年の秋に名古屋大須と東京秋葉原の各店頭で VB IBM を探し、大須で VB IBM のProfessional版をわずかに1セット確認することができた。価格は、60,000円弱と高価であった。
日本Microsoft社の保証は受けられないが、製品の中身自体は本来の米国製と変わりがないので、米国から購入することを検討した。購入には、電子メールやFAXでやり取りが行える通信販売[3]を利用した。まず、電子メールを出して、製品リストやその価格、支払い方法についてのやり取りを行った。支払いはクレジットカードを利用し、最終的にFAXを利用して申し込んだ。製品は1週間以内に届き、30,000円強の価格で購入できた。今回の場合、このように、時間的にも価格的にも日本で購入するよりかなり有利であった。現在は、円があまり強くなく、日本では購入者や機関によっては学割が可能である。また、その後にオープンプライス制も導入されている。しかし、それでも時間や価格面で不利なく入手できることがわかる。また、この方法を利用すれば、英語版の入手など米国にしかない製品を購入することができる。
3. IBM PC用MS-DOS版への移植
VB 98とVB IBMとの違いで移植上問題となるのは、VB 98とVB IBMの間でお互いにない関数やステートメントである。両製品のリファレンスマニュアルを参考に、これらを表3.1にまとめた[4][5]。その多くは、頭文字Kではじまる日本語処理に関するものであった。
基本的には、ANSI文字を処理することを前提に、ファイル入出力や文字列処理に関するものは、別なものへ代用あるいは、省略できた。たとえば、INPUT\は、INPUT$へ、KINSTRは、INSTRへ置き換えることになるが、今回の場合には、こういったことは、ほとんど必要なかった。それは、多くの場合、文字数よりバイト数を考慮するだけで十分だからである。また、日本語文字のほとんどは、全角文字で、表示したときに半角文字2バイト分かつ半角文字2文字分を必要とし、バイト数と文字数が一致するためである。しかし、移植するプログラムによっては、これがもっとも大変なことと思われた。逆に、はじめから2バイト系文字を用いていないプログラムの移植は、非常に容易となることが予想できた。
表3.1 VB 98とVB IBMの関数やステートメントの違い
カテゴリ | 機 能 | 関数、ステートメント、メソッド |
VB 98にのみある | VB IBMにのみある |
グラフィックス | 色 | - | QBCOLOR |
ファイル入出力 | ファイルからの読み出し | INPUT\ | - |
文字列 | 文字列操作 | KINSTR | - |
KMID$ | - |
KEXT$ | - |
文字列の長さ | KLEN | - |
KPOS | - |
文字コード取得 | JIS$ | - |
KTN$ | -
|
注)VB IBMのReferenceマニュアルのLanguage Summaryには、VB 98と同じように、関数、ステートメントやメソッドの一覧がある。ここには、ENVIRON$関数のみで、ENVIRONステートメントが欠けているが、これはミスプリントである。各関数やステートメントの具体的な説明を記述しているA-Z Referenceには、VB 98と同じようにENVIRONステートメントに関する説明が記述されている。
PRINTステートメントによる出力やファイル中に用意した日本語文の内容は、移植に際して変更することなくコンパイルできた。VB IBM やコンパイルした MOLCONV は、USモードで利用する必要があった。日本語モードで利用した場合、表示内容が背景色と同じ色となり目で見て確認できなかった。また、MOLCONV実行時に/L:1とすれば、その日本語を出力することもできたが、出力した日本語文字はUSモードにすると文字化けしてしまった。しかし、どちらの場合も出力内容を一度ファイルに保存して日本語モードでファイル内容を読み出すことで日本語文字でも出力は、正常に行われていることが確認できた。
この他には、SCREENステートメントの引数の持つ意味が異なる点を考慮する必要があった。今回、移植を行ったMOLCONVは、テキスト表示とフォーム表示のみを行うため変更は容易であった。グラフィック表示を行うアプリケーションの移植を必要とする化学者は多いと考えられるので、SCREENステートメントの違いについて表3.2から3.5にまとめた。mode% は、VB 98とVB IBMの両者に共通するもの0, 1, 2がある(表3.3 )。0は、テキストのみのモードであるが、1, 2ではグラフィックスモードとなり両者で解像度が異なるので移植に注意が必要である。paletteswitch% あるいは colorswitch% は、この名の通り両者で異なる(表3.4 )。このことからVB IBMの場合、VB 98の paletteswitch% に相当する使用するパレット数の設定がない。これは、VB IBMに多数用意されている mode% の種類と実際に装着されているグラフィックアダプタの種類の組み合わせで決まる(表3.5 )。
表3.2 VB 98とVB IBMのSCREENステートメントの違い(書式)
VB 98の場合
SCREEN mode%[,[paletteswaitch%][,[activepage%][,[visiblepage%][,noinit%]]]] |
VB IBMの場合
SCREEN mode%[,[colorswitch%][,[activepage%][,visiblepage%]]]
|
表3.3 VB 98とVB IBMのSCREENステートメントの違い(mode%に指定可能な値)
| mode% |
VB 98の場合 | 0, 1, 2, 81, 82, 84, 87, 88 |
VB IBMの場合 | 0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13
|
表3.4 VB 98とVB IBMのSCREENステートメントの違い
(paletteswitch%とcolorswitch%)
VB 98の場合
paletteswitch% | mode%が1,2,84,87,88のとき |
0
1
2
3
|
同時表示可能な最大色数
16色中16色
64色中16色
4096色中16色 |
VB IBMの場合
colorswitch% | mode%が0のとき | mode%が1のとき |
0
0以外
| 色なし
色あり
| 色あり
色なし
|
表3.5 VB 98とVB IBMのSCREENステートメントの違い(mode%による表示の違い)
mode% | paletteswitch% (colorswitch%) | activepage%/visiblepage% | pixels | Display/Adapter
|
VB 98の場合
|
0, 81 | - | - | - | text
(フォームもtext, noinit%に1を設定すると出力結果を画面に残したままMS-DOSの画面に
もどる, フォームを使わない場合のデフォルト設定値)
|
82 | - | - | - | text
(フォームはgraphics, フォームを使うものデフォルト)
|
1, 87 | 0-3 | 0-1 | 640x400 | graphics
(textもgraphics画面に表示, フォームは表示不可)
|
2, 88 | 0-3 | 0-1 | 640x400 | text, graphics
(スーパーインポーズ, フォームはtext)
|
84 | 0-3 | 0-3 | 640x200 | text, graphics
(スーパーインポーズ, フォームはtext)
|
VB IBMの場合
|
0 | 0, 0以外 | 0- | - | text
(フォームもtext)
|
1, | 0, 0以外 | 0- | 320x200 | graphics
(CGA,EGA,VGA,MCGA低中解像度)
|
2 | - | 0- | 320x200 | graphics
(CGA,EGA,VGA,MCGA低中解像度)
|
3, 4, | - | 0- | - | graphics
(Herculesや2以外のAdapter)
|
7, 8, 9 | - | 0- | - | graphics
(EGA,VGA中高解像度)
|
10 | - | 0- | 640x480 | graphics
(EGA,VGA白黒高解像度)
|
11, 12, 13 | - | 0- | 640x480 | graphics
(VGA,MCGA高解像度)
|
COLORステートメントやメソッドについては、変更なしにVB 98の場合と同じ色を表示することができたため、変更しなかった。COLOR 1が青色、2が緑色、4が赤色である。N88-日本語BASIC(86)と比べた場合には、2と4の意味が逆になっている。
操作キーの割付についても変更は、行わなかった。しかし、NEC 98とでは、キーの呼び名が異なるのには、注意が必要である。たとえば、GRPHはAlt、ESCはEndなどである。
4. 移植結果
プログラムのコンパイルと実行テストは、富士通社製FMV499上で行った。また、MS-DOSのUSモード(COUN-TRY=1)で行った。図4.1に示す画面が現れ、MOLCONVの98版に添付されている日本語を含んだサンプルマクロや[2]での実行例について同様の動作結果が得られた。
ソースコード中に日本語文字列を残したまま、コンパイルを行ったにも関わらず、EXEファイルのサイズは、411,126バイトから 372,704 バイトと 1 割程度縮
小された。
Windows95 ( 日本語版 ) の中からは、MS-DOSプロンプトをウィンドウ内で実行し、コマンドライン上でUSとタイプしてUSモードに切り替えることで利用できた。(図4.2 )。
図4.1 起動画面
図4.2 Windows95内での起動画面
5. まとめ
今回、MOLCONVをNEC 98からIBM PCおよび、その互換機上で動作するように移植を行うことができた。移植に必要な IBM PC 用のVisual Basicは、米国から購入した
にも関わらず、入手価格や時間で利便があった。プログラムの移植にあたっては、日本語処理に関する関数やステートメントについての置き換えが、そのほとんどであったが、特に問題とはならなかった。実行は、USモードに切り替えることでできた。USモードでは、日本語文字が化けてしまうが、日本語の内容自体は正確に出力されていた。移植されたプログラムは、機能を損なうことなく、サイズは1割程度縮小された。
過去にNEC 98用に開発された手頃で有用な化学アプリケーションは多い。今回の結果から、これらの IBM PC 版への移植や Windows から他国語製品の利用など資産継承の可能性を示すことができた。
謝辞
米国からのソフトウェアの入手や移植にあたってのご助言を鳥羽商船高等専門学校の作田誠先生よりいただきました。ここに深く感謝申し上げます。
参考文献
1) 速水 健一, J. Chem. Software, 3 (1), 11-24 (1996).
2) 速水 健一, 大川 慶, 松本 悟, 化学とソフトウェア, 19 (3), 121-128 (1997).
3) Compu-Value ( http://www.compval.com, E-mail:).
4) Microsoft Visual Basic Programming System for MS-DOS Reference, Microsoft Corporation, (1992).
5) Microsoft Visual Basic Programming System for MS-DOS リファレンス, マイクロソフト株式会社, (1993).
Return