dポイントプレゼントキャンペーン実施中!

お願いします。
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の値を小さくすることで回避できました。
なんとなくの修正で回避していますが、メッセージとの関係がわかりません。
どこかを見たりすると定義する数字の限度とかわかるのでしょうか?

ほんの一部なのでわかりずらいと思いますが、こういうことがありえる!って
程度でもいいので教えてください。
お願いします。

A 回答 (4件)

OSや処理系は何をお使いでしょうか?


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

配列が(dimension文で)大きくとってあるのです。


コンパイル時は正常に済んでも、実行時に、他のウィンドウで別のプログラムが動作しているとかで、メモリ不足になったりならなかったりするのです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2001/11/26 11:56

たぶん、3次元配列を処理しているのだと思うのですが、そういうのは、メモリを大量に消費します。

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

この回答への補足

ありがとうございます。

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

お願いします。

補足日時:2001/11/21 09:28
    • good
    • 0

確認していないのでわかりませんが,parameter文のなかで割り算は使えないのではないでしょうか?


つまり
nhfdim=nvcdim*(nvcdim+1)/2+3
の部分を変更すれば動くと思うのですが・・・.
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/21 13:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!