在 Fortran 中编写多个输出文件 [英] Writing multiple output files in Fortran

查看:15
本文介绍了在 Fortran 中编写多个输出文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的,我正在编写一个代码,它将输出写入多个名为 1.dat、2.dat 的文件中......这是我的代码,但它给出了一些不寻常的输出.你能告诉我我的代码有什么问题吗?基本上我无法获得正确的语法来打开多个文件,在它们上写入并在打开下一个文件之前关闭.谢谢你.我的代码:

Dear All, I am writing a code that writes the out put in multiple files named as 1.dat, 2.dat, ..... Here is my code but it gives some unusual output. May you tell me what is wrong in my code please? Basically I could not get the correct syntax to open multiple files, write on them and close before the next file is opened. Thank you. My Code:

implicit double precision (a-h,o-z),integer(i-n)
dimension b(3300,78805),bb(78805)
character*70,fn 
character*80,fnw 
nf = 3600       ! NUMBER OF FILES
nj = 360        ! Number of rows in file.
do j = 1, nj
    bb(j)  = 0.0
end do
c-------!Body program-----------------------------------------------
iout = 0    ! Output Files upto "ns" no.
DO i= 1,nf  ! LOOP FOR THE NUMBER OF FILES
    if(mod(i,180).eq.0.0) then
        open(unit = iout, file = 'formatted')
        x = 0.0
        do j = 1, nj
            bb(j) = sin(x)
            write(iout,11) int(x),bb(j)
            x = x + 1.0
        end do
        close(iout)
        iout = iout + 1
    end if
END DO
11  format(i0,'.dat')   
END

推荐答案

所以有一些事情不是很清楚你的代码,但我认为这里最相关的位是你想用 指定文件名open 语句中的 file =,而不是格式,并且使用 iout 循环单元是有问题的,因为您最终会遇到标准输入和标准输出的系统定义单元.此外,使用该格式行,您似乎已准备好创建文件名,但您从未真正使用它.

So there are a few things not immediately clear about your code, but I think here the most relevant bits are that you want to specify the filename with file = in the open statement, not the formatting, and looping over units with iout is problematic because you'll eventually hit system-defined units for stdin and stdout. Also, with that format line it looks like you're getting ready to create the filename, but you never actually use it.

我不确定你在哪里;与 mod 测试等一起进行,但下面是上面的精简版本,它只是在循环中创建文件:

I'm not sure where you're; going with the mod test, etc, but below is a stripped down version of above which just creates the files ina loop:

program manyfiles
    implicit none
    character(len=70) :: fn
    integer, parameter :: numfiles=40
    integer, parameter :: outunit=44

    integer :: filenum, j

    do filenum=1,numfiles
        ! build filename -- i.dat
        write(fn,fmt='(i0,a)') filenum, '.dat'

        ! open it with a fixed unit number
        open(unit=outunit,file=fn, form='formatted')

        ! write something
        write(outunit, *) filenum

        ! close it 
        close(outunit)
    enddo
end program manyfiles

这篇关于在 Fortran 中编写多个输出文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