2013-06-05 25 views
6

Khi tôi chạy chương trình đơn giản sau đâyLỗi: tuyên bố không thể xếp loại trong 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 

nó cho thấy

Error: Unclassifiable statement

Trả lời

8

Bạn chưa tuyên bố gì x, y, và z đang trong chương trình con. Fortran không biết nếu các biến này là các hàm (chưa được xác định) hay một mảng. Việc sửa chữa rất đơn giản: khai báo mảng một cách rõ ràng trong chương trình con:

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

Cũng như ifort nhắc nhở rằng (biến z) tên này chưa được khai báo là một mảng hoặc một function.u cần phải khai báo biến x, y , z là mảng trong chương trình con polymul.

Các vấn đề liên quan