fortranのif文にでるエラーがわかりません。

このQ&Aのポイント
  • fortranのif文にエラーが発生し、その原因がわかりません。
  • 質問文章の中で紹介されたfortranのプログラムで、310行目のif文に関連するエラーが発生しています。
  • エラーメッセージが表示されている場合、その内容を教えていただくことで、原因を特定するのに役立つかもしれません。
回答を見る
  • ベストアンサー

fortranのif文にでるエラーがわかりません。

c termination test sorce=amax1(resorm,resoru,resorv) 310 if((niter.eq.20.and.sorce.gt.1.0e7*sormax) & .or.(niter.eq.maxit)) then write(6,320) 320 format & (1h ,'solution diverges or needs more iterations'/) if(sorce.gt.sormax) go to 300 c----- end of iterations 文献に載っていたプログラムのメインプログラムの一部です。 310のif文に対してでるエラーの意味が どうしてもわかりません。 fortranのコンパイルのエラーに関してはだいたいはわかっているつもりなのですが・・・ 理由がわかるかたいらしたら教えていただけませんか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • warasubo
  • ベストアンサー率37% (9/24)
回答No.1

310のIF文にはTHENが付いているのでブロックIF文ですよね。この場合、対応するEND IF文が必要なはずですが、抜けているようです。WRITE文の次の行にEND IF文を入れてみて下さい。 もしも、示されているソースのもっと後ろにEND IF文があるのであれば、見当違いな指摘ですので無視して下さい。

masa2-1
質問者

お礼

ありがとうございました.おっしゃるとおりでした. if then ときたら endif が必要だったんですね, 勉強になりました.

