- ベストアンサー
フォートランで出力をタブ区切りテキストの形式でしたいのですが
フォートラン95で、タブ区切りテキストとしてファイルに出力したいのですが、そのやり方がわかりません。 以前にも同じような質問があり、それに対する回答がちゃんとありましたが、何分初心者なもので、その回答が良く分かりません。 integer*2 tabc / 2313 / 2313は16進の0909に相当(TAB二文字分) write (*,'(i,A1,i,A1,i)') i1,tabc,i2,tabc,i3 是非教えてください! 出来れば、一般的な形なものでお願いします! 6列出力したいので!
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C JIS FORTRAN (古い)ですが、基本は、同じと思いますので、実数型なら C 例; の場合 左端の Cは、コメントの意味 A=10.11 B=1.22 C=123.01 D=555.55 E=666.66 F=0.77 C C WRITE(6,10) の 6 は、出力装置番号 テキスト形式番号を C 調べて 変更すること。 C 同様に 10 は、行番号 WRITE(6,10)A,B,C,D,E,F 10 FORMAT(1H,6F7.2) C F7.2 とは、実数表示で、小数点を含め 7文字を出力します。 C 変数に7文字以下の数字が、入っていれば 切り捨てられずに C 出力されます。 また、1H は、余白部分を指定します。 C プレビュー画面での余白を指定します。 C 結果は、(注意Δは、空白です。) C ΔΔΔ10.11ΔΔΔ1.22Δ123.01Δ555.55Δ666.66ΔΔΔ0.77 C または、X を入れると 空白が、挿入されます。 C 2X とか 3X とかにすると 空白が、2個、3個になります。 WRITE(6,10)A,B,C,D,E,F 10 FORMAT(1H,X,F7.2,X,F7.2,X,F7.2,X,F7.2,X,F7.2X,F7.2) C とすると C ΔΔΔΔ10.11ΔΔΔΔ1.22ΔΔ123.01ΔΔ555.55ΔΔ666.66ΔΔΔΔ0.77 なります。
その他の回答 (1)
- ultraCS
- ベストアンサー率44% (3956/8947)
そのときに回答した者です http://oshiete1.goo.ne.jp/qa2497203.html 一応、そのときはうまくいったようなので、もう少し詳しく説明してみます。 integer*2 tabc / 2313 / ここで、2313は16進の0909HでTAB二文字分に相当する数値です。 実際には、先頭1バイトしか使わないので、2304(0900H相当)でも多分問題ないのですが、保険のために0909Hとしてあります。 write (*,'(i,A1,i,A1,i)') i1,tabc,i2,tabc,i3 ここでやっているのは、まず、変数i1をI変換で出力、次にtab相当の数値をA1変換で出力しています、ここでA1変換は、実際には定義されたビット列を1バイト分そのまま出力するだけというのを利用して、タブ1バイトだけを出力しています。今、i1=11、i2=22、i3=33だったとすると、変換されての出力結果は 11(tab)22(tab)33 となり、タブ区切りの出力が実現できるはずです(実際出来たようです)。 6列出力したいなら、出力する文字列とtabcを交互に6回出力すればいいはずです。 前回忘れていたのですが、改行制御文字はあったほうがいいですね。FORMATの先頭に" "や1H があったほうがいいかもしれません。
お礼
ちょっと私には難しいかもしれませんが トライしてみます! ありがとうございました!
お礼
ありがとうございます! チャレンジしてみます!