改行なしで多くの値を印刷するにはどうすればよいですか?
PRINT *, "foo:", foo, ", bar:", bar, ", baz:", baz
どうやら、これはWRITE
( ここ と そこ )で可能です。いくつかの値を出力しながら、PRINT
とその異なる構文で同じことを実現するにはどうすればよいですか?
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
を使用したい場合は、出力アイテムを出力する前に、単一の変数または変数のリストにアセンブルする必要があります。