SYNTAX
------

C Syntax
^^^^^^^^

.. code-block:: c

    int MPI_Get(void* origin_addr, int origin_count, MPI_Datatype
        origin_datatype, int target_rank, MPI_Aint target_disp, int
        target_count, MPI_Datatype target_datatype, MPI_Win win)

    int MPI_Get_c(void* origin_addr, MPI_Count origin_count,
        MPI_Datatype origin_datatype, int target_rank, MPI_Aint
        target_disp, MPI_Count target_count, MPI_Datatype
        target_datatype, MPI_Win win)

    int MPI_Rget(void* origin_addr, int origin_count, MPI_Datatype
        origin_datatype, int target_rank, MPI_Aint target_disp, int
        target_count, MPI_Datatype target_datatype, MPI_Win win,
        MPI_Request* request)

    int MPI_Rget_c(void* origin_addr, MPI_Count origin_count,
        MPI_Datatype origin_datatype, int target_rank, MPI_Aint
        target_disp, MPI_Count target_count, MPI_Datatype
        target_datatype, MPI_Win win, MPI_Request* request)

Fortran Syntax
^^^^^^^^^^^^^^

.. code-block:: fortran

    USE MPI
    ! or the older form: INCLUDE 'mpif.h'
    MPI_GET(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT, TARGET_DATATYPE, WIN, IERROR)
    	<type> ORIGIN_ADDR(*)
    	INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE, WIN, IERROR
    	INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP

    MPI_RGET(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT, TARGET_DATATYPE, WIN, REQUEST, IERROR)
    	<type> ORIGIN_ADDR(*)
    	INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE, WIN, REQUEST, IERROR
    	INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP

Fortran 2008 Syntax
^^^^^^^^^^^^^^^^^^^

.. code-block:: fortran

    USE mpi_f08
    MPI_Get(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win, ierror)
    	TYPE(*), DIMENSION(..), ASYNCHRONOUS :: origin_addr
    	INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
    	TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype, target_datatype
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
    	TYPE(MPI_Win), INTENT(IN) :: win
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror

    MPI_Get(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win, ierror)
    	TYPE(*), DIMENSION(..), ASYNCHRONOUS :: origin_addr
    	INTEGER(KIND=MPI_COUNT_KIND), INTENT(IN) :: origin_count, target_count
    	TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype, target_datatype
    	INTEGER, INTENT(IN) :: target_rank
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
    	TYPE(MPI_Win), INTENT(IN) :: win
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror

    MPI_Rget(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win, request, ierror)
    	TYPE(*), DIMENSION(..), ASYNCHRONOUS :: origin_addr
    	INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
    	TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype, target_datatype
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
    	TYPE(MPI_Win), INTENT(IN) :: win
    	TYPE(MPI_Request), INTENT(OUT) :: request
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror

    MPI_Rget(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win, request, ierror)
    	TYPE(*), DIMENSION(..), ASYNCHRONOUS :: origin_addr
    	INTEGER(KIND=MPI_COUNT_KIND), INTENT(IN) :: origin_count, target_count
    	TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype, target_datatype
    	INTEGER, INTENT(IN) :: target_rank
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
    	TYPE(MPI_Win), INTENT(IN) :: win
    	TYPE(MPI_Request), INTENT(OUT) :: request
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror
