• 締切済み

Fortranで/(スラッシュ)を含んだデータ

Fortranで/(スラッシュ)を含んだ以下の日時データを読み込ませたいのですが、 DATE(←カラム) 12/08/14(←読み込ませたいデータ) 以下のプログラムでは"12"までしか読み込むことができません。 CHARACTER*8 DATE (中略) READ (3,*) DATE WRITE(*,*) DATE 何故スラッシュ以降を読み込ませられないのでしょうか。

みんなの回答

  • f272
  • ベストアンサー率46% (8015/17132)
回答No.2

どうして READ(3,*) DATE で文字列を読むの? スラッシュがあれば,そこでデータ入力が打ち切られるよね。 普通は READ(3,'(A)') DATE でしょ。 READ(3,'(A8)') DATE でもいいけど。 どうしても READ(3,*) DATE で読みたいのなら,データの方を "12/08/14" とか '12/08/14' にするんじゃないの?

回答No.1

複数台の端末機で、 其の検証が実施されたのでしょうか?

関連するQ&A

  • fortranで読み込んだ複数ファイルデータの見方

    また質問です。 character (13) :: fname do i = 1 , 3 write (fname ,"('sample_' , i2.2 , '.csv ')") , i enddo open (10 , file = fname) close (10) end fortranで連番のcsvファイルを上記のプログラムで読み込ませることはできたのですが、それぞれのファイルのデータの見方が分かりません。装置番号10でread文やwrite文を書くと最後に読み込んだファイルのデータしか見れません。どなたか教えてください。

  • 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初心者です。 いま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

  • fortran90

    fortran90 現在 fortran90 で計算プログラムを作っております。 プログラムはかけたのですが、実行画面にエラーが出ます。 解決方法が分かりません。どなたか分かる方いらっしゃいますか。 プログラム implicit real*8 (a-h,o-z) parameter(n=900) open (1,file='004.txt',status='old') do 10 i=1,n read (1,*,end=11)xx,yy,zz,ww theta=acos(zz) phi1=acos(xx/sqrt(1-zz*zz)) phi2=asin(yy/sqrt(1-zz*zz)) write(*,*)theta,phi1,phi2 10 continue 11 end プログラム内容 あるフォルダーに保存してあるテキストファイルから4×4行列のデータを読み込み、そのデータからθの値とφ1、φ2のアタを求めるプログラムです。 実行分のエラー画面には、 acos: DOMAIN error です。

  • fortran g95を使ってBMPを処理したい

    以前XP環境でVisual Fortran(VF)を使ってBMPファイルを読み込むプログラム使っていました. PCがWin7になった為,FreeのFortran g95を使用して同様の処理を行いたいのですが,上手くできません.例えば”test.bmp”と言う8bitのファイルを読み込みたいとしたとき, VFでは character*1078 temp integer*1 data open(10,file='test.bmp',form='binary') read(10)temp read(10)data このときwrite(*,*)dataは133とします. g95では"binary"が使用できず, character*1078 temp chracter*1 data open(10,file='test.bmp',form='formatted') read(10,*)temp read(10,*)data data2=ichar(data) write(*,*)data2は32となってしまいます. 画像の輝度は133で,VFで読み込んだ値となります. 上のプログラムで何を直せば g95でも正しい輝度情報を読めるのでしょうか? どうぞ宜しくお願いします.

  • FORTRAN

    FORTRANについて聞かせてください。 WRITE(*,*) 'A= READ( *,*) A Aの値を0~0.15の範囲で0.01刻みで増やしていって実行したいのですが,どのようにプログラムを作成すればいいですか?? DOループだと思うのですが,あってますか? 分かる方いらっしゃったらお願いします。 FORTRANについてお勧めの初心者用ホームページがあればおしえてくださると助かります。

  • データの数を数えるfortran プログラム

    横にm個、縦にn個の実数データが整然と並んでいます。ファイルを開いて読み込むのですが、縦横に何個のデータがあるかプログラムに感知させる方法があるでしょうか。 縦にn個のデータがあることは簡単でした。しかし横にm個あることを感知させるのが難しいです。今は、とにかく全データの個数を調べて、その個数をnで割って求めています。 全データを読む方はは、1個読んで巻き戻し、2個読んで巻き戻し、3個読んで巻き戻し、.... としてデータをこれ以上読めないというところまで読んでその個数が全データということになります。この部分がかなり時間を使います。データを開いてエディタで1行目のカラム数を数えればいいわけですが、プログラム的にはどうなるでしょうか。Cだったら、改行を感知させるという方法があるかもしれません。Fortranだったらどうなるでしょうか。 ※Fotranの専門の会議室がないのかなと思っていますが。

  • fortranで疑問

    今fortranで困ったことがあります。 例えば 1 2 3 と縦に改行されているファイルを、新しいファイルに同じ数値データを写したいとき 元のデータから read(*,*)(n,i=1,3) で値を読み込み write(*,*)(n=i,3) で新しいデータに書き込み出来る と思ったのですが 3 3 3 と新しいファイルに書き込まれてしまうのです。 まず縦に改行した形で表示するにはどうしたら良いでしょうか? ちなみにdo~continue文でプログラムするとうまくいきます。

  • 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で行っています。

  • 末尾がスラッシュでないデータを抜き出すSQL文

    テーブルphonelistのsiteurlフィールドにURLが多数入っています。 URLの末尾はhttp://xxx.com/などとスラッシュで終わることを前提としていますが、データのいくつかはhttp://xxx.comなどとスラッシュで終わらないものがあるようです。 現在、このテーブルのデータを基にPHPを動作させたのですが、スラッシュで終わらないもののみ正常に動作しなかったようです。 もう一度プログラムを動かすために、末尾がスラッシュで終わらないデータのみ抜き出したいですが、自分ではうまくいきません。 SELECT * FROM phonelist WHERE NOT siteurl LIKE "*\/$"; みたいに、私も上のようなSQLをいろいろと試しましたが、どうやってもsiteurlの登録データのすべてが検出されてしまいます。 どなたか末尾がスラッシュではないURLのみを抜き出すSQL文を教えてください。 よろしくお願いします。

専門家に質問してみよう