]> AND Public Git Repository - simgrid.git/blobdiff - teshsuite/smpi/mpich3-test/f77/coll/exscanf.f
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Various doc improvements
[simgrid.git] / teshsuite / smpi / mpich3-test / f77 / coll / exscanf.f
index 2f8b897cacf5d3b6ef4abf4cb6bec6981bac0cef..1bfe9ccd64e66b43b483be3271ab0d740b23fd79 100644 (file)
@@ -1,7 +1,26 @@
-C -*- Mode: Fortran; -*- 
+C -*- Mode: Fortran; -*-
 C
 C  (C) 2003 by Argonne National Laboratory.
 C      See COPYRIGHT in top-level directory.
+C
+      subroutine uop( cin, cout, count, datatype )
+      implicit none
+      include 'mpif.h'
+      integer cin(*), cout(*)
+      integer count, datatype
+      integer i
+
+      if (.false.) then
+         if (datatype .ne. MPI_INTEGER) then
+            write(6,*) 'Invalid datatype passed to user_op()'
+            return
+         endif
+      endif
+
+      do i=1, count
+         cout(i) = cin(i) + cout(i)
+      enddo
+      end
 C
       program main
       implicit none
@@ -13,7 +32,7 @@ C
       external uop
 
       errs = 0
-      
+
       call mtest_init( ierr )
 C
 C A simple test of exscan
@@ -24,7 +43,7 @@ C A simple test of exscan
 
       inbuf(1) = rank
       inbuf(2) = -rank
-      call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, MPI_SUM, comm, 
+      call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, MPI_SUM, comm,
      &                 ierr )
 C this process has the sum of i from 0 to rank-1, which is
 C (rank)(rank-1)/2 and -i
@@ -40,12 +59,12 @@ C (rank)(rank-1)/2 and -i
          endif
       endif
 C
-C Try a user-defined operation 
+C Try a user-defined operation
 C
       call mpi_op_create( uop, .true., sumop, ierr )
       inbuf(1) = rank
       inbuf(2) = -rank
-      call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, 
+      call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm,
      &                 ierr )
 C this process has the sum of i from 0 to rank-1, which is
 C (rank)(rank-1)/2 and -i
@@ -61,14 +80,14 @@ C (rank)(rank-1)/2 and -i
          endif
       endif
       call mpi_op_free( sumop, ierr )
-      
+
 C
 C Try a user-defined operation (and don't claim it is commutative)
 C
       call mpi_op_create( uop, .false., sumop, ierr )
       inbuf(1) = rank
       inbuf(2) = -rank
-      call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm, 
+      call mpi_exscan( inbuf, outbuf, 2, MPI_INTEGER, sumop, comm,
      &                 ierr )
 C this process has the sum of i from 0 to rank-1, which is
 C (rank)(rank-1)/2 and -i
@@ -84,26 +103,7 @@ C (rank)(rank-1)/2 and -i
          endif
       endif
       call mpi_op_free( sumop, ierr )
-      
+
       call mtest_finalize( errs )
       call mpi_finalize( ierr )
       end
-C
-      subroutine uop( cin, cout, count, datatype )
-      implicit none
-      include 'mpif.h'
-      integer cin(*), cout(*)
-      integer count, datatype
-      integer i
-      
-      if (.false.) then
-         if (datatype .ne. MPI_INTEGER) then
-            write(6,*) 'Invalid datatype passed to user_op()'
-            return
-         endif
-      endif
-
-      do i=1, count
-         cout(i) = cin(i) + cout(i)
-      enddo
-      end