2009年12月20日

2009年12月20日: mopac6 を MinGW でビルド

 mopac6 を MinGW でビルドしようとしてまたハマってしまった(なんでそんな古いバージョンを使うのか、せめて mopac7 を使え、という話はともかく)。Mac OS X 上の gfortran だと普通に動くのに、MinGW 上だと動かない。「またスタックサイズか?」とか「入力ファイルの改行コードの問題か?」とか丸2日さんざん悩んだあげく、ついに不正現場を取り押さえた。

--- gettxt.f.orig Sat Apr 2 07:07:04 2005 +++ gettxt.f Mon Dec 21 00:05:39 2009 @@ -89,7 +89,7 @@ READ(5,'(A)',END=100,ERR=90)TITLE ENDIF ELSE - READ(5,'(A)',END=100,ERR=90)KOMENT,TITLE + READ(5,'(A80)',END=100,ERR=90)KOMENT,TITLE ENDIF GOTO 50 40 WRITE(6,'(A)')' SETUP FILE MISSING OR CORRUPT'

 KOMENT,TITLEという2つの文字列を読み込んでいる場面で、最初の1行をKOMENT、次の行をTITLEに読むのが期待される動作。ところが、フォーマットが '(A)'だとKOMENTに最初の行が入って、TITLEには同じ行の2文字目以降が入る。これは明らかにおかしい。フォーマットを '(A80)'にすると、一応期待した通りの結果になる。もっとも、どう書く「べき」かはよくわかっておらず、「実験してみたらたまたま動作した」という、非常によろしくない状況である。しかしまあ、古くてしかも人様のコードだし、この手の修正をやり始めたらきりがないような気もするし、どうしたもんかなあ。

Posted at 2009年12月20日 00:38:18
email.png