• 締切済み

fortranプログラムについて

お願いします。 fortran全くの初心者です。 今、他人が作ったプログラムに苦戦中です(ーー;) どなたか助けてください。。 プログラムをコンパイル後、実行すると以下のメッセージが返ってきます。 exec(2):insufficient swap or memory available そこで、以下のプログラムの一部を修正することで回避できました。 parameter # (nxdm=10,nydm=5,nzdm=5,ipdim=4 # ,nxd6=nxdm+6,nyd6=nydm+6,nzd6=nzdm+6 # ,nvcdim=6*ipdim+4,iatdim=1 # ,nhfdim=nvcdim*(nvcdim+1)/2+3) プログラム中のnxdm nydm nzdmの値を小さくすることで回避できました。 なんとなくの修正で回避していますが、メッセージとの関係がわかりません。 どこかを見たりすると定義する数字の限度とかわかるのでしょうか? ほんの一部なのでわかりずらいと思いますが、こういうことがありえる!って 程度でもいいので教えてください。 お願いします。

みんなの回答

  • pokuda
  • ベストアンサー率55% (29/52)
回答No.4

OSや処理系は何をお使いでしょうか? 私の数少ない経験では、大型計算機やワークステーションはメモリ管理がしっかりしているので、実行するたびにエラーメッセージが変わるというようなことは起きにくいのですが、RUN/FORTRANのような教育環境で使われるパソコン用の処理系ですと、少し大きなプログラムを作るとすぐにメモリを食い尽くしたり、プログラムを終了してもメモリリーク(メモリをつかんだまま解放しないこと)が発生したり、モニタモードなんてものがあったりして、初心者の場合、実行環境が裏で動いているにもかかわらず、それを知らずに新たにモニタを起動してしまったりしてメモリを食い尽くすことはあります。OSがWindowsなら、その可能性は大きいです。 こういうことは、あまりあってはいけないことなのですが、出来の悪いソフトを動かすと遭遇します。残念ながら。

すると、全ての回答が全文表示されます。
  • ogx
  • ベストアンサー率25% (32/125)
回答No.3

配列が(dimension文で)大きくとってあるのです。 コンパイル時は正常に済んでも、実行時に、他のウィンドウで別のプログラムが動作しているとかで、メモリ不足になったりならなかったりするのです。

chibitotoro
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
  • pokuda
  • ベストアンサー率55% (29/52)
回答No.2

たぶん、3次元配列を処理しているのだと思うのですが、そういうのは、メモリを大量に消費します。エラーメッセージは、単にメモリが足りないということを意味しているので、配列を少なくすることでエラーを回避できるのは、道理にかなっていると思います。 ちなみに、使えるメモリの量というものは、OSやコンパイラに依存するものなので、ソースだけではなんともいえません。はい。

chibitotoro
質問者

補足

ありがとうございます。 もうちょっと教えていただけますか? 初めの実行で正常に実行できて、実行を繰り返すたびに 配列を少なくしないと実行が出来なくなってしまう。 実行のたびに使えるメモリ数が減ってしまうというのも 普通のことなのでしょうか? お願いします。

すると、全ての回答が全文表示されます。
回答No.1

確認していないのでわかりませんが,parameter文のなかで割り算は使えないのではないでしょうか? つまり nhfdim=nvcdim*(nvcdim+1)/2+3 の部分を変更すれば動くと思うのですが・・・.

chibitotoro
質問者

お礼

ありがとうございます。 試してみます。

すると、全ての回答が全文表示されます。

関連するQ&A