• 締切済み

フォートランで出力をタブ区切りテキストの形式でしたいのですがver.2

Nayuta_Xさん 例えばこんな風にプログラムを作ってみたんですが、    OPEN(6,FILE='C:\TRY.TXT')    A=10.11    B=1.22    C=123.01    D=555.55    E=666.66    F=0.77    WRITE(*,*)A,B,C,D,E,F    WRITE(6,10)A,B,C,D,E,F  10 FORMAT(1H,6F7.2) ←*    CLOSE(6)    END *の部分で文法エラーと出てきてしまいます。 Hが引っかかっているのかもしれません。 どうすればいいですか? ultraCSさん 例えばこんな風にプログラムを作ってみました。    PROGRAM try    integer*2 tabc/2313/ ←☆      i1=11     i2=22     i3=33    write (*,'(i,A1,i,A1,i)') i1,tabc,i2,tabc,i3    END ☆の行でエラーが以下のように出てしまいます。 F95エラー : main.f95(12) : 文法エラー F95エラー : main.f95(12) : 無効な文字です - 8進数 201 F95エラー : main.f95(12) : 無効な文字('@')が指定されました エラー: main.f95, line 12: 無効な文字です - 8進数 201 F95エラー : main.f95(12) : 無効な文字('@')が指定されました 警告: main.f95, line 18: シンボルTABCは値を設定されないまま参照されましたdetected at END@<end-of-statement> どうすればいいでしょうか? 大変申し訳ないのですが、プログラムのサンプルみたいなものも教えて頂けるとありがたいです。 宜しくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

質問文中に特定の個人の名前を挙げるのはいかがなものかと思うのですが, 例えば 1H の次にスペースが入っていないとか, integer*2 の次に全角スペースが入っているとかそういうことはないですか? もっとも, Fortran95 を前提にするとどっちの書き方も今一だったりしますが.

y-auio
質問者

お礼

ネームを入れたことをお詫びします。 もう一度プログラムを確認してみます! ご指摘ありがとうございました。

