web-dev-qa-db-ja.com

改行なしで値を出力する

改行なしで多くの値を印刷するにはどうすればよいですか?

PRINT *, "foo:", foo, ", bar:", bar, ", baz:", baz

どうやら、これはWRITEここそこ )で可能です。いくつかの値を出力しながら、PRINTとその異なる構文で同じことを実現するにはどうすればよいですか?

6
Codoscope

writeステートメントはオプションのadvance指定子を提供しますが、printは提供しません。

複数のアイテムを同じ行に出力するために、_advance="no"_を含む複数のwriteステートメントをコードのさまざまな場所で作成できます。例として、doループ内から使用します。

_do i=1,3
    write(*, fmt="(1x,a,i0)", advance="no") "loop #", i
end do
write(*,*) ! Assumes default "advance='yes'".
write(*,*) "--OK, the loop is done!"
_
_! Example output:
 loop #1 loop #2 loop #3
 --OK, the loop is done!
_

advanceは、リスト指向の出力では使用できないことに注意してください(「*」を使用して「何でも印刷」します)。したがって、各書き込みステートメントに対して単一の空白スペース、文字列、および単一の整数を出力するフォーマット指定子fmt="(1x,a,i0)"の例を示しました。言語リファレンスやコンパイラのドキュメントが役に立ちます。たとえば、 ここ を参照してください。

他の人が示唆しているように、これが望ましい動作である場合は、writeを使用するのが最善です。何らかの理由でまだprintを使用したい場合は、出力アイテムを出力する前に、単一の変数または変数のリストにアセンブルする必要があります。

4
Matt P