Fortran Coder

查看: 11405|回复: 5
打印 上一主题 下一主题

[求助] 一个批量运算的相关问题

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2015-3-30 19:15:32 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
Program main
  Implicit None
  Character (160) :: filename
  Character (160) :: fn1, fn2, fn3, tmp
  Integer :: i, j, num
  Real :: a(4), b(4), c(4)
  Integer ios

  fn1 = 'c6c8_ID_'
  fn2 = 'c6_'
  fn3 = 'c8_'

  num = 160 ! total number of result files

  Print *, 'Running'
  Do j = 1, num
    Write (tmp, *) j
    !c print*, j
    Open (j, File='D:\c6c8\'//trim(adjustl(fn1))//trim(adjustl(tmp))//'.dat', Status='unknown') ! save result here
    Write (j, '(3f8.3)') 0.0, 0.0, 1.0
  End Do

  Open (20, File='IDlist.dat', Status='old') ! 里面存放的是10的倍数,共计9200个。
  Do i = 1, 9200
    Read (20, *, Iostat=ios) filename
    If (ios/=0) Exit
    ! print*, filename
    Open (200, File='D:\C6\'//trim(adjustl(fn2))//trim(adjustl(filename))//'.dat')
    Open (300, File='D:\C8\'//trim(adjustl(fn3))//trim(adjustl(filename))//'.dat')

    Do j = 1, num
      Read (200, *) a(:) ! first row=ID number, then x,y,z
      Read (300, *) b(:) ! first row=ID number
      c(:) = b(:) - a(:)
      !c print*, c(:)
      Write ( j , '(3f8.3)') c(2:4) ! write( j ,
    End Do
    Close (300)!// Close 在循环外面
    Close (200)
  End Do
  Close (20)
  Do j = 1, num
    Close (j)
  End Do
End Program main

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2015-3-30 19:56:28 | 显示全部楼层
你把 Open(20 , Read(20 , Close(20 都改为 201
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-17 19:36

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表