title: MPI Status FORTRAN
body: <p>I have this code but I get this error. </p>
  
  <p>I tried declaring status as </p>
  
  <p>INTEGER :: status </p>
  
  <p>but that changes the value of my rank after the MPI_SENDRECV (i.e. the rank=0 for all processors)</p>
  
  <pre><code>PROGRAM testsendrecv
    IMPLICIT NONE
  
    INTEGER :: i, k, nx, nz
    INTEGER :: ierror, comm, p, rank, npr, prev
    INTEGER :: status(MPI_STATUS_SIZE)
    REAL(KIND = 8), ALLOCATABLE :: A(:,:), B(:), C(:)
  
    include 'mpif.h'
  
    nx = 5
    nz = 5
  
    ALLOCATE(A(nx,nz), B(nx))
  
    CALL MPI_INIT(ierror)
    comm = MPI_COMM_WORLD
    !Get rank
    CALL MPI_COMM_RANK(comm, rank, ierror)
    !Get number of processors
    CALL MPI_COMM_SIZE(comm, p, ierror)
  
    A(:,:) = rank
  
    IF(rank==0) THEN
       prev = p-1
    ELSE
       prev = rank-1
    END IF
  
  
    CALL MPI_SENDRECV(A(:,1), nx, MPI_DOUBLE_PRECISION, MOD(rank+1,p), 1,  &amp;
         B(:), nx, MPI_DOUBLE_PRECISION, prev, 1, comm, status, ierror)
  
    WRITE(*,*) rank
    WRITE(*,*) B(1)
  
    CALL MPI_FINALIZE(ierror)
  
  END PROGRAM testsendrecv
  </code></pre>
  
  <p>The above code gives me the following error</p>
  
  <pre><code>bash-4.1$ mpif90 testsendr.f90
  mpif.h:79.35:
      Included at testsendr.f90:9:
  
         PARAMETER (MPI_STATUS_SIZE=5)
                                     1
  Error: VARIABLE attribute of 'mpi_status_size' conflicts with PARAMETER attribute at (1)
  mpif.h:80.33:
      Included at testsendr.f90:9:
  
         INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
                                   1
  Error: Variable 'mpi_status_size' cannot appear in the expression at (1)
  mpif.h:80.49:
      Included at testsendr.f90:9:
  
         INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
                                                   1
  Error: The module or main program array 'mpi_status_ignore' at (1) must have constant shape
  mpif.h:81.35:
      Included at testsendr.f90:9:
  
         INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE,1)
                                     1
  Error: Variable 'mpi_status_size' cannot appear in the expression at (1)
  mpif.h:81.53:
      Included at testsendr.f90:9:
  
         INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE,1)
                                                       1
  Error: The module or main program array 'mpi_statuses_ignore' at (1) must have constant shape
  testsendr.f90:6.20:
  
    INTEGER :: status(MPI_STATUS_SIZE)
                      1
  Error: Variable 'mpi_status_size' cannot appear in the expression at (1)
  testsendr.f90:6.36:
  
    INTEGER :: status(MPI_STATUS_SIZE)
                                      1
  Error: The module or main program array 'status' at (1) must have constant shape
  </code></pre>
  
  <p>Any thoughts. It is a really simple program. </p>
  
  <p>Thanks</p>