本帖最后由 li913 于 2020-5-17 17:51 编辑
研究了两天,发现这个代码是比较奇葩的,典型的国外开源代码风格,故意让人看不懂(也可能是代码太老了)。核心也就那么十来行。将所有数据读入数组,通过一定规则(numchk函数)判断每个数据的真实类型(real 或 integer),然后每6个数据输出一行。
[Fortran] 纯文本查看 复制代码 !判断数据是整数还是实数
subroutine numchk (ia,icode)
character aho*7
write(aho,'(i7)') ia
if(aho.eq.'*******') then
icode = 0
else
icode = 1
endif
end
program test
implicit none
integer(4) m, n, i, j, k
real,allocatable:: a(:)
real b
equivalence(b,n)
character cl*3
!读取
open(10,file='FASTLIB', ACCESS='SEQUENTIAL',FORM='UNFORMATTED')
read(10) m
allocate(a(m)) !分配空间
rewind(10)
read(10) m, a(1:m)
close(10)
!输出
open(10,file='out.txt')
k=0
do i = 1, m
b = a(i)
k=k+1
if(mod(k,6)==0) then !每6个数据输出一行
cl = 'yes'
else
cl = 'no'
end if
call numchk(n,j) !判断数据是整数还是实数
if(j==0) then
write(10,'(1pe12.5)', advance=cl) b
else
write(10,'(4x,i7,1x)',advance=cl) n
end if
end do
end
|