Trying to understand an IF command in Fortran

Viewed 58

I have a Fortran subroutine that I try to convert to VBA

It features a command (IF(N-1) 1002,1001,1000) that I don't understand what it does:

 SUBROUTINE MINV(A,N,D,L,M)
      DIMENSION A(N,N),L(N),M(N)
C INVERTS A GENERAL MATRIX USING FULL PIVOTING.
C   A    INPUT MATRIX, RETURNED INVERTED
C   N    DIMENSION OF MATRIX A
C   D    DETERMINANT OF A
C   L    SCRATCH VECTOR
C   M    SCRATCH VECTOR
      IF(N-1) 1002,1001,1000
1000  D=1.0
      DO 80 K=1,N
      IW=K
      JW=K
      CALL MBGA(A,IW,JW,BIGA,K,N)
      D=D*BIGA
      IF(ABS(D).LT.1.0E-30) GO TO 1003
      L(K)=IW
      M(K)=JW
      IF(IW.NE.K) CALL MXSW(A(K,1),A(IW,1),N,N)
      IF(JW.NE.K) CALL MXSW(A(1,K),A(1,JW),1,N)
      X=-1.0/BIGA
      CALL MRDU(A,X,K,N)
80    A(K,K)=X
      K=N-1
100   I=L(K)
      IF(I.NE.K) CALL MXSW(A(1,I),A(1,K),1,N)
      J=M(K)
      IF(J.NE.K) CALL MXSW(A(J,1),A(K,1),N,N)
      K=K-1
      IF(K.GE.1) GO TO 100
      RETURN
1001  D=A(1,1)
      A(1,1)=1.0/A(1,1)
      RETURN
1002  write(*,1101) N
1101  FORMAT(1X,'MINV: INVALID N =',I8)
      STOP
1003  write(*,1102)
1102  FORMAT(1X,'MINV: SINGULAR MATRIX')
      STOP
      END

Any help in converting the command to VBA will be welcomed

0 Answers
Related