2013-06-05 7 views
6

Kiedy wpadłem następujący prosty programBłąd: sklasyfikowania oświadczenie w 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 

pokazał

Error: Unclassifiable statement

Odpowiedz

8

Nie zadeklarowały co x, y i z są w podprogramie. Fortran nie wie, czy te zmienne są funkcjami (które nie zostały zdefiniowane), czy tablicą. Rozwiązaniem jest prosty: zadeklarować tablice wyraźnie w podprogramie:

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

Podobnie jak ifort podpowiada, że ​​(zmienna oo) Ta nazwa nie została zadeklarowana jako tablica lub function.u trzeba zadeklarować zmienne X, Y , z do tablic w podprogramie polymul.