速水 健一
今回、MOLCONV Ver.2では、さらなる汎用性と手軽さをめざして改良がすすめられ、MOLCONVの単体化(2.1)と、コマンドライン上からの処理機能の追加(2.2)、そして、マクロ言語機能の拡張(2.3)を行ったので報告する。
2.2 コマンドライン上からの処理機能の追加
起動したプログラム中のメニューを適宜選択して操作する従来からの方法に加えて、起動時のオプションスイッチ/Aを用いて変換に必要なマクロファイルの指定/Mや変換の対象となる入出力ファイル名をプログラムに引き渡す/I、/Oにより、メニュー選択を行わずに目的のデータ変換処理を行えるようになった。これにより、変換処理が迅速に、そしてバッチ処理が容易に行えるようになった。
MOLCONV起動時にコマンドライン上から指定できるオプションスイッチを 表2.1に示す。
/A:メニュー選択機能を省略し、/M、/I、/Oで指定したファイルを用いてデータの変換作業を行う(図2.1、2.2)。
例2.1:A:> MOLCONV /A
/I:入力(変換元の)ファイル名の指定を行う。省略した場合には、必要なときに、MOLCONVの方から尋ねる。
例2.2:A:> MOLCONV /I:A:\MOL\DAT\INPUT1.DAT
/M:入出力、変換手順を記述したマクロファイル名の指定を行う。
例2.3:A:> MOLCONV /M:A:\MACRO1.MAC
このスイッチにより同時に2つのマクロプログラムまで $で区切ることにより指定できる(図2.2)。
例2.4:A:> MOLCONV /M:A:\MACRO1.MAC$A:\MACRO2.MAC
/O:出力(変換先の)ファイル名の指定を行う。
例2.5:A:> MOLCONV /O:A:\MOL\DAT\OUTPUT1.MOL
図2.2 コマンドライン上からの利用例
(図3.15を例として、MOLEDからMOLDA形式への変換のようす)
/K:マクロインタプリタに関する設定を行う。このスイッチ以外は、プログラム全般に関する指定であるが、これはマクロインタプリタの部分に関する設定を行うためのスイッチである。たとえば、以下の例ように、/K:に続けてマクロインタプリタに関するサブオプションスイッチを指定する。
例2.6:A:> MOLCONV /K:-P0-T2-R0-V0
サブオプションは、-Pn、-Rn、-Tn、-Vnがあり、これらは、指定したい項目のみ記述すればよい。nに数値を記述することにより各サブオプションに関する設定を行う。それぞれのデフォルト値は、0である。これらについては、3.2(表3.3)で述べる。
以上のように、MOLCONV起動時にオプションスイッチをつけることによって動作環境を変更することができる。特に/M、/I、/Oとともに/Aをつけることにより、メニュー選択形式の操作方法によらず、MS-DOSのコマンドライン上から変換マクロファイルや変換データファイルを指定し使用することもできる。この際に、もし入力ファイルなど必要な情報が不足していれば、プログラムを終了せずにファイルの入力を促し、処理を継続できる。これらMOLCONVの実行時オプションスイッチに関するヘルプメッセージは、以下の例ように/?をつけてリダイレクトすることにより日本語(/L:1)のヘルプメッセージが、たとえば以下の例では、TEXT.TXTというファイルに取得できる。
例2.7:A:> MOLCONV /? /L:1 > TEXT.TXT
よって、/?、/H、/AをつけてMOLCONVを起動しなければ画面にメインメニューが表示され、従来どおりメニューを選択しながらの変換処理を行うこともできる(図2.3)。この場合には、操作中にヘルプキーを押すことにより各場面に応じた案内を見ながら操作を進めることができる。
/M、/I、/Oにより各形式のファイル名を指定する他に、マクロプログラム中に直接入出力ファイル名を記述することも可能である。また、起動時のオプションスイッチはMOLCONV実行時にコマンドライン上に記述して指定する以外の方法があるが、これらについては、3.2で述べる。
2.3 マクロ言語機能の拡張
マクロ言語の各命令や仕様については、詳細な説明が付属のMOLKMLI.DOCというファイルに実行例とともに記述されている[1]。また、いくつかのサンプルマクロプログラムが用意されている。ここでは、今回の改良点について述べる。
2.3.1 取り扱い変数の拡張
LONG(長整数, 32bit, 4bytes, -2,147,483,648〜2,147,483,647)型の変数を用意した。
また、あらかじめこちら側で用意した変数の他に、任意の名称の変数を用いることができるようになった。
2.3.2 演算子の追加(*LET命令の拡張)
従来の場合には、座標や原子種データの変換に必要な命令がすでに用意されていたので、特に演算するためのものは ++(1増やす)と --(1減らす)以外に用意していなかったが、マクロ言語とよばれているものには、通常、演算子は備わっているので、本プログラムでも一部採用した(表2.2)。
2.3.3 命令の追加
今回、追加した命令を 表2.3に示す。化学に関係するソフトウェアは、FORTRANにより記述されたものが多く、データの入出力もその結果として、たとえばスペースを区切りとするなどの特徴がみられる。このようなデータの読み書きを行いやすいように*INPUTXを用意した。また、DOループから任意の場所、たとえばループの前に抜け出したりすることができるのもFORTRANの特徴といえる。この点を考慮したのが*EXITである。
2.3.4 命令の拡張
従来から用いることができた命令にも改良が加えられた。その内容は、データの変換を行う*CONVERTの拡張、*ENDでの*END,COMMENT、*END,CONVERT、*END,IFの追加、*ENDと*STOPでのMS-DOSのERRORLEVEL設定機能の追加(たとえば、*END,255など)、*FORでのSTEP機能の追加、*EXIT処理の追加(*FOR以外にも使用できる)、*LETでの演算子の追加(2.3.2、 表2.2)、*LINPUTでの読み込み行数の指定の追加。*OPENでのAPPENDモードの追加などである。
3.2 環境設定とその優先順位
プログラムの環境設定については、すでに2.2で述べた起動時のオプションスイッチによる指定などのいくつかの方法が用意されている。これらは、図3.1に示す順序にしたがって決定、変更される。
(1)は、既定値であり、以後、何も指定されなかった場合には、この値が採用される。情報が不足している場合には、ユーザに必要な情報を求める。たとえば、出力ファイル名などの入力を促す。
(2)では、MS-DOSの環境変数MOLPATHを用いて、表3.2に示すサブファイル中で\1の4つのファイルについて在処を指定できる。また、環境変数MOLINITを用いて、あるいは、(3)、(4)で、表2.1に示すスイッチを指定できる。
表3.2のMOLATOM.DATは、原子に関する定義ファイルで、ここに記述してある原子番号を変更したり、アミノ酸などの分子を1つの原子として割りつけてもよい。MOLBOND.DATは、結合に関する定義ファイルで、このデータを編集することにより番号の持つ結合種の意味に変更を加えることができる。
MOLCONV.DATは、MOLCONVの実行中に表示されるテキストを集めたファイルでヘルプメッセージの内容を充実できる。また、次に述べるメニューファイルMOLCONV.TBLの変更に応じて、このファイル中のメニューに関するヘルプテキストの内容も変更するとよい。
MOLCONV.TBLは、/AオプションをつけないでMOLCONVを起動した場合に表示されるメニュー(図2.3)の形式を記述したファイルである(図3.2)。読み込みや保存メニューの項目に新たに作成したマクロファイルを追加したり、逆に、あまり使わないものを削除したりすることにより、ユーザの利用形態に適した形のものに変えて行くことができる。ここでは、表示項目、変換を行うマクロファイル名の指定、変換の対象となるデータファイルのデフォルト拡張子の指定が行える。
MOLCONV.DEFは、起動時にコマンドライン上で指定するオプションスイッチの内容を記述しておくことのできるファイルである(図3.3)。このファイル中に日常使用するスイッチを記述しておくと便利である。このファイルはカレントになければならない。また、このファイルはなくてもMOLCONVの動作に差し支えない。
図3.2 メニュー項目定義ファイルMOLCONV.TBLの内容例
(5)で、ユーザが作成したマクロファイルから指定できる項目は、2.2で述べたスイッチ/K:-Pn、-Rn、-Tn、-Vnに相当するものである。このスイッチと(5)で記述できるマクロコマンドとの対応関係を表3.3に示す。また、ファイル入出力を行う際のファイル名は、スイッチ/I:Input、/O:Outputで指定できるが、マクロプログラム中の*OPEN文でファイル名を省略した場合に、このファイル名が用いられる。具体的にファイルの記述があれば、その名前のファイルが処理の対象となる。スイッチによる記述がなく、マクロプログラム中でも入出力ファイル名を記述していない場合には、MOLCONVがファイル名をユーザに尋ねる。ファイル名は、なるべくマクロプログラム中に記述しない方がよい、なぜなら、マクロプログラム中に直接ファイル名を記述することは、そのマクロプログラムの汎用性を小さくしてしまうからである。
表3.3 マクロコマンドから行えるマクロインタプリタの設定変更
3.3 今回までに作成したマクロプログラムと変換項目
現在までのところ、表3.4に示すマクロファイルを作成している。この他にも、ユーザがマクロプログラムを自ら作成することにより変換項目の追加が行える。これが、このプログラムの重要な特色である。ある形式のデータファイルについて、その読み込みと書き込み別にマクロプログラムを作成しているが、それは、それぞれの変換の組み合わせ全てに応じたものを作ったのでは、数が多くなってしまうからであるが、ある特定の形式のデータファイル間での変換作業を対象として、あるいは頻繁に用いるものであれば、データの読み込み、変換、書き込みを合わせ持った1つのマクロプログラムに作りなおした方がデータ変換作業が効率化される。
3.4 実行例
ここでは、実際に別なソフトウェア間でのデータの受け渡しについて、MOLEDからMOLDA(分子座標、結合情報作成プログラム[7-9])を例に述べる(図2.2、3.4)。MOLEDでのデータ入力を図3.5に、ここで保存した形式のデータを図3.6に、この形式のデータ読み込みマクロプログラムKEN1.Iを図3.7に示した。MOLCONVによるデータの変換手順は、表3.5に示した2とおりの方法で行える。そして、MOLDA形式のデータ書き込みマクロプログラムMOLDA.Oを図3.8に、変換、出力されたMOLDA形式のデータを図3.9に、MOLDAやGRIMM(分子表示、MM2入力データ生成プログラム[8])で、MOLEDにより入力したものと同じものが、図3.10、3.11のように表示でき、データの形式変換が行えたことを示した。
図3.7 MOLED形式のデータ読み込みマクロプログラム(KEN1.I)
図3.8MOLDA.Oにしたがって出力した 図3.9 MOLDA形式のデータ書き込み
MOLDA形式のデータファイルの内容 マクロプログラム(MOLDA.O)
注)この場合は、結合種を取り扱っていないのですべて同じ結合として表示
図3.10 MOLDAでの表示