関連するQ&A

  • フォートランで出力をタブ区切りテキストの形式でしたいのですが

    フォートラン95で、タブ区切りテキストとしてファイルに出力したいのですが、そのやり方がわかりません。 以前にも同じような質問があり、それに対する回答がちゃんとありましたが、何分初心者なもので、その回答が良く分かりません。 integer*2 tabc / 2313 /  2313は16進の0909に相当(TAB二文字分) write (*,'(i,A1,i,A1,i)') i1,tabc,i2,tabc,i3 是非教えてください! 出来れば、一般的な形なものでお願いします! 6列出力したいので!

  • Fortran 出力形式

    Fortranのプログラムで write(IUO,1) a(10) write(IUO,1) b(10) write(IUO,1) c(10) 1 format(1p,1f10.4) と書かれていると、ファイルIUO内に、 formatから1行でa(10),b(10),c(10)の値が連続して出力されます。 a(1) b(1) c(1) a(2) b(2) c(2) ........ ........ ........ a(10) b(10) c(10) のようにa,b,cの値を各列ごとに出力させたい時はformatをどのように書けばよいのでしょうか? 詳しい方がいらっしゃったら教えて下さい。 よろしくお願いします。

  • Loopの使い方について

    Rubyで 数字を下記のようなやり方では1~12 までの数字をまわせるプログラムと 文字のa~l までまわせるプログラムを合体させたいのですがどのようにすればよいでしょうか? #1-12 までの数値をまわすソース n=1 loop do puts n if n == 12 break end n += 1 end 実行結果↓ 1 2 3 4 5 6 7 8 9 10 11 12 # a~ lの小文字をまわすソース ["a","b","c","d","e","f","g","h","i","j","k","l"].each do |n| puts n end 実行結果 a b c d e f g h i j k l 上記のプログラムをあわせて、実行結果が、↓ 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h 9 i 10 j 11 k 12 l ↑ このようにするには、どのようにすればよいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • テキストファイルの出力について

    今、学校の課題でC言語を使ってプログラムを作っています。 20000個のデータを読み込んで、200個ずつに区切り、別々のテキストファイルで出力するというものです。 最初につくったのは、以下の通りです。 *********************************************** FILE *fp; { int b,i=0; data[0][i]=trend_data[0][i]; data[1][i]=trend_data[1][i]; fp = fopen("D1.txt","w"); for(i=0;i<=199;i++){ fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); } fclose(fp); fp = fopen("D2.txt","w"); for(i=200;i<=399;i++){ fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); } fclose(fp); ・・・ ***************************************** これだと20000まで繰り返し記述しなければならずかなり困難だと思いました。そこで、ループを作ろうとしたのですが、テキストファイルをループを使って複数作成する方法がわかりません。 以下のようなプログラムを作ったのですが、テキストファイルが一つしか作られませんでした。 どのように記述すればよいのでしょうか? **************************************** FILE *fp; { int a,i=0; int b=1; int c=199; data[0][i]=trend_data[0][i]; data[1][i]=trend_data[1][i]; start: fp = fopen("D[1+b].txt","w"); for(i=a;i<=c;i++){ fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); if(i > c) c = c+200; a = a+200; b++; goto start; fprintf(fp,"%8.8f %8.8f\n",data[0][i],data[1][i]); fclose(fp); } } ****************************************** よろしくお願い致します。

  • fortran77教えてください

    fortran77のプログラムについての質問です。 次のプログラムを実行するとどのような結果になるか教えてください REAL A,B,C,D,E,F A=7.0 B=5.0 CALL WASA(A,B,C,D) CALL WASA(C,D,E,F) WRITE(*,*)E,F STOP END SUBROUTINE WASA(P,Q,R,S) REALP,Q,R,S R=P+Q S=P-Q RETURN END

  • それぞれテキストファイに区切って出力

    添付画像のような構成で  C列数値(D列の文字数の総計)を上から順番に合計して300を超えるとB列にその合計を書き出すようにしました。  (コード SumIfOver300) わかりやすいようにA列にそれぞれを塗分けしています。 1) 現在は、手動ですがこれをVBAで自動で処理したい。 (添付図は、3色ですが境目が解ればいいので2色でもOKです。) 2) 塗分け後に塗分けされたD列の部分を一つのテキスト群としてそれぞれ別ファイル(テキストファイル)に区切って出力したい。 添付図で言うといかのように出力  D2:D7  001_text.txt D8:D12 002_text.txt D13:D15 003_text.txt Sub SumIfOver300() Dim lastRow As Long Dim sum As Long Dim i As Long lastRow = Cells(Rows.Count, "C").End(xlUp).Row sum = 0 For i = 1 To lastRow sum = sum + Cells(i, "C").Value If sum > 300 Then Cells(i, "B").Value = sum sum = 0 End If Next i End Sub

  • 出力内容を新しいテキストファイルで保存するには?

    プログラム #include <stdio.h> #include <string.h> main() { char text[100]; char a[20], b[20], c[20], d[20], e[20], f[20]; char fname[20]; int i = 1; FILE *fp; printf("■ファイル名>>"); scanf("%s",fname); fp=fopen(fname,"r"); if((fp = fopen(fname,"r")) == NULL){ printf("ファイルをオープンできませんでした。\n"); return 1; } else{ printf("ファイルをオープンしました。\n"); } while( fscanf(fp, "%s", text) != EOF){ sscanf(text, "%[^,], %[^,], %[^,], %[^,], %[^,], %[^\0]", a, b, c ,d, e, f); printf("%d回目\n",i++); printf("全文:%s\n",text); printf("1つ目:%s\n",a); printf("2つ目:%s\n",b); printf("3つ目:%s\n",c); printf("4つ目:%s\n",d); printf("5つ目:%s\n",e); printf("6つ目:%s\n\n",f); } } テキストファイル ABCD,EFGH,IJKL,MNOP,QRST,UVWXWZ abcd,efgh,ijkl,mnop,qrst,uvwxyz あいうえお,かきくけこ,さしすせそ,たちつてと,なにぬねの,はひふへほ テキストファイルから文字列を読み込み、変換させて出力させた内容を他のテキストファイルに保存するにはどのようにしたらいいのでしょうか?

  • fortran 外部サブルーチンの読み込みについて

    c c main.f c dimension x(2) x(1)=1 x(2)=2 y=5 call sub(x,y,z) write(*,*)'x1=',x(1) write(*,*)'x2=',x(2) write(*,*)'y=',y write(*,*)'z=x1+x2+y=',z stop end c---------------------------------- c sub.f c subroutine sub(a,b,c) dimension a(2) c=a(1)+a(2)+b write(*,*)'b=',b return end  以上のようなプログラムをmain.fとsub.fに分離して、別々にコンパイル。最後にそれぞれの実行ファイルをつなげるといったことがしたいのですが、どのようにすればいいのでしょうか。 サブルーチンをメインプログラムが参照するといったことがしたいです。

  • C言語

    main() { int a = 5,b=2,e,f,g=3,i; double c,d,h=2.0; c = a/b; printf("c = %f\n",c); d = a/h; printf("d=%f\n",d); e = a++; f = ++b; g+= 4; i= ++a + b; printf(" a = %d\n",a); printf(" b = %d\n"b); printf(" e = %d\n"e); printf(" f = %d\n"f); printf(" g = %d\n"g); printf(" i = %d\n" i); 答え a=7,b=3,c=2.0,d=2.5,e=5,f=3,g=7,i=10 この問題のa,b,iがどうやってこの値になるのかがわかりません解説お願いします。

  • Fortranの問題3問目です。急いでます><

    以下のプログラムを実行すると結果がNAN(数値エラー)となり、表示されない。 これは、ガウスの消去法における、ある問題に起因する。 正しい結果がでるようにするには、どうしたらよいか? 答えが正しく表示されない原因を究明し、正しい結果を表示する、 修正済みソースコードを提出しなさい。 ヒント: 一般に、どのような行列でも計算できるプログラムにするためには、 「ピボット」と呼ばれる操作を行う必要があるが、 今回は、ピボットをあらかじめ人間が行うことで回避してよい. プログラムの処理内容(アルゴリズム)を修正する必要はない。 program gauss implicit none c aは係数行列(4x3)、xは解、w は一時変数 double precision a(5,4),x(4),w integer i,j,k c キーボードから読み込む場合 write(6,*) 'input a(5,4)' c read(5,*) a c data文で一括初期化(代入)する方法 data a / & 0d0, 3d0, 7d0, 2d0, 65d0, & 2d0, 8d0, 5d0, 1d0, 65.4d0, & 5d0, 3d0,-5d0, 2d0, 3.8d0, & -2d0, 4d0, 0d0, -6d0, -35.6d0 & / write(6,*) 'データの確認表示' write(6,'(f8.2,f8.2,f8.2,f8.2,f8.2)') a c 前進消去 do k=1,3 do j=k+1,4 w = -a(k,j)/a(k,k) write(6,*) w,'*行',k,'を、行',j,'に足すと' do i=1,5 a(i,j) = a(i,j) + w*a(i,k) end do write(6,'(f8.2,f8.2,f8.2,f8.2,f8.2)') a write(6,*) '' end do end do write(6,*) '前進消去 終了' write(6,'(f8.2,f8.2,f8.2,f8.2,f8.2)') a c 後退代入 do k=4,1,-1 x(k) = a(5,k) do i=k+1,4 c 注:k=3のとき, do i=4,3 となるためループ内は1回も実行しない c k=2のとき, do i=3,3 となり、ループ内はi=3 で1回だけ実行 x(k) = x(k) - a(i,k)*x(i) end do x(k) = x(k) / a(k,k) end do c 解を表示 write(6,*) 'x = ',x stop end