Fortran处理资料,读取文件问题

把书重新看了一遍,里面说open只能读取单个文件。但我一直好奇不能通过循环来读取更多文件吗,非要复制一大行open来读取很多文件吗?有谁知道其他办法吗?我的编程如下:(,... 把书重新看了一遍,里面说open只能读取单个文件。但我一直好奇不能通过循环来读取更多文件吗,非要复制一大行open来读取很多文件吗?
有谁知道其他办法吗?

我的编程如下:(,计算2000年4月13日20时和4月14日08时500和850hPa的涡度以及散度,水汽通量、水汽通量散度 。。。。老是提示找不到路劲unused local variable NAME)
parameter(nx=111,ny=61,a=63.71,pi=3.14,g=9.8)
dimension u(nx,ny),v(nx,ny),vor(nx,ny),div(nx,ny),q(nx,ny),adqv(nx,ny),qu(nx,ny),qv(nx,ny)
real lat(ny)
integer i,j
parameter(n=3)

character name(n)*13
data (name(i),i=1,n)/'00041312.50u','00041312.50v','00041312.50Q'/

do i=1,n
open(i,file='f:\data\name(n)',status='old',form='formatted')
end do

read(1,*)
do j=1,ny
read(11,100)(u(i,j),i=1,nx)
enddo
close(1)

read(2,*)
do j=1,ny
read(12,100)(v(i,j),i=1,nx)
enddo
close(2)

read(3,*)
do j=1,ny
read(13,100)(q(i,j),i=1,nx)
enddo
CLOSE(3)

100 format(10f8.2)
do j=1,ny
lat(j)=10.0+float(j-1)*1.0
lat(j)=lat(j)*pi/180
enddo

do i=2,nx-1
do j=2,ny-1
vor(i,j)=((v(i+1,j)-v(i-1,j))/(cos(lat(j))*pi/180)-(u(i,j+1)-u(i,j-1))/pi*180+2*u(i,j)*tan(lat(j)))/(2*a)
div(i,j)=((u(i+1,j)-u(i-1,j))/(cos(lat(j))*pi/180)+(v(i,j+1)-v(i,j-1))/pi*180-2*v(i,j)*tan(lat(j)))/2/a
qu(i,j)=q(i,j)*u(i,j)
qv(i,j)=q(i,j)*v(i,j)
adqv(i,j)=((u(i,j)*(q(i+1,j)-q(i-1,j))/(cos(lat(j))*pi/180)+v(i,j)*(q(i,j+1)-q(i,j-1))/(pi/180))/(2*a)+q(i,j)*div(i,j))/g
enddo
enddo

open(8,file='f:\data\adqv.grd',form='binary')
write(8)((vor(i,j),i=1,nx),j=1,ny)
write(8)((div(i,j),i=1,nx),j=1,ny)
write(8)((adqv(i,j),i=1,nx),j=1,ny)
write(8)((qu(i,j),i=1,nx),j=1,ny)
write(8)((qv(i,j),i=1,nx),j=1,ny)
close(8)

end
根据下楼的建议修改为:open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
链接后,没有错误,但还是显示“ warning FOR4280: unused local variable NAME
展开
 我来答
匿名用户
2009-05-16
展开全部
do i=1,n
open(i,file='f:\data\name(n)',status='old',form='formatted')
end do

这段中open语句是有问题的。
name应该是character数组,它后面有空白字符的,而且括号里应该用变量i,而不是n。
open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')

==================
答复补充:

parameter(nx=111,ny=61,a=63.71,pi=3.14,g=9.8,parameter(n=3)
u(nx,ny),v(nx,ny),vor(nx,ny),div(nx,ny),q(nx,ny),adqv(nx,ny),qu(nx,ny),qv(nx,ny)
real lat(ny)
integer i,j
)

character(len=13) name(n)
data (name(i),i=1,n)/'00041312.50u','00041312.50v','00041312.50Q'/

do i=1,n
open(i,file="f:\data\"//trim(name(i)),status='old',form='formatted')
end do
goldentiger360
2009-05-10 · TA获得超过121个赞
知道答主
回答量:95
采纳率:0%
帮助的人:28万
展开全部
write(8)((qv(i,j),i=1,nx),j=1,ny)
语法错误吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leareal
2009-05-09 · 超过14用户采纳过TA的回答
知道答主
回答量:298
采纳率:0%
帮助的人:84万
展开全部
tainan
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式