- ベストアンサー
Fortran90/95の出力方法について
- Fortran90/95の出力方法について説明します。具体的には、変数の値をwrite文で出力した後に改行しない方法について教えてください。
- プログラムの改良方法についてお伝えします。諸事情により配列を使用しない場合にも、改行せずに変数の値を表示させる方法をご紹介します。
- Fortran90/95を使ったプログラム実行時に、変数の値を連続して表示するための改良方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
先程のURLに「18.3 数値と文字の変換を行う方法」という章がありますが。 数値を文字列に変換しても出力されませんでしょうか?
その他の回答 (2)
こんにちは。 既に解決されているかもしれませんが、数値のまま1行出力する例 を掲載させて頂きます。 以下の2パターンの方法により、1行出力を行うサンプルです。 1)WRITE文の出力リストで、「DO型出力リスト」を使用する。 2)WRITE文の書式指定で、「改行抑止($)」を指定する。 ※当方では、Cygwinのg95で検証してみました。 ■サンプルソース 注)インデント等のため全角スペースを入れています。 ・ご使用の際は、タブor半角スペースに置換して下さい。 ========================= !== WRITE文での1行出力テスト == PROGRAM testw2 IMPLICIT none INTEGER i, n CHARACTER sfmt*20 !== 個数の入力 == WRITE(*,fmt='(A)',advance='no') 'Number(1-99)=' READ(*,*) n IF (n<1 .OR. n>99) THEN PRINT *,'** Numerical range is over. **' STOP ENDIF !== Test-1: DO型リストで出力(書式はデフォルト) == PRINT *,'== Test-1 ==' WRITE(*,*) ( i, i=1,n ) !== Test-2: DO型リストで出力(書式指定:n個×4桁) == PRINT *,'== Test-2 ==' WRITE(sfmt,'("(",I2,"I",I2,")")') n,4 WRITE(*,sfmt) ( i, i=1,n ) !== Test-3: 改行抑止($)で出力 == PRINT *,'== Test-3 ==' DO i = 1, n WRITE(*,'(I4,$)') i END DO PRINT * END PROGRAM testw2 ========================= <サンプルの実行結果> Number(1-99)=10 == Test-1 == 1 2 3 4 5 6 7 8 9 10 == Test-2 == 1 2 3 4 5 6 7 8 9 10 == Test-3 == 1 2 3 4 5 6 7 8 9 10 ■参考サイト 配列要素を一行に出力する http://rakasaka.fc2web.com/fortran/fortran.html#output_array ↑これは上記サンプルのように配列でなくても利用できます。 WRITE文の改行を抑制する http://rakasaka.fc2web.com/fortran/fortran.html#write 以上です。
- YUI_AI
- ベストアンサー率45% (303/661)
write で advance='no' と指定すれば良いみたいですよ 参考URL http://www.nag-j.co.jp/fortran/FI_18.html http://www.nag-j.co.jp/fortran/code/advance.f90
補足
YUI_AIさん早速解答していただきありがとうございます。 私の説明不足だったのですが,実は質問をする前にwrite文でadvance='no'とする方法を試しました.しかし,write文でadvance='no'とする方法では文章を表示させることはできても変数を表示させることができませんでした.そこで,変数により数値を表示させつつ改行もしない方法が知りたいのです.
お礼
YUI_AIさんの御指摘の通り,数値を文字列に変換することで出力することができました. どうもありがとうございました.