MOPAC97(分子軌道計算ソフト)をIBMのAIX4.2上で実行したいと
思っています。
MOPAC93と同様にETIMEとFDATEを変更しても、
mopac.f中にあるMALLOC関数の戻り値が常にゼロなので実行時に
プログラム中のエラーチェックルーチンにひっかかって止まっ
てしまいます。
(コメントアウトしただけではcore dumpして動きません。)
AIXではMALLOCはサポートされていないのでしょうか。
(最新ではないと思われるマニュアルには記述がありませんでした
が、リンク時にエラーメッセージがでるわけでもありません)
どなたかAIX上でMOPAC97を使っておられるか、MALLOC関数の実装
についてわかる方、助言をお願いいたします。
なお、SGIとSPARC用のmakefileが付いていましたので、これらの
機種ではMALLOC関数は動作すると思われ、また、DEC Visual
FORTRAN(Win95)では、動作を確認しています。
--
立花 宏 東京都立大学大学院工学研究科工業化学教室
tachiban...@c.metro-u.ac.jp
<tachibana-hiroshi...@bukka7.indchem.metro-u.ac.jp>の記事において
tachiban...@c.metro-u.ac.jpさんは書きました。
>> 立花@都立大です。
>>
>> MOPAC97(分子軌道計算ソフト)をIBMのAIX4.2上で実行したいと
>> 思っています。
>> MOPAC93と同様にETIMEとFDATEを変更しても、
>> mopac.f中にあるMALLOC関数の戻り値が常にゼロなので実行時に
>> プログラム中のエラーチェックルーチンにひっかかって止まっ
>> てしまいます。
>> (コメントアウトしただけではcore dumpして動きません。)
>>
>> AIXではMALLOCはサポートされていないのでしょうか。
>> (最新ではないと思われるマニュアルには記述がありませんでした
>> が、リンク時にエラーメッセージがでるわけでもありません)
>>
>> どなたかAIX上でMOPAC97を使っておられるか、MALLOC関数の実装
>> についてわかる方、助言をお願いいたします。
XL Fortranにはmallocの類の関数はありません。ただしFortran90方式でない旧式のpointer文はサポートしています(普通mallocやるためにあると思うのですがね...)。
そこでC言語でそれに相当するものを作ればよいとおもいます
例:
#include <stdlib.h>
void * lfmalloc ( nbytes )
size_t * nbytes ;
{
return (void *) malloc( *nbytes ) ;
}
これをつかって;
real p(1)
pointer (lp, p)
lp = lfmalloc( size_of_allocated_array_in_bytes )
という具合です。
では。