2013-05-16 1 views
1

J'écris un code pour la décomposition de LU et je ne sais pas comment corriger la "déclaration de déclaration de données inattendue" pointée à la ligne 8 (où je déclare un tableau.) Voir le fragment de code) . Pourquoi est-ce inattendu?Déclaration de déclaration de données inattendue

!Decomposição LU 
!----------------------------------------------------------- 
     PROGRAM LUdecomp 
     IMPLICIT INTEGER (I-K,N), REAL (A-H, L-M,O-Z) 
     INTEGER, PARAMETER :: N=3 
     REAL, DIMENSION (N,N) :: A,L,U  
     A = reshape((/3.,1.,4.,4.,2.,0.,3.,2.,3./),(/3,3/)) !exemplo do Bortoli******* 
     REAL, DIMENSION(3) :: B=(/9.,3.,-2./),Z,X  
     OPEN(1,file = 'LUFACTOR.out') 
! 
!   FORALL (I = 1:N, J = 1:N) A(I,J) = 1.0/REAL(I+J-1) 
!-------Fazendo a fatoração A = LU----------------------------- 
     CALL LU(N, A, L, U) 
     DO I=1,N 
      WRITE(*,10)(L(I,J), J=1,N), (U(I,J), J=1,N) 
     END DO 
    10 FORMAT(3(F8.4), 7x, 3(F8.4)) 
! 

Répondre

9

Cette déclaration

REAL, DIMENSION(3) :: B=(/9.,3.,-2./),Z,X  

est au mauvais endroit. Dans une unité de programme Fortran (programme, sous-programme, fonction) - certainement sans les nouvelles constructions ASSOCIATE et BLOCK - toutes les déclarations doivent précéder toutes les instructions exécutables.

Déplacez l'instruction mal placée avant la première instruction exécutable.