Reputation: 3
How could I fix the Unclassifiable statement
error in the if () to go
? The error is in
DO J=1,N
IF ( I .EQ. J )GO TO 3
Y=Y-A( I , J )*X( J )
3 END DO
program gausssiedel
INTEGER, PARAMETER :: M=100
INTEGER :: NMI, IJK , ITER, I , J
real , dimension (M,M) :: A
REAL,DIMENSION(M) :: B,X
WRITE(6 , * ) 'ECUACIONES DE ENTRADA. '
OPEN(2 ,FILE= 'datos . dat ' ,STATUS='OLD' )
READ(2 , * )N,NMI,NAPROX ! LEE DATOS DEL ARCHIVO DE ENTRADA
APROX=10.0**(-NAPROX)
DO I =1,N
READ( 2 , * ) (A( I , J ) , J=1,N) ,B( I )
WRITE( 6 , * ) (A( I , J ) , J=1,N) ,B( I )
END DO
CLOSE (2)
DO I =1,N
X( I ) = 0.0 ! PRIMERA APROXIMACION DE LA SOLUCION
END DO
WRITE(6 , * ) 'RESULTADOS'
WRITE( * , * ) ! IMPRIME RESULTADOS
DO ITER=1,NMI
WRITE( * , * )ITER , (X( J ) , J=1,N)
IJK = 0
DO I =1,N
Y=B( I )
DO J=1,N
IF ( I .EQ. J )GO TO 3
Y=Y-A( I , J )*X( J )
3 END DO
Y=Y/A( I , I )
IF (ABS( (X( I)-Y)/Y ) .GT.APROX) IJK=1
X( I ) = Y
END DO
IF ( IJK .EQ.0 )GO TO 6
END DO
WRITE( * , * ) 'NUMERO DE ITERACIONES: ' ,NMI
6 CONTINUE
pause
end program
Upvotes: 0
Views: 409
Reputation: 1026
What do you expect the do-loop to do? Are you just trying to skip the i == j
value or exit the do-loop. You can achieve both without labeling the end do
statement.
Skip the i == j
case:
DO J=1,N
IF ( I .EQ. J ) cycle
Y=Y-A( I , J )*X( J )
END DO
Exit the loop case:
DO J=1,N
IF ( I .EQ. J ) exit
Y=Y-A( I , J )*X( J )
END DO
Upvotes: 2