[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1-258-g4d8d251

Service Account noreply at mpich.org
Thu May 22 08:58:41 CDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  4d8d25184cc87a2694ee808b560f1acb29447c59 (commit)
       via  60059770af3fc405224b484dd2198edb3ea36179 (commit)
       via  59acd4525a50cd8c019c7154526a65ea52b92951 (commit)
       via  8ad3b1379d6598865bc621af3178d77a24c3dc82 (commit)
       via  a20b3882f77e781eb13aa7ed35346058c0f23d82 (commit)
       via  9008c2f7846ddbdbef6ee02ca42bf9a02c80e1e3 (commit)
       via  1c2b3d35067af0ba8a66c320cc2e058f6e28f44e (commit)
      from  738d72745181ef447153f7ed1d94716455685fa1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/4d8d25184cc87a2694ee808b560f1acb29447c59

commit 4d8d25184cc87a2694ee808b560f1acb29447c59
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Mon May 19 15:23:19 2014 -0700

    Add a bunch of F08 subarray tests
    
    No review since F08 binding is experimental now.

diff --git a/test/mpi/configure.ac b/test/mpi/configure.ac
index 2f99094..7ca2a6e 100644
--- a/test/mpi/configure.ac
+++ b/test/mpi/configure.ac
@@ -1554,6 +1554,7 @@ AC_OUTPUT(maint/testmerge \
 	  f08/attr/Makefile \
 	  f08/comm/Makefile \
 	  f08/rma/Makefile \
+	  f08/subarray/Makefile \
           cxx/Makefile \
           cxx/util/Makefile \
           cxx/attr/Makefile \
diff --git a/test/mpi/f08/subarray/Makefile.am b/test/mpi/f08/subarray/Makefile.am
new file mode 100644
index 0000000..98a71db
--- /dev/null
+++ b/test/mpi/f08/subarray/Makefile.am
@@ -0,0 +1,29 @@
+# -*- Mode: Makefile; -*-
+# vim: set ft=automake :
+#
+# (C) 2014 by Argonne National Laboratory.
+#     See COPYRIGHT in top-level directory.
+#
+
+include $(top_srcdir)/Makefile_f08.mtest
+
+EXTRA_DIST = testlist
+
+AM_DEFAULT_SOURCE_EXT = .f90
+
+noinst_PROGRAMS = \
+    test1  \
+    test2  \
+    test3  \
+    test4  \
+    test5  \
+    test6  \
+    test7  \
+    test8  \
+    test9  \
+    test10 \
+    test11 \
+    test12 \
+    test13 \
+    test14 \
+    test15
diff --git a/test/mpi/f08/subarray/test1.f90 b/test/mpi/f08/subarray/test1.f90
new file mode 100644
index 0000000..47e50ca
--- /dev/null
+++ b/test/mpi/f08/subarray/test1.f90
@@ -0,0 +1,57 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character*8 :: name='test1'
+    character*80 :: title='test1: Send/Recv - send integer'
+
+    integer :: sint, i
+    integer, dimension(10) :: iar
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        sint = 789
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+        if (verbose) print *, "rank 0 sends ", sint
+        call mpi_send(sint, 1, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else
+        call mpi_recv(sint, 1, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, status, ierr);
+
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        if (verbose) print *, "rank 1 receives ",sint
+
+        if (sint .eq. 789) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            errs = errs + 1
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test10.f90 b/test/mpi/f08/subarray/test10.f90
new file mode 100644
index 0000000..1b28f25
--- /dev/null
+++ b/test/mpi/f08/subarray/test10.f90
@@ -0,0 +1,79 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character*8 :: name='test10'
+    character*80 :: title='test 10: Isend/Irecv - send integer'
+
+    integer :: sint, i
+    integer, dimension(10) :: iar
+    type(MPI_Request) request
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        sint = 789
+        if (verbose) then
+            print *, ' ===== ', trim(title), ' ====='
+            print *, "rank 0 sends ", sint
+        endif
+
+        block
+            ASYNCHRONOUS :: sint
+
+            call mpi_isend(sint, 1, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+        end block
+    else
+        block
+            ASYNCHRONOUS :: sint
+
+            call mpi_irecv(sint, 1, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+        end block
+
+        if (verbose) print *, "rank 1 receives ",sint
+        if (sint .eq. 789) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+            errs = errs + 1
+        endif
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test11.f90 b/test/mpi/f08/subarray/test11.f90
new file mode 100644
index 0000000..a33fdc4
--- /dev/null
+++ b/test/mpi/f08/subarray/test11.f90
@@ -0,0 +1,87 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test11'
+    character (len=80) :: title='test 11: Isend/Irecv - 1d array - iar(10)'
+
+    integer :: sint, i
+    integer, dimension(10) :: iar
+    type(MPI_Request) request
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+        do i=1,10
+            iar(i)=i
+        end do
+
+        block
+            ASYNCHRONOUS :: iar
+
+            call mpi_isend(iar, 10, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+
+    else if (rank .eq. 1) then
+
+        block
+            ASYNCHRONOUS :: iar
+
+            call mpi_irecv(iar, 10, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+
+        do i=1,10
+            if (iar(i) .ne. i) then
+                if (verbose) print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",i
+                errs = errs + 1
+            endif
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            if (verbose) print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9)
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test12.f90 b/test/mpi/f08/subarray/test12.f90
new file mode 100644
index 0000000..9ad3341
--- /dev/null
+++ b/test/mpi/f08/subarray/test12.f90
@@ -0,0 +1,94 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test12'
+    character (len=80) :: title='test 12: Isend/Irecv array slice - iar(2:7)'
+
+    integer :: sint, i
+    integer, dimension(10) ::  iar, iar_check
+    type(MPI_Request) request
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+        do i=1,10
+            iar(i)=i
+        end do
+
+        block
+            ASYNCHRONOUS :: iar
+
+            call mpi_isend(iar(2:7), 6, MPI_INTEGER, 1, 678, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+
+    else if (rank .eq. 1) then
+        do i=1,10
+            iar(i)=0
+            iar_check(i)=0
+        end do
+        do i=2,7
+            iar_check(i)=i
+        end do
+
+        block
+            ASYNCHRONOUS :: iar
+
+            call mpi_irecv(iar(2:7), 6, MPI_INTEGER, 0, 678, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+
+        do i=1,10
+            if (iar(i) .ne. iar_check(i)) then
+                if (verbose) print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",iar_check(i)
+                errs = errs + 1
+            endif
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - test 12 - ", trim(title)
+        else
+            if (verbose) print *, "PE ", rank,": FAIL - test 12 - ", trim(title)
+        endif
+        if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9)
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test13.f90 b/test/mpi/f08/subarray/test13.f90
new file mode 100644
index 0000000..17d24d4
--- /dev/null
+++ b/test/mpi/f08/subarray/test13.f90
@@ -0,0 +1,219 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+use mpi_f08
+implicit none
+
+integer :: size, rank, ierr, errs
+logical :: verbose
+common /flags/ verbose
+
+integer sint, iar(10), iar_2d(9,9), iar_3d(9,9,9)
+type(MPI_Status) status
+integer i, j, k
+integer junk(1000)
+integer save_my_rank
+
+errs = 0
+verbose = .false.
+
+call MTest_Init(ierr)
+call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+save_my_rank = rank
+
+! ----------------------------------------------------------
+if (rank .eq. 0) then
+    sint = 789
+    if (verbose) then
+        write (0,*) ' ===== Trivial send/recv ====='
+        print *, ' ===== Trivial send/recv ====='
+        print *, "rank 0 sends ", sint
+    endif
+    call mpi_send(sint, 1, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, ": mpi_send exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+else
+    call mpi_recv(sint, 1, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, status, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank,": mpi_recv exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+    if (verbose) print *, "rank 1 receives ",sint
+    if (sint .eq. 789) then
+        if (verbose) print *, "PE ", rank,": PASS - Trivial send/recv"
+    else
+        if (verbose) print *, "PE ", rank,": FAIL - Trivial send/recv"
+        errs = errs + 1
+    endif
+endif
+
+! ----------------------------------------------------------
+call mpi_barrier(MPI_COMM_WORLD, ierr)
+if (rank .eq. 0) then
+    if (verbose) then
+        write (0,*) ' ===== Send/Recv iar(2:8:2) ====='
+        print *, ' ===== Send/Recv iar(2:8:2) ====='
+    endif
+
+    do i=1,10
+        iar(i)=i
+    end do
+
+    if (verbose) then
+        print *, 'PE ', rank, '(0),[', save_my_rank, ']: loc(iar)=',loc(iar)
+        print *, 'PE 0: loc(iar)=',loc(iar)
+    endif
+
+    call mpi_send(iar(2:8:2), 4, MPI_INTEGER, 1, 678, MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, "(0): mpi_send exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+else if (rank .eq. 1) then
+    if (verbose) print *, 'PE 1: loc(iar)=',loc(iar)
+    call mpi_recv(iar(2:8:2), 4, MPI_INTEGER, 0, 678, MPI_COMM_WORLD, status, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, "(1): mpi_recv exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+    do i=2,8,2
+        if (iar(i) .ne. i) then
+            if (verbose) print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",i
+            errs = errs + 1
+        endif
+    end do
+    if (errs .eq. 0) then
+        if (verbose) print *, "PE ", rank,": PASS - Send/Recv iar(2:8:2)"
+    else
+        if (verbose) print *, "PE ", rank,": FAIL - Send/Recv iar(2:8:2)"
+    endif
+endif
+
+! ----------------------------------------------------------
+call mpi_barrier(MPI_COMM_WORLD, ierr)
+if (rank .eq. 0) then
+    if (verbose) then
+        write (0, *) " ======== Simple 2d array test (iar_2d) ======== "
+        print *, " ======== Simple 2d array test (iar_2d) ======== "
+    endif
+
+    do i=1,9
+        do j=1,9
+            iar_2d(j,i) = (j * 10) + i
+        end do
+    end do
+
+    do j=1,9
+        if (verbose) print *, iar_2d(1,j), iar_2d(2,j), iar_2d(3,j), iar_2d(4,j), &
+            iar_2d(5,j), iar_2d(6,j), iar_2d(7,j), iar_2d(8,j), iar_2d(9,j)
+    end do
+
+else
+    do i=1,9
+        do j=1,9
+            iar_2d(j,i) = 0
+        end do
+    end do
+
+endif
+
+if (rank .eq. 0) then
+    if (verbose) print *, 'PE 0: Sending: loc(iar_2d)=',loc(iar_2d)
+    call mpi_send(iar_2d, 81, MPI_INTEGER, 1, 789, MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, ": mpi_send exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+else
+    if (verbose) print *, 'PE 1: Receiving: loc(iar_2d)=',loc(iar_2d)
+    call mpi_recv(iar_2d, 81, MPI_INTEGER, 0, 789, MPI_COMM_WORLD, status, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, "(1): mpi_recv exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+    do i=1,9
+        do j=1,9
+            if (iar_2d(j,i) .ne. (j * 10) + i) then
+                if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", (j * 10) + i
+                errs = errs + 1
+            endif
+        end do
+    end do
+    if (errs .eq. 0) then
+        if (verbose) print *, "PE ", rank,": PASS - Send/Recv iar_2d()"
+    else
+        if (verbose) print *, "PE ", rank,": FAIL - Send/Recv iar_2d()"
+    endif
+endif
+
+! ----------------------------------------------------------
+call mpi_barrier(MPI_COMM_WORLD, ierr)
+if (rank .eq. 0) then
+    if (verbose) then
+        write (0, *) " ======== Simple 3d array test (iar_3d) ======== "
+        print *, " ======== Simple 3d array test (iar_3d) ======== "
+    endif
+
+    do i=1,9
+        do j=1,9
+            do k=1,9
+                iar_3d(k,j,i) = (k * 100) + (j * 10) + i
+            end do
+        end do
+    end do
+
+else
+    do i=1,9
+        do j=1,9
+            do k=1,9
+                iar_3d(k, j,i) = 0
+            end do
+        end do
+    end do
+
+endif
+
+if (rank .eq. 0) then
+    if (verbose) print *, 'PE 0: Sending: loc(iar_3d)=',loc(iar_3d)
+    call mpi_send(iar_3d, 729, MPI_INTEGER, 1, 891, MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, ": mpi_send exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+else
+    if (verbose) print *, 'PE 1: Receiving: loc(iar_3d)=',loc(iar_3d)
+    call mpi_recv(iar_3d, 729, MPI_INTEGER, 0, 891, MPI_COMM_WORLD, status, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        if (verbose) print *, "PE ", rank, "(1): mpi_recv exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+
+    do i=1,9
+        do j=1,9
+            do k=1,9
+                if (iar_3d(k, j,i) .ne. (k * 100) + (j * 10) + i) then
+                    if (verbose) print *, "rank 1: iar_3d(", k, ",", j, ",", i, ")=", &
+                        iar_3d(k, j,i), ", expected ", (k * 100) + (j * 10) + i
+                    errs = errs + 1
+                endif
+            end do
+        end do
+    end do
+
+    if (errs .eq. 0) then
+        if (verbose) print *, "PE ", rank,": PASS - Send/Recv iar_3d()"
+    else
+        if (verbose) print *, "PE ", rank,": FAIL - Send/Recv iar_3d()"
+    endif
+endif
+
+call MTest_Finalize(errs)
+call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test14.f90 b/test/mpi/f08/subarray/test14.f90
new file mode 100644
index 0000000..d11bb10
--- /dev/null
+++ b/test/mpi/f08/subarray/test14.f90
@@ -0,0 +1,114 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test14'
+    character (len=80) :: title='test 14: Isend/Irecv 2d array column slice - iar_2d(:,2:6:2)'
+
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d, iar_2dch
+    type(MPI_Status) status
+    type(MPI_Request) request
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+                iar_2dch(j,i) = 0
+            end do
+        end do
+
+        do i=2,6,2
+            do j=1,9
+                iar_2dch(j,i) = (j * 10) + i
+            end do
+        end do
+    endif
+
+    if (rank .eq. 0) then
+
+        block
+            ASYNCHRONOUS :: iar_2d
+
+            call mpi_isend(iar_2d(:,2:6:2), 27, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+
+    else if (rank .eq. 1) then
+
+        block
+            ASYNCHRONOUS :: iar_2d
+
+            call mpi_irecv(iar_2d(:,2:6:2), 27, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+        end block
+
+        do i=1,9
+            do j=1,9
+                if (iar_2d(j,i) .ne. iar_2dch(j,i)) then
+                    if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i)
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            if (verbose) print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test15.f90 b/test/mpi/f08/subarray/test15.f90
new file mode 100644
index 0000000..2e183bb
--- /dev/null
+++ b/test/mpi/f08/subarray/test15.f90
@@ -0,0 +1,111 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test15'
+    character (len=80) :: title='test 15: Isend/Irecv 2d array column slice - iar_2d(1:7:3,2:6:2)'
+
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d, iar_2dch
+    type(MPI_Status) status
+    type(MPI_Request) request
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+                iar_2dch(j,i) = 0
+            end do
+        end do
+        do i=2,6,2
+            do j=1,7,3
+                iar_2dch(j,i) = (j * 10) + i
+            end do
+        end do
+
+    endif
+
+    if (rank .eq. 0) then
+        block
+            ASYNCHRONOUS :: iar_2d
+            call mpi_isend(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_isend exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+    else if (rank .eq. 1) then
+        block
+            ASYNCHRONOUS :: iar_2d
+
+            call mpi_irecv(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, request, ierr);
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,"mpi_irecv exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+            call mpi_wait(request, status, ierr)
+            if (ierr .ne. MPI_SUCCESS) then
+                if (verbose) print *,"PE ",rank,": ",name,": mpi_wait exited in error (",ierr,")"
+                errs = errs + 1
+            endif
+
+        end block
+
+        do i=2,6,2
+            do j=1,7,3
+                if (iar_2d(j,i) .ne. iar_2dch(j,i)) then
+                    if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i)
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            if (verbose) print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test2.f90 b/test/mpi/f08/subarray/test2.f90
new file mode 100644
index 0000000..b8bef1f
--- /dev/null
+++ b/test/mpi/f08/subarray/test2.f90
@@ -0,0 +1,62 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test2'
+    character (len=80) :: title='test2 : Send/Recv - 1d array - iar(10)'
+
+    integer :: i
+    integer, dimension(10) ::  iar
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+        do i=1,10
+            iar(i)=i
+        end do
+        call mpi_send(iar, 10, MPI_INTEGER, 1, 567, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        call mpi_recv(iar, 10, MPI_INTEGER, 0, 567, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        do i=1,10
+            if (iar(i) .ne. i) then
+                print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",i
+                errs = errs + 1
+            endif
+        end do
+
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9)
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test3.f90 b/test/mpi/f08/subarray/test3.f90
new file mode 100644
index 0000000..b5f5ce6
--- /dev/null
+++ b/test/mpi/f08/subarray/test3.f90
@@ -0,0 +1,67 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test3'
+    character (len=80) :: title='test3 : Send/Recv array slice - iar(2:7)'
+
+    integer :: i
+    integer, dimension(10) ::  iar, iar_check
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+        do i=1,10
+            iar(i)=i
+        end do
+        call mpi_send(iar(2:7), 6, MPI_INTEGER, 1, 678, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        do i=1,10
+            iar(i)=0
+            iar_check(i)=0
+        end do
+        do i=2,7
+            iar_check(i)=i
+        end do
+        call mpi_recv(iar(2:7), 6, MPI_INTEGER, 0, 678, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+        do i=1,10
+            if (iar(i) .ne. iar_check(i)) then
+                print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",iar_check(i)
+                errs = errs + 1
+            endif
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - test 3 - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - test 3 - ", trim(title)
+        endif
+        if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9)
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test4.f90 b/test/mpi/f08/subarray/test4.f90
new file mode 100644
index 0000000..b9085f0
--- /dev/null
+++ b/test/mpi/f08/subarray/test4.f90
@@ -0,0 +1,68 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test4'
+    character (len=80) :: title='test 4: Send/Recv array slice with stride - iar(2:8:2)'
+
+    integer :: i
+    integer, dimension(10) ::  iar, iar_check
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+        do i=1,10
+            iar(i)=i
+        end do
+        call mpi_send(iar(2:8:2), 4, MPI_INTEGER, 1, 789, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        do i=1,10
+            iar(i)=0
+            iar_check(i)=0
+        end do
+        do i=2,8,2
+            iar_check(i)=i
+        end do
+        call mpi_recv(iar(2:8:2), 4, MPI_INTEGER, 0, 789, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+        do i=1,10
+            if (iar(i) .ne. iar_check(i)) then
+                print *, "rank 1: iar(", i, ")=", iar(i), ", expected ",iar_check(i)
+                errs = errs + 1
+            endif
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        if (verbose) print *, iar(1), iar(2), iar(3), iar(4), iar(5), iar(6), iar(7), iar(8), iar(9)
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test5.f90 b/test/mpi/f08/subarray/test5.f90
new file mode 100644
index 0000000..a6289fe
--- /dev/null
+++ b/test/mpi/f08/subarray/test5.f90
@@ -0,0 +1,89 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test5'
+    character (len=80) :: title='test 5: Send/Recv 2d array - iar(9,9)'
+
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+            end do
+        end do
+
+    endif
+
+    call MPI_Barrier(MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+
+    if (rank .eq. 0) then
+        call mpi_send(iar_2d, 81, MPI_INTEGER, 1, 890, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        call mpi_recv(iar_2d, 81, MPI_INTEGER, 0, 890, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        do i=1,9
+            do j=1,9
+                if (iar_2d(j,i) .ne. (j * 10) + i) then
+                    print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", (j * 10) + i
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test6.f90 b/test/mpi/f08/subarray/test6.f90
new file mode 100644
index 0000000..016621c
--- /dev/null
+++ b/test/mpi/f08/subarray/test6.f90
@@ -0,0 +1,93 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test6'
+    character (len=80) :: title='test 6: Send/Recv 2d array column - iar_2d(:,3)'
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d, iar_2dch
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+                iar_2dch(j,i) = 0
+            end do
+        end do
+
+        do j=1,9
+            iar_2dch(j,3) = (j * 10) + 3
+        end do
+    endif
+
+    call MPI_Barrier(MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+
+    if (rank .eq. 0) then
+        call mpi_send(iar_2d(:,3), 9, MPI_INTEGER, 1, 890, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        call mpi_recv(iar_2d(:,3), 9, MPI_INTEGER, 0, 890, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        do i=1,9
+            do j=1,9
+                if (iar_2d(j,i) .ne. iar_2dch(j,i)) then
+                    print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i)
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test7.f90 b/test/mpi/f08/subarray/test7.f90
new file mode 100644
index 0000000..0bcc4e2
--- /dev/null
+++ b/test/mpi/f08/subarray/test7.f90
@@ -0,0 +1,97 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test7'
+    character (len=80) :: title='test 7: Send/Recv 2d array row - iar_2d(6,:)'
+
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d, iar_2dch
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+                iar_2dch(j,i) = 0
+            end do
+        end do
+
+        do i=1,9
+            do j=6,6
+                iar_2dch(j,i) = (j * 10) + i
+            end do
+        end do
+    endif
+
+    call MPI_Barrier(MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+
+    if (rank .eq. 0) then
+        call mpi_send(iar_2d(6,:), 9, MPI_INTEGER, 1, 890, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        call mpi_recv(iar_2d(6,:), 9, MPI_INTEGER, 0, 890, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        do i=1,9
+            do j=1,9
+                if (iar_2d(j,i) .ne. iar_2dch(j,i)) then
+                    if (verbose) print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i)
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test8.f90 b/test/mpi/f08/subarray/test8.f90
new file mode 100644
index 0000000..3820d5b
--- /dev/null
+++ b/test/mpi/f08/subarray/test8.f90
@@ -0,0 +1,96 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test8'
+    character (len=80) :: title='test 8: Send/Recv 2d array column slice - iar_2d(:,2:6:2)'
+
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d, iar_2dch
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do i=1,9
+            if (verbose) print *, (iar_2d(i,j),j=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+                iar_2dch(j,i) = 0
+            end do
+        end do
+
+        do i=2,6,2
+            do j=1,9
+                iar_2dch(j,i) = (j * 10) + i
+            end do
+        end do
+    endif
+
+    call MPI_Barrier(MPI_COMM_WORLD, ierr);
+    if (ierr .ne. MPI_SUCCESS) then
+        print *,"PE ",rank,": ",name,": A: mpi_barrier exited in error (",ierr,")"
+        errs = errs + 1
+    endif
+
+    if (rank .eq. 0) then
+        call mpi_send(iar_2d(:,2:6:2), 27, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        call mpi_recv(iar_2d(:,2:6:2), 27, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        do i=1,9
+            do j=1,9
+                if (iar_2d(j,i) .ne. iar_2dch(j,i)) then
+                    print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i)
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do j=1,9
+            if (verbose) print *, (iar_2d(i,j),i=1,9)
+        end do
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/test9.f90 b/test/mpi/f08/subarray/test9.f90
new file mode 100644
index 0000000..815af46
--- /dev/null
+++ b/test/mpi/f08/subarray/test9.f90
@@ -0,0 +1,90 @@
+!   -*- Mode: Fortran; -*-
+!
+!   (C) 2014 by Argonne National Laboratory.
+!   See COPYRIGHT in top-level directory.
+!
+
+program main
+    use mpi_f08
+    implicit none
+
+    integer :: size, rank, ierr, errs
+    logical :: verbose
+    common /flags/ verbose
+
+    character (len=10) :: name='test9'
+    character (len=80) :: title='test 9: Send/Recv 2d array column slice - iar_2d(1:7:3,2:6:2)'
+
+    integer :: i, j
+    integer, dimension(9,9) :: iar_2d, iar_2dch
+    type(MPI_Status) status
+
+    errs = 0
+    verbose = .false.
+
+    call MTest_Init(ierr)
+    call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
+    call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+    if (rank .eq. 0) then
+        if (verbose) print *, ' ===== ', trim(title), ' ====='
+
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = (j * 10) + i
+            end do
+        end do
+
+        do i=1,9
+            if (verbose) print *, (iar_2d(i,j),j=1,9)
+        end do
+
+    else
+        do i=1,9
+            do j=1,9
+                iar_2d(j,i) = 0
+                iar_2dch(j,i) = 0
+            end do
+        end do
+        do i=2,6,2
+            do j=1,7,3
+                iar_2dch(j,i) = (j * 10) + i
+            end do
+        end do
+
+    endif
+
+    if (rank .eq. 0) then
+        call mpi_send(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 1, 123, MPI_COMM_WORLD, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,": mpi_send exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+    else if (rank .eq. 1) then
+        call mpi_recv(iar_2d(1:7:3,2:6:2), 9, MPI_INTEGER, 0, 123, MPI_COMM_WORLD, status, ierr);
+        if (ierr .ne. MPI_SUCCESS) then
+            print *,"PE ",rank,": ",name,"mpi_recv exited in error (",ierr,")"
+            errs = errs + 1
+        endif
+
+        do i=2,6,2
+            do j=1,7,3
+                if (iar_2d(j,i) .ne. iar_2dch(j,i)) then
+                    print *, "rank 1: iar_2d(", j, ",", i, ")=", iar_2d(j,i), ", expected ", iar_2dch(j,i)
+                    errs = errs + 1
+                endif
+            end do
+        end do
+        if (errs .eq. 0) then
+            if (verbose) print *, "PE ", rank,": PASS - ", trim(title)
+        else
+            print *, "PE ", rank,": FAIL - ", trim(title)
+        endif
+        do i=1,9
+            if (verbose) print *, (iar_2d(i,j),j=1,9)
+        end do
+    endif
+
+    call MTest_Finalize(errs)
+    call MPI_Finalize(ierr)
+end program
diff --git a/test/mpi/f08/subarray/testlist b/test/mpi/f08/subarray/testlist
new file mode 100644
index 0000000..4ff5b6e
--- /dev/null
+++ b/test/mpi/f08/subarray/testlist
@@ -0,0 +1,15 @@
+test1   2
+test2   2
+test3   2
+test4   2
+test5   2
+test6   2
+test7   2
+test8   2
+test9   2
+test10  2
+test11  2
+test12  2
+test13  2
+test14  2
+test15  2
diff --git a/test/mpi/f08/testlist b/test/mpi/f08/testlist
index fc86c1a..60a20c0 100644
--- a/test/mpi/f08/testlist
+++ b/test/mpi/f08/testlist
@@ -6,3 +6,4 @@ coll
 datatype
 comm
 rma
+subarray

http://git.mpich.org/mpich.git/commitdiff/60059770af3fc405224b484dd2198edb3ea36179

commit 60059770af3fc405224b484dd2198edb3ea36179
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Mon May 12 08:38:21 2014 -0700

    Add basic (non)contiguous subarray support
    
    The compile time constant MPI_SUBARRAYS_SUPPORTED is changed to true now.
    
    To test if a subarray is contiguous, one may use CFI_is_contiguous(cdesc). But note that
    CFI_is_contiguous(cdesc) is only applicable to arrays. When cdesc is a descripitor for a scalar,
    CFI_is_contiguous(cdesc) returns false. But apparently, scalars are contiguous in MPI's viewpoint.
    So we add a check against scalars.
    
    No review since F08 binding is experimental now.

diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90 b/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90
index 8ba6a6a..96a12bb 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90
@@ -136,7 +136,7 @@ type(MPI_Message),parameter    :: MPI_MESSAGE_NO_PROC = MPI_Message(1811939328)
 
 ! Fortran Support Method Specific Constants
 ! A.1.1 p. 664
-logical,parameter :: MPI_SUBARRAYS_SUPPORTED        = .false.
+logical,parameter :: MPI_SUBARRAYS_SUPPORTED        = .true.
 logical,parameter :: MPI_ASYNC_PROTECTS_NONBLOCKING = .true.  ! Value differs from mpif.h
 
 ! Variable Address Size
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface b/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface
index a3ec1e8..2f5620b 100755
--- a/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface
+++ b/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface
@@ -6,27 +6,212 @@
 
 use warnings;
 use strict;
-
-# Change this to be an argument that passed in on the command line
-# For all of the MPIO functions, we should surround the functions with
-# #ifdef MPI_MODE_RDONLY
-#    ...
-# #else
-#    ierr = MPI_ERR_INTER`
-# #endif
-
-# Check to make sure the file was passed in as a parameter
-if ($#ARGV != 0) {
-    print "Usage: buildiface <filename>\n";
-    exit 1;
-}
-
-open(FD, $ARGV[0]) || die "Could not open file " . $ARGV[0];
-
-while (<FD>) {
-    if (/\/\*\s*Begin Prototypes/) { last; }
-}
-
+use Data::Dumper;
+
+# For a choice buffer arugment, usually it has two companion arguments (count, datatype) after it.
+# But this is not always true. So we have this table to store the info. An entry of the table is in
+# form of "func => pos". pos is a flattened array of triplet <buffer_idx, count_idx, datatype_idx>.
+# buffer_idx means the buffer_idx-th argument of func is a choice buffer;
+# count_idx means the count_idx-th arugment of func is the count argument for this choice buffer;
+# datatype_idx means the datatype_idx-th arugment of func is the datatype argument for this choice
+# buffer; Note these indices are 0-based. It is easy to see pos's size is a multiple of 3.
+#
+# For some choice buffers, they don't have the companion (count, datatype). We put special values
+# to their count_idx and datatype_idx. There are three cases here.
+#
+# 1. The buffer must be simply contiguous, such as that in MPI_Buffer_attach.
+#    count_idx, datatype_idx are set to -1.
+# 2. The buffer share the same (count, datatype) with another buffer, such as sendbuf in MPI_Reduce.
+#    Strictly speaking, we need to check at runtime the two buffers have the same shape and stride.
+#    Currently, we just set count_idx and datatype_idx of the first choice buffer to -2.
+# 3. For some functions, such as MPI_Alltoallw, though MPI Standard doesn't say a choice buffer
+#    arg must be simply contiguous, we don't support non-contiguous buffers there. Because generally
+#    it is hard to implement it efficiently, and I don't see values of that. Please remember that
+#    subarrays are meant to provide the programmer a convenient language construct with reasonable
+#    overhead, not something that can hide the huge complexity of datatype creation but incurs a good
+#    deal of overhead. If this complexity is needed, it shold be done by the programmer explicitly
+#    but not implicitly done by the runtime. So we treat case 3 as case 1. We can checks to
+#    enforce "simply contiguous".
+
+my %bufpos = (
+    "MPI_Accumulate" => [0,  1,  2],
+    "MPI_Allgather" => [0,  1,  2, 3,  4,  5],
+    "MPI_Allgatherv" => [0,  1,  2, 3, -1, -1],
+    "MPI_Allreduce" => [0, -1, -1, 1,  2,  3],
+    "MPI_Alltoall" => [0,  1,  2, 3,  4,  5],
+    "MPI_Alltoallv" => [0, -1, -1, 4, -1, -1],
+    "MPI_Alltoallw" => [0, -1, -1, 4, -1, -1],
+    "MPI_Bcast" => [0, 1, 2],
+    "MPI_Bsend" => [0, 1, 2],
+    "MPI_Bsend_init" => [0, 1, 2],
+    "MPI_Buffer_attach" => [0, -1, -1],
+    "MPI_Compare_and_swap" =>[0, -1, -1, 1, -1, -1, 2, -1, -1],
+    "MPI_Exscan" => [0, -1, -1, 1, 2, 3],
+    "MPI_Fetch_and_op" => [0, -1, -1, 1, -1, -1],
+    "MPI_File_iread_at" => [2, 3, 4],
+    "MPI_File_iread" => [1, 2, 3],
+    "MPI_File_iread_shared" => [1, 2, 3],
+    "MPI_File_iwrite_at" => [2, 3, 4],
+    "MPI_File_iwrite" => [1, 2, 3],
+    "MPI_File_iwrite_shared" => [1, 2, 3],
+    "MPI_File_read_all_begin" => [1, 2, 3],
+    "MPI_File_read_all" => [1, 2, 3],
+    "MPI_File_read_all_end" => [1, -1, -1],
+    "MPI_File_read_at_all_begin" => [2, 3, 4],
+    "MPI_File_read_at_all" => [2, 3, 4],
+    "MPI_File_read_at_all_end" => [1, -1, -1],
+    "MPI_File_read_at" => [2, 3, 4],
+    "MPI_File_read" => [1, 2, 3],
+    "MPI_File_read_ordered_begin" => [1, 2, 3],
+    "MPI_File_read_ordered" => [1, 2, 3],
+    "MPI_File_read_ordered_end" => [1, -1, -1],
+    "MPI_File_read_shared" => [1, 2, 3],
+    "MPI_File_write_all_begin" => [1, 2, 3],
+    "MPI_File_write_all" => [1, 2, 3],
+    "MPI_File_write_all_end" => [1, -1, -1],
+    "MPI_File_write_at_all_begin" => [2, 3, 4],
+    "MPI_File_write_at_all" => [2, 3, 4],
+    "MPI_File_write_at_all_end" => [1, -1, -1],
+    "MPI_File_write_at" => [2, 3, 4],
+    "MPI_File_write" => [1, 2, 3],
+    "MPI_File_write_ordered_begin" => [1, 2, 3],
+    "MPI_File_write_ordered" => [1, 2, 3],
+    "MPI_File_write_ordered_end" => [1, -1, -1],
+    "MPI_File_write_shared" => [1, 2, 3],
+    "MPI_Free_mem" => [0, -1, -1],
+    "MPI_Gather" => [0, 1, 2, 3, 4, 5],
+    "MPI_Gatherv" => [0, 1, 2, 3, -1, -1],
+    "MPI_Get_accumulate" => [0, 1, 2, 3, -1, -1],
+    "MPI_Get_address" => [0, -1, -1],
+    "MPI_Get" => [0, 1, 2],
+    "MPI_Iallgather" => [0, 1, 2, 3, 4, 5],
+    "MPI_Iallgatherv" => [0, 1, 2, 3, -1, -1],
+    "MPI_Iallreduce" => [0, -2, -2, 1, 2, 3],
+    "MPI_Ialltoall" => [0, 1, 2, 3, 4, 5],
+    "MPI_Ialltoallv" => [0, -1, -1, 4, -1, -1],
+    "MPI_Ialltoallw" => [0, -1, -1, 4, -1, -1],
+    "MPI_Ibcast" => [0, 1, 2],
+    "MPI_Ibsend" => [0, 1, 2],
+    "MPI_Iexscan" => [0, -2, -2, 1, 2, 3],
+    "MPI_Igather" => [0, 1, 2, 3, 4, 5],
+    "MPI_Igatherv" => [0, 1, 2, 3, -1, -1],
+    "MPI_Imrecv" => [0, 1, 2],
+    "MPI_Ineighbor_allgather" => [0, 1, 2, 3, 4, 5],
+    "MPI_Ineighbor_allgatherv" => [0, 1, 2, 3, -1, -1],
+    "MPI_Ineighbor_alltoall" => [0, 1, 2, 3, 4, 5],
+    "MPI_Ineighbor_alltoallv" => [0, -1, -1, 4, -1, -1],
+    "MPI_Ineighbor_alltoallw" => [0, -1, -1, 4, -1, -1],
+    "MPI_Irecv" => [0, 1, 2],
+    "MPI_Ireduce" => [0, -2, -2, 1, 2, 3],
+    "MPI_Ireduce_scatter_block" => [0, -2, -2, 1, 2, 3],
+    "MPI_Ireduce_scatter" => [0, -2, -2, 1, -2, -2],
+    "MPI_Irsend" => [0, 1, 2],
+    "MPI_Iscan" => [0, -2, -2, 1, 2, 3],
+    "MPI_Iscatter" => [0, 1, 2, 3, 4, 5],
+    "MPI_Iscatterv" => [0, -1, -1, 4, -1, -1],
+    "MPI_Isend" => [0, 1, 2],
+    "MPI_Issend" => [0, 1, 2],
+    "MPI_Mrecv" => [0, 1, 2],
+    "MPI_Neighbor_allgather" => [0, 1, 2, 3, 4, 5],
+    "MPI_Neighbor_allgatherv" => [0, 1, 2, 3, -1, -1],
+    "MPI_Neighbor_alltoall" => [0, 1, 2, 3, 4, 5],
+    "MPI_Neighbor_alltoallv" => [0, -1, -1, 4, -1, -1],
+    "MPI_Neighbor_alltoallw" => [0, -1, -1, 4, -1, -1],
+    "MPI_Pack" => [0, 1, 2, 3, -1, -1],
+    "MPI_Pack_external" => [1, 2, 3, 4, -1, -1],
+    "MPI_Put" => [0, 1, 2],
+    "MPI_Raccumulate" => [0, 1, 2],
+    "MPI_Recv" => [0, 1, 2],
+    "MPI_Recv_init" => [0, 1, 2],
+    "MPI_Reduce" => [0, -2, -2, 1, 2, 3],
+    "MPI_Reduce_local" => [0, -2, -2, 1, 2, 3],
+    "MPI_Reduce_scatter_block" => [0, -2, -2, 1, 2, 3],
+    "MPI_Reduce_scatter" => [0, -2, -2, 1, -2, -2],
+    "MPI_Rget_accumulate" => [0, 1, 2, 3, 4, 5],
+    "MPI_Rget" => [0, 1, 2],
+    "MPI_Rput" => [0, 1, 2],
+    "MPI_Rsend" => [0, 1, 2],
+    "MPI_Rsend_init" => [0, 1, 2],
+    "MPI_Scan" => [0, -2, -2, 1, 2, 3],
+    "MPI_Scatter" => [0, 1, 2, 3, 4, 5],
+    "MPI_Scatterv" => [0, -1, -1, 4, -1, -1],
+    "MPI_Send" => [0, 1, 2],
+    "MPI_Send_init" => [0, 1, 2],
+    "MPI_Sendrecv" => [0, 1, 2, 5, 6, 7],
+    "MPI_Sendrecv_replace" => [0, 1, 2],
+    "MPI_Ssend" => [0, 1, 2],
+    "MPI_Ssend_init" => [0, 1, 2],
+    "MPI_Unpack" => [0, -1, -1, 3, 4, 5],
+    "MPI_Unpack_external" => [1, -1, -1, 4, 5, 6],
+    "MPI_Win_attach" => [1, -1, -1],
+    "MPI_Win_create" => [0, -1, -1],
+    "MPI_Win_detach" => [1, -1, -1]
+);
+
+# Choice buffers in some functions can be passed in MPI_IN_PLACE. We store such
+# info in this table. "func => idx" means the idx-th argument of func is a choice
+# buffer and can be passed in MPI_IN_PLACE. Here, idx starts from 0. Note that one
+# function can have at most one such argument.
+my %inplace = (
+    "MPI_Allgather" => 0,
+	"MPI_Allgatherv" => 0,
+	"MPI_Allreduce" => 0,
+	"MPI_Alltoall" => 0,
+	"MPI_Alltoallv" => 0,
+	"MPI_Alltoallw" => 0,
+	"MPI_Exscan" => 0,
+	"MPI_Gather" => 0,
+	"MPI_Gatherv" => 0,
+	"MPI_Iallgather" => 0,
+	"MPI_Iallgatherv" => 0,
+	"MPI_Iallreduce" => 0,
+	"MPI_Ialltoall" => 0,
+	"MPI_Ialltoallv" => 0,
+	"MPI_Ialltoallw" => 0,
+	"MPI_Igather" => 0,
+	"MPI_Igatherv" => 0,
+	"MPI_Ireduce_scatter_block" => 0,
+	"MPI_Ireduce_scatter" => 0,
+	"MPI_Ireduce" => 0,
+	"MPI_Iscan" => 0,
+	"MPI_Iscatter" => 3,
+	"MPI_Iscatterv" => 4,
+	"MPI_Reduce_scatter" => 0,
+	"MPI_Reduce_scatter_block" => 0,
+	"MPI_Reduce" => 0,
+	"MPI_Scan" => 0,
+	"MPI_Scatter" => 3,
+	"MPI_Scatterv" => 4
+);
+
+# Some functions have a void* argument in C, but the argument is actually not
+# a choice buffer (i.e., of type assumed-type, assumed-rank). So we just skip
+# these functions in parsing.
+my @skipped_funcs_tmp = (
+    "MPI_Address",
+    "MPI_Alloc_mem",
+    "MPI_Attr_get",
+    "MPI_Attr_put",
+    "MPI_DUP_FN",
+    "MPI_Grequest_start",
+    "MPI_Comm_create_keyval",
+    "MPI_Comm_set_attr",
+    "MPI_Comm_get_attr",
+    "MPI_Type_create_keyval",
+    "MPI_Type_set_attr",
+    "MPI_Type_get_attr",
+    "MPI_Win_create_keyval",
+    "MPI_Win_set_attr",
+    "MPI_Win_get_attr",
+    "MPI_Buffer_detach",
+    "MPI_Keyval_create",
+    "MPI_Register_datarep",
+    "MPI_Win_allocate",
+    "MPI_Win_allocate_shared",
+    "MPI_Win_shared_query"
+);
+
+my %skipped_funcs = map { $_ => 1 } @skipped_funcs_tmp;
 my $eol = 1;
 my $fullline = "";
 my $tab = "    ";
@@ -44,35 +229,17 @@ my @dtype_bind;
 my $io_header;
 my $make_exists = 0;
 
-my %inplace = ('MPI_Allgather' => 0,
-	       'MPI_Allgatherv' => 0,
-	       'MPI_Allreduce' => 0,
-	       'MPI_Alltoall' => 0,
-	       'MPI_Alltoallv' => 0,
-	       'MPI_Alltoallw' => 0,
-	       'MPI_Exscan' => 0,
-	       'MPI_Gather' => 0,
-	       'MPI_Gatherv' => 0,
-	       'MPI_Iallgather' => 0,
-	       'MPI_Iallgatherv' => 0,
-	       'MPI_Iallreduce' => 0,
-	       'MPI_Ialltoall' => 0,
-	       'MPI_Ialltoallv' => 0,
-	       'MPI_Ialltoallw' => 0,
-	       'MPI_Igather' => 0,
-	       'MPI_Igatherv' => 0,
-	       'MPI_Ireduce_scatter_block' => 0,
-	       'MPI_Ireduce_scatter' => 0,
-	       'MPI_Ireduce' => 0,
-	       'MPI_Iscan' => 0,
-	       'MPI_Iscatter' => 3,
-	       'MPI_Iscatterv' => 4,
-	       'MPI_Reduce_scatter' => 0,
-	       'MPI_Reduce_scatter_block' => 0,
-	       'MPI_Reduce' => 0,
-	       'MPI_Scan' => 0,
-	       'MPI_Scatter' => 3,
-	       'MPI_Scatterv' => 4);
+# Check to make sure the file was passed in as a parameter
+if ($#ARGV != 0) {
+    print "Usage: buildiface <filename>\n";
+    exit 1;
+}
+
+open(FD, $ARGV[0]) || die "Could not open file " . $ARGV[0];
+
+while (<FD>) {
+    if (/\/\*\s*Begin Prototypes/) { last; }
+}
 
 # Check to see if this is mpio.h.in. If so, we have some more to do later
 if ($ARGV[0] =~ /mpio\.h\.in/) {
@@ -100,7 +267,7 @@ if (-e "cdesc.h") {
 #include <ISO_Fortran_binding.h>
 #include <mpi.h>
 
-extern int cdesc_create_dtype(CFI_cdesc_t *cdesc, MPI_Datatype oldtype, MPI_Datatype *newtype);
+extern int cdesc_create_datatype(CFI_cdesc_t *cdesc, int oldcount, MPI_Datatype oldtype, MPI_Datatype *newtype);
 extern int MPIR_Fortran_array_of_string_f2c(const char* strs_f, char*** strs_c, int str_len, int know_size, int size);
 extern int MPIR_Comm_spawn_c(const char *command, char *argv_f, int maxprocs, MPI_Info info, int root,
         MPI_Comm comm, MPI_Comm *intercomm, int* array_of_errcodes, int argv_elem_len);
@@ -127,38 +294,87 @@ print OUTFD <<EOT;
 
 #include "cdesc.h"
 
-int cdesc_create_dtype(CFI_cdesc_t *cdesc, MPI_Datatype oldtype, MPI_Datatype *newtype)
+int cdesc_create_datatype(CFI_cdesc_t *cdesc, int oldcount, MPI_Datatype oldtype, MPI_Datatype *newtype)
 {
-    MPI_Datatype *types;
-    int i, err = MPI_SUCCESS;
-
-    types = malloc(cdesc->rank * sizeof(MPI_Datatype));
-    for (i = 0; i < cdesc->rank; i++) {
-        if (cdesc->dim[i].sm == cdesc->elem_len) {
-            err = MPI_Type_contiguous(cdesc->dim[i].extent, i == 0 ? oldtype : types[i-1], &types[i]);
-            if (err)
-                return err;
+    const int MAX_RANK = 15; /* Fortran 2008 specifies a maximum rank of 15 */
+    MPI_Datatype types[MAX_RANK + 1]; /* Use a fixed size array to avoid malloc. + 1 for oldtype */
+    int mpi_errno = MPI_SUCCESS;
+    int accum_elems = 1;
+    int accum_sm = cdesc->elem_len;
+    int done = 0; /* Have we created a datatype for oldcount of oldtype? */
+    int last; /* Index of the last successfully created datatype in types[] */
+    int extent;
+    int i, j;
+
+#ifdef HAVE_ERROR_CHECKING
+    {
+        int size;
+        MPIU_Assert(cdesc->rank <= MAX_RANK);
+        MPI_Type_size(oldtype, &size);
+        /* When cdesc->elem_len != size, things suddenly become complicated. Generally, it is hard to create
+         * a composite datatype based on two datatypes. Currently we don't support it and doubt it is usefull.
+         */
+        MPIU_Assert(cdesc->elem_len == size);
+    }
+#endif
+
+    types[0] = oldtype;
+    i = 0;
+    done = 0;
+    while (i < cdesc->rank && !done) {
+        if (oldcount % accum_elems) {
+            /* oldcount should be a multiple of accum_elems, otherwise we might need an
+             * MPI indexed datatype to describle the irregular region, which is not supported yet.
+             */
+            mpi_errno = MPI_ERR_INTERN;
+            goto fn_fail;
         }
-        else {
-            err = MPI_Type_create_hvector(cdesc->dim[i].extent, 1, cdesc->dim[i].sm, i == 0 ? oldtype : types[i-1],
-                                          &types[i]);
-            if (err)
-                return err;
+
+        extent = oldcount / accum_elems;
+        if (extent > cdesc->dim[i].extent) {
+            extent = cdesc->dim[i].extent;
+        } else {
+            /* Up to now, we have accumlated enough elements */
+            done = 1;
         }
-        err = MPI_Type_commit(&types[i]);
-        if (err)
-            return err;
-    }
 
-    err = MPI_Type_dup(types[cdesc->rank-1], newtype);
-    if (err)
-        return err;
+        if (cdesc->dim[i].sm == accum_sm) {
+            mpi_errno = MPI_Type_contiguous(extent, types[i], &types[i+1]);
+        } else {
+            mpi_errno = MPI_Type_create_hvector(extent, 1, cdesc->dim[i].sm, types[i], &types[i+1]);
+        }
+        if (mpi_errno != MPI_SUCCESS) {
+            last = i; goto fn_fail;
+        }
 
-    for (i = 0; i < cdesc->rank; i++)
-        MPI_Type_free(&types[i]);
-    free(types);
+        mpi_errno = MPI_Type_commit(&types[i+1]);
+        if (mpi_errno != MPI_SUCCESS) {
+            last = i + 1; goto fn_fail;
+        }
+
+        accum_sm = cdesc->dim[i].sm * cdesc->dim[i].extent;
+        accum_elems  *= cdesc->dim[i].extent;
+        i++;
+    }
 
-    return err;
+    if (done) {
+        *newtype = types[i];
+        last = i - 1; /* To avoid freeing newtype */
+    } else {
+        /* If # of elements given by "oldcount oldtype" is bigger than
+         * what cdesc describles, then we will reach here.
+         */
+        last = i;
+        mpi_errno = MPI_ERR_ARG;
+        goto fn_fail;
+    }
+
+fn_exit:
+    for (j = 1; j <= last; j++)
+        MPI_Type_free(&types[j]);
+    return mpi_errno;
+fn_fail:
+    goto fn_exit;
 }
 EOT
 close OUTFD;
@@ -182,16 +398,6 @@ EOT
     $make_exists = 1;
 }
 
-# if the Nth datatype does not correspond to the Nth void* buffer, set
-# the correct binding here.  A value of "2:4" means that the first
-# datatype corresponds to the 2nd void* buffer and the second datatype
-# corresponds to the 4th void* buffer.  There must not exist a third
-# datatype.
-my %dtype_bindings = (
-    'MPI_Unpack' => '2',
-    'MPI_Unpack_external' => '2',
-    );
-
 while (<FD>) {
     if (/\/\*\s*End Prototypes/) { last; }
 
@@ -236,73 +442,14 @@ while (<FD>) {
     $args =~ s/^\s*//g;
     $args =~ s/\s*$//g;
 
-    # the following routines are ignored:
-
-    # Having void * arguments but they are not choice buffer
-    if (($routine eq "MPI_Grequest_start")
-        || ($routine eq "MPI_Comm_create_keyval")
-        || ($routine eq "MPI_Comm_set_attr")
-        || ($routine eq "MPI_Comm_get_attr")
-        || ($routine eq "MPI_Type_create_keyval")
-        || ($routine eq "MPI_Type_set_attr")
-        || ($routine eq "MPI_Type_get_attr")
-        || ($routine eq "MPI_Win_create_keyval")
-        || ($routine eq "MPI_Win_set_attr")
-        || ($routine eq "MPI_Win_get_attr")
-        ) {
+    # Skip routines with void* (but not choice buffer) arguments
+    if (exists($skipped_funcs{$routine})) {
         $fullline = "";
         next;
     }
 
-    #
-    # FIXME: Alltoallw takes an array of datatypes; we need better
-    # logic to create such an array for derived datatypes
-
-    # Temporarily enabled since no non-contig subarray is supported
-    #if (($routine eq "MPI_Alltoallw")
-    #    || ($routine eq "MPI_Ialltoallw")
-    #    || ($routine eq "MPI_Neighbor_alltoallw")
-    #    || ($routine eq "MPI_Ineighbor_alltoallw")
-    #    ) {
-    #    $fullline = "";
-    #    next;
-    #}
-
     @arglist = split(/,/, $args);
 
-    # If the function arguments have a void*, it is of interest to us.
-    # Dump the function definition into the file and the function name
-    # into the Makefile.
-
-    # Here's the strategy we use:
-    #
-    # If the number of void* and datatype arguments are the same
-    # (e.g., MPI_SEND), we map them one to one.  This might not be
-    # generally true, but is true as of MPI-3.  It needs to be checked
-    # whenever we add new functions.
-    #
-    # Some functions have different datatype and void* counts.  If the
-    # number of datatypes is larger than the number of void* buffers
-    # (e.g., MPI_PUT), we map the datatype to the first void* buffer
-    # and ignore the remaining datatypes.  We also create more
-    # datatypes than what we use.  This is inefficient, but not
-    # incorrect (needs to be fixed).
-    #
-    # If the number of datatypes is smaller than the number of void*
-    # buffers (e.g., MPI_PACK), we assign datatypes for the first few
-    # void* buffers and ignore the rest.  This rule also holds true
-    # for functions that have multiple void* buffers all of which
-    # correspond to the same datatype (e.g., MPI_REDUCE), where we
-    # assume that the a uniform subarray format is used by all void*
-    # buffers.  Again, this is not generally correct, but is
-    # sufficient for MPI-3.
-    #
-    # Some functions do not have the void* and datatype correspondence
-    # in order.  For example, in MPI_UNPACK, the first (and only)
-    # datatype corresponds to the second void* buffer.  We handle
-    # these functions as a special case as described in the
-    # %dtype_bindings array.
-
     if (grep/void\s*\*/, @arglist) {
         $fname = "$routine";
         $fname =~ s/MPI_//g;
@@ -329,8 +476,6 @@ while (<FD>) {
 
 #include "cdesc.h"
 EOT
-        my @choice_buf_indices;
-
         print CFILE "\n$retarg $cdesc_routine(";
         print CDESCH "extern $retarg $cdesc_routine(";
         for ($x = 0; $x <= $#arglist; $x++) {
@@ -358,16 +503,15 @@ EOT
                     }
                 }
             }
+             # replace void* with CFI_cdesc_t*
+             if ($arglist[$x] =~ /.*void\s*\*/) {
+                 $arglist[$x] = "CFI_cdesc_t*";
+             }
 
-            # replace void * with CFI_cdesc_t*, and record choice buffer arg indices.
-            if ($arglist[$x] =~ /.*void\s*\*/) {
-                $arglist[$x] = "CFI_cdesc_t*";
-                push(@choice_buf_indices, $x);
-            }
             @argbits = split(/ /, $arglist[$x]);
 
             if ($x) {
-                print CFILE ", ";
+                print CFILE  ", ";
                 print CDESCH ", ";
             }
 
@@ -383,140 +527,94 @@ EOT
                 print CDESCH "x$x\[\]";
             }
             else {
-                print CFILE "$argbits[$#argbits] x$x";
+                print CFILE  "$argbits[$#argbits] x$x";
                 print CDESCH "$argbits[$#argbits] x$x";
             }
         }
         print CFILE ")\n{\n";
         print CDESCH ");\n";
 
-        if ($io_header) {
-            print CFILE "#ifdef MPI_MODE_RDONLY\n"
-        }
-
         #================================================
-        #
         #      Print body of the C wrapper function
-        #
         #================================================
-        print CFILE "${tab}int err = MPI_SUCCESS;\n";
-        print CFILE "${tab}int is_contig = 1;\n";
-        for my $i (@choice_buf_indices) {
-            print CFILE "    void *addr$i = x$i->base_addr;\n"
-        }
-        print CFILE "\n";
-
-        # Handle MPI_BOTTOM
-        for my $i (@choice_buf_indices) {
-            print CFILE "    if (addr$i == &MPIR_F08_MPI_BOTTOM) {\n";
-            print CFILE "        addr$i = MPI_BOTTOM;\n";
-            print CFILE "    }\n\n";
+        print CFILE "    int err = MPI_SUCCESS;\n";
+        if ($io_header) {
+            print CFILE "#ifdef MPI_MODE_RDONLY\n"
         }
 
-        # Hanlde MPI_IN_PLACE
-        if (defined($inplace{$routine})) {
-            my $i = $inplace{$routine};
-            print CFILE "    if (addr$i == &MPIR_F08_MPI_IN_PLACE) {\n";
-            print CFILE "        addr$i = MPI_IN_PLACE;\n";
-            print CFILE "    }\n\n";
+        if (!exists($bufpos{$routine})) {
+            die "Error: $routine has choice buffer(s) but is not defined in bufpos!\n";
         }
 
-        # Test if all choice buffers are contiguous
-        for my $i (@choice_buf_indices) {
-            print CFILE "    if (!CFI_is_contiguous(x$i)) is_contig = 0;\n\n";
-        }
+        my @vec = @{$bufpos{$routine}}; # directly copy since @vec is small
 
-        print CFILE "    if (is_contig) {\n";
-        print CFILE "        err = $routine(";
-        for (my $i = 0; $i <= $#arglist; $i++) {
-            if ($i) {
-                print CFILE ", ";
-            }
-            if ($arglist[$i] =~ /CFI_cdesc_t\*/) {
-                print CFILE "addr$i";
-            } else {
-                print CFILE "x$i";
+        # Temp variable declaration
+        for (my $i = 0; $i < $#vec; $i += 3) {
+            print CFILE "    void *buf$vec[$i] = x$vec[$i]->base_addr;\n";
+            if ($vec[$i + 1] >= 0) {
+                print CFILE "    int count$vec[$i] = x$vec[$i+1];\n";
+                print CFILE "    MPI_Datatype dtype$vec[$i] = x$vec[$i+2];\n";
             }
         }
-        print CFILE ");\n";
-        print CFILE "${tab}}\n";
-        print CFILE "${tab}else {\n";
-        print CFILE "#if 0\n";
-
-        for ($x = 0, $y = 0; $x <= $#arglist; $x++) {
-            if ($arglist[$x] =~ /CFI_cdesc_t\*/) {
-                print CFILE "${tab}${tab}MPI_Datatype dtype$y = MPI_DATATYPE_NULL;\n";
-                $y++;
+        print CFILE "\n";
+
+        # Handle MPI_BOTTOM and MPI_IN_PLACE
+        for (my $i = 0; $i < $#vec; $i += 3) {
+            print CFILE "    if (buf$vec[$i] == &MPIR_F08_MPI_BOTTOM) {\n";
+            print CFILE "        buf$vec[$i] = MPI_BOTTOM;\n";
+            if (defined($inplace{$routine}) && $i == $inplace{$routine}) {
+                print CFILE "    } else if (buf$vec[$i] == &MPIR_F08_MPI_IN_PLACE) {\n";
+                print CFILE "        buf$vec[$i] = MPI_IN_PLACE;\n";
             }
+            print CFILE "    }\n\n";
         }
 
-        for ($x = 0, $y = 0; $x <= $#arglist; $x++) {
-            if ($arglist[$x] =~ /CFI_cdesc_t\*/) {
-                print CFILE "${tab}${tab}cdesc_create_dtype(x$x, MPI_INT, &dtype$y);\n";
-                $y++;
+        # Test if a subarray arg is contiguous. If it is, generate a new datatype for it.
+        for (my $i = 0; $i < $#vec; $i += 3) {
+            if ($vec[$i + 1] >= 0) {
+                print CFILE "    if (x$vec[$i]->rank != 0 && !CFI_is_contiguous(x$vec[$i])) {\n";
+                print CFILE "        err = cdesc_create_datatype(x$vec[$i], x$vec[$i+1], x$vec[$i+2], &dtype$vec[$i]);\n";
+                print CFILE "        count$vec[$i] = 1;\n";
+                print CFILE "    }\n\n";
             }
         }
-	$num_dtypes = $y;
 
-        print CFILE "\n${tab}${tab}err = $routine(";
-	if (defined($dtype_bindings{$routine})) {
-	    @dtype_bind = split(/:/, $dtype_bindings{$routine});
-	}
-        for ($x = 0, $y = 0; $x <= $#arglist; $x++) {
-            if ($x) {
-                print CFILE ", ";
-            }
-            if ($arglist[$x] =~ /CFI_cdesc_t\*/) {
-                print CFILE "x$x->base_addr";
-            }
-            elsif ($arglist[$x] =~ /MPI_Datatype/) {
-		if ($y >= $num_dtypes) {
-		    # if we already saw the expected number of
-		    # datatypes, ignore the rest
-		    print CFILE "x$x";
-		}
-		elsif ($dtype_bind[$y]) {
-		    $dtype_bind[$y]--;
-		    print CFILE "dtype$dtype_bind[$y]";
-		}
-		else {
-		    print CFILE "dtype$y";
-		}
-                $y++;
-            }
-            else {
-                print CFILE "x$x";
+        # Print the function call with proper argument substitution.
+        print CFILE "    err = $routine(";
+        for (my $i = 0; $i <= $#arglist; ) {
+            if ($i) { print CFILE ", "; }
+            if ($arglist[$i] =~ /CFI_cdesc_t\*/) {
+                my $j = 0;
+                while ($vec[$j] != $i) { $j++; }
+                if ($vec[$j + 1] >= 0) {
+                    print CFILE "buf$i, count$i, dtype$i";
+                    $i += 3;
+                } else {
+                    print CFILE "buf$i";
+                    $i++;
+                }
+            } else {
+                print CFILE "x$i";
+                $i++;
             }
         }
         print CFILE ");\n\n";
 
-        for ($x = 0, $y = 0; $x <= $#arglist; $x++) {
-            if ($arglist[$x] =~ /CFI_cdesc_t\*/) {
-                print CFILE "${tab}${tab}MPI_Type_free(&dtype$y);\n";
-                $y++;
+        # Free newly created datatypes if any
+        for (my $i = 0; $i < $#vec; $i += 3) {
+            if ($vec[$i + 1] >= 0) {
+                print CFILE "    if (dtype$vec[$i] != x$vec[$i+2])  MPI_Type_free(&dtype$vec[$i]);\n";
             }
         }
 
-        print CFILE "\n${tab}${tab}return err;\n";
-        print CFILE "#else\n";
-        print CFILE "${tab}${tab}fprintf(stderr, \"MPI_SUBARRAYS_SUPPORTED is false; subarrays are not supported\\n\");\n";
-        print CFILE "${tab}${tab}return MPI_ERR_ARG;\n";
-        print CFILE "#endif\n";
-        print CFILE "${tab}}\n";
-
-        if ($io_header) {
-                print CFILE "#else\n";
-                print CFILE "${tab}*ierr = MPI_ERR_INTERN;\n";
-                print CFILE "#endif\n";
-        }
-
-        print CFILE "${tab}return err;\n";
+        if ($io_header) { print CFILE "#else\n"; }
+        if ($io_header) { print CFILE "    err = MPI_ERR_INTERN;\n"; }
+        if ($io_header) { print CFILE "#endif\n"; }
 
+        print CFILE "    return err;\n";
         print CFILE "}\n";
-
         close CFILE;
     }
-
     $fullline = "";
 }
 

http://git.mpich.org/mpich.git/commitdiff/59acd4525a50cd8c019c7154526a65ea52b92951

commit 59acd4525a50cd8c019c7154526a65ea52b92951
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Mon May 12 07:02:26 2014 -0700

    Add the missing mpi_c_interface.F90 in makefile
    
    No review since F08 binding is experimental now.

diff --git a/src/binding/fortran/use_mpi_f08/buildiface b/src/binding/fortran/use_mpi_f08/buildiface
index 0d879ca..7f61bae 100755
--- a/src/binding/fortran/use_mpi_f08/buildiface
+++ b/src/binding/fortran/use_mpi_f08/buildiface
@@ -106,6 +106,7 @@ mpi_fc_sources += \\
 	src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90 \\
 	src/binding/fortran/use_mpi_f08/mpi_f08_link_constants.F90 \\
 	src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 \\
+	src/binding/fortran/use_mpi_f08/mpi_c_interface.F90 \\
 	src/binding/fortran/use_mpi_f08/mpi_c_interface_cdesc.F90 \\
 	src/binding/fortran/use_mpi_f08/mpi_c_interface_glue.F90 \\
 	src/binding/fortran/use_mpi_f08/mpi_c_interface_nobuf.F90 \\

http://git.mpich.org/mpich.git/commitdiff/8ad3b1379d6598865bc621af3178d77a24c3dc82

commit 8ad3b1379d6598865bc621af3178d77a24c3dc82
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed May 7 09:14:38 2014 -0700

    Comment out c_funptr code due to Cray ftn bugs
    
    A small test case written by Bill Long. The err msg reported by the Cray compiler is :
    "If the C_PTR_2 argument is specified for the C_ASSOCATED intrinsic, it must have the same type as the C_PTR_1 argument."
    
    subroutine test (f, g, same)
      use,intrinsic :: iso_c_binding
      external :: f, g
      logical  :: same
      type(c_funptr) :: fp
      type(c_funptr) :: gp
    
      fp = c_funloc(f)
      gp = c_funloc(g)
    
      same = c_associated (fp, gp)          ! This gives the error
      same = c_associated (fp, c_funloc(g)) ! This gives the error too.
    end subroutine test
    
    No review since F08 binding is experimental now.

diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/register_datarep_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/register_datarep_f08ts.F90
index 1f3c730..a687844 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/register_datarep_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/register_datarep_f08ts.F90
@@ -35,13 +35,13 @@ subroutine MPI_Register_datarep_f08(datarep, read_conversion_fn, write_conversio
     write_conversion_fn_c = c_funloc(write_conversion_fn)
     dtype_file_extent_fn_c = c_funloc(dtype_file_extent_fn)
 
-    if (c_associated(read_conversion_fn_c, c_funloc(MPI_CONVERSION_FN_NULL))) then
-        read_conversion_fn_c = C_NULL_FUNPTR
-    end if
+   !if (c_associated(read_conversion_fn_c, c_funloc(MPI_CONVERSION_FN_NULL))) then
+   !    read_conversion_fn_c = C_NULL_FUNPTR
+   !end if
 
-    if (c_associated(write_conversion_fn_c, c_funloc(MPI_CONVERSION_FN_NULL))) then
-        read_conversion_fn_c = C_NULL_FUNPTR
-    end if
+   !if (c_associated(write_conversion_fn_c, c_funloc(MPI_CONVERSION_FN_NULL))) then
+   !    read_conversion_fn_c = C_NULL_FUNPTR
+   !end if
 
     ierror_c = MPIR_Register_datarep_c(datarep_c, read_conversion_fn_c, write_conversion_fn_c, &
                                        dtype_file_extent_fn_c, extra_state)

http://git.mpich.org/mpich.git/commitdiff/a20b3882f77e781eb13aa7ed35346058c0f23d82

commit a20b3882f77e781eb13aa7ed35346058c0f23d82
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed May 7 09:14:21 2014 -0700

    Fix whole array access errs on assumed-size arrays
    
    No review since F08 binding is experimental now.

diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90
index a02d271..74ad87c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90
@@ -36,13 +36,14 @@ subroutine MPI_Ineighbor_alltoallw_f08ts(sendbuf, sendcounts, sdispls, sendtypes
     integer(c_int) :: ierror_c
     integer(c_int) :: err, indegree, outdegree, weighted ! To get length of assumed-size arrays
 
+    comm_c = comm%MPI_VAL
+    err = MPIR_Dist_graph_neighbors_count_c(comm_c, indegree, outdegree, weighted)
+
     if (c_int == kind(0)) then
-        ierror_c = MPIR_Ineighbor_alltoallw_cdesc(sendbuf, sendcounts, sdispls, sendtypes%MPI_VAL, recvbuf, &
-            recvcounts, rdispls, recvtypes%MPI_VAL, comm%MPI_VAL, request%MPI_VAL)
+        ierror_c = MPIR_Ineighbor_alltoallw_cdesc(sendbuf, sendcounts, sdispls, sendtypes(1:outdegree)%MPI_VAL, recvbuf, &
+            recvcounts, rdispls, recvtypes(1:indegree)%MPI_VAL, comm%MPI_VAL, request%MPI_VAL)
     else
-        comm_c = comm%MPI_VAL
         request_c = request%MPI_VAL
-        err = MPIR_Dist_graph_neighbors_count_c(comm_c, indegree, outdegree, weighted)
         sendtypes_c = sendtypes(1:outdegree)%MPI_VAL
         recvtypes_c = recvtypes(1:indegree)%MPI_VAL
         sendcounts_c = sendcounts(1:outdegree)
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90
index 3568fd7..b321382 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90
@@ -34,15 +34,15 @@ subroutine MPI_Neighbor_alltoallw_f08ts(sendbuf, sendcounts, sdispls, sendtypes,
     integer(c_int) :: ierror_c
     integer(c_int) :: err, indegree, outdegree, weighted ! To get length of assumed-size arrays
 
+    comm_c = comm%MPI_VAL
+    err = MPIR_Dist_graph_neighbors_count_c(comm_c, indegree, outdegree, weighted)
+
     if (c_int == kind(0)) then
-        ierror_c = MPIR_Neighbor_alltoallw_cdesc(sendbuf, sendcounts, sdispls, sendtypes%MPI_VAL, recvbuf, recvcounts, rdispls, &
-            recvtypes%MPI_VAL, comm%MPI_VAL)
+        ierror_c = MPIR_Neighbor_alltoallw_cdesc(sendbuf, sendcounts, sdispls, sendtypes(1:outdegree)%MPI_VAL, &
+            recvbuf, recvcounts, rdispls, recvtypes(1:indegree)%MPI_VAL, comm%MPI_VAL)
     else
-        err = MPIR_Dist_graph_neighbors_count_c(comm_c, indegree, outdegree, weighted)
         sendtypes_c = sendtypes(1:outdegree)%MPI_VAL
         recvtypes_c = recvtypes(1:indegree)%MPI_VAL
-        comm_c = comm%MPI_VAL
-
         sendcounts_c = sendcounts(1:outdegree)
         recvcounts_c = recvcounts(1:indegree)
 

http://git.mpich.org/mpich.git/commitdiff/9008c2f7846ddbdbef6ee02ca42bf9a02c80e1e3

commit 9008c2f7846ddbdbef6ee02ca42bf9a02c80e1e3
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Tue May 6 10:33:05 2014 -0500

    Revise impl of MPI_IN_PLACE and MPI_BOTTOM
    
    Since Fortran forbids passing a disassociated (e.g., NULL) pointer to a non-pointer dummy argument
    (e.g., an assumed-type, assumed-rank argument), we can not use the same MPI_BOTTOM value in C from Fortran.
    So we use another approach.
    
    See implementation details at the EuroMPI-2014 paper "Implementing the MPI-3.0 Fortran 2008 Binding"
    
    No review since F08 binding is experimental now.

diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_link_constants.F90 b/src/binding/fortran/use_mpi_f08/mpi_f08_link_constants.F90
index ea3cb13..7c584de 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_link_constants.F90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_link_constants.F90
@@ -72,8 +72,7 @@ type(c_ptr), protected, bind(C, name="MPIR_C_MPI_WEIGHTS_EMPTY") :: MPIR_C_MPI_W
 !  MPI_IN_PLACE
 !
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-integer, bind(C, name="MPIR_F08_MPI_IN_PLACE_OBJ"), target :: MPI_IN_PLACE
-type(c_ptr), bind(C, name="MPIR_F08_MPI_IN_PLACE") :: MPIR_F08_MPI_IN_PLACE ! Point to MPI_IN_PLACE
+integer(c_int), bind(C, name="MPIR_F08_MPI_IN_PLACE"), target :: MPI_IN_PLACE
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
@@ -82,6 +81,6 @@ type(c_ptr), bind(C, name="MPIR_F08_MPI_IN_PLACE") :: MPIR_F08_MPI_IN_PLACE ! Po
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Buffer Address Constants
 ! A.1.1 p. 663
-integer, pointer :: MPI_BOTTOM => NULL()
+integer(c_int), bind(C, name="MPIR_F08_MPI_BOTTOM"), target :: MPI_BOTTOM
 
 end module mpi_f08_link_constants
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface b/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface
index 4c8987e..a3ec1e8 100755
--- a/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface
+++ b/src/binding/fortran/use_mpi_f08/wrappers_c/buildiface
@@ -329,6 +329,7 @@ while (<FD>) {
 
 #include "cdesc.h"
 EOT
+        my @choice_buf_indices;
 
         print CFILE "\n$retarg $cdesc_routine(";
         print CDESCH "extern $retarg $cdesc_routine(";
@@ -358,9 +359,10 @@ EOT
                 }
             }
 
-            # replace void * with CFI_cdesc_t*
+            # replace void * with CFI_cdesc_t*, and record choice buffer arg indices.
             if ($arglist[$x] =~ /.*void\s*\*/) {
                 $arglist[$x] = "CFI_cdesc_t*";
+                push(@choice_buf_indices, $x);
             }
             @argbits = split(/ /, $arglist[$x]);
 
@@ -392,38 +394,48 @@ EOT
             print CFILE "#ifdef MPI_MODE_RDONLY\n"
         }
 
+        #================================================
+        #
+        #      Print body of the C wrapper function
+        #
+        #================================================
         print CFILE "${tab}int err = MPI_SUCCESS;\n";
-        print CFILE "${tab}int is_contig = 1;\n\n";
-
-        for ($x = 0; $x <= $#arglist; $x++) {
-            if ($arglist[$x] =~ /CFI_cdesc_t\*/) {
-                print CFILE "    /* When MPI_BOTTOM is passed in, base_addr is NULL and it is illegal to call CFI_is_contiguous. */\n";
-                print CFILE "${tab}if (x$x->base_addr != NULL) {\n";
-                print CFILE "${tab}${tab}if (!CFI_is_contiguous(x$x)) { is_contig = 0; }\n";
-                print CFILE "${tab}}\n"
-            }
+        print CFILE "${tab}int is_contig = 1;\n";
+        for my $i (@choice_buf_indices) {
+            print CFILE "    void *addr$i = x$i->base_addr;\n"
         }
         print CFILE "\n";
 
-        print CFILE "${tab}if (is_contig) {\n";
+        # Handle MPI_BOTTOM
+        for my $i (@choice_buf_indices) {
+            print CFILE "    if (addr$i == &MPIR_F08_MPI_BOTTOM) {\n";
+            print CFILE "        addr$i = MPI_BOTTOM;\n";
+            print CFILE "    }\n\n";
+        }
+
+        # Hanlde MPI_IN_PLACE
         if (defined($inplace{$routine})) {
-            print CFILE "${tab}${tab}void *addr =  x$inplace{$routine}->base_addr;\n";
-            print CFILE "${tab}${tab}if (addr == MPIR_F08_MPI_IN_PLACE)\n";
-            print CFILE "${tab}${tab}${tab}addr = MPI_IN_PLACE;\n\n";
+            my $i = $inplace{$routine};
+            print CFILE "    if (addr$i == &MPIR_F08_MPI_IN_PLACE) {\n";
+            print CFILE "        addr$i = MPI_IN_PLACE;\n";
+            print CFILE "    }\n\n";
         }
-        print CFILE "${tab}${tab}err = $routine(";
-        for ($x = 0; $x <= $#arglist; $x++) {
-            if ($x) {
+
+        # Test if all choice buffers are contiguous
+        for my $i (@choice_buf_indices) {
+            print CFILE "    if (!CFI_is_contiguous(x$i)) is_contig = 0;\n\n";
+        }
+
+        print CFILE "    if (is_contig) {\n";
+        print CFILE "        err = $routine(";
+        for (my $i = 0; $i <= $#arglist; $i++) {
+            if ($i) {
                 print CFILE ", ";
             }
-            if (defined($inplace{$routine}) && $x eq $inplace{$routine}) {
-                print CFILE "addr";
-            }
-            else {
-                print CFILE "x$x";
-                if ($arglist[$x] =~ /CFI_cdesc_t\*/) {
-                    print CFILE "->base_addr";
-                }
+            if ($arglist[$i] =~ /CFI_cdesc_t\*/) {
+                print CFILE "addr$i";
+            } else {
+                print CFILE "x$i";
             }
         }
         print CFILE ");\n";
diff --git a/src/include/mpi.h.in b/src/include/mpi.h.in
index 0d6b53b..83d81d3 100644
--- a/src/include/mpi.h.in
+++ b/src/include/mpi.h.in
@@ -740,8 +740,8 @@ extern MPIU_DLL_SPEC MPI_Fint * MPI_F_STATUSES_IGNORE;
    The field order should match that in mpi_f08_types.f90, and mpi_c_interface_types.f90.
  */
 typedef struct {
-    int count_lo;
-    int count_hi_and_cancelled;
+    MPI_Fint count_lo;
+    MPI_Fint count_hi_and_cancelled;
     MPI_Fint MPI_SOURCE;
     MPI_Fint MPI_TAG;
     MPI_Fint MPI_ERROR;
@@ -749,12 +749,12 @@ typedef struct {
 
 extern MPI_F08_Status MPIR_F08_MPI_STATUS_IGNORE_OBJ;
 extern MPI_F08_Status MPIR_F08_MPI_STATUSES_IGNORE_OBJ[1];
-extern MPI_Fint MPIR_F08_MPI_IN_PLACE_OBJ;
+extern int MPIR_F08_MPI_IN_PLACE;
+extern int MPIR_F08_MPI_BOTTOM;
 
 /* Pointers to above objects */
 extern MPI_F08_Status *MPI_F08_STATUS_IGNORE;
 extern MPI_F08_Status *MPI_F08_STATUSES_IGNORE;
-extern void *MPIR_F08_MPI_IN_PLACE;
 
 /* For supported thread levels */
 #define MPI_THREAD_SINGLE 0
diff --git a/src/mpi/init/initthread.c b/src/mpi/init/initthread.c
index 751b3c3..fd13043 100644
--- a/src/mpi/init/initthread.c
+++ b/src/mpi/init/initthread.c
@@ -296,13 +296,12 @@ int *MPIR_C_MPI_ERRCODES_IGNORE;
 
 MPI_F08_Status MPIR_F08_MPI_STATUS_IGNORE_OBJ;
 MPI_F08_Status MPIR_F08_MPI_STATUSES_IGNORE_OBJ[1];
-MPI_Fint MPIR_F08_MPI_IN_PLACE_OBJ;
+int MPIR_F08_MPI_IN_PLACE;
+int MPIR_F08_MPI_BOTTOM;
 
 /* Althought the two STATUS pointers are required but the MPI3.0,  they are not used in MPICH F08 binding */
 MPI_F08_Status *MPI_F08_STATUS_IGNORE = &MPIR_F08_MPI_STATUS_IGNORE_OBJ;
 MPI_F08_Status *MPI_F08_STATUSES_IGNORE = &MPIR_F08_MPI_STATUSES_IGNORE_OBJ[0];
-
-void *MPIR_F08_MPI_IN_PLACE = &MPIR_F08_MPI_IN_PLACE_OBJ;
 #endif
 
 #undef FUNCNAME

http://git.mpich.org/mpich.git/commitdiff/1c2b3d35067af0ba8a66c320cc2e058f6e28f44e

commit 1c2b3d35067af0ba8a66c320cc2e058f6e28f44e
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Mon May 5 16:38:17 2014 -0500

    Code cleanup
    
    No review since F08 binding is experimental now.

diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_callbacks.F90 b/src/binding/fortran/use_mpi_f08/mpi_f08_callbacks.F90
index e891b0f..4a596dd 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_callbacks.F90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_callbacks.F90
@@ -20,7 +20,7 @@ public :: MPI_CONVERSION_FN_NULL
 
 abstract interface
 
-subroutine MPI_User_function(invec, inoutvec, len, datatype) BIND(C)
+subroutine MPI_User_function(invec, inoutvec, len, datatype)
     use, intrinsic :: iso_c_binding, only : c_ptr
     use mpi_f08_types, only : MPI_Datatype
     implicit none
@@ -30,7 +30,7 @@ subroutine MPI_User_function(invec, inoutvec, len, datatype) BIND(C)
 end subroutine
 
 subroutine MPI_Comm_copy_attr_function(oldcomm,comm_keyval,extra_state, &
-       attribute_val_in,attribute_val_out,flag,ierror) BIND(C)
+       attribute_val_in,attribute_val_out,flag,ierror)
     use mpi_f08_types, only : MPI_Comm
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -41,7 +41,7 @@ subroutine MPI_Comm_copy_attr_function(oldcomm,comm_keyval,extra_state, &
 end subroutine
 
 subroutine MPI_Comm_delete_attr_function(comm,comm_keyval, &
-       attribute_val, extra_state, ierror) BIND(C)
+       attribute_val, extra_state, ierror)
     use mpi_f08_types, only : MPI_Comm
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -51,7 +51,7 @@ subroutine MPI_Comm_delete_attr_function(comm,comm_keyval, &
 end subroutine
 
 subroutine MPI_Win_copy_attr_function(oldwin,win_keyval,extra_state, &
-       attribute_val_in,attribute_val_out,flag,ierror) BIND(C)
+       attribute_val_in,attribute_val_out,flag,ierror)
     use mpi_f08_types, only : MPI_Win
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -62,7 +62,7 @@ subroutine MPI_Win_copy_attr_function(oldwin,win_keyval,extra_state, &
 end subroutine
 
 subroutine MPI_Win_delete_attr_function(win,win_keyval,attribute_val, &
-       extra_state,ierror) BIND(C)
+       extra_state,ierror)
     use mpi_f08_types, only : MPI_Win
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -72,7 +72,7 @@ subroutine MPI_Win_delete_attr_function(win,win_keyval,attribute_val, &
 end subroutine
 
 subroutine MPI_Type_copy_attr_function(oldtype,type_keyval,extra_state, &
-       attribute_val_in,attribute_val_out,flag,ierror) BIND(C)
+       attribute_val_in,attribute_val_out,flag,ierror)
     use mpi_f08_types, only : MPI_Datatype
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -83,7 +83,7 @@ subroutine MPI_Type_copy_attr_function(oldtype,type_keyval,extra_state, &
 end subroutine
 
 subroutine MPI_Type_delete_attr_function(datatype,type_keyval, &
-       attribute_val,extra_state,ierror) BIND(C)
+       attribute_val,extra_state,ierror)
     use mpi_f08_types, only : MPI_Datatype
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -92,7 +92,7 @@ subroutine MPI_Type_delete_attr_function(datatype,type_keyval, &
     integer(kind=MPI_ADDRESS_KIND) :: attribute_val, extra_state
 end subroutine
 
-subroutine MPI_Comm_errhandler_function(comm,error_code) BIND(C)
+subroutine MPI_Comm_errhandler_function(comm,error_code)
     use mpi_f08_types, only : MPI_Comm
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -100,7 +100,7 @@ subroutine MPI_Comm_errhandler_function(comm,error_code) BIND(C)
     integer :: error_code
 end subroutine
 
-subroutine MPI_Win_errhandler_function(win, error_code) BIND(C)
+subroutine MPI_Win_errhandler_function(win, error_code)
     use mpi_f08_types, only : MPI_Win
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -108,7 +108,7 @@ subroutine MPI_Win_errhandler_function(win, error_code) BIND(C)
     integer :: error_code
 end subroutine
 
-subroutine MPI_File_errhandler_function(file, error_code) BIND(C)
+subroutine MPI_File_errhandler_function(file, error_code)
     use mpi_f08_types, only : MPI_File
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -116,7 +116,7 @@ subroutine MPI_File_errhandler_function(file, error_code) BIND(C)
     integer :: error_code
 end subroutine
 
-subroutine MPI_Grequest_query_function(extra_state,status,ierror) BIND(C)
+subroutine MPI_Grequest_query_function(extra_state,status,ierror)
     use mpi_f08_types, only : MPI_Status
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -125,14 +125,14 @@ subroutine MPI_Grequest_query_function(extra_state,status,ierror) BIND(C)
     integer(kind=MPI_ADDRESS_KIND) :: extra_state
 end subroutine
 
-subroutine MPI_Grequest_free_function(extra_state,ierror) BIND(C)
+subroutine MPI_Grequest_free_function(extra_state,ierror)
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
     integer :: ierror
     integer(kind=MPI_ADDRESS_KIND) :: extra_state
 end subroutine
 
-subroutine MPI_Grequest_cancel_function(extra_state,complete,ierror) BIND(C)
+subroutine MPI_Grequest_cancel_function(extra_state,complete,ierror)
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
     integer(kind=MPI_ADDRESS_KIND) :: extra_state
@@ -140,7 +140,7 @@ subroutine MPI_Grequest_cancel_function(extra_state,complete,ierror) BIND(C)
     integer :: ierror
 end subroutine
 
-subroutine MPI_Datarep_extent_function(datatype, extent, extra_state, ierror) BIND(C)
+subroutine MPI_Datarep_extent_function(datatype, extent, extra_state, ierror)
     use mpi_f08_types, only : MPI_Datatype
     use mpi_f08_compile_constants, only : MPI_ADDRESS_KIND
     implicit none
@@ -150,7 +150,7 @@ subroutine MPI_Datarep_extent_function(datatype, extent, extra_state, ierror) BI
 end subroutine
 
 subroutine MPI_Datarep_conversion_function(userbuf, datatype, count, &
-       filebuf, position, extra_state, ierror) BIND(C)
+       filebuf, position, extra_state, ierror)
     use, intrinsic :: iso_c_binding, only : c_ptr
     use mpi_f08_types, only : MPI_Datatype
     use mpi_f08_compile_constants, only : MPI_OFFSET_KIND, MPI_ADDRESS_KIND
@@ -291,7 +291,7 @@ subroutine MPI_WIN_NULL_DELETE_FN(win,win_keyval, &
 end subroutine
 
 subroutine MPI_CONVERSION_FN_NULL(userbuf, datatype, count, &
-       filebuf, position, extra_state, ierror) BIND(C)
+       filebuf, position, extra_state, ierror)
     use, intrinsic :: iso_c_binding, only : c_ptr
     use mpi_f08_types, only : MPI_Datatype
     use mpi_f08_compile_constants, only : MPI_OFFSET_KIND, MPI_ADDRESS_KIND
diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90 b/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90
index ff086f0..8ba6a6a 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_compile_constants.F90
@@ -2,8 +2,6 @@
 ! From A.1.1
 ! The module also contains the conversion routines for mpi_status
 !
-! Module mpi_f08_compile_constants is a helper module used by  mpi_f08
-! It is not defined in the spec and not intended for end users.
 !--------------------------------------------------------------
 
 module mpi_f08_compile_constants
@@ -11,7 +9,7 @@ module mpi_f08_compile_constants
 use,intrinsic :: iso_c_binding, only: c_int, c_ptr
 use,intrinsic :: iso_fortran_env, only: int32, int64, real32, real64
 use :: mpi_f08_types
-use :: mpi_c_interface_types, only: C_Aint, C_Count, C_Offset, c_Status
+use :: mpi_c_interface_types, only: c_Aint, c_Count, c_Offset, c_Status
 
 !====================================================================
 ! Make names brought in from other modules private if they should not
@@ -28,9 +26,9 @@ private :: real32
 private :: real64
 
 ! Make nmes from mpi_C_types private
-private :: C_Aint
-private :: C_Count
-private :: C_Offset
+private :: c_Aint
+private :: c_Count
+private :: c_Offset
 
 !=========================================
 ! Definitions of MPI Constants for Fortran
@@ -118,19 +116,6 @@ integer,parameter ::  MPI_ERR_SPAWN        = 42
 integer,parameter ::  MPI_ERR_UNSUPPORTED_DATAREP  = 43
 integer,parameter ::  MPI_ERR_UNSUPPORTED_OPERATION  = 44
 integer,parameter ::  MPI_ERR_WIN          = 45
-!integer,parameter ::  MPI_T_ERR_CANNOT_INIT      = 999905  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_NOT_INITIALIZED  = 999906  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_MEMORY           = 999907  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_INVALID_INDEX    = 999908  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_INVALID_ITEM     = 999909  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_INVALID_SESSION  = 999910  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_INVALID_HANDLE   = 999911  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_OUT_OF_HANDLES   = 999912  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_OUT_OF_SESSIONS  = 999913  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_CVAR_SET_NOT_NOW = 999914  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_CVAR_SET_NEVER   = 999915  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_PVAR_NO_WRITE    = 999916  ! **** NEED VALUE
-!integer,parameter ::  MPI_T_ERR_PVAR_NO_STARTUP  = 999917  ! **** NEED VALUE
 integer,parameter ::  MPI_ERR_LASTCODE     = 1073741823
 
 ! Assorted Constants
@@ -154,19 +139,12 @@ type(MPI_Message),parameter    :: MPI_MESSAGE_NO_PROC = MPI_Message(1811939328)
 logical,parameter :: MPI_SUBARRAYS_SUPPORTED        = .false.
 logical,parameter :: MPI_ASYNC_PROTECTS_NONBLOCKING = .true.  ! Value differs from mpif.h
 
-! Status size and reserved index values
-! A.1.1 p. 664
-!integer,parameter :: MPI_STATUS_SIZE = 8   ! defined in mpi_C_types
-!integer,parameter :: MPI_SOURCE      = 1   ! defined in mpi_C_types
-!integer,parameter :: MPI_TAG         = 2   ! defined in mpi_C_types
-!integer,parameter :: MPI_ERROR       = 3   ! defined in mpi_C_types
-
 ! Variable Address Size
 ! A.1.1 p. 664
-integer,parameter :: MPI_ADDRESS_KIND = C_Aint     ! Defined in mpi_C_types
-integer,parameter :: MPI_COUNT_KIND   = C_Count    ! Defined in mpi_C_types
+integer,parameter :: MPI_ADDRESS_KIND = c_Aint     ! Defined in mpi_c_interface_types
+integer,parameter :: MPI_COUNT_KIND   = c_Count    ! Defined in mpi_c_interface_types
 integer,parameter :: MPI_INTEGER_KIND = KIND(0)
-integer,parameter :: MPI_OFFSET_KIND  = C_Offset   ! Defined in mpi_C_types
+integer,parameter :: MPI_OFFSET_KIND  = c_Offset   ! Defined in mpi_c_interface_types
 
 ! Error Handling Specifiers
 ! A.1.1 p. 664
diff --git a/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90 b/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90
index fe27fe8..231a1ee 100644
--- a/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90
+++ b/src/binding/fortran/use_mpi_f08/mpi_f08_types.F90
@@ -57,9 +57,9 @@ end type MPI_Message
 
 ! Fortran 2008 struct for status. Must be consistent with mpi.h, mpif.h
 type, bind(C) :: MPI_Status
-    integer(c_int) :: count_lo;
-    integer(c_int) :: count_hi_and_cancelled;
-    integer :: MPI_SOURCE ! Not conform to MPI_Status in C if integer kind is not c_int
+    integer :: count_lo;
+    integer :: count_hi_and_cancelled;
+    integer :: MPI_SOURCE
     integer :: MPI_TAG
     integer :: MPI_ERROR
 end type MPI_Status
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/abort_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/abort_f08ts.F90
index faa6c54..455a558 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/abort_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/abort_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Abort_f08(comm, errorcode, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Abort_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/accumulate_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/accumulate_f08ts.F90
index b2ebf36..d56e48e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/accumulate_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/accumulate_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Accumulate_f08ts(origin_addr, origin_count, origin_datatype, target_rank, &
     target_disp, target_count, target_datatype, op, win, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Win
     use :: mpi_f08, only : MPI_ADDRESS_KIND
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Win
     use :: mpi_c_interface, only : MPIR_Accumulate_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/allgather_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/allgather_f08ts.F90
index ee262a3..995aec7 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/allgather_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/allgather_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Allgather_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Allgather_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/allgatherv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/allgatherv_f08ts.F90
index eb2a9fe..d228c29 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/allgatherv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/allgatherv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Allgatherv_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, &
     recvtype, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Allgatherv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/alloc_mem_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/alloc_mem_f08ts.F90
index ec86259..d5b12e3 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/alloc_mem_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/alloc_mem_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Alloc_mem_f08(size, info, baseptr, ierror)
     use, intrinsic :: iso_c_binding, only : c_ptr
-    use :: mpi_f08, only : MPI_Info
     use, intrinsic :: iso_c_binding, only : c_ptr, c_int
+    use :: mpi_f08, only : MPI_Info
     use :: mpi_f08, only : MPI_ADDRESS_KIND
     use :: mpi_c_interface, only : c_Info
     use :: mpi_c_interface, only : MPIR_Alloc_mem_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/allreduce_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/allreduce_f08ts.F90
index 73c9074..9aaaa6e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/allreduce_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/allreduce_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Allreduce_f08ts(sendbuf, recvbuf, count, datatype, op, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm
     use :: mpi_c_interface, only : MPIR_Allreduce_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/alltoall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/alltoall_f08ts.F90
index 1219c42..ae1c05b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/alltoall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/alltoall_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Alltoall_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Alltoall_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallv_f08ts.F90
index d470a8f..f1869cd 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Alltoallv_f08ts(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, &
     rdispls, recvtype, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Alltoallv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallw_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallw_f08ts.F90
index ce4dc26..1f507ca 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallw_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/alltoallw_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Alltoallw_f08ts(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, &
     rdispls, recvtypes, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Alltoallw_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/barrier_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/barrier_f08ts.F90
index 85ad641..d22e4c8 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/barrier_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/barrier_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Barrier_f08(comm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Barrier_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/bcast_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/bcast_f08ts.F90
index 1e98579..242357e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/bcast_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/bcast_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Bcast_f08ts(buffer, count, datatype, root, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Bcast_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_f08ts.F90
index 86d3c15..8455e64 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Bsend_f08ts(buf, count, datatype, dest, tag, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Bsend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_init_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_init_f08ts.F90
index e4ca5d3..eeab4e6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_init_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/bsend_init_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Bsend_init_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Bsend_init_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/buffer_detach_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/buffer_detach_f08ts.F90
index 527db47..0d0aca7 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/buffer_detach_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/buffer_detach_f08ts.F90
@@ -4,7 +4,6 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Buffer_detach_f08(buffer_addr, size, ierror)
-    use, intrinsic :: iso_c_binding, only : c_ptr
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : MPIR_Buffer_detach_c
 
@@ -14,19 +13,15 @@ subroutine MPI_Buffer_detach_f08(buffer_addr, size, ierror)
     integer, intent(out) :: size
     integer, optional, intent(out) :: ierror
 
-    type(c_ptr) :: buffer_addr_c
     integer(c_int) :: size_c
     integer(c_int) :: ierror_c
 
     if (c_int == kind(0)) then
         ierror_c = MPIR_Buffer_detach_c(buffer_addr, size)
     else
-        buffer_addr_c = buffer_addr
-        ierror_c = MPIR_Buffer_detach_c(buffer_addr_c, size_c)
-        buffer_addr = buffer_addr_c
+        ierror_c = MPIR_Buffer_detach_c(buffer_addr, size_c)
         size = size_c
     end if
 
     if (present(ierror)) ierror = ierror_c
-
 end subroutine MPI_Buffer_detach_f08
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cancel_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cancel_f08ts.F90
index 5eea71f..a64e944 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cancel_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cancel_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cancel_f08(request, ierror)
-    use :: mpi_f08, only : MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : MPIR_Cancel_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_coords_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_coords_f08ts.F90
index e2f4dfb..2648769 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_coords_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_coords_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_coords_f08(comm, rank, maxdims, coords, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_coords_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_create_f08ts.F90
index 16faa64..33a1507 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_create_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_create_f08(comm_old, ndims, dims, periods, reorder, comm_cart, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_create_c
 
@@ -31,15 +31,15 @@ subroutine MPI_Cart_create_f08(comm_old, ndims, dims, periods, reorder, comm_car
     reorder_c = merge(1, 0, reorder)
 
     if (c_int == kind(0)) then
-        ierror_c = MPIR_Cart_create_c(comm_old%MPI_VAL, ndims, dims, periods_c, reorder_c, comm_cart_c)
+        ierror_c = MPIR_Cart_create_c(comm_old%MPI_VAL, ndims, dims, periods_c, reorder_c, comm_cart%MPI_VAL)
     else
         comm_old_c = comm_old%MPI_VAL
         ndims_c = ndims
         dims_c = dims
         ierror_c = MPIR_Cart_create_c(comm_old_c, ndims_c, dims_c, periods_c, reorder_c, comm_cart_c)
+        comm_cart%MPI_VAL = comm_cart_c
     end if
 
-    comm_cart%MPI_VAL = comm_cart_c
     if(present(ierror)) ierror = ierror_c
 
 end subroutine MPI_Cart_create_f08
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_get_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_get_f08ts.F90
index 9f141ae..d5c6724 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_get_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_get_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_get_f08(comm, maxdims, dims, periods, coords, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_get_c
 
@@ -35,7 +35,7 @@ subroutine MPI_Cart_get_f08(comm, maxdims, dims, periods, coords, ierror)
         coords = coords_c
     end if
 
-    periods = merge(.true., .false., periods_c(:) /= 0)
+    periods = (periods_c /= 0)
 
     if(present(ierror)) ierror = ierror_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_map_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_map_f08ts.F90
index 5225db4..caa2469 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_map_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_map_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_map_f08(comm, ndims, dims, periods, newrank, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_map_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_rank_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_rank_f08ts.F90
index 14ca015..3fa04ce 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_rank_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_rank_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_rank_f08(comm, coords, rank, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_rank_c, MPIR_Cartdim_get_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_shift_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_shift_f08ts.F90
index cef0587..7da3982 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_shift_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_shift_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_shift_f08(comm, direction, disp, rank_source, rank_dest, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_shift_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_sub_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_sub_f08ts.F90
index 09cadd1..aaea10d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cart_sub_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cart_sub_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cart_sub_f08(comm, remain_dims, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_SUCCESS
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_SUCCESS
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cart_sub_c, MPIR_Cartdim_get_c
 
@@ -30,7 +30,7 @@ subroutine MPI_Cart_sub_f08(comm, remain_dims, newcomm, ierror)
         ierror_c = MPIR_Cart_sub_c(comm_c, remain_dims_c, newcomm_c)
         newcomm%MPI_VAL = newcomm_c
     end if
-    
+
     if(present(ierror)) ierror = ierror_c
 
 end subroutine MPI_Cart_sub_f08
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/cartdim_get_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/cartdim_get_f08ts.F90
index 179d7d7..d21f040 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/cartdim_get_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/cartdim_get_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Cartdim_get_f08(comm, ndims, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Cartdim_get_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_call_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_call_errhandler_f08ts.F90
index 8588a82..783fd0b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_call_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_call_errhandler_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_call_errhandler_f08(comm, errorcode, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_call_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_compare_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_compare_f08ts.F90
index 9ef05aa..65f94b7 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_compare_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_compare_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_compare_f08(comm1,comm2,result, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_compare_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_errhandler_f08ts.F90
index ec8533c..5a56a9a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_errhandler_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_create_errhandler_f08(comm_errhandler_fn, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Errhandler
-    use :: mpi_f08, only : MPI_Comm_errhandler_function
     use, intrinsic :: iso_c_binding, only : c_funloc
     use, intrinsic :: iso_c_binding, only : c_int, c_funptr
+    use :: mpi_f08, only : MPI_Errhandler
+    use :: mpi_f08, only : MPI_Comm_errhandler_function
     use :: mpi_c_interface, only : c_Errhandler
     use :: mpi_c_interface, only : MPIR_Comm_create_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_f08ts.F90
index 2a5d5cd..2c99b34 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_create_f08(comm, group, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use :: mpi_c_interface, only : c_Group, c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_create_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_group_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_group_f08ts.F90
index 00b81d5..4c0b856 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_group_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_create_group_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_create_group_f08(comm, group, tag, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use :: mpi_c_interface, only : c_Group, c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_create_group_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_delete_attr_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_delete_attr_f08ts.F90
index 17a7965..2206451 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_delete_attr_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_delete_attr_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_delete_attr_f08(comm, comm_keyval, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_delete_attr_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_disconnect_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_disconnect_f08ts.F90
index dba3cd6..304a227 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_disconnect_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_disconnect_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_disconnect_f08(comm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_disconnect_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_f08ts.F90
index 9a03c4f..1409682 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_dup_f08(comm, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_dup_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_with_info_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_with_info_f08ts.F90
index f2c303a..b46cf8c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_with_info_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_dup_with_info_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_dup_with_info_f08(comm, info, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Info
     use :: mpi_c_interface, only : c_Comm, c_Info
     use :: mpi_c_interface, only : MPIR_Comm_dup_with_info_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_free_f08ts.F90
index d77fd64..5e25b23 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_free_f08(comm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_errhandler_f08ts.F90
index 655c652..6152e4b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_errhandler_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_get_errhandler_f08(comm, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Errhandler
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Errhandler
     use :: mpi_c_interface, only : c_Comm, c_Errhandler
     use :: mpi_c_interface, only : MPIR_Comm_get_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_parent_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_parent_f08ts.F90
index 2883878..1201b8f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_parent_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_get_parent_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_get_parent_f08(parent, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_get_parent_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_group_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_group_f08ts.F90
index f71ec2a..c146406 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_group_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_group_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_group_f08(comm, group, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use :: mpi_c_interface, only : c_Comm, c_Group
     use :: mpi_c_interface, only : MPIR_Comm_group_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_idup_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_idup_f08ts.F90
index 278cf0b..42237ec 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_idup_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_idup_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_idup_f08(comm, newcomm, request, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Comm_idup_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_join_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_join_f08ts.F90
index 8e8983b..d9b5ed7 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_join_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_join_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_join_f08(fd, intercomm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_join_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_rank_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_rank_f08ts.F90
index 58d914a..7f70455 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_rank_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_rank_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_rank_f08(comm, rank, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_rank_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_group_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_group_f08ts.F90
index 7eb4cf2..0cd8a01 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_group_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_group_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_remote_group_f08(comm, group, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Group
     use :: mpi_c_interface, only : c_Comm, c_Group
     use :: mpi_c_interface, only : MPIR_Comm_remote_group_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_size_f08ts.F90
index 5b8b204..7e53b07 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_remote_size_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_remote_size_f08(comm, size, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_remote_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_set_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_set_errhandler_f08ts.F90
index 4b480d7..702e0a4 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_set_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_set_errhandler_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_set_errhandler_f08(comm, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Errhandler
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Errhandler
     use :: mpi_c_interface, only : c_Comm, c_Errhandler
     use :: mpi_c_interface, only : MPIR_Comm_set_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_size_f08ts.F90
index 1bde4ff..64038de 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_size_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_size_f08(comm, size, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_f08ts.F90
index 3bbba73..8204784 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_split_f08(comm, color, key, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_split_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_type_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_type_f08ts.F90
index ce3acce..596d205 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_type_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_split_type_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_split_type_f08(comm, split_type, key, info, newcomm, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Info
     use :: mpi_c_interface, only : c_Comm, c_Info
     use :: mpi_c_interface, only : MPIR_Comm_split_type_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_test_inter_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_test_inter_f08ts.F90
index f96ef0a..3bc6940 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/comm_test_inter_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/comm_test_inter_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Comm_test_inter_f08(comm, flag, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Comm_test_inter_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_count_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_count_f08ts.F90
index 4e34322..b256c45 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_count_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_count_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Dist_graph_neighbors_count_f08(comm, indegree, outdegree, weighted, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_f08ts.F90
index f64946c..73a0233 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/dist_graph_neighbors_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Dist_graph_neighbors_f08(comm, maxindegree, sources, sourceweights, &
     maxoutdegree, destinations, destweights, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Dist_graph_neighbors_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/errhandler_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/errhandler_free_f08ts.F90
index 41535d5..5694ba5 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/errhandler_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/errhandler_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Errhandler_free_f08(errhandler, ierror)
-    use :: mpi_f08, only : MPI_Errhandler
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Errhandler
     use :: mpi_c_interface, only : c_Errhandler
     use :: mpi_c_interface, only : MPIR_Errhandler_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/exscan_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/exscan_f08ts.F90
index 5e3788b..2eda11c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/exscan_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/exscan_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Exscan_f08ts(sendbuf, recvbuf, count, datatype, op, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm
     use :: mpi_c_interface, only : MPIR_Exscan_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_call_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_call_errhandler_f08ts.F90
index 576d8e3..252fbd9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_call_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_call_errhandler_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_call_errhandler_f08(fh, errorcode, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_call_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_close_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_close_f08ts.F90
index 56d02c8..1f977dd 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_close_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_close_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_close_f08(fh, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_close_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_create_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_create_errhandler_f08ts.F90
index 55455da..48ab6fb 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_create_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_create_errhandler_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_create_errhandler_f08(file_errhandler_fn, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Errhandler
-    use :: mpi_f08, only : MPI_File_errhandler_function
     use, intrinsic :: iso_c_binding, only : c_funloc
     use, intrinsic :: iso_c_binding, only : c_int, c_funptr
+    use :: mpi_f08, only : MPI_Errhandler
+    use :: mpi_f08, only : MPI_File_errhandler_function
     use :: mpi_c_interface, only : c_Errhandler
     use :: mpi_c_interface, only : MPIR_File_create_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_amode_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_amode_f08ts.F90
index 31f335d..93ca96e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_amode_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_amode_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_amode_f08(fh, amode, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_get_amode_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_atomicity_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_atomicity_f08ts.F90
index 2487794..55a4f59 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_atomicity_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_atomicity_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_atomicity_f08(fh, flag, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_get_atomicity_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_byte_offset_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_byte_offset_f08ts.F90
index cab37f2..02085c5 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_byte_offset_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_byte_offset_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_byte_offset_f08(fh, offset, disp, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_get_byte_offset_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_errhandler_f08ts.F90
index af242d1..c418631 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_errhandler_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_errhandler_f08(file, errhandler, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Errhandler
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Errhandler
     use :: mpi_c_interface, only : MPIR_File_get_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_group_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_group_f08ts.F90
index 63eb927..2c87a90 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_group_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_group_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_group_f08(fh, group, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Group
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Group
     use :: mpi_c_interface, only : MPIR_File_get_group_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_info_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_info_f08ts.F90
index 7748d46..035f059 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_info_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_info_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_info_f08(fh, info_used, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Info
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Info
     use :: mpi_c_interface, only : MPIR_File_get_info_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_f08ts.F90
index bc80af8..041fe34 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_position_f08(fh, offset, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_get_position_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_shared_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_shared_f08ts.F90
index dde09bc..f832968 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_shared_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_position_shared_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_position_shared_f08(fh, offset, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_get_position_shared_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_size_f08ts.F90
index 648daa1..008c45f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_size_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_size_f08(fh, size, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_get_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_type_extent_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_type_extent_f08ts.F90
index 9e4c7d7..7e16a58 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_type_extent_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_get_type_extent_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_get_type_extent_f08(fh, datatype, extent, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_ADDRESS_KIND
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_get_type_extent_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_at_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_at_f08ts.F90
index 6c3f1ab..a0c19f8 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_at_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_at_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_iread_at_f08ts(fh, offset, buf, count, datatype, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Request
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype, c_Request
     use :: mpi_c_interface, only : MPIR_File_iread_at_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_f08ts.F90
index 1e20517..466d13e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_iread_f08ts(fh, buf, count, datatype, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Request
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype, c_Request
     use :: mpi_c_interface, only : MPIR_File_iread_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_shared_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_shared_f08ts.F90
index 5641753..941e151 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_shared_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iread_shared_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_iread_shared_f08ts(fh, buf, count, datatype, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Request
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype, c_Request
     use :: mpi_c_interface, only : MPIR_File_iread_shared_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_at_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_at_f08ts.F90
index 0575d05..6af034a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_at_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_at_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_iwrite_at_f08ts(fh, offset, buf, count, datatype, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Request
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype, c_Request
     use :: mpi_c_interface, only : MPIR_File_iwrite_at_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_f08ts.F90
index 1972174..3655fff 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_iwrite_f08ts(fh, buf, count, datatype, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Request
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype, c_Request
     use :: mpi_c_interface, only : MPIR_File_iwrite_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_shared_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_shared_f08ts.F90
index 947a655..c974d0b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_shared_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_iwrite_shared_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_iwrite_shared_f08ts(fh, buf, count, datatype, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Request
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype, c_Request
     use :: mpi_c_interface, only : MPIR_File_iwrite_shared_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_open_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_open_f08ts.F90
index 37fa4a6..61376ea 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_open_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_open_f08ts.F90
@@ -4,13 +4,13 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_open_f08(comm, filename, amode, info, fh, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int, c_char
     use :: mpi_f08, only : MPI_Comm, MPI_Info, MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_char
     use :: mpi_c_interface, only : c_Comm, c_Info, c_File
     use :: mpi_c_interface, only : MPIR_File_open_c
-
     use :: mpi_c_interface, only : MPIR_Fortran_string_f2c
+
     implicit none
 
     type(MPI_Comm), intent(in) :: comm
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_preallocate_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_preallocate_f08ts.F90
index ca296de..ee171f9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_preallocate_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_preallocate_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_preallocate_f08(fh, size, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_preallocate_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_begin_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_begin_f08ts.F90
index e43c2ca..83f6dd9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_begin_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_begin_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_all_begin_f08ts(fh, buf, count, datatype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_read_all_begin_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_end_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_end_f08ts.F90
index 09e1b47..08f0030 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_end_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_end_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_all_end_f08ts(fh, buf, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_all_end_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_f08ts.F90
index 508ff94..ff823a1 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_all_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_all_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_all_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_begin_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_begin_f08ts.F90
index b59ade5..c64aee0 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_begin_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_begin_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_at_all_begin_f08ts(fh, offset, buf, count, datatype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_read_at_all_begin_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_end_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_end_f08ts.F90
index f2b0c11..87f74ba 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_end_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_end_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_at_all_end_f08ts(fh, buf, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_at_all_end_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_f08ts.F90
index 7b50819..5b747ba 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_all_f08ts.F90
@@ -4,12 +4,12 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_at_all_f08ts(fh, offset, buf, count, datatype, status, ierror)
+    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_OFFSET_KIND
-    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_at_all_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_f08ts.F90
index 6e287a9..9f2b9de 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_at_f08ts.F90
@@ -4,12 +4,12 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_at_f08ts(fh, offset, buf, count, datatype, status, ierror)
+    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_OFFSET_KIND
-    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_at_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_f08ts.F90
index 84a14c9..a0297a5 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_begin_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_begin_f08ts.F90
index 77c4d57..88db732 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_begin_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_begin_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_ordered_begin_f08ts(fh, buf, count, datatype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_read_ordered_begin_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_end_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_end_f08ts.F90
index 10f02a3..c31e3a8 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_end_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_end_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_ordered_end_f08ts(fh, buf, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_ordered_end_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_f08ts.F90
index 55066a9..733b09a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_ordered_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_ordered_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_ordered_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_shared_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_shared_f08ts.F90
index 779c65b..7245ded 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_shared_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_read_shared_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_read_shared_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_read_shared_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_f08ts.F90
index 7d6cab7..72b5b69 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_seek_f08(fh, offset, whence, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_seek_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_shared_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_shared_f08ts.F90
index b4d4d64..4c46a54 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_shared_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_seek_shared_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_seek_shared_f08(fh, offset, whence, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_seek_shared_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_atomicity_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_atomicity_f08ts.F90
index 7ac95c2..4d2a5e3 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_atomicity_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_atomicity_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_set_atomicity_f08(fh, flag, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_set_atomicity_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_errhandler_f08ts.F90
index 0489ee2..cabad24 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_errhandler_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_set_errhandler_f08(file, errhandler, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Errhandler
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Errhandler
     use :: mpi_c_interface, only : MPIR_File_set_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_info_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_info_f08ts.F90
index 71934a6..15f6873 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_info_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_info_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_set_info_f08(fh, info, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Info
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Info
     use :: mpi_c_interface, only : MPIR_File_set_info_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_size_f08ts.F90
index cbe3b38..da6c32f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_set_size_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_set_size_f08(fh, size, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_set_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_sync_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_sync_f08ts.F90
index ce54256..c15e907 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_sync_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_sync_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_sync_f08(fh, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : MPIR_File_sync_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_begin_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_begin_f08ts.F90
index 8df8d83..944845c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_begin_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_begin_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_all_begin_f08ts(fh, buf, count, datatype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_write_all_begin_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_end_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_end_f08ts.F90
index 5ca6ada..9468cad 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_end_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_end_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_all_end_f08ts(fh, buf, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_all_end_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_f08ts.F90
index 32cc71e..702a516 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_all_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_all_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_all_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_begin_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_begin_f08ts.F90
index 913c80e..39982ec 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_begin_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_begin_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_at_all_begin_f08ts(fh, offset, buf, count, datatype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_OFFSET_KIND
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_write_at_all_begin_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_end_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_end_f08ts.F90
index 49ef60f..a77d81a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_end_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_end_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_at_all_end_f08ts(fh, buf, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_at_all_end_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_f08ts.F90
index e83e759..2227c8e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_all_f08ts.F90
@@ -4,12 +4,12 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_at_all_f08ts(fh, offset, buf, count, datatype, status, ierror)
+    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_OFFSET_KIND
-    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_at_all_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_f08ts.F90
index d3ccc6c..25ce3fa 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_at_f08ts.F90
@@ -4,12 +4,12 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_at_f08ts(fh, offset, buf, count, datatype, status, ierror)
+    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_OFFSET_KIND
-    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_at_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_f08ts.F90
index 9e4bd33..4837cea 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_begin_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_begin_f08ts.F90
index e006e27..04cba91 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_begin_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_begin_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_ordered_begin_f08ts(fh, buf, count, datatype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_File, MPI_Datatype
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : MPIR_File_write_ordered_begin_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_end_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_end_f08ts.F90
index 26a0f6a..0fbf0ea 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_end_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_end_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_ordered_end_f08ts(fh, buf, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_ordered_end_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_f08ts.F90
index 42dacf7..8e08376 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_ordered_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_ordered_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_ordered_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_shared_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_shared_f08ts.F90
index 1e98f87..11e008a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_shared_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/file_write_shared_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_File_write_shared_f08ts(fh, buf, count, datatype, status, ierror)
-    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_File, MPI_Datatype, MPI_Status
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_f08, only : MPI_File_f2c, MPI_File_c2f
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_File, c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_File_write_shared_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/gather_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/gather_f08ts.F90
index 8b16811..1a185ff 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/gather_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/gather_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Gather_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     root, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Gather_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/gatherv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/gatherv_f08ts.F90
index b366534..5876814 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/gatherv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/gatherv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Gatherv_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, &
     recvtype, root, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Gatherv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/get_address_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/get_address_f08ts.F90
index 53ca210..e49c2e6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/get_address_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/get_address_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Get_address_f08ts(location, address, ierror)
-    use :: mpi_f08, only : MPI_ADDRESS_KIND
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_ADDRESS_KIND
     use :: mpi_c_interface, only : MPIR_Get_address_cdesc
 
     implicit none
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/get_count_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/get_count_f08ts.F90
index ed9cc8a..f22c0c6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/get_count_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/get_count_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Get_count_f08(status, datatype, count, ierror)
-    use :: mpi_f08, only : MPI_Status, MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_loc
-    use :: mpi_f08, only : assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Status, MPI_Datatype
+    use :: mpi_f08, only : assignment(=)
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Get_count_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_f08ts.F90
index 3951ebd..1bf6426 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Get_elements_f08(status, datatype, count, ierror)
-    use :: mpi_f08, only : MPI_Status, MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_loc
-    use :: mpi_f08, only : assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Status, MPI_Datatype
+    use :: mpi_f08, only : assignment(=)
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Get_elements_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_x_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_x_f08ts.F90
index db893eb..8e38c3a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_x_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/get_elements_x_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Get_elements_x_f08(status, datatype, count, ierror)
+    use, intrinsic :: iso_c_binding, only : c_loc
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_f08, only : MPI_Status, MPI_Datatype
     use :: mpi_f08, only : MPI_COUNT_KIND
-    use, intrinsic :: iso_c_binding, only : c_loc
     use :: mpi_f08, only : assignment(=)
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Get_elements_x_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/get_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/get_f08ts.F90
index dc4c7d3..9403b33 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/get_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/get_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Get_f08ts(origin_addr, origin_count, origin_datatype, target_rank, &
     target_disp, target_count, target_datatype, win, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype, MPI_Win
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype, c_Win
     use :: mpi_c_interface, only : MPIR_Get_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_create_f08ts.F90
index 65ad5e6..f5aa041 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_create_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Graph_create_f08(comm_old, nnodes, index, edges, reorder, comm_graph, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Graph_create_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_get_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_get_f08ts.F90
index 96584f0..4085b4b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_get_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_get_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Graph_get_f08(comm, maxindex, maxedges, index, edges, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Graph_get_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_map_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_map_f08ts.F90
index 4ace89a..5b28edd 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_map_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_map_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Graph_map_f08(comm, nnodes, index, edges, newrank, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Graph_map_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_count_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_count_f08ts.F90
index 5aeb21e..de3391c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_count_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_count_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Graph_neighbors_count_f08(comm, rank, nneighbors, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_f08ts.F90
index 09df0d9..b9a3a00 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/graph_neighbors_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Graph_neighbors_f08(comm, rank, maxneighbors, neighbors, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Graph_neighbors_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/graphdims_get_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/graphdims_get_f08ts.F90
index 3b6725c..d414afb 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/graphdims_get_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/graphdims_get_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Graphdims_get_f08(comm, nnodes, nedges, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Graphdims_get_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/grequest_complete_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/grequest_complete_f08ts.F90
index 8bde054..de86ba0 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/grequest_complete_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/grequest_complete_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Grequest_complete_f08(request, ierror)
-    use :: mpi_f08, only : MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : MPIR_Grequest_complete_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_compare_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_compare_f08ts.F90
index f2a3489..a62fd19 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_compare_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_compare_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_compare_f08(group1,group2,result, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_compare_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_difference_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_difference_f08ts.F90
index b807cab..59ca724 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_difference_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_difference_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_difference_f08(group1,group2,newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_difference_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_excl_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_excl_f08ts.F90
index 699a36c..00aeda0 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_excl_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_excl_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_excl_f08(group, n,ranks, newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_excl_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_free_f08ts.F90
index adc2181..f9a5407 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_free_f08(group, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_incl_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_incl_f08ts.F90
index daa5aa6..94910ad 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_incl_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_incl_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_incl_f08(group, n,ranks, newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_incl_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_intersection_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_intersection_f08ts.F90
index b3496f9..8866109 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_intersection_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_intersection_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_intersection_f08(group1,group2,newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_intersection_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_excl_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_excl_f08ts.F90
index ce0d78b..20d3140 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_excl_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_excl_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_range_excl_f08(group, n,ranges, newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_range_excl_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_incl_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_incl_f08ts.F90
index 89cb32b..b774cee 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_incl_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_range_incl_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_range_incl_f08(group, n,ranges, newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_range_incl_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_rank_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_rank_f08ts.F90
index 32a7cfa..c0209fa 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_rank_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_rank_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_rank_f08(group, rank, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_rank_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_size_f08ts.F90
index 049dfec..d270f4c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_size_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_size_f08(group, size, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_translate_ranks_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_translate_ranks_f08ts.F90
index 328252f..1f07678 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_translate_ranks_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_translate_ranks_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_translate_ranks_f08(group1,n, ranks1,group2,ranks2,ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_translate_ranks_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/group_union_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/group_union_f08ts.F90
index 9749935..40042cb 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/group_union_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/group_union_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Group_union_f08(group1,group2,newgroup, ierror)
-    use :: mpi_f08, only : MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group
     use :: mpi_c_interface, only : c_Group
     use :: mpi_c_interface, only : MPIR_Group_union_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iallgather_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iallgather_f08ts.F90
index 431d9f2..77a79da 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iallgather_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iallgather_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Iallgather_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iallgather_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iallgatherv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iallgatherv_f08ts.F90
index 82cca83..b2f6e12 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iallgatherv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iallgatherv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Iallgatherv_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, &
     recvtype, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iallgatherv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iallreduce_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iallreduce_f08ts.F90
index cce000f..064d6ed 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iallreduce_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iallreduce_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Iallreduce_f08ts(sendbuf, recvbuf, count, datatype, op, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iallreduce_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoall_f08ts.F90
index 431fbbf..488cfbc 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoall_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ialltoall_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ialltoall_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallv_f08ts.F90
index 1fbc70c..2e1453c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ialltoallv_f08ts(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, &
     rdispls, recvtype, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ialltoallv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallw_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallw_f08ts.F90
index acf5341..e7e1398 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallw_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ialltoallw_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ialltoallw_f08ts(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, &
     rdispls, recvtypes, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ialltoallw_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ibarrier_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ibarrier_f08ts.F90
index d2c821e..9a3111d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ibarrier_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ibarrier_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Ibarrier_f08(comm, request, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ibarrier_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ibcast_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ibcast_f08ts.F90
index 962f460..4dde79e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ibcast_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ibcast_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Ibcast_f08ts(buffer, count, datatype, root, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ibcast_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ibsend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ibsend_f08ts.F90
index aa177ab..48a81c1 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ibsend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ibsend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Ibsend_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ibsend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iexscan_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iexscan_f08ts.F90
index 53401ac..a2c9130 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iexscan_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iexscan_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Iexscan_f08ts(sendbuf, recvbuf, count, datatype, op, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iexscan_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/igather_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/igather_f08ts.F90
index 4d9f88f..d7d9146 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/igather_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/igather_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Igather_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     root, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Igather_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/igatherv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/igatherv_f08ts.F90
index dc34238..8015cd8 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/igatherv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/igatherv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Igatherv_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, &
     recvtype, root, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Igatherv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/improbe_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/improbe_f08ts.F90
index 75be230..ab959ac 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/improbe_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/improbe_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Improbe_f08(source, tag, comm, flag, message, status, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Message, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Comm, MPI_Message, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Comm, c_Message
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Improbe_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/imrecv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/imrecv_f08ts.F90
index 525e5ed..9d16f2e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/imrecv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/imrecv_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Imrecv_f08ts(buf, count, datatype, message, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Message, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Message, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Message, c_Request
     use :: mpi_c_interface, only : MPIR_Imrecv_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgather_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgather_f08ts.F90
index b027c44..cc2400d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgather_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgather_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ineighbor_allgather_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ineighbor_allgather_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgatherv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgatherv_f08ts.F90
index 32459af..f653bee 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgatherv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_allgatherv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ineighbor_allgatherv_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, &
     recvtype, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ineighbor_allgatherv_cdesc, MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoall_f08ts.F90
index d08230c..e24e332 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoall_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ineighbor_alltoall_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ineighbor_alltoall_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallv_f08ts.F90
index f856b0f..78768c6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ineighbor_alltoallv_f08ts(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, &
     rdispls, recvtype, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ineighbor_alltoallv_cdesc, MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90
index ecfb37f..a02d271 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ineighbor_alltoallw_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Ineighbor_alltoallw_f08ts(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, &
     rdispls, recvtypes, comm, request, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ineighbor_alltoallw_cdesc, MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/info_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/info_create_f08ts.F90
index 1caf118..41a4478 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/info_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/info_create_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Info_create_f08(info, ierror)
-    use :: mpi_f08, only : MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Info
     use :: mpi_c_interface, only : c_Info
     use :: mpi_c_interface, only : MPIR_Info_create_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/info_dup_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/info_dup_f08ts.F90
index 7746d4e..0c7ea45 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/info_dup_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/info_dup_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Info_dup_f08(info, newinfo, ierror)
-    use :: mpi_f08, only : MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Info
     use :: mpi_c_interface, only : c_Info
     use :: mpi_c_interface, only : MPIR_Info_dup_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/info_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/info_free_f08ts.F90
index 1179776..179de93 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/info_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/info_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Info_free_f08(info, ierror)
-    use :: mpi_f08, only : MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Info
     use :: mpi_c_interface, only : c_Info
     use :: mpi_c_interface, only : MPIR_Info_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_nkeys_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_nkeys_f08ts.F90
index d217520..12ed120 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_nkeys_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_nkeys_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Info_get_nkeys_f08(info, nkeys, ierror)
-    use :: mpi_f08, only : MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Info
     use :: mpi_c_interface, only : c_Info
     use :: mpi_c_interface, only : MPIR_Info_get_nkeys_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_valuelen_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_valuelen_f08ts.F90
index 86d8582..e809d38 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_valuelen_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/info_get_valuelen_f08ts.F90
@@ -4,12 +4,12 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Info_get_valuelen_f08(info, key, valuelen, flag, ierror)
-    use :: mpi_f08, only : MPI_Info
     use, intrinsic :: iso_c_binding, only : c_int, c_char
+    use :: mpi_f08, only : MPI_Info
     use :: mpi_c_interface, only : c_Info
     use :: mpi_c_interface, only : MPIR_Info_get_valuelen_c
-
     use :: mpi_c_interface, only : MPIR_Fortran_string_f2c
+
     implicit none
 
     type(MPI_Info), intent(in) :: info
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_create_f08ts.F90
index 96d2d06..f120f02 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_create_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Intercomm_create_f08(local_comm, local_leader, peer_comm, remote_leader, &
     tag, newintercomm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Intercomm_create_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_merge_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_merge_f08ts.F90
index 708eced..28f8312 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_merge_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/intercomm_merge_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Intercomm_merge_f08(intercomm, high, newintracomm, ierror)
-    use :: mpi_f08, only : MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Intercomm_merge_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iprobe_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iprobe_f08ts.F90
index a0fe653..8a5dd92 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iprobe_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iprobe_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Iprobe_f08(source, tag, comm, flag, status, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Comm, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Iprobe_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/irecv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/irecv_f08ts.F90
index 6441387..6a03d93 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/irecv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/irecv_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Irecv_f08ts(buf, count, datatype, source, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Irecv_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_f08ts.F90
index 571fdfd..c845126 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Ireduce_f08ts(sendbuf, recvbuf, count, datatype, op, root, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ireduce_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_block_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_block_f08ts.F90
index fe2319e..68df8d6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_block_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_block_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ireduce_scatter_block_f08ts(sendbuf, recvbuf, recvcount, datatype, op, comm, &
     request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ireduce_scatter_block_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_f08ts.F90
index 3b70a4f..2630319 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ireduce_scatter_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Ireduce_scatter_f08ts(sendbuf, recvbuf, recvcounts, datatype, op, comm, &
     request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ireduce_scatter_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/irsend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/irsend_f08ts.F90
index 1837b2b..90ab732 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/irsend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/irsend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Irsend_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Irsend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iscan_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iscan_f08ts.F90
index 94c5249..ea4930f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iscan_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iscan_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Iscan_f08ts(sendbuf, recvbuf, count, datatype, op, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iscan_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iscatter_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iscatter_f08ts.F90
index 416ef7c..ee2ab95 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iscatter_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iscatter_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Iscatter_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     root, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iscatter_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/iscatterv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/iscatterv_f08ts.F90
index d2e7141..dab2bff 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/iscatterv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/iscatterv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Iscatterv_f08ts(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, &
     recvtype, root, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Iscatterv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/isend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/isend_f08ts.F90
index ec5e5b7..5a05e2e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/isend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/isend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Isend_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Isend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/issend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/issend_f08ts.F90
index 1d2710a..4ece3b5 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/issend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/issend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Issend_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Issend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/mprobe_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/mprobe_f08ts.F90
index c0158aa..7fe7e45 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/mprobe_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/mprobe_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Mprobe_f08(source, tag, comm, message, status, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Message, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Comm, MPI_Message, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Comm, c_Message
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Mprobe_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/mrecv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/mrecv_f08ts.F90
index 81e34cb..0a1927c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/mrecv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/mrecv_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Mrecv_f08ts(buf, count, datatype, message, status, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Message, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Datatype, MPI_Message, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Datatype, c_Message
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Mrecv_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgather_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgather_f08ts.F90
index 11e25da..4ce0da3 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgather_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgather_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Neighbor_allgather_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Neighbor_allgather_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgatherv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgatherv_f08ts.F90
index e07cef0..08d0001 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgatherv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_allgatherv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Neighbor_allgatherv_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, &
     recvtype, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Neighbor_allgatherv_cdesc, MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoall_f08ts.F90
index 9f0903d..4d1233c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoall_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Neighbor_alltoall_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Neighbor_alltoall_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallv_f08ts.F90
index fbf1354..2f741c9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Neighbor_alltoallv_f08ts(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, &
     rdispls, recvtype, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Neighbor_alltoallv_cdesc, MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90
index 3d667d1..3568fd7 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/neighbor_alltoallw_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Neighbor_alltoallw_f08ts(sendbuf, sendcounts, sdispls, sendtypes, recvbuf, recvcounts, &
     rdispls, recvtypes, comm, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Neighbor_alltoallw_cdesc, MPIR_Dist_graph_neighbors_count_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/op_commutative_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/op_commutative_f08ts.F90
index f0509ee..f706e8f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/op_commutative_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/op_commutative_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Op_commutative_f08(op, commute, ierror)
-    use :: mpi_f08, only : MPI_Op
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Op
     use :: mpi_c_interface, only : c_Op
     use :: mpi_c_interface, only : MPIR_Op_commutative_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/op_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/op_create_f08ts.F90
index 5c96bf1..6ea5949 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/op_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/op_create_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Op_create_f08(user_fn, commute, op, ierror)
-    use :: mpi_f08, only : MPI_Op
-    use :: mpi_f08, only : MPI_User_function
     use, intrinsic :: iso_c_binding, only : c_funloc
     use, intrinsic :: iso_c_binding, only : c_int, c_funptr
+    use :: mpi_f08, only : MPI_Op
+    use :: mpi_f08, only : MPI_User_function
     use :: mpi_c_interface, only : c_Op
     use :: mpi_c_interface, only : MPIR_Op_create_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/op_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/op_free_f08ts.F90
index 206d447..e562351 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/op_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/op_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Op_free_f08(op, ierror)
-    use :: mpi_f08, only : MPI_Op
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Op
     use :: mpi_c_interface, only : c_Op
     use :: mpi_c_interface, only : MPIR_Op_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/pack_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/pack_f08ts.F90
index 8085a14..237e066 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/pack_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/pack_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Pack_f08ts(inbuf, incount, datatype, outbuf, outsize, position, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Pack_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/pack_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/pack_size_f08ts.F90
index e916c4c..88b3bf1 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/pack_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/pack_size_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Pack_size_f08(incount, datatype, comm, size, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Pack_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/probe_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/probe_f08ts.F90
index 38ddce7..b7c05fd 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/probe_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/probe_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Probe_f08(source, tag, comm, status, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Comm, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Probe_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/put_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/put_f08ts.F90
index 599f68c..72a2cc6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/put_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/put_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Put_f08ts(origin_addr, origin_count, origin_datatype, target_rank, &
     target_disp, target_count, target_datatype, win, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype, MPI_Win
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype, c_Win
     use :: mpi_c_interface, only : MPIR_Put_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/recv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/recv_f08ts.F90
index 044e362..de7b65a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/recv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/recv_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Recv_f08ts(buf, count, datatype, source, tag, comm, status, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Recv_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/recv_init_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/recv_init_f08ts.F90
index d9cc346..4ca260f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/recv_init_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/recv_init_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Recv_init_f08ts(buf, count, datatype, source, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Recv_init_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_f08ts.F90
index 6acbef1..1224339 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Reduce_f08ts(sendbuf, recvbuf, count, datatype, op, root, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm
     use :: mpi_c_interface, only : MPIR_Reduce_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_local_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_local_f08ts.F90
index 1ec79ed..6be448d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_local_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_local_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Reduce_local_f08ts(inbuf, inoutbuf, count, datatype, op, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op
     use :: mpi_c_interface, only : c_Datatype, c_Op
     use :: mpi_c_interface, only : MPIR_Reduce_local_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_block_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_block_f08ts.F90
index 4cca1f5..2c80681 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_block_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_block_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Reduce_scatter_block_f08ts(sendbuf, recvbuf, recvcount, datatype, op, comm, &
     ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm
     use :: mpi_c_interface, only : MPIR_Reduce_scatter_block_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_f08ts.F90
index 5df0680..b67a778 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/reduce_scatter_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Reduce_scatter_f08ts(sendbuf, recvbuf, recvcounts, datatype, op, comm, &
     ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm
     use :: mpi_c_interface, only : MPIR_Reduce_scatter_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/request_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/request_free_f08ts.F90
index 3d53550..e929d7f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/request_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/request_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Request_free_f08(request, ierror)
-    use :: mpi_f08, only : MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : MPIR_Request_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/request_get_status_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/request_get_status_f08ts.F90
index 78cffb1..301713d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/request_get_status_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/request_get_status_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Request_get_status_f08(request, flag, status, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Request_get_status_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_f08ts.F90
index 16430ad..db39597 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Rsend_f08ts(buf, count, datatype, dest, tag, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Rsend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_init_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_init_f08ts.F90
index 4cd927a..f9e6818 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_init_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/rsend_init_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Rsend_init_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Rsend_init_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/scan_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/scan_f08ts.F90
index 9d35a16..593a53a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/scan_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/scan_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Scan_f08ts(sendbuf, recvbuf, count, datatype, op, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Op, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Op, c_Comm
     use :: mpi_c_interface, only : MPIR_Scan_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/scatter_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/scatter_f08ts.F90
index 835e4b6..304f312 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/scatter_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/scatter_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Scatter_f08ts(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, &
     root, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Scatter_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/scatterv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/scatterv_f08ts.F90
index 0eccba4..f4268ed 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/scatterv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/scatterv_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Scatterv_f08ts(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, &
     recvtype, root, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Scatterv_cdesc, MPIR_Comm_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/send_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/send_f08ts.F90
index 07e2f7f..fe7b10a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/send_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/send_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Send_f08ts(buf, count, datatype, dest, tag, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Send_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/send_init_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/send_init_f08ts.F90
index bfb00fb..1b024d5 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/send_init_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/send_init_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Send_init_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Send_init_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_f08ts.F90
index 3d62d66..dc0cdf8 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_f08ts.F90
@@ -5,10 +5,10 @@
 !
 subroutine MPI_Sendrecv_f08ts(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, &
     recvcount, recvtype, source, recvtag, comm, status, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Sendrecv_cdesc
@@ -44,10 +44,10 @@ subroutine MPI_Sendrecv_f08ts(sendbuf, sendcount, sendtype, dest, sendtag, recvb
     if (c_int == kind(0)) then
         if (c_associated(c_loc(status), c_loc(MPI_STATUS_IGNORE))) then
             ierror_c = MPIR_Sendrecv_cdesc(sendbuf, sendcount, sendtype%MPI_VAL, dest, sendtag, recvbuf, recvcount, &
-            recvtype%MPI_VAL, source, recvtag, comm%MPI_VAL, MPIR_C_MPI_STATUS_IGNORE)
+                recvtype%MPI_VAL, source, recvtag, comm%MPI_VAL, MPIR_C_MPI_STATUS_IGNORE)
         else
             ierror_c = MPIR_Sendrecv_cdesc(sendbuf, sendcount, sendtype%MPI_VAL, dest, sendtag, recvbuf, recvcount, &
-            recvtype%MPI_VAL, source, recvtag, comm%MPI_VAL, c_loc(status))
+                recvtype%MPI_VAL, source, recvtag, comm%MPI_VAL, c_loc(status))
         end if
     else
         sendcount_c = sendcount
@@ -61,10 +61,10 @@ subroutine MPI_Sendrecv_f08ts(sendbuf, sendcount, sendtype, dest, sendtag, recvb
         comm_c = comm%MPI_VAL
         if (c_associated(c_loc(status), c_loc(MPI_STATUS_IGNORE))) then
             ierror_c = MPIR_Sendrecv_cdesc(sendbuf, sendcount_c, sendtype_c, dest_c, sendtag_c, recvbuf, &
-            recvcount_c, recvtype_c, source_c, recvtag_c, comm_c, MPIR_C_MPI_STATUS_IGNORE)
+                recvcount_c, recvtype_c, source_c, recvtag_c, comm_c, MPIR_C_MPI_STATUS_IGNORE)
         else
             ierror_c = MPIR_Sendrecv_cdesc(sendbuf, sendcount_c, sendtype_c, dest_c, sendtag_c, recvbuf, &
-            recvcount_c, recvtype_c, source_c, recvtag_c, comm_c, c_loc(status_c))
+                recvcount_c, recvtype_c, source_c, recvtag_c, comm_c, c_loc(status_c))
             status = status_c
         end if
     end if
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_replace_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_replace_f08ts.F90
index 5e3b0cf..e5ea3d9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_replace_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/sendrecv_replace_f08ts.F90
@@ -5,10 +5,10 @@
 !
 subroutine MPI_Sendrecv_replace_f08ts(buf, count, datatype, dest, sendtag, source, recvtag, &
     comm, status, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Sendrecv_replace_cdesc
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_f08ts.F90
index 5f2ff03..25ee29f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Ssend_f08ts(buf, count, datatype, dest, tag, comm, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Ssend_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_init_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_init_f08ts.F90
index 31323ff..41bb6b2 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_init_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/ssend_init_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Ssend_init_f08ts(buf, count, datatype, dest, tag, comm, request, ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm, MPI_Request
     use :: mpi_c_interface, only : c_Datatype, c_Comm, c_Request
     use :: mpi_c_interface, only : MPIR_Ssend_init_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/start_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/start_f08ts.F90
index 385a1b2..5c1d452 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/start_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/start_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Start_f08(request, ierror)
-    use :: mpi_f08, only : MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : MPIR_Start_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/startall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/startall_f08ts.F90
index 085f71a..b6c7fb6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/startall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/startall_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Startall_f08(count, array_of_requests, ierror)
-    use :: mpi_f08, only : MPI_Request
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : MPIR_Startall_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_cancelled_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_cancelled_f08ts.F90
index 34d3ad3..3360309 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_cancelled_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_cancelled_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Status_set_cancelled_f08(status, flag, ierror)
-    use :: mpi_f08, only : MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Status_set_cancelled_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_f08ts.F90
index 51b05c1..dd17fda 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Status_set_elements_f08(status, datatype, count, ierror)
-    use :: mpi_f08, only : MPI_Status, MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Status, MPI_Datatype
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Status_set_elements_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_x_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_x_f08ts.F90
index c45bd88..73d6222 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_x_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/status_set_elements_x_f08ts.F90
@@ -4,11 +4,11 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Status_set_elements_x_f08(status, datatype, count, ierror)
+    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
+    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_f08, only : MPI_Status, MPI_Datatype
     use :: mpi_f08, only : MPI_COUNT_KIND
-    use, intrinsic :: iso_c_binding, only : c_loc, c_associated
     use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
-    use, intrinsic :: iso_c_binding, only : c_int, c_ptr
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Status_set_elements_x_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/test_cancelled_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/test_cancelled_f08ts.F90
index f22effb..04c3fc9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/test_cancelled_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/test_cancelled_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Test_cancelled_f08(status, flag, ierror)
-    use :: mpi_f08, only : MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc
-    use :: mpi_f08, only : assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Status
+    use :: mpi_f08, only : assignment(=)
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Test_cancelled_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/test_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/test_f08ts.F90
index 942223a..1ae08b0 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/test_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/test_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Test_f08(request, flag, status, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Test_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/testall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/testall_f08ts.F90
index 377fef1..1172574 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/testall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/testall_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Testall_f08(count, array_of_requests, flag, array_of_statuses, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Testall_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/testany_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/testany_f08ts.F90
index bb562ae..e7afff9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/testany_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/testany_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Testany_f08(count, array_of_requests, index, flag, status, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Testany_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/testsome_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/testsome_f08ts.F90
index 2a6be03..58f52a8 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/testsome_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/testsome_f08ts.F90
@@ -5,10 +5,10 @@
 !
 subroutine MPI_Testsome_f08(incount, array_of_requests, outcount, &
     array_of_indices, array_of_statuses, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Testsome_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/topo_test_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/topo_test_f08ts.F90
index be9e972..7251093 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/topo_test_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/topo_test_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Topo_test_f08(comm, status, ierror)
-    use :: mpi_f08, only : MPI_Comm, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Comm, MPI_Status
     use :: mpi_c_interface, only : c_Comm
     use :: mpi_c_interface, only : MPIR_Topo_test_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_commit_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_commit_f08ts.F90
index aba0ff9..62b6236 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_commit_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_commit_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_commit_f08(datatype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_commit_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_contiguous_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_contiguous_f08ts.F90
index ebe3678..ffa227e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_contiguous_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_contiguous_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_contiguous_f08(count, oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_contiguous_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_darray_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_darray_f08ts.F90
index c39c64a..fd4700c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_darray_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_darray_f08ts.F90
@@ -6,8 +6,8 @@
 subroutine MPI_Type_create_darray_f08(size, rank, ndims, array_of_gsizes, &
     array_of_distribs, array_of_dargs, array_of_psizes, order, &
     oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_darray_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_complex_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_complex_f08ts.F90
index 507f863..334688e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_complex_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_complex_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_create_f90_complex_f08(p, r, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_f90_complex_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_integer_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_integer_f08ts.F90
index 1d39d58..150f15a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_integer_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_integer_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_create_f90_integer_f08(r, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_f90_integer_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_real_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_real_f08ts.F90
index 2cbe2ad..6e46db9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_real_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_f90_real_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_create_f90_real_f08(p, r, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_f90_real_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_block_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_block_f08ts.F90
index 2bbbdd4..dca7e6d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_block_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_block_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Type_create_hindexed_block_f08(count, blocklength, &
     array_of_displacements, oldtype, newtype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_hindexed_block_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_f08ts.F90
index 076ea81..3d16cdb 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hindexed_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Type_create_hindexed_f08(count, array_of_blocklengths, &
     array_of_displacements, oldtype, newtype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_hindexed_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hvector_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hvector_f08ts.F90
index 82b8e08..8a57110 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hvector_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_hvector_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_create_hvector_f08(count, blocklength, stride, oldtype, newtype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_hvector_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_indexed_block_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_indexed_block_f08ts.F90
index 44c542d..2ca6d30 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_indexed_block_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_indexed_block_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Type_create_indexed_block_f08(count, blocklength, &
     array_of_displacements, oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_indexed_block_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_resized_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_resized_f08ts.F90
index a6cd0fd..1ec9b6a 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_resized_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_resized_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_create_resized_f08(oldtype, lb, extent, newtype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_resized_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_struct_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_struct_f08ts.F90
index 767234d..f5e6538 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_struct_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_struct_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Type_create_struct_f08(count, array_of_blocklengths, &
     array_of_displacements, array_of_types, newtype, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_struct_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_subarray_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_subarray_f08ts.F90
index 2c10678..ddd3e02 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_subarray_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_create_subarray_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Type_create_subarray_f08(ndims, array_of_sizes, array_of_subsizes, &
     array_of_starts, order, oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_create_subarray_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_delete_attr_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_delete_attr_f08ts.F90
index 27988b4..09fcaba 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_delete_attr_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_delete_attr_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_delete_attr_f08(datatype, type_keyval, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_delete_attr_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_dup_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_dup_f08ts.F90
index 1ed99f0..297e2dd 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_dup_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_dup_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_dup_f08(oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_dup_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_free_f08ts.F90
index c4d06a0..ef5bab7 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_free_f08(datatype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_contents_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_contents_f08ts.F90
index 6d42a8f..c7c046f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_contents_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_contents_f08ts.F90
@@ -5,9 +5,9 @@
 !
 subroutine MPI_Type_get_contents_f08(datatype, max_integers, max_addresses, max_datatypes, &
     array_of_integers, array_of_addresses, array_of_datatypes, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_get_contents_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_envelope_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_envelope_f08ts.F90
index 5c33508..3e7d041 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_envelope_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_envelope_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Type_get_envelope_f08(datatype, num_integers, num_addresses, num_datatypes, &
     combiner, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_get_envelope_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_f08ts.F90
index 1a6c83a..6a868b6 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_get_extent_f08(datatype, lb, extent, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_get_extent_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_x_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_x_f08ts.F90
index eb41d3e..eda419e 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_x_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_extent_x_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_get_extent_x_f08(datatype, lb, extent, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_COUNT_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_get_extent_x_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_f08ts.F90
index 01d80c4..eef3cac 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_get_true_extent_f08(datatype, true_lb, true_extent, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_get_true_extent_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_x_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_x_f08ts.F90
index 89cba33..0773be9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_x_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_get_true_extent_x_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_get_true_extent_x_f08(datatype, true_lb, true_extent, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
     use :: mpi_f08, only : MPI_COUNT_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_get_true_extent_x_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_indexed_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_indexed_f08ts.F90
index 816b813..31405af 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_indexed_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_indexed_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Type_indexed_f08(count, array_of_blocklengths, &
     array_of_displacements, oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_indexed_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_match_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_match_size_f08ts.F90
index 4c492f9..9577004 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_match_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_match_size_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_match_size_f08(typeclass, size, datatype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_match_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_set_attr_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_set_attr_f08ts.F90
index 1db73ac..f5b9755 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_set_attr_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_set_attr_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_set_attr_f08(datatype, type_keyval, attribute_val, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_ATTR_AINT
     use :: mpi_c_interface, only : MPIR_Type_set_attr_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_f08ts.F90
index 47713e6..6f7023c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_size_f08(datatype, size, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_size_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_x_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_x_f08ts.F90
index 764af2d..e3aa38b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_x_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_size_x_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_size_x_f08(datatype, size, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Datatype
     use :: mpi_f08, only : MPI_COUNT_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_size_x_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/type_vector_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/type_vector_f08ts.F90
index 55677ff..97ab61f 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/type_vector_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/type_vector_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Type_vector_f08(count, blocklength, stride, oldtype, newtype, ierror)
-    use :: mpi_f08, only : MPI_Datatype
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype
     use :: mpi_c_interface, only : c_Datatype
     use :: mpi_c_interface, only : MPIR_Type_vector_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/unpack_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/unpack_f08ts.F90
index f44e968..e1af55b 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/unpack_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/unpack_f08ts.F90
@@ -5,8 +5,8 @@
 !
 subroutine MPI_Unpack_f08ts(inbuf, insize, position, outbuf, outcount, datatype, comm, &
     ierror)
-    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Datatype, MPI_Comm
     use :: mpi_c_interface, only : c_Datatype, c_Comm
     use :: mpi_c_interface, only : MPIR_Unpack_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/wait_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/wait_f08ts.F90
index e243c12..ba5fa62 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/wait_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/wait_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Wait_f08(request, status, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Wait_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/waitall_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/waitall_f08ts.F90
index de15435..6cb7627 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/waitall_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/waitall_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Waitall_f08(count, array_of_requests, array_of_statuses, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Waitall_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/waitany_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/waitany_f08ts.F90
index 648aee6..3eb9fd2 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/waitany_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/waitany_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Waitany_f08(count, array_of_requests, index, status, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int, c_ptr
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUS_IGNORE, MPIR_C_MPI_STATUS_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Waitany_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/waitsome_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/waitsome_f08ts.F90
index b4c021c..92a5448 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/waitsome_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/waitsome_f08ts.F90
@@ -5,10 +5,10 @@
 !
 subroutine MPI_Waitsome_f08(incount, array_of_requests, outcount, &
     array_of_indices, array_of_statuses, ierror)
-    use :: mpi_f08, only : MPI_Request, MPI_Status
     use, intrinsic :: iso_c_binding, only : c_loc, c_associated
-    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Request, MPI_Status
+    use :: mpi_f08, only : MPI_STATUSES_IGNORE, MPIR_C_MPI_STATUSES_IGNORE, assignment(=)
     use :: mpi_c_interface, only : c_Request
     use :: mpi_c_interface, only : c_Status
     use :: mpi_c_interface, only : MPIR_Waitsome_c
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_call_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_call_errhandler_f08ts.F90
index 5d21764..7311d39 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_call_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_call_errhandler_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_call_errhandler_f08(win, errorcode, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_call_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_complete_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_complete_f08ts.F90
index 6cd7a5d..d8b08ec 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_complete_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_complete_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_complete_f08(win, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_complete_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_errhandler_f08ts.F90
index 2efbcc3..5f5ec97 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_errhandler_f08ts.F90
@@ -4,10 +4,10 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_create_errhandler_f08(win_errhandler_fn, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Errhandler
-    use :: mpi_f08, only : MPI_Win_errhandler_function
     use, intrinsic :: iso_c_binding, only : c_funloc
     use, intrinsic :: iso_c_binding, only : c_int, c_funptr
+    use :: mpi_f08, only : MPI_Errhandler
+    use :: mpi_f08, only : MPI_Win_errhandler_function
     use :: mpi_c_interface, only : c_Errhandler
     use :: mpi_c_interface, only : MPIR_Win_create_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_f08ts.F90
index a9dc3ef..921e14c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_create_f08ts.F90
@@ -4,9 +4,9 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_create_f08ts(base, size, disp_unit, info, comm, win, ierror)
+    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_f08, only : MPI_Info, MPI_Comm, MPI_Win
     use :: mpi_f08, only : MPI_ADDRESS_KIND
-    use, intrinsic :: iso_c_binding, only : c_int
     use :: mpi_c_interface, only : c_Info, c_Comm, c_Win
     use :: mpi_c_interface, only : MPIR_Win_create_cdesc
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_delete_attr_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_delete_attr_f08ts.F90
index 4ea4937..5526228 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_delete_attr_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_delete_attr_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_delete_attr_f08(win, win_keyval, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_delete_attr_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_fence_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_fence_f08ts.F90
index e93e134..75f3d3c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_fence_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_fence_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_fence_f08(assert, win, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_fence_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_free_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_free_f08ts.F90
index 50b9db1..4178541 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_free_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_free_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_free_f08(win, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_free_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_errhandler_f08ts.F90
index e9f76b5..1127ff4 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_errhandler_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_get_errhandler_f08(win, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Win, MPI_Errhandler
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win, MPI_Errhandler
     use :: mpi_c_interface, only : c_Win, c_Errhandler
     use :: mpi_c_interface, only : MPIR_Win_get_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_group_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_group_f08ts.F90
index f158433..0694f1c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_group_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_get_group_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_get_group_f08(win, group, ierror)
-    use :: mpi_f08, only : MPI_Win, MPI_Group
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win, MPI_Group
     use :: mpi_c_interface, only : c_Win, c_Group
     use :: mpi_c_interface, only : MPIR_Win_get_group_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_lock_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_lock_f08ts.F90
index 54c690d..547782c 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_lock_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_lock_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_lock_f08(lock_type, rank, assert, win, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_lock_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_post_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_post_f08ts.F90
index 6cefcd5..fa72c93 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_post_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_post_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_post_f08(group, assert, win, ierror)
-    use :: mpi_f08, only : MPI_Group, MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group, MPI_Win
     use :: mpi_c_interface, only : c_Win, c_Group
     use :: mpi_c_interface, only : MPIR_Win_post_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_set_errhandler_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_set_errhandler_f08ts.F90
index d568214..2eea9a9 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_set_errhandler_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_set_errhandler_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_set_errhandler_f08(win, errhandler, ierror)
-    use :: mpi_f08, only : MPI_Win, MPI_Errhandler
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win, MPI_Errhandler
     use :: mpi_c_interface, only : c_Win, c_Errhandler
     use :: mpi_c_interface, only : MPIR_Win_set_errhandler_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_start_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_start_f08ts.F90
index 8a1243a..e0e624d 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_start_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_start_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_start_f08(group, assert, win, ierror)
-    use :: mpi_f08, only : MPI_Group, MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Group, MPI_Win
     use :: mpi_c_interface, only : c_Win, c_Group
     use :: mpi_c_interface, only : MPIR_Win_start_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_test_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_test_f08ts.F90
index 57f6997..4f9e8b4 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_test_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_test_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_test_f08(win, flag, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_test_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_unlock_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_unlock_f08ts.F90
index 521a60b..a6855b3 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_unlock_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_unlock_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_unlock_f08(rank, win, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_unlock_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/win_wait_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/win_wait_f08ts.F90
index 3e8df74..949a970 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/win_wait_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/win_wait_f08ts.F90
@@ -4,8 +4,8 @@
 !   See COPYRIGHT in top-level directory.
 !
 subroutine MPI_Win_wait_f08(win, ierror)
-    use :: mpi_f08, only : MPI_Win
     use, intrinsic :: iso_c_binding, only : c_int
+    use :: mpi_f08, only : MPI_Win
     use :: mpi_c_interface, only : c_Win
     use :: mpi_c_interface, only : MPIR_Win_wait_c
 
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/wtick_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/wtick_f08ts.F90
index 4f96eff..306ebce 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/wtick_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/wtick_f08ts.F90
@@ -4,11 +4,7 @@
 !   See COPYRIGHT in top-level directory.
 !
 function MPI_Wtick_f08() result(res)
-    use,intrinsic :: iso_c_binding, only: c_double
-    use :: mpi_c_interface_nobuf, only: MPIR_Wtick_c
+    use :: mpi_c_interface_nobuf, only : MPIR_Wtick_c
     double precision :: res
-    real(c_double)   :: tick_c
-
-    res_c = MPIR_Wtick_c()
-    res = res_c
+    res = MPIR_Wtick_c()
 end function MPI_Wtick_f08
diff --git a/src/binding/fortran/use_mpi_f08/wrappers_f/wtime_f08ts.F90 b/src/binding/fortran/use_mpi_f08/wrappers_f/wtime_f08ts.F90
index 7164f71..9ce7b31 100644
--- a/src/binding/fortran/use_mpi_f08/wrappers_f/wtime_f08ts.F90
+++ b/src/binding/fortran/use_mpi_f08/wrappers_f/wtime_f08ts.F90
@@ -3,12 +3,8 @@
 !   (C) 2014 by Argonne National Laboratory.
 !   See COPYRIGHT in top-level directory.
 !
-function MPI_Wtime_f08( ) Result(time)
-    use,intrinsic :: iso_c_binding, only: c_double
-    use :: mpi_c_interface_nobuf, only: MPIR_Wtime_c
-    double precision :: time
-    real(c_double)   :: time_c
-
-    time_c = MPIR_Wtime_c()
-    time = time_c
+function MPI_Wtime_f08( ) result(res)
+    use :: mpi_c_interface_nobuf, only : MPIR_Wtime_c
+    double precision :: res
+    res = MPIR_Wtime_c()
 end function MPI_Wtime_f08

-----------------------------------------------------------------------

Summary of changes:
 src/binding/fortran/use_mpi_f08/buildiface         |    1 +
 .../fortran/use_mpi_f08/mpi_f08_callbacks.F90      |   32 +-
 .../use_mpi_f08/mpi_f08_compile_constants.F90      |   38 +-
 .../fortran/use_mpi_f08/mpi_f08_link_constants.F90 |    5 +-
 src/binding/fortran/use_mpi_f08/mpi_f08_types.F90  |    6 +-
 .../fortran/use_mpi_f08/wrappers_c/buildiface      |  602 ++++++++++++--------
 .../fortran/use_mpi_f08/wrappers_f/abort_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/accumulate_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/allgather_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/allgatherv_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/alloc_mem_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/allreduce_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/alltoall_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/alltoallv_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/alltoallw_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/barrier_f08ts.F90       |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/bcast_f08ts.F90 |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/bsend_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/bsend_init_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/buffer_detach_f08ts.F90 |    7 +-
 .../use_mpi_f08/wrappers_f/cancel_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/cart_coords_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/cart_create_f08ts.F90   |    6 +-
 .../use_mpi_f08/wrappers_f/cart_get_f08ts.F90      |    4 +-
 .../use_mpi_f08/wrappers_f/cart_map_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/cart_rank_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/cart_shift_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/cart_sub_f08ts.F90      |    4 +-
 .../use_mpi_f08/wrappers_f/cartdim_get_f08ts.F90   |    2 +-
 .../wrappers_f/comm_call_errhandler_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/comm_compare_f08ts.F90  |    2 +-
 .../wrappers_f/comm_create_errhandler_f08ts.F90    |    4 +-
 .../use_mpi_f08/wrappers_f/comm_create_f08ts.F90   |    2 +-
 .../wrappers_f/comm_create_group_f08ts.F90         |    2 +-
 .../wrappers_f/comm_delete_attr_f08ts.F90          |    2 +-
 .../wrappers_f/comm_disconnect_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/comm_dup_f08ts.F90      |    2 +-
 .../wrappers_f/comm_dup_with_info_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/comm_free_f08ts.F90     |    2 +-
 .../wrappers_f/comm_get_errhandler_f08ts.F90       |    2 +-
 .../wrappers_f/comm_get_parent_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/comm_group_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/comm_idup_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/comm_join_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/comm_rank_f08ts.F90     |    2 +-
 .../wrappers_f/comm_remote_group_f08ts.F90         |    2 +-
 .../wrappers_f/comm_remote_size_f08ts.F90          |    2 +-
 .../wrappers_f/comm_set_errhandler_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/comm_size_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/comm_split_f08ts.F90    |    2 +-
 .../wrappers_f/comm_split_type_f08ts.F90           |    2 +-
 .../wrappers_f/comm_test_inter_f08ts.F90           |    2 +-
 .../dist_graph_neighbors_count_f08ts.F90           |    2 +-
 .../wrappers_f/dist_graph_neighbors_f08ts.F90      |    2 +-
 .../wrappers_f/errhandler_free_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/exscan_f08ts.F90        |    2 +-
 .../wrappers_f/file_call_errhandler_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/file_close_f08ts.F90    |    2 +-
 .../wrappers_f/file_create_errhandler_f08ts.F90    |    4 +-
 .../wrappers_f/file_get_amode_f08ts.F90            |    2 +-
 .../wrappers_f/file_get_atomicity_f08ts.F90        |    2 +-
 .../wrappers_f/file_get_byte_offset_f08ts.F90      |    2 +-
 .../wrappers_f/file_get_errhandler_f08ts.F90       |    2 +-
 .../wrappers_f/file_get_group_f08ts.F90            |    2 +-
 .../use_mpi_f08/wrappers_f/file_get_info_f08ts.F90 |    2 +-
 .../wrappers_f/file_get_position_f08ts.F90         |    2 +-
 .../wrappers_f/file_get_position_shared_f08ts.F90  |    2 +-
 .../use_mpi_f08/wrappers_f/file_get_size_f08ts.F90 |    2 +-
 .../wrappers_f/file_get_type_extent_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/file_iread_at_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/file_iread_f08ts.F90    |    2 +-
 .../wrappers_f/file_iread_shared_f08ts.F90         |    2 +-
 .../wrappers_f/file_iwrite_at_f08ts.F90            |    2 +-
 .../use_mpi_f08/wrappers_f/file_iwrite_f08ts.F90   |    2 +-
 .../wrappers_f/file_iwrite_shared_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/file_open_f08ts.F90     |    4 +-
 .../wrappers_f/file_preallocate_f08ts.F90          |    2 +-
 .../wrappers_f/file_read_all_begin_f08ts.F90       |    2 +-
 .../wrappers_f/file_read_all_end_f08ts.F90         |    4 +-
 .../use_mpi_f08/wrappers_f/file_read_all_f08ts.F90 |    4 +-
 .../wrappers_f/file_read_at_all_begin_f08ts.F90    |    2 +-
 .../wrappers_f/file_read_at_all_end_f08ts.F90      |    4 +-
 .../wrappers_f/file_read_at_all_f08ts.F90          |    4 +-
 .../use_mpi_f08/wrappers_f/file_read_at_f08ts.F90  |    4 +-
 .../use_mpi_f08/wrappers_f/file_read_f08ts.F90     |    4 +-
 .../wrappers_f/file_read_ordered_begin_f08ts.F90   |    2 +-
 .../wrappers_f/file_read_ordered_end_f08ts.F90     |    4 +-
 .../wrappers_f/file_read_ordered_f08ts.F90         |    4 +-
 .../wrappers_f/file_read_shared_f08ts.F90          |    4 +-
 .../use_mpi_f08/wrappers_f/file_seek_f08ts.F90     |    2 +-
 .../wrappers_f/file_seek_shared_f08ts.F90          |    2 +-
 .../wrappers_f/file_set_atomicity_f08ts.F90        |    2 +-
 .../wrappers_f/file_set_errhandler_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/file_set_info_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/file_set_size_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/file_sync_f08ts.F90     |    2 +-
 .../wrappers_f/file_write_all_begin_f08ts.F90      |    2 +-
 .../wrappers_f/file_write_all_end_f08ts.F90        |    4 +-
 .../wrappers_f/file_write_all_f08ts.F90            |    4 +-
 .../wrappers_f/file_write_at_all_begin_f08ts.F90   |    2 +-
 .../wrappers_f/file_write_at_all_end_f08ts.F90     |    4 +-
 .../wrappers_f/file_write_at_all_f08ts.F90         |    4 +-
 .../use_mpi_f08/wrappers_f/file_write_at_f08ts.F90 |    4 +-
 .../use_mpi_f08/wrappers_f/file_write_f08ts.F90    |    4 +-
 .../wrappers_f/file_write_ordered_begin_f08ts.F90  |    2 +-
 .../wrappers_f/file_write_ordered_end_f08ts.F90    |    4 +-
 .../wrappers_f/file_write_ordered_f08ts.F90        |    4 +-
 .../wrappers_f/file_write_shared_f08ts.F90         |    4 +-
 .../use_mpi_f08/wrappers_f/gather_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/gatherv_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/get_address_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/get_count_f08ts.F90     |    4 +-
 .../use_mpi_f08/wrappers_f/get_elements_f08ts.F90  |    4 +-
 .../wrappers_f/get_elements_x_f08ts.F90            |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/get_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/graph_create_f08ts.F90  |    2 +-
 .../use_mpi_f08/wrappers_f/graph_get_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/graph_map_f08ts.F90     |    2 +-
 .../wrappers_f/graph_neighbors_count_f08ts.F90     |    2 +-
 .../wrappers_f/graph_neighbors_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/graphdims_get_f08ts.F90 |    2 +-
 .../wrappers_f/grequest_complete_f08ts.F90         |    2 +-
 .../use_mpi_f08/wrappers_f/group_compare_f08ts.F90 |    2 +-
 .../wrappers_f/group_difference_f08ts.F90          |    2 +-
 .../use_mpi_f08/wrappers_f/group_excl_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/group_free_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/group_incl_f08ts.F90    |    2 +-
 .../wrappers_f/group_intersection_f08ts.F90        |    2 +-
 .../wrappers_f/group_range_excl_f08ts.F90          |    2 +-
 .../wrappers_f/group_range_incl_f08ts.F90          |    2 +-
 .../use_mpi_f08/wrappers_f/group_rank_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/group_size_f08ts.F90    |    2 +-
 .../wrappers_f/group_translate_ranks_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/group_union_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/iallgather_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/iallgatherv_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/iallreduce_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/ialltoall_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/ialltoallv_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/ialltoallw_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/ibarrier_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/ibcast_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/ibsend_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/iexscan_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/igather_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/igatherv_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/improbe_f08ts.F90       |    4 +-
 .../use_mpi_f08/wrappers_f/imrecv_f08ts.F90        |    2 +-
 .../wrappers_f/ineighbor_allgather_f08ts.F90       |    2 +-
 .../wrappers_f/ineighbor_allgatherv_f08ts.F90      |    2 +-
 .../wrappers_f/ineighbor_alltoall_f08ts.F90        |    2 +-
 .../wrappers_f/ineighbor_alltoallv_f08ts.F90       |    2 +-
 .../wrappers_f/ineighbor_alltoallw_f08ts.F90       |   11 +-
 .../use_mpi_f08/wrappers_f/info_create_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/info_dup_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/info_free_f08ts.F90     |    2 +-
 .../wrappers_f/info_get_nkeys_f08ts.F90            |    2 +-
 .../wrappers_f/info_get_valuelen_f08ts.F90         |    4 +-
 .../wrappers_f/intercomm_create_f08ts.F90          |    2 +-
 .../wrappers_f/intercomm_merge_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/iprobe_f08ts.F90        |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/irecv_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/ireduce_f08ts.F90       |    2 +-
 .../wrappers_f/ireduce_scatter_block_f08ts.F90     |    2 +-
 .../wrappers_f/ireduce_scatter_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/irsend_f08ts.F90        |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/iscan_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/iscatter_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/iscatterv_f08ts.F90     |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/isend_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/issend_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/mprobe_f08ts.F90        |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/mrecv_f08ts.F90 |    4 +-
 .../wrappers_f/neighbor_allgather_f08ts.F90        |    2 +-
 .../wrappers_f/neighbor_allgatherv_f08ts.F90       |    2 +-
 .../wrappers_f/neighbor_alltoall_f08ts.F90         |    2 +-
 .../wrappers_f/neighbor_alltoallv_f08ts.F90        |    2 +-
 .../wrappers_f/neighbor_alltoallw_f08ts.F90        |   12 +-
 .../wrappers_f/op_commutative_f08ts.F90            |    2 +-
 .../use_mpi_f08/wrappers_f/op_create_f08ts.F90     |    4 +-
 .../use_mpi_f08/wrappers_f/op_free_f08ts.F90       |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/pack_f08ts.F90  |    2 +-
 .../use_mpi_f08/wrappers_f/pack_size_f08ts.F90     |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/probe_f08ts.F90 |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/put_f08ts.F90   |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/recv_f08ts.F90  |    4 +-
 .../use_mpi_f08/wrappers_f/recv_init_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/reduce_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/reduce_local_f08ts.F90  |    2 +-
 .../wrappers_f/reduce_scatter_block_f08ts.F90      |    2 +-
 .../wrappers_f/reduce_scatter_f08ts.F90            |    2 +-
 .../wrappers_f/register_datarep_f08ts.F90          |   12 +-
 .../use_mpi_f08/wrappers_f/request_free_f08ts.F90  |    2 +-
 .../wrappers_f/request_get_status_f08ts.F90        |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/rsend_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/rsend_init_f08ts.F90    |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/scan_f08ts.F90  |    2 +-
 .../use_mpi_f08/wrappers_f/scatter_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/scatterv_f08ts.F90      |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/send_f08ts.F90  |    2 +-
 .../use_mpi_f08/wrappers_f/send_init_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/sendrecv_f08ts.F90      |   12 +-
 .../wrappers_f/sendrecv_replace_f08ts.F90          |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/ssend_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/ssend_init_f08ts.F90    |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/start_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/startall_f08ts.F90      |    2 +-
 .../wrappers_f/status_set_cancelled_f08ts.F90      |    4 +-
 .../wrappers_f/status_set_elements_f08ts.F90       |    4 +-
 .../wrappers_f/status_set_elements_x_f08ts.F90     |    4 +-
 .../wrappers_f/test_cancelled_f08ts.F90            |    4 +-
 .../fortran/use_mpi_f08/wrappers_f/test_f08ts.F90  |    4 +-
 .../use_mpi_f08/wrappers_f/testall_f08ts.F90       |    4 +-
 .../use_mpi_f08/wrappers_f/testany_f08ts.F90       |    4 +-
 .../use_mpi_f08/wrappers_f/testsome_f08ts.F90      |    4 +-
 .../use_mpi_f08/wrappers_f/topo_test_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/type_commit_f08ts.F90   |    2 +-
 .../wrappers_f/type_contiguous_f08ts.F90           |    2 +-
 .../wrappers_f/type_create_darray_f08ts.F90        |    2 +-
 .../wrappers_f/type_create_f90_complex_f08ts.F90   |    2 +-
 .../wrappers_f/type_create_f90_integer_f08ts.F90   |    2 +-
 .../wrappers_f/type_create_f90_real_f08ts.F90      |    2 +-
 .../type_create_hindexed_block_f08ts.F90           |    2 +-
 .../wrappers_f/type_create_hindexed_f08ts.F90      |    2 +-
 .../wrappers_f/type_create_hvector_f08ts.F90       |    2 +-
 .../wrappers_f/type_create_indexed_block_f08ts.F90 |    2 +-
 .../wrappers_f/type_create_resized_f08ts.F90       |    2 +-
 .../wrappers_f/type_create_struct_f08ts.F90        |    2 +-
 .../wrappers_f/type_create_subarray_f08ts.F90      |    2 +-
 .../wrappers_f/type_delete_attr_f08ts.F90          |    2 +-
 .../use_mpi_f08/wrappers_f/type_dup_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/type_free_f08ts.F90     |    2 +-
 .../wrappers_f/type_get_contents_f08ts.F90         |    2 +-
 .../wrappers_f/type_get_envelope_f08ts.F90         |    2 +-
 .../wrappers_f/type_get_extent_f08ts.F90           |    2 +-
 .../wrappers_f/type_get_extent_x_f08ts.F90         |    2 +-
 .../wrappers_f/type_get_true_extent_f08ts.F90      |    2 +-
 .../wrappers_f/type_get_true_extent_x_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/type_indexed_f08ts.F90  |    2 +-
 .../wrappers_f/type_match_size_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/type_set_attr_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/type_size_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/type_size_x_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/type_vector_f08ts.F90   |    2 +-
 .../use_mpi_f08/wrappers_f/unpack_f08ts.F90        |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/wait_f08ts.F90  |    4 +-
 .../use_mpi_f08/wrappers_f/waitall_f08ts.F90       |    4 +-
 .../use_mpi_f08/wrappers_f/waitany_f08ts.F90       |    4 +-
 .../use_mpi_f08/wrappers_f/waitsome_f08ts.F90      |    4 +-
 .../wrappers_f/win_call_errhandler_f08ts.F90       |    2 +-
 .../use_mpi_f08/wrappers_f/win_complete_f08ts.F90  |    2 +-
 .../wrappers_f/win_create_errhandler_f08ts.F90     |    4 +-
 .../use_mpi_f08/wrappers_f/win_create_f08ts.F90    |    2 +-
 .../wrappers_f/win_delete_attr_f08ts.F90           |    2 +-
 .../use_mpi_f08/wrappers_f/win_fence_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/win_free_f08ts.F90      |    2 +-
 .../wrappers_f/win_get_errhandler_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/win_get_group_f08ts.F90 |    2 +-
 .../use_mpi_f08/wrappers_f/win_lock_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/win_post_f08ts.F90      |    2 +-
 .../wrappers_f/win_set_errhandler_f08ts.F90        |    2 +-
 .../use_mpi_f08/wrappers_f/win_start_f08ts.F90     |    2 +-
 .../use_mpi_f08/wrappers_f/win_test_f08ts.F90      |    2 +-
 .../use_mpi_f08/wrappers_f/win_unlock_f08ts.F90    |    2 +-
 .../use_mpi_f08/wrappers_f/win_wait_f08ts.F90      |    2 +-
 .../fortran/use_mpi_f08/wrappers_f/wtick_f08ts.F90 |    8 +-
 .../fortran/use_mpi_f08/wrappers_f/wtime_f08ts.F90 |   12 +-
 src/include/mpi.h.in                               |    8 +-
 src/mpi/init/initthread.c                          |    5 +-
 test/mpi/configure.ac                              |    1 +
 test/mpi/f08/subarray/Makefile.am                  |   29 +
 test/mpi/f08/subarray/test1.f90                    |   57 ++
 test/mpi/f08/subarray/test10.f90                   |   79 +++
 test/mpi/f08/subarray/test11.f90                   |   87 +++
 test/mpi/f08/subarray/test12.f90                   |   94 +++
 test/mpi/f08/subarray/test13.f90                   |  219 +++++++
 test/mpi/f08/subarray/test14.f90                   |  114 ++++
 test/mpi/f08/subarray/test15.f90                   |  111 ++++
 test/mpi/f08/subarray/test2.f90                    |   62 ++
 test/mpi/f08/subarray/test3.f90                    |   67 +++
 test/mpi/f08/subarray/test4.f90                    |   68 +++
 test/mpi/f08/subarray/test5.f90                    |   89 +++
 test/mpi/f08/subarray/test6.f90                    |   93 +++
 test/mpi/f08/subarray/test7.f90                    |   97 ++++
 test/mpi/f08/subarray/test8.f90                    |   96 ++++
 test/mpi/f08/subarray/test9.f90                    |   90 +++
 test/mpi/f08/subarray/testlist                     |   15 +
 test/mpi/f08/testlist                              |    1 +
 288 files changed, 2197 insertions(+), 653 deletions(-)
 create mode 100644 test/mpi/f08/subarray/Makefile.am
 create mode 100644 test/mpi/f08/subarray/test1.f90
 create mode 100644 test/mpi/f08/subarray/test10.f90
 create mode 100644 test/mpi/f08/subarray/test11.f90
 create mode 100644 test/mpi/f08/subarray/test12.f90
 create mode 100644 test/mpi/f08/subarray/test13.f90
 create mode 100644 test/mpi/f08/subarray/test14.f90
 create mode 100644 test/mpi/f08/subarray/test15.f90
 create mode 100644 test/mpi/f08/subarray/test2.f90
 create mode 100644 test/mpi/f08/subarray/test3.f90
 create mode 100644 test/mpi/f08/subarray/test4.f90
 create mode 100644 test/mpi/f08/subarray/test5.f90
 create mode 100644 test/mpi/f08/subarray/test6.f90
 create mode 100644 test/mpi/f08/subarray/test7.f90
 create mode 100644 test/mpi/f08/subarray/test8.f90
 create mode 100644 test/mpi/f08/subarray/test9.f90
 create mode 100644 test/mpi/f08/subarray/testlist


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list