Fortranプログラムのコンパイルエラー

このQ&Aのポイント
  • ifortでは問題なくコンパイルできたプログラムを、gfortranでコンパイルしたところ、エラーが発生しました。
  • エラー内容は、変数の型の不一致による代入エラーです。
  • エラーの解消方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

fortran プログラミング

ifortでは問題なくコンパイルできたプログラムを、gfortranで コンパイルしたところ、次のようなエラーが出ました。 DATA ENDWRD /' $END '/ 1 Error: Incompatible types in assignment at (1), CHARACTER(1) to REAL(8) Eが頭文字の変数をdouble precisionにするようにしてあるので、 多分double precisionにcharacterを代入しようとしているのが gfortranでは駄目なんだろうと思いますが、これを解消する方法 があれば教えていただけると助かります。よろしくお願いします。

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

  • ベストアンサー
  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.1

data type 宣言文 を data 文よりも前に追加すれば良いようです。 動作確認はしていません。 "fortran 95 standard document" 等としてサーチし標準を確認下さい。 CHARACTER (8) ENDWORD CHARACTER (LEN = 8) ENDWORD

bessel
質問者

お礼

無事コンパイルできました。ありがとうございました。

関連するQ&A

  • fortranでx=1としても0.9..が入る

    fortranで以下のようなプログラムにてxに1.0^-6を代入し、 その中身を表示しました。 --------------------------------- program test real(8) :: x = 1.0d-6 write(*,*) x write(*,*) x * 1.0d6 write(*,*) int(x * 1.0d6) end program test --------------------------------- しかし、結果は以下のようになり、 0.999999999999999955^-6となってしまいます。 さらに、やっかいなことに10^6倍して 整数型に変換しても0と認識されてしまうのです。 ---------------------------------- $ ./a.exe 9.99999999999999955E-007 1.00000000000000000 0 ---------------------------------- 変数の型も倍精度で宣言し、定数も倍精度(d付き)で 代入しているはずなのですが、なぜこのような現象が 起きるのでしょうか。 ご存知の方いましたら教えて頂けると助かります。 なお、コンパイルはgfortranで行っています。

  • Fortran77 (intel fortran)

    Fortran77のプログラムをIntel Fortran (ifort v14.0.1)でコンパイルした時、以下のワーニングがでます。 remark #8291: Recommended relationship between field width 'W' and the number of fractional digits 'D' in this edit descriptor is 'W>=D+7'. 100 FORMAT(12E9.3) --------------------------^ 100の書式はREAL*8で宣言された変数を書き出す時に使っています。 これは具体的にはどういう問題について警告しているのでしょうか? 環境はCentOS6.5 32bitにて実行しています。 よろしくお願いいたします。

  • Fortran90についての質問です。

    Fortran90に関する問題です。 「正の整数mを正の整数nで割った余りrを求める手順を、組み込み関数MOD(m,n)を用いずに、単一の算術式で表せ」 このプログラム文を以下のように作成しました。ファイル名は「amari.f90」にしました。 INTEGER::m,n,f,r REAL::a,k PRINT*,'Input 正の整数' READ*,m,n a=REAL(m) k=a/n f=INT(k) IF(m>0,n>0) THEN r=m-(f*n) PRINT*,'余り=',r END IF END そして、Cygwin画面上で gfortran -o amari.exe amari.f90と打って、コンパイルしようとしたら以下のようなエラー文が出ました。 amari.f90:8.6: IF(m>0,n>0) THEN 1 Error: Syntax error in IF-expression at (1) amari.f90:11.3: END IF 1 Error: Expecting END PROGRAM statement at (1) プログラム文のどこの箇所が間違っているのかを教えていただけませんか?お願いします。

  • intel fortran cimpilerでプログラムファイルがコンパイルできない

    こんにちは。 当方プログラムに関しては全くの初心者です。 研究で早急に計算プログラムを使用したく、 現在intel fortran cimpiler8.0を使い、とあるソースファイルをコンパイルしたいのですがうまくいきません。 コンパイルの手順としてあっているのか自信がないのですが、 とりあえずやってみて、以下のようにエラーが出ます。 $ source /opt/intel_fc_80/bin/ifortvars.csh bash: /opt/intel_fc_80/bin/ifortvars.csh: line 28: syntax error: unexpected end of file $ ifort /home/ディレクトリのパス/ファイル名.f90 ifort: error: could not find directory in which g++ resides これはどういうことなのでしょうか?? どなたかご教授お願いいたします。 ちなみに、使用しているOSはlinuxのFedora.core1です。

  • エラーの原因が解りません

    初心者で申し訳ありません。 型は正しいと思うのですが、エラーが出てしまいます。 floatを int, char に変えたら通ります。floatの時だけ以下のエラーが出ます。私だけなのでしょうか? MyObject1.m: error: incompatible types in assignment 全く理解できません ご存知の方教えて頂けますか? (エラー部以外省いています。) @interface MyObject : NSObject { IBOutlet id myOutlet; float entireHeight; } @end @implementation MyObject -(float)getHeight { return entireHeight; } @end @interface MyObject1 : NSObject { IBOutlet id myOutlet; } @end -(void)reflectionLayout { float height; height = [myOutlet getHeight];//<-error } @end

  • intel fortranのエラーで困ってます.

    character chrc*49・・・ real Tmom,Mw,H0・・・ ・・・ ・・ write(chrc,'(a7,e12.3,a5,f7.2,a12,f6.1)') 'Mo[Nm]=',Tmom*1.e18,' Mw=', Mw,' Depth[km]=', H0 ・・・ ・・ をコンパイルすると,以下のようなエラーが出ます. Main/graphics.f(93): error #5082: 構文エラー、END-OF-STATEMENT が見つかりました、 ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ... の 1 つを指定してください。 write(chrc,'(a7,e12.3,a5,f7.2,a12,f6.1)') 'Mo[Nm]=',Tmom*1.e18,' Mw=', Mw,' Depth[km]=', H0 ----------------------------------------------------------------------------------^ コンパイルは Main/graphics.f で異常終了しました (コード 1)。 (矢印の位置はH0の一文字後) 原因がイマイチよく分かりません... 考えられる原因・解決法を教えて頂けると幸いです. よろしくお願いします.

  • 整数xxxが大き過ぎますというエラーメッセージ(Java)

    最近javaを始めた者です。 javaの初歩的なプログラミングなのですが、long型の変数を定義して例えば10個の数字1234567890をその変数に代入してやるとエラーなくコンパイルされるのですが、 11個以上の数字、例えば12345678900を代入してコンパイルしようとすると質問タイトルのようなエラーメッセージが表示されてしまいます。 long型の変数を使えば11個の数字なら問題なく代入できると理解しているのですが、これは間違っているのでしょうか。 エラーがでる理由がわからなくて困っています。このエラーについて、また、どのようにすれば11個以上の数字が代入できるのか教えてください。お願いします。

    • ベストアンサー
    • Java
  • fortranのコメントについて

    昨日からfortranを始めた者です。 調べてみると、コメントアウトするには 先頭を"C"または"*"で始めればいい と書いてあるのですが 以下のように実際にやってみると Unclassifiable statement at (1) とエラーが出てしまいます。 (文の先頭に半角6文字のスペースを入れてあります。 コメント行は"c"と"test"の間に5つスペースが入れてあります。) コンパイル文: g95 read.f90 ソース: ______program read ______implicit none ______integer i ______real r ______character(len=4) c c_____test ______print *,"Please input number" ______read *,i,r,c ______print *,i,r,c ______stop ______end もうひとつ、 上のソースをコメント行なしでコンパイルすると通るのですが 全ての実行ファイルがa.exeとして保存されるので 毎回exeファイルが上書きされる形になってしまいます。 この2点の解決方法ご存知の方いらっしゃいましたら 教えてください。お願いします。

  • Fortran90のデータ型一致しないエラー

    Fortran90のコード修正をしています。 Tr(i) = max(min(Tr(i), 0.95), 0.25) の行がエラーとなります。エラーの内容は下記の通りです。 エラー : 組込みMINの参照で、第2引数A2のデータ型REALが前の引数のデータ型(DOUBLE PRECISION)と一致しません いろいろやってみましたが、デバグすることができず、 エラーの修正方法につきまして、何かアドバイスやお気づきの点がございましたらご教示いただけますと幸いです。 なお、 Tr(i) = min(Tr(i),0.95) Tr(i) = max(Tr(i),0.25) と書き換えてみたけど、同じエラーでした。

  • このプログラム見てもらえますか?

    問題は十進数二桁の正整数をgetchar()を用いて文字型の変数xとyから元の10進二桁の正整数を復元して整数型変数zに格納せよ zをprintf()で出力し正しく格納されていることを格納せよ。です #include<stdio.h> int main(void) { char x[256],y[256]; int z; printf("整数を一文字入力して下さい。\n"); x=getchar(); printf("整数を一文字入力して下さい。\n"); y=getchar(); z=x*10+y; printf("%d\n",z); return(0); } これをコンパイルすると kadai5-5.c: In function `main': kadai5-5.c:9: incompatible types in assignment kadai5-5.c:11: incompatible types in assignment kadai5-5.c:12: `zyuu' undeclared (first use in this function) kadai5-5.c:12: (Each undeclared identifier is reported only once kadai5-5.c:12: for each function it appears in.) kadai5-5.c:13: `iti' undeclared (first use in this function) kadai5-5.c:14: invalid operands to binary + こう表示されます。 C言語の参考書片手に試行錯誤してるんですがなかなかできません。 よろしくおねがいします。

専門家に質問してみよう