• ベストアンサー

fortranの実行について

fortran77で、実行すると、 list in: end of file apparent state: unit 1 named syoki.txt last format: list io lately reading direct formatted external IO Aborted (コアダンプ) とエラーが出てしまうのですが、どうすればいいでしょうか。すみません、どなたかおねがいします。

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

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

ファイルの読み込みに問題がありそうなので、常套手段として 1) デバッガで順番に実行してみて、期待しているような動作をしているか 2) print文を適当に入れて、どこでエラーが出ているか調べる どちらかでやってみてください。1)がお勧めですが。 fortran77ってg77でしょうか? gcc4では無くなっているように思うのですが。

tmd0
質問者

お礼

ki073さん ありがとうございました!! 1で、解決できました!! 引き続きべんきょうがんばります。 g77です。Cygwinというところからインストールしました。

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

関連するQ&A

  • g77でのエラーメッセージ

    g77でコンパイルし,計算すると以下のようなメッセージがでました。 fmt:read unexpected character apparent state :unit5 named test.dat last format:(4i5,4f10.0,a20) lately reading sequential formatted external IO アポートしました。 本プログラムは,別コンピュータと別コンパイラー(compaq fortran)で問題なく動いていました。 どなたか,想定されることがありましたら,ご教授ください。

  • Fortran90で可変長ファイルを読む

    Fortran90初心者です。 実験でたとえば 時刻 温度 流速 t1   T1  v1 (CR/LF) ... ... ... tn   Tn  vn (CR/LF) のような ascii data file (FILE.dat)を得ています。 実験ごとに n の値、つまり、行数が違っており、このファイル内のデータを 次のようなFortran.90のプログラムで読み取って、その後処理を行っています。 integer :: Nl ! number of lines integer :: i character(180) :: dummy_line ! for void reading real(8), allocatable :: time(:), temp(:), velocity(:) open (5,file='FILE.dat', status='unknown',form='formatted') Nl = 0 do read(5,*, end = 99) dummy_line ! void read is absurd !! Nl = Nl + 1 end do 99 write(*,*)"eof encountered at Nl = ", Nl ! total lines in the file allocate(time(Nl), temp(Nl), velocity(Nl)) ! allocation of variables rewind(5) ! read pointer is set to the beginning of the file do i=1, Nl read(5,*) time(i), temp(i), velocity(i) end do この方法だと、元のファイルを2度読み込むことになりますので、あまり 賢い方法ではないと怒られています。実験データを出力する機器の方でファイルの 先頭にデータ数 n を吐き出させることもできません。 Fortran90だけでデータを読みながら動的配列を増やしてゆく方法があったら ご教示のほどお願いします。 Cならリスト処理やreallocで可能かとも思いますし、Linux上なら wc -lと Cのpopenとでも可能かとは思うのですが、プラットフォームはwindows7 で、intel fortranを使用しています。 (最終手段は入力部はCで、処理部はFortranで、linkするのでしょうか。) よろしくお願いします。

  • fortran95実行エラー

    fortran95でプログラムを組んでおり、実行するとjwe0019iというエラーが出ます。 ネットで色々調べたんですが、説明が難しくていまいち原因が分からなくて困ってます。 エラーが出る箇所は CALL CRATFSTINDV( & IFINV, KTBPS, KTB, IEOC, IEOE, & NSMX, MTBHC, JTEMP, MCUST, NCMX, & MCSUM, MTBHB, TH1, TH2, & KHA, KHB, C1SSUM, C2SSUM, FDA, FDB ) サブルーチンを呼び出すとこのこの部分です。 引数の数など確かめたんですが、合っていますし。 このエラーに詳しい方がいらっしゃれば是非教えていただきたいです。よろしくお願いします。

  • FORTRANの実行エラーについて

    FORTRAN言語でプログラミングをして、実行させた際に次のようなエラーが出てきました。 forrtl: severe (64): input conversion error ファイル(DATA FILE)を読み込む際に出ます。 なぜこのようなエラーがでるのかよく分かりません。 私が思うに読み込むデータファイルのサイズが大きすぎる(約2.3M)のではないかと思っているのですが、どなたか原因が分かる方ご教授お願いします。

  • 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 配列実行結果

    以下のプログラムの中で実行結果で最後の  n = ntime (ntime =600) だけ、つまりwth, wphの最後のntimeだけをファイルに書き出したい場合どのようにwrite文を書けばよいのでしょうか?わかる方がいらっしゃたら教えて下さい。よろしくお願いします。 subroutine far_output use consts use fdtd implicit none integer :: n, i, td real(8) :: s real(8) :: theta, phi real(8) :: sx, sy, sz, px, py real(8) :: wth, wph, uth, uph real(8) :: eth(mmax), eph(mmax) real(8) :: ceth, ceph open(10,file="far_field_eth.dat") open(20,file="far_field_eph.dat") theta = 0.0d0 phi = 0.0d0 sx = cos(theta)*cos(phi) sy = cos(theta)*sin(phi) sz = -sin(theta) px = -sin(phi) py = cos(phi) do n = 1, ntime wth = wx(l,n)*dx+wy(l,n)*sy+wz(l,n)*sz wph = wx(l,n)*px+wy(l,n)*py uth = ux(l,n)*sx+uy(l,n)*sy+uz(l,n)*sz uph = ux(l,n)*px+uy(l,n)*py eth(n) = -z0*wth-uph eph(n) = -z0*wph+uth write(10,*) eth write(20,*) eph enddo call fft_eth(ntime,eth,ceth) call fft_eph(ntime,eph,ceph) close(10) close(20) return end subroutine

  • fortran 実行結果がうまく表示されない

    グローバルモジュールを用いてプログラムを書いたのですが実行結果が表示されません、プログラム中に問題があるのでしょうか?教えて下さい。 module params implicit none integer :: n = 2 end module params module sample implicit none contains subroutine swapvec3(x,y) use params real(8), intent(inout) :: x(n), y(n) real(8) tmp(n) tmp(1:n) = x(1:n) x(1:n) = y(1:n) y(1:n) = tmp(1:n) end subroutine swapvec3 end module sample program main use sample implicit none real(8), allocatable :: a(:), b(:), tmp(:) integer n allocate(a(n),b(n),tmp(n)) call swapvec3(a,b) call random_seed call random_number(a) call random_number(b) call random_number(tmp) write(*,*) ' a = ', a(1:n) write(*,*) ' b = ', b(1:n) write(*,*) ' tmp = ', tmp(1:n) end program main 実行結果  a = b = tmp =

  • fortran 配列実行結果

    以下のように実行結果のプログラムを書いたのですが、実行結果の値の(配列)の内容がどのようになっているのか混乱しています。実行結果の値は、 n = 1, l = 1, 2, 3,...,180, n = 2, l = 1, 2, 3, .....180 ...... n = ntime, l = 1, 2, 3, ...180 と書き出されているのでしょうか?どなたかわかる方がいらっしゃったら教えて下さい。よろしくお願いします。 subroutine far_output use consts use fdtd implicit none integer :: n, i, td real(8) :: s real(8) :: theta, phi real(8) :: sx, sy, sz, px, py real(8) :: wth, wph, uth, uph real(8) :: eth(1000), eph(1000) open(10,file="far_field_eth.dat") open(20,file="far_field_eph.dat") open(30,file="far_field.dat") ! s = pi/180.0d0 theta = 0.0d0 ! do i = 0, 360 ! td = i ! phi = s*td phi = 0.0d0 sx = cos(theta)*cos(phi) sy = cos(theta)*sin(phi) sz = -sin(theta) px = -sin(phi) py = cos(phi) do n = 1, ntime ! s = pi/180.0d0 ! theta = 0.0d0 ! do i = 0, 360 ! td = i ! phi = s*td wth = wx(l,n)*dx+wy(l,n)*sy+wz(l,n)*sz wph = wx(l,n)*px+wy(l,n)*py uth = ux(l,n)*sx+uy(l,n)*sy+uz(l,n)*sz uph = ux(l,n)*px+uy(l,n)*py eth(n) = -z0*wth-uph eph(n) = -z0*wph+uth write(10,*) eth write(20,*) eph write(30,*) wx(l,n) enddo ! enddo l(エル)は前の(別の)プログラムで l = 1, 180 のdoループで計算させています。

  • Fortran77のプログラム実行時にエラー

    Windows98でCPad for Salford FTN77というソフトを使って、Fortran77のプログラミングをしています。そこで学校での課題で、下のようなプログラムを作ったのですが、実行すると次のようなエラーがでます。 The insrtuction at address 0373f5b0 attempted to read from an illegal location 0373f5b0 routine at address 373F5B0 [+0000] 00401000 main [+074f] で、ファイルに書き込めてるかどうかチェックすると、何も書き込めていません。どうすれば、ちゃんと動くのでしょうか。どなたか分かる方、宜しくお願いします。 プログラム↓ *生徒50人の成績を読み込み平均点などを計算し、ファイルに書き込む PROGRAM GOKAMOKU HEIKIN INTEGER N(1:50),EP(1:50),MP(1:50),JP(1:50),SP(1:50),CP(1:50) INTEGER SUM(1:50),K,I,L,J,M,Q REAL PAV(1:50),PVX(1:50),PSD(1:50),EAV,ESD,MAV,MSD,JAV,JSD REAL SAV,SSD,CAV,CSD CHARACTER FNAME*30,SHUTURYOKU*20,CN*50,SHUTURYOKU2*20 READ(5,*)FNAME READ(5,*)SHUTURYOKU OPEN(1,FILE=FNAME) DO 10 K=1,50 READ(1,*)N(K),EP(K),MP(K),JP(K),SP(K),CP(K) 10 CONTINUE CLOSE(1) *英語の平均点、標準偏差の計算 OPEN(2,FILE=SHUTURYOKU) CALL AVEETC(EP,EAV,ESD) WRITE(2,*)'英語の平均点・標準偏差' WRITE(2,300) EAV,ESD 300 FORMAT(2F6.2) *数学の平均点、標準偏差の計算 CALL AVEETC(MP,MAV,MSD) WRITE(2,*)'数学の平均点・標準偏差' WRITE(2,300) MAV,MSD *国語の平均点、標準偏差の計算 CALL AVEETC(JP,JAV,JSD) WRITE(2,*)'国語の平均点・標準偏差' WRITE(2,300) JAV,JSD *理科の平均点、標準偏差の計算 CALL AVEETC(SP,SAV,SSD) WRITE(2,*)'理科の平均点・標準偏差' WRITE(2,300) SAV,SSD *社会の平均点、標準偏差の計算 CALL AVEETC(CP,CAV,CSD) WRITE(2,*)'社会の平均点・標準偏差' WRITE(2,300) CAV,CSD *各生徒の合計点、平均点、標準偏差の計算 DO 50 K=1,50 SUM(K)=EP(K)+MP(K)+JP(K)+SP(K)+CP(K) PVX(K)=EP(K)**2+MP(K)**2+JP(K)**2+SP(K)**2+CP(K)**2 PAV(K)=REAL(SUM(K))/5.0 PSD(K)=SQRT(PVX(K)/5.0-PAV(K)**2) 50 CONTINUE WRITE(2,*)'各生徒の合計点、平均点、標準偏差' WRITE(2,*)'番号 合計 平均点 標準偏差' DO 60 K=1,50 WRITE(2,200)K,SUM(K),PAV(K),PSD(K) 60 CONTINUE 200 FORMAT(I3,I5,2F10.2) *合計点のヒストグラムを書く DO 70 J=0,9 JL=10*J JH=JL+9 CALL STR(SUM(J),CN) WRITE(2,400)JL,JH,CN 70 CONTINUE 400 FORMAT(1X,I2,'-',I2,'I',A50) *英語の点数順に並べ変え DO 20 L=1,49 DO 30 I=L+1,50 IF(EP(L).LT.EP(I)) THEN M=EP(I) EP(I)=EP(L) EP(L)=M Q=N(I) N(I)=N(L) N(L)=Q END IF 30 CONTINUE 20 CONTINUE *表示 WRITE(2,*)'英語の成績高い順' WRITE(2,*)'番号 点数' DO 40 J=1,50 WRITE(2,100)N(J),EP(J) 40 CONTINUE 100 FORMAT(I2,I3) END SUBROUTINE AVEETC(P,AV,SD) REAL AV,SD INTEGER P(1:50) WX=0.0 VX=0.0 DO 10 K=1,50 WX=WX+P(K) VX=VX+P(K)*P(K) 10 CONTINUE AV=REAL(WX)/50.0 SD=SQRT(REAL(VX)/50.0-AV**2) END SUBROUTINE STR(SUM,C) INTEGER SUM CHARACTER C*50 DO 10 K=1,50 IF(K.LE.SUM(K))THEN C(K:K)='*' ELSE C(K:K)=' ' END IF 10 CONTINUE END

  • MS-FortranとFortran90

    私は研究でFortran90を使っているのですが、研究に使うプログラムはMS-Fortranを用いて書かれているものでした。 そこで質問なんですが、MS-FortranとFortran90の違いについて知っている方がいれば教えてください。 また、MS-FortranでかかれたソースコードをFortranにコピーした時に何か弊害はあるのでしょうか?(人づてに弊害が起こると聞いたことがあるのですが・・・)。 プログラミングを本格的に始めて、まだ3ヶ月ほどで用語の使い方がわかりにくいところがあるかもしれませんがよろしくお願いします。