Fortran-90 und fortran-77

Fortran-90 Programm

-- variable Dimension --
PROGRAM mymatmul   ! c Manfred Ries
  IMPLICIT NONE
  INTEGER :: n, i, j
  REAL, ALLOCATABLE :: A(:,:), B(:,:)
  REAL, ALLOCATABLE :: C(:,:)

  n = 2
  ALLOCATE ( A(n,n), B(n,n) )
  ALLOCATE ( C(n,n) )
  A = reshape( (/1,2,3,4/), (/2,2/) )
  B = TRANSPOSE(A)
  C = MATMUL(A, B)
  WRITE(*,'(2F4.0)') ((C(i,j), j=1,n), i=1,n)

END PROGRAM mymatmul

Das Fortran-77-Programm

-- feste Dimension --
      IMPLICIT NONE
      INTEGER :: n, i, j, k
      REAL A(2,2), B(2,2)
      REAL C(2,2), summe

      n = 2
      A(1,1) = 1
      A(2,1) = 2
      A(1,2) = 3
      A(2,2) = 4
       
      DO 100 i=1,n 
         DO 200 j=1,n
	    B(i,j) = A(j,i)
200      CONTINUE      	
100   CONTINUE

      DO 300 i=1,n 
         DO 400 j=1,n
	    summe = 0.0
	    DO 500 k=1,n
	       summe = summe + A(i,k) * B(k,j)
500         CONTINUE	
         C(i,j) = summe    
400      CONTINUE      	
300   CONTINUE
      WRITE(*,10000) ((C(i,j), j=1,n), i=1,n)
10000 FORMAT(2F4.0)
      END