有时候为了便于数据显示和后期的数据处理,我们希望能控制Fortran程序打印的数据列数,但是write语句不允许在格式控制符中加入变量。其实通过一些技巧,这是可以实现的。
示例代码如下:
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
dimension a(20),b(20),c(20)
character*100 frmt
a=1.d0
b=2.d0
c=3.d0
write(*,*)"Please specify the number of columns (default: 5):"
read(*,*) ncol
if(ncol .lt. 1) ncol=5
write(*,"(/,'a=')")
do i=1,20
write(*,"(f20.12)",advance='no')a(i)
if(mod(i,ncol) .eq. 0) write(*,*)
end do
write(*,*)
frmt='( f11.3)'
write(frmt(2:5),"(i4)")ncol
write(*,"(/,'b=')")
write(*,trim(frmt))b
write(*,*)
write(*,*)"Please specify the format (for example, 5f12.6):"
read(*,*)frmt
frmt="(" // trim(frmt) // "