--- /dev/null
+C
+C Fortran program to test the basic Fortran types
+C
+ subroutine SetupBasicTypes( basictypes, basicnames )
+ include 'mpif.h'
+ integer basictypes(*)
+ character*40 basicnames(*)
+C
+ basictypes(1) = MPI_INTEGER
+ basictypes(2) = MPI_REAL
+ basictypes(3) = MPI_DOUBLE_PRECISION
+ basictypes(4) = MPI_COMPLEX
+ basictypes(5) = MPI_LOGICAL
+ basictypes(6) = MPI_CHARACTER
+ basictypes(7) = MPI_BYTE
+ basictypes(8) = MPI_PACKED
+C
+ basicnames(1) = 'INTEGER'
+ basicnames(2) = 'REAL'
+ basicnames(3) = 'DOUBLE PRECISION'
+ basicnames(4) = 'COMPLEX'
+ basicnames(5) = 'LOGICAL'
+ basicnames(6) = 'CHARACTER'
+ basicnames(7) = 'BYTE'
+ basicnames(8) = 'PACKED'
+C
+ return
+ end
+C
+ program main
+ include 'mpif.h'
+ integer basictypes(8)
+ character*40 basicnames(8)
+ integer i, errcnt, ierr
+ integer size, extent, ub, lb
+C
+ call mpi_init(ierr)
+C
+ call SetupBasicTypes( basictypes, basicnames )
+C
+ errcnt = 0
+ do 10 i=1,8
+ call MPI_Type_size( BasicTypes(i), size, ierr )
+ call MPI_Type_extent( BasicTypes(i), extent, ierr )
+ call MPI_Type_lb( BasicTypes(i), lb, ierr )
+ call MPI_Type_ub( BasicTypes(i), ub, ierr )
+ if (size .ne. extent) then
+ errcnt = errcnt + 1
+ print *, "size (", size, ") != extent (", extent,
+ * ") for basic type ", basicnames(i)
+ endif
+ if (lb .ne. 0) then
+ errcnt = errcnt + 1
+ print *, "Lowerbound of ", basicnames(i), " was ", lb,
+ * " instead of 0"
+ endif
+ if (ub .ne. extent) then
+ errcnt = errcnt + 1
+ print *, "Upperbound of ", basicnames(i), " was ",
+ * ub, " instead of ", extent
+ endif
+ 10 continue
+C
+ if (errcnt .gt. 0) then
+ print *, "Found ", errcnt, " errors in testing Fortran types"
+ else
+ print *, " Found no errors in basic Fortran "
+ endif
+C
+ call mpi_finalize(ierr)
+ end