MPI_ACCUMULATE(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT, TARGET_DATATYPE,  OP, WIN, IERROR) 
 <type> ORIGIN_ADDR(*) 
INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP 
INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE,TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE,  OP, WIN, IERROR 
  
  MPI_GET(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT, TARGET_DATATYPE, WIN, IERROR)
 <type> ORIGIN_ADDR(*) 
INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP 
INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE, WIN, IERROR 
  
  MPI_PUT(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT, TARGET_DATATYPE, WIN, IERROR)
 <type> ORIGIN_ADDR(*) 
INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP 
INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE,  WIN, IERROR 
  
  MPI_WIN_COMPLETE(WIN, IERROR)
 INTEGER WIN,  IERROR 
  
  MPI_WIN_CREATE(BASE, SIZE, DISP_UNIT, INFO, COMM, WIN, IERROR)
  <type> BASE(*) 
INTEGER(KIND=MPI_ADDRESS_KIND) SIZE  
INTEGER DISP_UNIT, INFO, COMM, WIN, IERROR 
  
  MPI_WIN_FENCE(ASSERT, WIN, IERROR)
 INTEGER ASSERT, WIN, IERROR 
  
  MPI_WIN_FREE(WIN, IERROR)
 INTEGER WIN, IERROR 
  
  MPI_WIN_LOCK(LOCK_TYPE, RANK, ASSERT, WIN, IERROR)
 INTEGER LOCK_TYPE, RANK, ASSERT, WIN, IERROR 
  
  MPI_WIN_POST(GROUP, ASSERT, WIN, IERROR)
 INTEGER GROUP, ASSERT, WIN, IERROR 
  
  MPI_WIN_START(GROUP, ASSERT, WIN, IERROR)
 INTEGER GROUP, ASSERT, WIN, IERROR 
  
  MPI_WIN_TEST(WIN, FLAG, IERROR)
 INTEGER WIN, IERROR
LOGICAL FLAG 
  
  MPI_WIN_UNLOCK(RANK, WIN, IERROR)
 INTEGER RANK, WIN, IERROR 
  
  MPI_WIN_WAIT(WIN, IERROR)
 INTEGER WIN,  IERROR