- 积分
- 2228
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-26
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MacTaylor 于 2012-6-14 13:46 编辑
我之前有一个脚本,在win下做东西都没问题,在Unxi下编译出现错误提示:
PGF90-S-0201-Illegal I/O specifier - FILE (uq.f: 23)
0 inform, 0 warnings, 1 severes, 0 fatal for MAIN
在我自己机子上的Linux下的gfortran编译出现以下提示:
open(unit=11,file=filename(M,:),form='unformatted',
1
错误: FILE 标记在(1)处必须是标量
似乎是读入语句和输出语句有问题,是因为recl=4在不同环境下的设定的问题吗?我确认此程序在win下没有问题,请教大家是怎么回事?谢谢!
脚本如下:
dimension uq(256,128,2400),uqt(256,128,2400,8)
real lon(256),lat(128)
integer M,L
character*7 filename(8,7)
filename(1,:)='uq1.bin'
filename(2,:)='uq2.bin'
filename(3,:)='uq3.bin'
filename(4,:)='uq4.bin'
filename(5,:)='uq5.bin'
filename(6,:)='uq6.bin'
filename(7,:)='uq7.bin'
filename(8,:)='uq8.bin'
do i=1,256
lon(i)=0.0+(i-1)*1.40625
enddo
do j=1,128
lat(j)=-90.0+(j-1)*1.40625
enddo
do M=1,8
open(unit=11,file=filename(M,:),form='unformatted',
& access='direct',recl=256*128*2400*4)
read(11,rec=1)uq
close(11)
do i=1,256
do j=1,128
do k=1,2400
if(abs(uq(i,j,k)).ge.100000) then
uqt(i,j,k,M)=0
else
uqt(i,j,k,M)=uq(i,j,k)
endif
enddo
enddo
enddo
enddo
do i=1,256
do j=1,128
do k=1,2400
s=0
do L=1,8
s=s+uqt(i,j,k,L)
enddo
uq(i,j,k)=s
enddo
enddo
enddo
open(unit=12,file='uq.bin',form='unformatted',
& access='direct',recl=256*128*2400*4)
write(12,rec=1)(((uq(i,j,k),i=1,256),j=1,128),k=1,2400)
close(12)
end
|
|