c_______________________________________________________________________________
c
c     PROGRAMA PRINCIPAL (Version Preliminar: NO FUNCIONA)
c
c     Este programa calcula el producto matricial
c
c               C             = A             . B
c               ~ (nfc x ncc)   ~ (nfa x nca)   ~ (nfb x ncb)
c
c     siendo nca = nfb, nfc = nfa, ncc = ncb.
c
c     Las matrices A y B se encuentran almacenadas en sendos archivos de texto.
c     La matriz producto C se escribe en un archivo de texto del mismo tipo.
c
c     Notas:
c            Se declaran matrices de tamano variable (no permitido en Fortran).
c            El programa NO SE PUEDE COMPILAR tal y como esta.
c                   
c_______________________________________________________________________________

      implicit real*8 (a-h,o-z)




      dimension a(nfa,nca),b(nfb,ncb),c(nfc,ncc)     ! DECLARACIONES INCORRECTAS

      character matrA*80, matrB*80, matrC*80
      character fmt*80









c.....Leemos la matriz A
    1 write(6,'(/a,$)') ' Archivo correspondiente a la matriz A : '
      read(5,'(a)') matrA
      logA=11
      open(unit=logA,status='old',file=matrA,err=1)  ! abrimos el archivo
      read(logA,'()')                                ! ignoramos primera linea
      read(logA,'(a)') fmt                           ! formato de lectura
      read(logA,fmt) nfa,nca                         ! dimensiones de matriz A

      call LeerMatriz(logA,fmt,nfa,nca,a)            ! leemos la matriz A
      close(unit=logA,status='keep')                 ! cerramos el archivo


c.....Leemos la matriz B
    2 write(6,'(/a,$)') ' Archivo correspondiente a la matriz B : '
      read(5,'(a)') matrB
      logB=12
      open(unit=logB,status='old',file=matrB,err=2)  ! abrimos el archivo
      read(logB,'()')                                ! ignoramos primera linea
      read(logB,'(a)') fmt                           ! formato de lectura
      read(logB,fmt) nfb,ncb                         ! dimensiones de matriz B

      call LeerMatriz(logB,fmt,nfb,ncb,b)            ! leemos la matriz B
      close(unit=logB,status='keep')                 ! cerramos el archivo


c.....Calculamos y escribimos la matriz producto C = A * B
    3 write(6,'(/a,$)') ' Archivo correspondiente a la matriz C : '
      read(5,'(a)') matrC
      logC=13
      open(unit=logC,status='new',file=matrC,err=3)  ! abrimos el archivo
      write(logC,'(a)') 'Matriz Producto C = A . B'  ! titulo en primera linea
      fmt='(2i6,d25.16)'
      write(logC,'(a)') fmt                          ! formato de escritura
      nfc=nfa
      ncc=ncb
      write(logC,fmt) nfc,ncc                        ! dimensiones de matriz C

      call MultiplicarMatrices(nfa,nca,a,
     .                         nfb,ncb,b,
     .                         nfc,ncc,c)            ! calculamos C = A . B
      call EscribirMatriz(LogC,fmt,nfc,ncc,c)        ! escribimos la matriz C
      close(unit=logC,status='keep')                 ! cerramos el archivo 


c.....Fin de programa
      call exit(0)

      end
