SYNTAX
------

C Syntax
^^^^^^^^

.. code-block:: c

    int MPI_Unpack_external(const char datarep[], const void* inbuf,
        MPI_Aint insize, MPI_Aint* position, void* outbuf, int outcount,
        MPI_Datatype datatype)

    int MPI_Unpack_external_c(const char datarep[], const void* inbuf,
        MPI_Count insize, MPI_Count* position, void* outbuf, MPI_Count
        outcount, MPI_Datatype datatype)

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

.. code-block:: fortran

    USE MPI
    ! or the older form: INCLUDE 'mpif.h'
    MPI_UNPACK_EXTERNAL(DATAREP, INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, IERROR)
    	CHARACTER*(*) DATAREP
    	<type> INBUF(*), OUTBUF(*)
    	INTEGER(KIND=MPI_ADDRESS_KIND) INSIZE, POSITION
    	INTEGER OUTCOUNT, DATATYPE, IERROR

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

.. code-block:: fortran

    USE mpi_f08
    MPI_Unpack_external(datarep, inbuf, insize, position, outbuf, outcount, datatype, ierror)
    	CHARACTER(LEN=*), INTENT(IN) :: datarep
    	TYPE(*), DIMENSION(..), INTENT(IN) :: inbuf
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: insize
    	INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(INOUT) :: position
    	TYPE(*), DIMENSION(..) :: outbuf
    	INTEGER, INTENT(IN) :: outcount
    	TYPE(MPI_Datatype), INTENT(IN) :: datatype
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror

    MPI_Unpack_external(datarep, inbuf, insize, position, outbuf, outcount, datatype, ierror)
    	CHARACTER(LEN=*), INTENT(IN) :: datarep
    	TYPE(*), DIMENSION(..), INTENT(IN) :: inbuf
    	INTEGER(KIND=MPI_COUNT_KIND), INTENT(IN) :: insize, outcount
    	INTEGER(KIND=MPI_COUNT_KIND), INTENT(INOUT) :: position
    	TYPE(*), DIMENSION(..) :: outbuf
    	TYPE(MPI_Datatype), INTENT(IN) :: datatype
    	INTEGER, OPTIONAL, INTENT(OUT) :: ierror
