เมื่อฉันพยายามคอมไพล์ calrank.for (CALRANK_v7.0.0_L140912.zip) ด้วย gfortran ฉันได้รับข้อผิดพลาดนี้:
> gfortran -m64 -c -o calrank.o calrank.for
calrank.for:1922:32:
write(io,'(2f10.3,1p1000(2x,e16.7,1x,2a10,1x))')
1
Error: Comma required after P descriptor in format string at (1)
เมื่อฉันใส่ลูกน้ำ ฉันได้รับข้อผิดพลาดเดียวกัน
ฉันสังเกตเพียงว่าโค้ดนี้เคยถูกคอมไพล์มาก่อนด้วย LF95
subroutine xycout(io,nrank,nsp)
use userinf
use header
use rankdata
implicit none
integer :: io,nrank,nsp
integer :: k,ir,is,i
character(len=20) :: head1,head2,head3
character(len=40) :: add1x,add2x,add3x
character(len=40) :: add1(nsp),add2(nsp)
character(len=40) :: add3(nsp)
......
c --- Loop over receptors to write data records
do ir=1,ntotrec(k)
write(io,'(2f10.3,1p1000(2x,e16.7,1x,2a10,1x))')
& xreckm(ir,k),yreckm(ir,k),
& (xounit(is,k)*rankvalue(ir,is,nrank),
& arankdate(ir,is,nrank),
& aranktime(ir,is,nrank),is=1,nspout(k))
enddo
return
end
ตัวแปรบางตัวถูกกำหนดไว้ที่อื่นของโค้ดดังนี้:
c --- Real arrays for header (derived)
allocate (xreckm(mxrec,k),yreckm(mxrec,k))
c --- Modified units multiplier
allocate (xounit(mxspout,k))
c --- Array of values (all species, receptors) for requested ranks
allocate (rankvalue(ntotrec(k),nspout(k),n_ranks))
allocate (arankdate(ntotrec(k),nspout(k),n_ranks))
allocate (aranktime(ntotrec(k),nspout(k),n_ranks))
c --- Integer arrays for header
deallocate (ndrec,nctrec,nspout,i2dmet,iutmzn)