Read/Write Matlab files in fortran



I'm starting to write a fortran 90 interface to a C library I wrote to
read/write matlab files. As I would like to make it publicly available
and I'm relativley new to fortran, I would like to get feedback on the
mannerisms in calling these functions. If it's not elegant or
irritating to use nobody would care to use it, so below is a test
program I write to read 3 datasets out of a matlab file. Suggestions
please?

PROGRAM test
USE MATIO

CHARACTER(len=4) :: prog_name
CHARACTER(len=8) :: filename
CHARACTER(len=3) :: i32name,i16name
CHARACTER(len=1) :: dname,sname
CHARACTER(LEN=2) :: i8name
INTEGER(KIND=4) :: mode, err, i,rank,
class_type,data_type
INTEGER(KIND=4),DIMENSION(50) :: i32
INTEGER(KIND=2),DIMENSION(50) :: i16
INTEGER(KIND=1),DIMENSION(50) :: i8
REAL(KIND=4), DIMENSION(50) :: s
REAL(KIND=8), DIMENSION(50) :: d
INTEGER(KIND=4),DIMENSION(2) :: dims
TYPE(mat_t) :: mat
TYPE(matvar_t) :: matvar

prog_name = 'test'
filename = 'test.mat'
i16name = 'i16'
i8name = 'i8'
i32name = 'i32'
dname = 'd'
sname = 's'
mode = MAT_ACC_RDONLY
dims = (/5,10/)
CALL FMAT_LOGINIT(prog_name)
err = FMAT_OPEN(filename,mode,mat)
IF ( err .EQ. 0 ) THEN
! Read Int32 data
err = FMAT_VARREADINFO(mat,i32name,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,i32)
PRINT *,i32
err = FMAT_VARFREE(matvar)
END IF
! Read Int16 data
err = FMAT_VARREADINFO(mat,i16name,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,i16)
PRINT *,i16
err = FMAT_VARFREE(matvar)
END IF
! Read Int8 data
err = FMAT_VARREADINFO(mat,i8name,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,i8)
PRINT *,i8
err = FMAT_VARFREE(matvar)
END IF
! Read double-precision data
err = FMAT_VARREADINFO(mat,dname,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,dims,d)
PRINT *,d
err = FMAT_VARFREE(matvar)
END IF
! Read single-precision data
err = FMAT_VARREADINFO(mat,sname,matvar)
IF ( err .EQ. 0 ) THEN
err = FMAT_VARREADDATA(mat,matvar,dims,s)
PRINT *,s
err = FMAT_VARFREE(matvar)
END IF
err = FMAT_CLOSE(mat)
END IF
END PROGRAM test

.



Relevant Pages

  • Re: Fortran 90 MAT FIle I/O module
    ... Duane Bozarth wrote: ... However, I have limited access to fortran compilers, and i guess c compilers for that matter. ... matlab files, and an interest in reading/writing matlab files to help me implement the Fortran ...
    (comp.soft-sys.matlab)
  • Re: double precision difference between matlab and fortran 90
    ... I have a variable 'alpha', ... The question that remains is why does fortran print 0.999999999999999 ... end program test ... calculation carried out by the CVF compiler is rounded to nearest value and ...
    (comp.lang.fortran)
  • Re: overload array index operator
    ... >> Is there any way to overload the index operator in fortran? ... > end subroutine repoint ... > end program test ...
    (comp.lang.fortran)
  • Re: Version detection fails
    ... implicit none ... recursive subroutine aux ... end program test ... IntelFortran Compiler for IntelEM64T-based applications, ...
    (comp.lang.fortran)
  • Fortran 90 MAT FIle I/O module
    ... Rather new to fortran 90. ... I have gotten some of it to compile with ... malloc/calloc routines since those calls get wrapped through the g95 ... END PROGRAM test ...
    (comp.soft-sys.matlab)