• ベストアンサー

fortranについて

fortranでコンパイルしようとすると、 READ(1,FILE='syoki.txt') X0(I),Y0(I) ^ Invalid form for READ statement at (^) とエラー?が出てしまうのですが、原因としてどのようなことが考えられるでしょうか。 どなたかお願いします。

  • tmd0
  • お礼率100% (2/2)

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

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

参考 http://harukin.la.coocan.jp/fortran/003/read.html これからすると READ(FILE='syoki.txt', *) X0(I),Y0(I) にするか open(1, file='syoki.txt') で既に開いているなら READ(1, *) X0(I),Y0(I) でしょうか。 Fortranで時々書きますが、そういえばread文は一度も書いたことがないので、多少怪しいですが。

tmd0
質問者

お礼

ki073さん ありがとうございました!! コンパイルに関してはエラーがでなくなりました。 まだ実行エラーが出るのですが、がんばります!!

関連するQ&A

  • fortranでコンパイルできません。

    fortranの数値計算プログラムなんですが、コンパイルすると”GENERIC”という単語でエラーがでてしまいコンパイルできません。エラー内容はこれです『Unimplemented or invalid form of statement at (^) (this is a catchall diagnostic that currently applies to a wide variety of errors, including things like invalid ordering of statements and invalid reference to intrinsic procedure)』 どうすればいいのでしょうか・・・

  • FORTRANのプログラミングについて

    たびたび申し訳ありません。 またFORTRANに関しての質問です。 x y z 0 0 30 1 0 45 2 0 60 3 0 43 4 0 51 5 0 32 0 1 43 1 1 90 2 1 32 3 1 85 4 1 65 5 1 90 0 2 32 1 2 32 と続くファイルがあります。これをFORTRANをで書き換えて、 0 0 30 0 1 43 0 2 32 1 0 45 1 1 90 1 2 32 と続くデータにしたいのです。(これを以下目的のファイルという) 今のところ、次のようなプログラムを書き、特定のXに対しては、結果を吐き出すことに成功しています。 program dat real x1(100),h,y2(100),y1(100),z1(100) integer i,n,j,k,l,m,a(100) open(7,file='test.txt') open(9,file='af-test.dat') do i=1,100 read(7,*,end=200) x1(i),y1(i),z1(i) if(x1(i).eq.90)then write(9,*) x1(i),y1(i),z1(i) end if end do 200 close(7) close(9) end ここまではうまくいくのですが、これでは90以外の場合は出力されません。(あたりまえですが) 特定のXに限らずに例えばXを0から100まで吐き出されるような目的のファイル作るにはをどのようにしてプログラムを書けばいいかご教授ください。

  • FORTRANのプログラム

    今、実験の解析を行っています。 読み込みたいテキストファイルには -1,0.4 0,0,233 -1,0.9 ・・など左側には-1か0のどちらかがあります。 これを -1,0.4 -1,0.9 を含むファイルと 0,0.0233 を含むファイルの二つに分けたいのです。 今プログラムを作っているのですがどうしてもできません。 どうしたらいいのでしょうか? program dat real x(10), y(10) open(7,file='test.txt') do i=1,10 read(7,*,end=200) x(i),y(i) end do do j=1,10 if(x(j).eq.0.0) then open(8,file='aftest1.txt') write(8,*) y(j) else open(9,file='aftest2.txt') write(9,*) y(j) end do close(8) close(9) 200 close(7) end

  • Fortranのエラー

    お世話になります。 Fortran初心者です。 いまFortranでcsvファイルからデータを読みこむといったプログラムを作成しようと思っております。 まず、行いたいことは、複数のcsvファイル(0001.csv→0004.csvなど)のデータをプログラムに読込ませたいのですがうまくいきません。 0001.csvや0002.csvとしたいのに、INNAME.csvとなってしまいます。 なので、次に0001.csvだけを指定してたのですが下のデータを全く読み込んでくれません。 ちなみに0001.csvは、このようなデータです。 0,0,-107.75939 ,-85.57285 ,0.00000 ,0.00000 ,0.00000 ,0.00000 1,0,-105.54305 ,-85.56864 ,0.00000 ,0.00000 ,0.00000 ,0.00000 2,0,-103.32661 ,-85.56443 ,0.00000 ,0.00000 ,0.00000 ,0.00000 3,0,-101.11009 ,-85.56022 ,0.00000 ,0.00000 ,0.00000 ,0.00000 - 7325,0,106.16862 ,80.19408 ,0.00000 ,0.00000 ,0.00000 ,0.00000 エラーの部分としては、 READ(j,*) x,y,xmm,ymm,U,V,W,Length であり、エラーが出て、ファイルを読んでくれません。  エラーは Invalid character in fieldと出て、readする書式が違うのかと 自分なりに原因を探し変更してみたのですがわかりませんでした。 みなさまお忙しいところ本当にすみません。 初心者なのでどこかつまづいているかもしれないのですが、それがわかりません。 ご教授頂けたら幸いです。 よろしくお願い致します。 プログラム全体だと長いので 以下がプログラムのはじめから途中までの中身です。 PROGRAM MAIN Implicit None INTEGER i,j,k,sample,x,y CHARACTER*4 INNAME       REAL xmm,ymm,U,V,W,Length DIMENSION x(7326),y(7326),xmm(7326),ymm(7326) & ,U(7326),V(7326),W(7326),Length(7326) i=1 j=1 x=0 y=0 WRITE(INNAME,'(I4.4)') j WRITE(*,*) INNAME !!変数INNAMEに返す値は0001です。 OPEN(j, file='0001.csv') !!'//INNAME//.csv'だとINNAME.csvに。0001.csv,0002.csvにしたい。 c !-- read data sample=7326 DO k=i,sample READ(j,*) x,y,xmm,ymm,U,V,W,Length !!READがうまくいかない。Invalid character in fieldのエラー ENDDO

  • 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点の解決方法ご存知の方いらっしゃいましたら 教えてください。お願いします。

  • fortran77で複数のファイルの読み込み

    fortran77で複数のファイルの読み込み 現在fortran77のプログラムを勉強しております。 ファイルが複数あり、すべてのファイルを読み込みたいのですが、ファイルの数がたくさんあるため、プログラムの行数が多くなってしまいます。 do ループで次々とファイルを開くプログラムを考えているのですが、思いつきません。 どなたか考え方でもいいので、教えてください。 ちなみに私が考えたプログラムは、 open(10,file='C:\FORTRAN\100.txt',status='old') open(11,file='C:\FORTRAN\121.txt',status='old') open(12,file='C:\FORTRAN\144.txt',status='old') open(13,file='C:\FORTRAN\169.txt',status='old') open(14,file='C:\FORTRAN\196.txt',status='old') open(15,file='C:\FORTRAN\225.txt',status='old') ・・・。 これを do ループで次々に開くことを考えると、 character*3 A(10) do 100 i=1,10 A=i*i open(i,file='C:\FORTRAN\A.txt',status='old') 100 continue ・・・ みたいな感じです。 ' 'の中の一部だけを変えたい場合のcharacter 文の使い方がいまいちよく分かりません。

  • FORTRANのOPEN分について

     私は、プログラミングに関して全くの初心者です。 これを考慮にいれてお答え下さい。お願いします。  FORTRANの入門の本を買って勉強しているのですが、OPEN文の ところがいまいちよく分りません。 integer l,u,h parameter (l=0,u=50,h=2) real x,y open(10,file='SUHYO.TXT'.status='new') write(10,200) 200 format(' '<3x,'X',8x,'Y') do 10 i=l,u,h x=real(i)/10.0 y=10x-9 write(10,210) x,y 210 format(' ',f5.1,f10.2) 10 continue close(10) end というプログラムがあり、私のパソコンで実際にやってみたいのですが どうもうまくいきません。  おそらくOPEN文のFILEが原因だとおもうのですが どのようにFILEを用意すればいいんでしょうか?  ちなみにコンパイルはできています。 関係ないかもしれませんが、OSはWinXPでソフトはF90です。

  • FORTRANのプログラムについて

    program dat real x(100), y(100) s2=0 read(*,*) m,h open(7,file='test2.txt') do i=1,m read(7,*,end=200) x(i),y(i) s1=h/2*(y(1)+y(m)) s2=s2+h*(y(i)) s3=h*y(1) end do 200 close(7) sum=s1+s2-s3 write(*,*) 'sum=',sum end 台形公式を求めるプログラムを書いています。 テキスト形式でまずデータを取り込みます。 刻み幅はhです。ただしデータ数は未知数です。 上のようにプログラムを書いたのですが、うまく働きません。どうすればよろしいでしょうか? ご教授お願いします

  • 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で1行飛ばして読み込む方法

    例えば次の内容が書かれているテキストファイル(data.txt)があるとします. ------------data.txt------------ time temperature 1.000E+00 5.632E+02 -------------------------------- このdata.txtに書いてある2行目の値をfortranを用いて読み込もうとすしたいのですが, fortranで open(100,file='data.txt') read(100,*) time, temperature と書くと, data.txtの1行目の'time temperature'の文字を読み込もうとし,当然エラーが出てしまいます. 読み込みたいのはdata.txtの2行目の数値のみなのですが, その方法がわかりません. 読み込む方法を教えていただけないでしょうか.

専門家に質問してみよう