関連するQ&A

  • fortran if文

    fortranのif文で、以下の様に場合わけしてプログラムしたのですが、 このようなエラー文が出ます。どう対処したらいいのか教えて下さい。 Error: An unterminated block exists. プログラム↓ if(-0.5d0.LE.theta.LE.0.0d0) then eta=2 if(0.0d0.LT.theta.LT.0.5d0) then eta=5 if(0.5.LE.theta.LE.1.0d0) then eta=3 場合わけの範囲指定の仕方が不味いのではないかと思っていますが、 どうしていいものかわからず・・ 皆様のお力を貸して下さい。

  • Fortran コンパイルエラーについて

    Fortranでコンパイルを行ったところ下記のエラーが発生し、原因がわからずにいます。 Fortranに関しては全くの初心者です。 コマンドプロンプト ----------------- C:\>g95 aaa.f90 Warning(115):Line 100 of aaa.f90 is being truncated In file aaa.f90:100  else if(hnum(mnum(ic-1,jc-1)) .eq. 45 .and. basin_num(nr) .eq. anum(mnum(ic-1,jc-1)) .and. znum(mnum(ic-1,jc-1)) .eq. 'obs') then 1 Error:Unexpected junk after ELSE statement at (1) aaa.f90ファイルは他の方が作成したものでそのaaa.exeもあるので、見よう見まねで Fortranをインストールし、試みましたがエラーでEXEが作成されませんでした。 Fortranはv4.1.2(g95 0.93)、使用しているOSはWindows7Professional(32ビット)です。 エラーがでている行のコードしか記述できず申し訳ないのですが、エラーの意味だけでも教えていただけますでしょうか。 ご教示頂きますようよろしくお願いします。

  • fortran77のend ifの個数について質問です。

    他人が作ったfortran 77のプログラムを使うことになったのですが、if文の数とend if文の数が合わずに混乱しています。コンパイルも実行も出来るのですが自分の中では納得いきません。具体的に言うと、 =============== if (aa.gt.bb) then  計算 if (cc.gt.dd) then  計算 else  計算 end if  計算 if (ee.gt.ff) then  計算 end if =============== と言った具合です。この場合1つめのif文に対応するend ifがないと思うのですが…なぜコンパイルがうまくいくのか教えてください。

  • fortran77でのif文

    FORTRAN77の問題の質問です。 授業でこんな問題が出て困ってます。 あるクラスにN人います。 そのクラスの平均身長がXです。 そのN人の中で、X以上の身長の人数Aを印刷するプログラムを作れと言う問題です。 ここで、IF~THENを使いなさい。 分かる人がいたら教えてください。 PROGRAM TEST7 WRITE(*,*)\'x人分の身長データを入力 READ(5,*)x WRITE(*,*)\'身長のボーダーラインを入力\' READ(5,*)G A=A-G B=B-G C=C-G D=D-G E=E-G F=F-G IF(A.GT.0) THEN STOP END 途中までは、こんな感じかと思ったのですが、行き詰ってしまいました。

  • Fortranについて,fatal error LNK1181

    Fortranをインストールしてプログラムをコンパイルしようとすると,以下のエラーが出ます. LINK : fatal error LNK1181: cannot open input file "C:\DOCUME~1\dfor.lib" 正常に作動させるにはどうしたらいいでしょうか.何か足らないものがあるのでしょうか.以下のフォルダに, インストールCDに入っているLIBファイルをすべてコピペしてみたのですが,変わりなしです. C:\Program Files\Microsoft Visual Studio\DF98\LIB OSはXP,今回インストールをしたFortran及びプログラム作成をしたFortranは,共にVisual Fortran 6.0です.何か打開策があれば助言お願いします.

  • Fortran90/Fortran95→Fortran77

    大学の授業でFortranを使ったプログラミングを勉強しています。 以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます) 大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^; 家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコンパイルしているからだと思います(全くの勘違いだったら指摘して下さい) Fortran90/Fortran95の開発環境がフリーで整えばいいのですが、見つからないのでプログラムを修正したいと思います そこで、力を貸していただきたいのです 前置きが長くなりましたが、エラーが出る文は以下のところです open(8,file='freq_ex13.dat',action='write',status='replace') ここを、Fortran77のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

  • fortranについて

    fortranでプログラムをコンパイルし、実行したところRun-time Errorと出てきて、00401000 main [+0052]と書いてありました。何が原因なんでしょうか?

  • fortranでプログラムをつくったのですが

    fortranでプログラムをつくりました。 コンパイルは成功しているのですが、プログラムが途中で止まってしまいます。 そして「segmentation fault」とエラーが出ます。 このエラーは何を意味しているのでしょうか?

  • FORTRANとC++の連動について

    私は,Fortranを用いて解析の業務をしている,プログラム初心者です。 購入したのは,Intel Visual Fortran8.0(VF)ですが,Windows環境でコンパイルリンクするには,Microsoft Visual C++ .NET 2003(VC++)が必要ということで,こちらも購入しました。 普段は,Fortranのコンソールで ifort **.f といったコマンドでコンパイルリンクし,実行しているだけです。 これからは,VC++の方に移行していきたいと考えていますが,しばらくはFortranで作成したサブルーチンを有効活用したと考えています。 そこで,VC++ベースのメインプログラムからFortranのサブルーチンを呼び出すプログラムの作成方法,コンパイルリンク方法をご教授ください。よろしくお願いします。 (1)ソースにどう記述するか? void CMyDlg::OnBnClickedOk() { ここで,FORTRANのサブルーチンを呼び出したい。     Fortranなら call subroutine( a, b ) } (2)コンパイルするときは, Visual Studio開発環境で,コンパイル→実行で良いのか? それとも,あらかじめVC++とVFで.objファイルを作成する必要があるのか?

  • ftn77のコンパイルエラー

    ftn77でfortranのプログラムをコンパイルしたところ、 文字情報のみでテストしたらコンパイルに成功したのですが、 数値計算の入ったものをコンパイルしたら、 実行時に以下のようなエラーが起こりました。 ーーーーーーーーーーーーーーーーーーーーーーーー RUN-TIME ERROR 00401000 main [+00c5] [recur= 1] メッセージ WARNING the following symbols are missing: IMAG C:\fortran\(ファイル名).obj (C:\FORTRAN\(ファイル名).FOR) ーーーーーーーーーーーーーーーーーーーーーーーーー 元々別のパソコンでコンパイルが成功したものを、 まったく書き換えずにftn77でコンパイルしてみたのにもかかわず、 UNTIME EROORと表示されました。 原因が何か分からないので、どなたか教えてください。 ちなみに10行程度の単純なプログラムなら、数値計算をしてもエラーは怒りませんでした。

専門家に質問してみよう