2013-06-05 4 views
6

Quando ho eseguito il seguente programma sempliceErrore: dichiarazione inclassificabile in FORTRAN

program test 
! integer m,n,r,i 
double precision x(2),y(3),z(4) 
x=(/2.0,1.0/) 
y=(/1.0,2.0,1.0/) 
call polymul(x,2,y,3,z,4) 
print *,z 
end 

subroutine polymul(x,m,y,n,z,r) 
! polynominal multipy 
integer i,j,k 
do i=1,r 
z(i)=0.0 
end do 
do i=1,m 
    do j=1,n 
    k=i+j-1 
    z(k)=z(k)+x(i)*y(j) 
    end do 
end do 
end 

ha mostrato

Error: Unclassifiable statement

risposta

8

Non hai dichiarato quanto x, y, e z sono nella subroutine. Fortran non sa se queste variabili sono funzioni (che non sono state definite) o una matrice. La soluzione è semplice: dichiarare le matrici esplicitamente nella subroutine:

subroutine polymul(x, m, y, n, z, r) 
     implicit none 
     integer m, n, r 
     double precision x(m), y(n), z(r) 
     integer i, j, k 
     do i=1,r 
      z(i)=0.0 
     enddo 
     do i=1,m 
      do j=1,n 
      k=i+j-1 
      z(k)=z(k)+x(i)*y(j) 
      enddo 
     enddo 
    end subroutine 
2

Come ifort messaggi in cui (z variabile) Questo nome non è stato dichiarato come una matrice o un function.u necessario dichiarare variabile x, y , z per essere array in subroutine polymul.