1 ! -*- f90 -*-
2 !
3 ! Copyright (c) 2009-2015 Cisco Systems, Inc.  All rights reserved.
4 ! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
5 !                         All rights reserved.
6 ! Copyright (c) 2012      The University of Tennessee and The University
7 !                         of Tennessee Research Foundation.  All rights
8 !                         reserved.
9 ! Copyright (c) 2012      Inria.  All rights reserved.
10 ! Copyright (c) 2015-2018 Research Organization for Information Science
11 !                         and Technology (RIST).  All rights reserved.
12 ! $COPYRIGHT$
13 !
14 ! This file provides the interface specifications for the MPI Fortran
15 ! API bindings.  It effectively maps between public names ("MPI_Init")
16 ! and the back-end implementation subroutine name (e.g., "pompi_init_f").
17 
18 #include "ompi/mpi/fortran/configure-fortran-output.h"
19 
20 !
21 ! Note that interfaces for the following subroutines are not included
22 ! in this file because they contain LOGICAL dummy parameters, and
23 ! therefore cannot be BIND(C).  Instead, the individual wrapper
24 ! implementation files (e.g., iprobe_f08.F90) use the "mpi" module to
25 ! get a interface for the subroutine and call the PMPI_* name of the
26 ! function, which then invokes the corresponding function in the
27 ! ompi/mpi/fortran/mpif-h directory.
28 !
29 ! MPI_Cart_create
30 ! MPI_Cart_get
31 ! MPI_Cart_map
32 ! MPI_Cart_sub
33 ! MPI_Comm_get_attr
34 ! MPI_Comm_test_inter
35 ! MPI_Dist_graph_create
36 ! MPI_Dist_graph_create_adjacent
37 ! MPI_Dist_graph_neighbors_count
38 ! MPI_File_get_atomicity
39 ! MPI_File_set_atomicity
40 ! MPI_Finalized
41 ! MPI_Graph_create
42 ! MPI_Improbe
43 ! MPI_Info_get
44 ! MPI_Info_get_valuelen
45 ! MPI_Initialized
46 ! MPI_Intercomm_merge
47 ! MPI_Iprobe
48 ! MPI_Is_thread_main
49 ! MPI_Op_commutative
50 ! MPI_Op_create
51 ! MPI_Request_get_status
52 ! MPI_Status_set_cancelled
53 ! MPI_Test
54 ! MPI_Testall
55 ! MPI_Testany
56 ! MPI_Testsome
57 ! MPI_Test_cancelled
58 ! MPI_Type_get_attr
59 ! MPI_Win_get_attr
60 ! MPI_Win_test
61 !
62 
63 interface
64 
65 subroutine pompi_bsend_f(buf,count,datatype,dest,tag,comm,ierror) &
66    BIND(C, name="pompi_bsend_f")
67    implicit none
68    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) OMPI_ASYNCHRONOUS :: buf
69    INTEGER, INTENT(IN) :: count, dest, tag
70    INTEGER, INTENT(IN) :: datatype
71    INTEGER, INTENT(IN) :: comm
72    INTEGER, INTENT(OUT) :: ierror
73 end subroutine pompi_bsend_f
74 
75 subroutine pompi_bsend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
76    BIND(C, name="pompi_bsend_init_f")
77    implicit none
78    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
79    INTEGER, INTENT(IN) :: count, dest, tag
80    INTEGER, INTENT(IN) :: datatype
81    INTEGER, INTENT(IN) :: comm
82    INTEGER, INTENT(OUT) :: request
83    INTEGER, INTENT(OUT) :: ierror
84 end subroutine pompi_bsend_init_f
85 
86 subroutine pompi_buffer_attach_f(buffer,size,ierror) &
87    BIND(C, name="pompi_buffer_attach_f")
88    implicit none
89    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buffer
90    INTEGER, INTENT(IN) :: size
91    INTEGER, INTENT(OUT) :: ierror
92 end subroutine pompi_buffer_attach_f
93 
94 ! Note that we have an F08-specific C implementation function for
95 ! PMPI_BUFFER_DETACH (i.e., it is different than the mpif.h / mpi
96 ! module C implementation function).
97 !
98 ! Note, too, the "p" version of the C implementation
99 ! function is a 1-line routine. It calls
100 ! ompi_buffer_detach_f08 C function.
101 subroutine pompi_buffer_detach_f(buffer_addr,size,ierror) &
102    BIND(C, name="pompi_buffer_detach_f08")
103    implicit none
104    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buffer_addr
105    INTEGER, INTENT(OUT) :: size
106    INTEGER, INTENT(OUT) :: ierror
107 end subroutine pompi_buffer_detach_f
108 
109 subroutine pompi_cancel_f(request,ierror) &
110    BIND(C, name="pompi_cancel_f")
111    implicit none
112    INTEGER, INTENT(IN) :: request
113    INTEGER, INTENT(OUT) :: ierror
114 end subroutine pompi_cancel_f
115 
116 subroutine pompi_get_count_f(status,datatype,count,ierror) &
117    BIND(C, name="pompi_get_count_f")
118    use :: mpi_f08_types, only : MPI_Status
119    implicit none
120    TYPE(MPI_Status), INTENT(IN) :: status
121    INTEGER, INTENT(IN) :: datatype
122    INTEGER, INTENT(OUT) :: count
123    INTEGER, INTENT(OUT) :: ierror
124 end subroutine pompi_get_count_f
125 
126 subroutine pompi_ibsend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
127    BIND(C, name="pompi_ibsend_f")
128    implicit none
129    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
130    INTEGER, INTENT(IN) :: count, dest, tag
131    INTEGER, INTENT(IN) :: datatype
132    INTEGER, INTENT(IN) :: comm
133    INTEGER, INTENT(OUT) :: request
134    INTEGER, INTENT(OUT) :: ierror
135 end subroutine pompi_ibsend_f
136 
137 subroutine pompi_irecv_f(buf,count,datatype,source,tag,comm,request,ierror) &
138    BIND(C, name="pompi_irecv_f")
139    implicit none
140    OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf
141    INTEGER, INTENT(IN) :: count, source, tag
142    INTEGER, INTENT(IN) :: datatype
143    INTEGER, INTENT(IN) :: comm
144    INTEGER, INTENT(OUT) :: request
145    INTEGER, INTENT(OUT) :: ierror
146 end subroutine pompi_irecv_f
147 
148 subroutine pompi_irsend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
149    BIND(C, name="pompi_irsend_f")
150    implicit none
151    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
152    INTEGER, INTENT(IN) :: count, dest, tag
153    INTEGER, INTENT(IN) :: datatype
154    INTEGER, INTENT(IN) :: comm
155    INTEGER, INTENT(OUT) :: request
156    INTEGER, INTENT(OUT) :: ierror
157 end subroutine pompi_irsend_f
158 
159 subroutine pompi_isend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
160    BIND(C, name="pompi_isend_f")
161    implicit none
162    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
163    INTEGER, INTENT(IN) :: count, dest, tag
164    INTEGER, INTENT(IN) :: datatype
165    INTEGER, INTENT(IN) :: comm
166    INTEGER, INTENT(OUT) :: request
167    INTEGER, INTENT(OUT) :: ierror
168 end subroutine pompi_isend_f
169 
170 subroutine pompi_issend_f(buf,count,datatype,dest,tag,comm,request,ierror) &
171    BIND(C, name="pompi_issend_f")
172    implicit none
173    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
174    INTEGER, INTENT(IN) :: count, dest, tag
175    INTEGER, INTENT(IN) :: datatype
176    INTEGER, INTENT(IN) :: comm
177    INTEGER, INTENT(OUT) :: request
178    INTEGER, INTENT(OUT) :: ierror
179 end subroutine pompi_issend_f
180 
181 subroutine pompi_probe_f(source,tag,comm,status,ierror) &
182    BIND(C, name="pompi_probe_f")
183    use :: mpi_f08_types, only : MPI_Status
184    implicit none
185    INTEGER, INTENT(IN) :: source, tag
186    INTEGER, INTENT(IN) :: comm
187    TYPE(MPI_Status), INTENT(OUT) :: status
188    INTEGER, INTENT(OUT) :: ierror
189 end subroutine pompi_probe_f
190 
191 subroutine pompi_recv_f(buf,count,datatype,source,tag,comm,status,ierror) &
192    BIND(C, name="pompi_recv_f")
193    use :: mpi_f08_types, only : MPI_Status
194    implicit none
195    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
196    INTEGER, INTENT(IN) :: count, source, tag
197    INTEGER, INTENT(IN) :: datatype
198    INTEGER, INTENT(IN) :: comm
199    TYPE(MPI_Status), INTENT(OUT) :: status
200    INTEGER, INTENT(OUT) :: ierror
201 end subroutine pompi_recv_f
202 
203 subroutine pompi_recv_init_f(buf,count,datatype,source,tag,comm,request,ierror) &
204    BIND(C, name="pompi_recv_init_f")
205    implicit none
206    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
207    INTEGER, INTENT(IN) :: count, source, tag
208    INTEGER, INTENT(IN) :: datatype
209    INTEGER, INTENT(IN) :: comm
210    INTEGER, INTENT(OUT) :: request
211    INTEGER, INTENT(OUT) :: ierror
212 end subroutine pompi_recv_init_f
213 
214 subroutine pompi_request_free_f(request,ierror) &
215    BIND(C, name="pompi_request_free_f")
216    implicit none
217    INTEGER, INTENT(INOUT) :: request
218    INTEGER, INTENT(OUT) :: ierror
219 end subroutine pompi_request_free_f
220 
221 subroutine pompi_rsend_f(buf,count,datatype,dest,tag,comm,ierror) &
222    BIND(C, name="pompi_rsend_f")
223    implicit none
224    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
225    INTEGER, INTENT(IN) :: count, dest, tag
226    INTEGER, INTENT(IN) :: datatype
227    INTEGER, INTENT(IN) :: comm
228    INTEGER, INTENT(OUT) :: ierror
229 end subroutine pompi_rsend_f
230 
231 subroutine pompi_rsend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
232    BIND(C, name="pompi_rsend_init_f")
233    implicit none
234    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
235    INTEGER, INTENT(IN) :: count, dest, tag
236    INTEGER, INTENT(IN) :: datatype
237    INTEGER, INTENT(IN) :: comm
238    INTEGER, INTENT(OUT) :: request
239    INTEGER, INTENT(OUT) :: ierror
240 end subroutine pompi_rsend_init_f
241 
242 subroutine pompi_send_f(buf,count,datatype,dest,tag,comm,ierror) &
243    BIND(C, name="pompi_send_f")
244    implicit none
245    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
246    INTEGER, INTENT(IN) :: count, dest, tag
247    INTEGER, INTENT(IN) :: datatype
248    INTEGER, INTENT(IN) :: comm
249    INTEGER, INTENT(OUT) :: ierror
250 end subroutine pompi_send_f
251 
252 subroutine pompi_sendrecv_f(sendbuf,sendcount,sendtype,dest,sendtag,recvbuf, &
253                            recvcount,recvtype,source,recvtag,comm,status,ierror) &
254    BIND(C, name="pompi_sendrecv_f")
255    use :: mpi_f08_types, only : MPI_Status
256    implicit none
257    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
258    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
259    INTEGER, INTENT(IN) :: sendcount, dest, sendtag, recvcount, source, recvtag
260    INTEGER, INTENT(IN) :: sendtype
261    INTEGER, INTENT(IN) :: recvtype
262    INTEGER, INTENT(IN) :: comm
263    TYPE(MPI_Status), INTENT(OUT) :: status
264    INTEGER, INTENT(OUT) :: ierror
265 end subroutine pompi_sendrecv_f
266 
267 subroutine pompi_sendrecv_replace_f(buf,count,datatype,dest,sendtag,source, &
268                                    recvtag,comm,status,ierror) &
269    BIND(C, name="pompi_sendrecv_replace_f")
270    use :: mpi_f08_types, only : MPI_Status
271    implicit none
272    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
273    INTEGER, INTENT(IN) :: count, dest, sendtag, source, recvtag
274    INTEGER, INTENT(IN) :: datatype
275    INTEGER, INTENT(IN) :: comm
276    TYPE(MPI_Status), INTENT(OUT) :: status
277    INTEGER, INTENT(OUT) :: ierror
278 end subroutine pompi_sendrecv_replace_f
279 
280 subroutine pompi_send_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
281    BIND(C, name="pompi_send_init_f")
282    implicit none
283    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
284    INTEGER, INTENT(IN) :: count, dest, tag
285    INTEGER, INTENT(IN) :: datatype
286    INTEGER, INTENT(IN) :: comm
287    INTEGER, INTENT(OUT) :: request
288    INTEGER, INTENT(OUT) :: ierror
289 end subroutine pompi_send_init_f
290 
291 subroutine pompi_ssend_f(buf,count,datatype,dest,tag,comm,ierror) &
292    BIND(C, name="pompi_ssend_f")
293    implicit none
294    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
295    INTEGER, INTENT(IN) :: count, dest, tag
296    INTEGER, INTENT(IN) :: datatype
297    INTEGER, INTENT(IN) :: comm
298    INTEGER, INTENT(OUT) :: ierror
299 end subroutine pompi_ssend_f
300 
301 subroutine pompi_ssend_init_f(buf,count,datatype,dest,tag,comm,request,ierror) &
302    BIND(C, name="pompi_ssend_init_f")
303    implicit none
304    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
305    INTEGER, INTENT(IN) :: count, dest, tag
306    INTEGER, INTENT(IN) :: datatype
307    INTEGER, INTENT(IN) :: comm
308    INTEGER, INTENT(OUT) :: request
309    INTEGER, INTENT(OUT) :: ierror
310 end subroutine pompi_ssend_init_f
311 
312 subroutine pompi_start_f(request,ierror) &
313    BIND(C, name="pompi_start_f")
314    implicit none
315    INTEGER, INTENT(INOUT) :: request
316    INTEGER, INTENT(OUT) :: ierror
317 end subroutine pompi_start_f
318 
319 subroutine pompi_startall_f(count,array_of_requests,ierror) &
320    BIND(C, name="pompi_startall_f")
321    implicit none
322    INTEGER, INTENT(IN) :: count
323    INTEGER, INTENT(INOUT) :: array_of_requests(count)
324    INTEGER, INTENT(OUT) :: ierror
325 end subroutine pompi_startall_f
326 
327 subroutine pompi_testsome_f(incount,array_of_requests,outcount, &
328                            array_of_indices,array_of_statuses,ierror) &
329    BIND(C, name="pompi_testsome_f")
330    use :: mpi_f08_types, only : MPI_Status
331    implicit none
332    INTEGER, INTENT(IN) :: incount
333    INTEGER, INTENT(INOUT) :: array_of_requests(incount)
334    INTEGER, INTENT(OUT) :: outcount
335    INTEGER, INTENT(OUT) :: array_of_indices(*)
336    TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
337    INTEGER, INTENT(OUT) :: ierror
338 end subroutine pompi_testsome_f
339 
340 subroutine pompi_wait_f(request,status,ierror) &
341    BIND(C, name="pompi_wait_f")
342    use :: mpi_f08_types, only : MPI_Status
343    implicit none
344    INTEGER, INTENT(INOUT) :: request
345    TYPE(MPI_Status), INTENT(OUT) :: status
346    INTEGER, INTENT(OUT) :: ierror
347 end subroutine pompi_wait_f
348 
349 subroutine pompi_waitall_f(count,array_of_requests,array_of_statuses,ierror) &
350    BIND(C, name="pompi_waitall_f")
351    use :: mpi_f08_types, only : MPI_Status
352    implicit none
353    INTEGER, INTENT(IN) :: count
354    INTEGER, INTENT(INOUT) :: array_of_requests(count)
355    TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(count)
356    INTEGER, INTENT(OUT) :: ierror
357 end subroutine pompi_waitall_f
358 
359 subroutine pompi_waitany_f(count,array_of_requests,index,status,ierror) &
360    BIND(C, name="pompi_waitany_f")
361    use :: mpi_f08_types, only : MPI_Status
362    implicit none
363    INTEGER, INTENT(IN) :: count
364    INTEGER, INTENT(INOUT) :: array_of_requests(count)
365    INTEGER, INTENT(OUT) :: index
366    TYPE(MPI_Status), INTENT(OUT) :: status
367    INTEGER, INTENT(OUT) :: ierror
368 end subroutine pompi_waitany_f
369 
370 subroutine pompi_waitsome_f(incount,array_of_requests,outcount, &
371                            array_of_indices,array_of_statuses,ierror) &
372    BIND(C, name="pompi_waitsome_f")
373    use :: mpi_f08_types, only : MPI_Status
374    implicit none
375    INTEGER, INTENT(IN) :: incount
376    INTEGER, INTENT(INOUT) :: array_of_requests(incount)
377    INTEGER, INTENT(OUT) :: outcount
378    INTEGER, INTENT(OUT) :: array_of_indices(*)
379    TYPE(MPI_Status), INTENT(OUT) :: array_of_statuses(*)
380    INTEGER, INTENT(OUT) :: ierror
381 end subroutine pompi_waitsome_f
382 
383 subroutine pompi_get_address_f(location,address,ierror) &
384    BIND(C, name="pompi_get_address_f")
385    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
386    implicit none
387    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: location
388    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: address
389    INTEGER, INTENT(OUT) :: ierror
390 end subroutine pompi_get_address_f
391 
392 subroutine pompi_get_elements_f(status,datatype,count,ierror) &
393    BIND(C, name="pompi_get_elements_f")
394    use :: mpi_f08_types, only : MPI_Status
395    implicit none
396    TYPE(MPI_Status), INTENT(IN) :: status
397    INTEGER, INTENT(IN) :: datatype
398    INTEGER, INTENT(OUT) :: count
399    INTEGER, INTENT(OUT) :: ierror
400 end subroutine pompi_get_elements_f
401 
402 subroutine pompi_pack_f(inbuf,incount,datatype,outbuf,outsize, &
403                        position,comm,ierror) &
404    BIND(C, name="pompi_pack_f")
405    implicit none
406    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf, outbuf
407    INTEGER, INTENT(IN) :: incount, outsize
408    INTEGER, INTENT(IN) :: datatype
409    INTEGER, INTENT(INOUT) :: position
410    INTEGER, INTENT(IN) :: comm
411    INTEGER, INTENT(OUT) :: ierror
412 end subroutine pompi_pack_f
413 
414 subroutine pompi_pack_external_f(datarep,inbuf,incount,datatype, &
415                                 outbuf,outsize,position,ierror,datarep_len) &
416    BIND(C, name="pompi_pack_external_f")
417    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
418    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
419    implicit none
420    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
421    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf, outbuf
422    INTEGER, INTENT(IN) :: incount
423    INTEGER, INTENT(IN) :: datatype
424    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: outsize
425    INTEGER(MPI_ADDRESS_KIND), INTENT(INOUT) :: position
426    INTEGER, INTENT(OUT) :: ierror
427    INTEGER, VALUE, INTENT(IN) :: datarep_len
428 end subroutine pompi_pack_external_f
429 
430 subroutine pompi_pack_external_size_f(datarep,incount,datatype,size,ierror,datarep_len) &
431    BIND(C, name="pompi_pack_external_size_f")
432    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
433    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
434    implicit none
435    INTEGER, INTENT(IN) :: datatype
436    INTEGER, INTENT(IN) :: incount
437    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
438    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: size
439    INTEGER, INTENT(OUT) :: ierror
440    INTEGER, VALUE, INTENT(IN) :: datarep_len
441 end subroutine pompi_pack_external_size_f
442 
443 subroutine pompi_pack_size_f(incount,datatype,comm,size,ierror) &
444    BIND(C, name="pompi_pack_size_f")
445    implicit none
446    INTEGER, INTENT(IN) :: incount
447    INTEGER, INTENT(IN) :: datatype
448    INTEGER, INTENT(IN) :: comm
449    INTEGER, INTENT(OUT) :: size
450    INTEGER, INTENT(OUT) :: ierror
451 end subroutine pompi_pack_size_f
452 
453 subroutine pompi_type_commit_f(datatype,ierror) &
454    BIND(C, name="pompi_type_commit_f")
455    implicit none
456    INTEGER, INTENT(INOUT) :: datatype
457    INTEGER, INTENT(OUT) :: ierror
458 end subroutine pompi_type_commit_f
459 
460 subroutine pompi_type_contiguous_f(count,oldtype,newtype,ierror) &
461    BIND(C, name="pompi_type_contiguous_f")
462    implicit none
463    INTEGER, INTENT(IN) :: count
464    INTEGER, INTENT(IN) :: oldtype
465    INTEGER, INTENT(OUT) :: newtype
466    INTEGER, INTENT(OUT) :: ierror
467 end subroutine pompi_type_contiguous_f
468 
469 subroutine pompi_type_create_darray_f(size,rank,ndims,&
470                     array_of_gsizes,array_of_distribs,array_of_dargs,array_of_psizes,&
471                     order,oldtype,newtype,ierror) &
472    BIND(C, name="pompi_type_create_darray_f")
473    implicit none
474    INTEGER, INTENT(IN) :: size, rank, ndims, order
475    INTEGER, INTENT(IN) :: array_of_gsizes(ndims), array_of_distribs(ndims)
476    INTEGER, INTENT(IN) :: array_of_dargs(ndims), array_of_psizes(ndims)
477    INTEGER, INTENT(IN) :: oldtype
478    INTEGER, INTENT(OUT) :: newtype
479    INTEGER, INTENT(OUT) :: ierror
480 end subroutine pompi_type_create_darray_f
481 
482 subroutine pompi_type_create_hindexed_f(count,array_of_blocklengths, &
483                                        array_of_displacements,oldtype,newtype,ierror) &
484    BIND(C, name="pompi_type_create_hindexed_f")
485    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
486    implicit none
487    INTEGER, INTENT(IN) :: count
488    INTEGER, INTENT(IN) :: array_of_blocklengths(count)
489    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
490    INTEGER, INTENT(IN) :: oldtype
491    INTEGER, INTENT(OUT) :: newtype
492    INTEGER, INTENT(OUT) :: ierror
493 end subroutine pompi_type_create_hindexed_f
494 
495 subroutine pompi_type_create_hvector_f(count,blocklength,stride,oldtype,newtype,ierror) &
496    BIND(C, name="pompi_type_create_hvector_f")
497    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
498    implicit none
499    INTEGER, INTENT(IN) :: count, blocklength
500    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: stride
501    INTEGER, INTENT(IN) :: oldtype
502    INTEGER, INTENT(OUT) :: newtype
503    INTEGER, INTENT(OUT) :: ierror
504 end subroutine pompi_type_create_hvector_f
505 
506 subroutine pompi_type_create_indexed_block_f(count,blocklength, &
507                             array_of_displacements,oldtype,newtype,ierror) &
508    BIND(C, name="pompi_type_create_indexed_block_f")
509    implicit none
510    INTEGER, INTENT(IN) :: count, blocklength
511    INTEGER, INTENT(IN) :: array_of_displacements(count)
512    INTEGER, INTENT(IN) :: oldtype
513    INTEGER, INTENT(OUT) :: newtype
514    INTEGER, INTENT(OUT) :: ierror
515 end subroutine pompi_type_create_indexed_block_f
516 
517 subroutine pompi_type_create_hindexed_block_f(count,blocklength, &
518                             array_of_displacements,oldtype,newtype,ierror) &
519    BIND(C, name="pompi_type_create_hindexed_block_f")
520    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
521    implicit none
522    INTEGER, INTENT(IN) :: count, blocklength
523    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
524    INTEGER, INTENT(IN) :: oldtype
525    INTEGER, INTENT(OUT) :: newtype
526    INTEGER, INTENT(OUT) :: ierror
527 end subroutine pompi_type_create_hindexed_block_f
528 
529 subroutine pompi_type_create_resized_f(oldtype,lb,extent,newtype,ierror) &
530    BIND(C, name="pompi_type_create_resized_f")
531    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
532    implicit none
533    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: lb, extent
534    INTEGER, INTENT(IN) :: oldtype
535    INTEGER, INTENT(OUT) :: newtype
536    INTEGER, INTENT(OUT) :: ierror
537 end subroutine pompi_type_create_resized_f
538 
539 subroutine pompi_type_create_struct_f(count,array_of_blocklengths, &
540                            array_of_displacements,array_of_types,newtype,ierror) &
541    BIND(C, name="pompi_type_create_struct_f")
542    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
543    implicit none
544    INTEGER, INTENT(IN) :: count
545    INTEGER, INTENT(IN) :: array_of_blocklengths(count)
546    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: array_of_displacements(count)
547    INTEGER, INTENT(IN) :: array_of_types(count)
548    INTEGER, INTENT(OUT) :: newtype
549    INTEGER, INTENT(OUT) :: ierror
550 end subroutine pompi_type_create_struct_f
551 
552 subroutine pompi_type_create_subarray_f(ndims,array_of_sizes, &
553                     array_of_subsizes,array_of_starts,order,oldtype,newtype,ierror) &
554    BIND(C, name="pompi_type_create_subarray_f")
555    implicit none
556    INTEGER, INTENT(IN) :: ndims, order
557    INTEGER, INTENT(IN) :: array_of_sizes(*), array_of_subsizes(*), array_of_starts(*)
558    INTEGER, INTENT(IN) :: oldtype
559    INTEGER, INTENT(OUT) :: newtype
560    INTEGER, INTENT(OUT) :: ierror
561 end subroutine pompi_type_create_subarray_f
562 
563 subroutine pompi_type_dup_f(oldtype,newtype,ierror) &
564    BIND(C, name="pompi_type_dup_f")
565    implicit none
566    INTEGER, INTENT(IN) :: oldtype
567    INTEGER, INTENT(OUT) :: newtype
568    INTEGER, INTENT(OUT) :: ierror
569 end subroutine pompi_type_dup_f
570 
571 subroutine pompi_type_free_f(datatype,ierror) &
572    BIND(C, name="pompi_type_free_f")
573    implicit none
574    INTEGER, INTENT(INOUT) :: datatype
575    INTEGER, INTENT(OUT) :: ierror
576 end subroutine pompi_type_free_f
577 
578 subroutine pompi_type_get_contents_f(datatype,max_integers,max_addresses, &
579                     max_datatypes,array_of_integers,array_of_addresses, &
580                     array_of_datatypes,ierror) &
581    BIND(C, name="pompi_type_get_contents_f")
582    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
583    implicit none
584    INTEGER, INTENT(IN) :: datatype
585    INTEGER, INTENT(IN) :: max_integers, max_addresses, max_datatypes
586    INTEGER, INTENT(OUT) :: array_of_integers(max_integers)
587    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: array_of_addresses(max_addresses)
588    INTEGER, INTENT(OUT) :: array_of_datatypes(max_datatypes)
589    INTEGER, INTENT(OUT) :: ierror
590 end subroutine pompi_type_get_contents_f
591 
592 subroutine pompi_type_get_envelope_f(datatype,num_integers, &
593                                     num_addresses,num_datatypes,combiner,ierror) &
594    BIND(C, name="pompi_type_get_envelope_f")
595    implicit none
596    INTEGER, INTENT(IN) :: datatype
597    INTEGER, INTENT(OUT) :: num_integers, num_addresses, num_datatypes, combiner
598    INTEGER, INTENT(OUT) :: ierror
599 end subroutine pompi_type_get_envelope_f
600 
601 subroutine pompi_type_get_extent_f(datatype,lb,extent,ierror) &
602    BIND(C, name="pompi_type_get_extent_f")
603    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
604    implicit none
605    INTEGER, INTENT(IN) :: datatype
606    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: lb, extent
607    INTEGER, INTENT(OUT) :: ierror
608 end subroutine pompi_type_get_extent_f
609 
610 subroutine pompi_type_get_true_extent_f(datatype,true_lb,true_extent,ierror) &
611    BIND(C, name="pompi_type_get_true_extent_f")
612    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
613    implicit none
614    INTEGER, INTENT(IN) :: datatype
615    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: true_lb, true_extent
616    INTEGER, INTENT(OUT) :: ierror
617 end subroutine pompi_type_get_true_extent_f
618 
619 subroutine pompi_type_indexed_f(count,array_of_blocklengths, &
620                                array_of_displacements,oldtype,newtype,ierror) &
621    BIND(C, name="pompi_type_indexed_f")
622    implicit none
623    INTEGER, INTENT(IN) :: count
624    INTEGER, INTENT(IN) :: array_of_blocklengths(count), array_of_displacements(count)
625    INTEGER, INTENT(IN) :: oldtype
626    INTEGER, INTENT(OUT) :: newtype
627    INTEGER, INTENT(OUT) :: ierror
628 end subroutine pompi_type_indexed_f
629 
630 subroutine pompi_type_size_f(datatype,size,ierror) &
631    BIND(C, name="pompi_type_size_f")
632    implicit none
633    INTEGER, INTENT(IN) :: datatype
634    INTEGER, INTENT(OUT) :: size
635    INTEGER, INTENT(OUT) :: ierror
636 end subroutine pompi_type_size_f
637 
638 subroutine pompi_type_vector_f(count,blocklength,stride,oldtype,newtype,ierror) &
639    BIND(C, name="pompi_type_vector_f")
640    implicit none
641    INTEGER, INTENT(IN) :: count, blocklength, stride
642    INTEGER, INTENT(IN) :: oldtype
643    INTEGER, INTENT(OUT) :: newtype
644    INTEGER, INTENT(OUT) :: ierror
645 end subroutine pompi_type_vector_f
646 
647 subroutine pompi_unpack_f(inbuf,insize,position,outbuf,outcount, &
648                          datatype,comm,ierror) &
649    BIND(C, name="pompi_unpack_f")
650    implicit none
651    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf, outbuf
652    INTEGER, INTENT(IN) :: insize, outcount
653    INTEGER, INTENT(INOUT) :: position
654    INTEGER, INTENT(IN) :: datatype
655    INTEGER, INTENT(IN) :: comm
656    INTEGER, INTENT(OUT) :: ierror
657 end subroutine pompi_unpack_f
658 
659 subroutine pompi_unpack_external_f(datarep,inbuf,insize,position, &
660                                   outbuf,outcount,datatype,ierror,datarep_len) &
661    BIND(C, name="pompi_unpack_external_f")
662    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
663    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
664    implicit none
665    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
666    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf, outbuf
667    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: insize
668    INTEGER(MPI_ADDRESS_KIND), INTENT(INOUT) :: position
669    INTEGER, INTENT(IN) :: outcount
670    INTEGER, INTENT(IN) :: datatype
671    INTEGER, INTENT(OUT) :: ierror
672    INTEGER, VALUE, INTENT(IN) :: datarep_len
673 end subroutine pompi_unpack_external_f
674 
675 subroutine pompi_allgather_f(sendbuf,sendcount,sendtype,recvbuf, &
676                             recvcount,recvtype,comm,ierror) &
677    BIND(C, name="pompi_allgather_f")
678    implicit none
679    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
680    INTEGER, INTENT(IN) :: sendcount, recvcount
681    INTEGER, INTENT(IN) :: sendtype
682    INTEGER, INTENT(IN) :: recvtype
683    INTEGER, INTENT(IN) :: comm
684    INTEGER, INTENT(OUT) :: ierror
685 end subroutine pompi_allgather_f
686 
687 subroutine pompi_iallgather_f(sendbuf,sendcount,sendtype,recvbuf, &
688                             recvcount,recvtype,comm,request,ierror) &
689    BIND(C, name="pompi_iallgather_f")
690    implicit none
691    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
692    INTEGER, INTENT(IN) :: sendcount, recvcount
693    INTEGER, INTENT(IN) :: sendtype
694    INTEGER, INTENT(IN) :: recvtype
695    INTEGER, INTENT(IN) :: comm
696    INTEGER, INTENT(OUT) :: request
697    INTEGER, INTENT(OUT) :: ierror
698 end subroutine pompi_iallgather_f
699 
700 subroutine pompi_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
701                              recvcounts,displs,recvtype,comm,ierror) &
702    BIND(C, name="pompi_allgatherv_f")
703    implicit none
704    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
705    INTEGER, INTENT(IN) :: sendcount
706    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
707    INTEGER, INTENT(IN) :: sendtype
708    INTEGER, INTENT(IN) :: recvtype
709    INTEGER, INTENT(IN) :: comm
710    INTEGER, INTENT(OUT) :: ierror
711 end subroutine pompi_allgatherv_f
712 
713 subroutine pompi_iallgatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
714                              recvcounts,displs,recvtype,comm,request,ierror) &
715    BIND(C, name="pompi_iallgatherv_f")
716    implicit none
717    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
718    INTEGER, INTENT(IN) :: sendcount
719    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
720    INTEGER, INTENT(IN) :: sendtype
721    INTEGER, INTENT(IN) :: recvtype
722    INTEGER, INTENT(IN) :: comm
723    INTEGER, INTENT(OUT) :: request
724    INTEGER, INTENT(OUT) :: ierror
725 end subroutine pompi_iallgatherv_f
726 
727 subroutine pompi_allreduce_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
728    BIND(C, name="pompi_allreduce_f")
729    implicit none
730    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
731    INTEGER, INTENT(IN) :: count
732    INTEGER, INTENT(IN) :: datatype
733    INTEGER, INTENT(IN) :: op
734    INTEGER, INTENT(IN) :: comm
735    INTEGER, INTENT(OUT) :: ierror
736 end subroutine pompi_allreduce_f
737 
738 subroutine pompi_iallreduce_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
739    BIND(C, name="pompi_iallreduce_f")
740    implicit none
741    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
742    INTEGER, INTENT(IN) :: count
743    INTEGER, INTENT(IN) :: datatype
744    INTEGER, INTENT(IN) :: op
745    INTEGER, INTENT(IN) :: comm
746    INTEGER, INTENT(OUT) :: request
747    INTEGER, INTENT(OUT) :: ierror
748 end subroutine pompi_iallreduce_f
749 
750 subroutine pompi_alltoall_f(sendbuf,sendcount,sendtype,recvbuf, &
751                            recvcount,recvtype,comm,ierror) &
752    BIND(C, name="pompi_alltoall_f")
753    implicit none
754    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
755    INTEGER, INTENT(IN) :: sendcount, recvcount
756    INTEGER, INTENT(IN) :: sendtype
757    INTEGER, INTENT(IN) :: recvtype
758    INTEGER, INTENT(IN) :: comm
759    INTEGER, INTENT(OUT) :: ierror
760 end subroutine pompi_alltoall_f
761 
762 subroutine pompi_ialltoall_f(sendbuf,sendcount,sendtype,recvbuf, &
763                            recvcount,recvtype,comm,request,ierror) &
764    BIND(C, name="pompi_ialltoall_f")
765    implicit none
766    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
767    INTEGER, INTENT(IN) :: sendcount, recvcount
768    INTEGER, INTENT(IN) :: sendtype
769    INTEGER, INTENT(IN) :: recvtype
770    INTEGER, INTENT(IN) :: comm
771    INTEGER, INTENT(OUT) :: request
772    INTEGER, INTENT(OUT) :: ierror
773 end subroutine pompi_ialltoall_f
774 
775 subroutine pompi_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype, &
776                             recvbuf,recvcounts,rdispls,recvtype,comm,ierror) &
777    BIND(C, name="pompi_alltoallv_f")
778    implicit none
779    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
780    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
781    INTEGER, INTENT(IN) :: sendtype
782    INTEGER, INTENT(IN) :: recvtype
783    INTEGER, INTENT(IN) :: comm
784    INTEGER, INTENT(OUT) :: ierror
785 end subroutine pompi_alltoallv_f
786 
787 subroutine pompi_ialltoallv_f(sendbuf,sendcounts,sdispls,sendtype, &
788                             recvbuf,recvcounts,rdispls,recvtype,comm,request,ierror) &
789    BIND(C, name="pompi_ialltoallv_f")
790    implicit none
791    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
792    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
793    INTEGER, INTENT(IN) :: sendtype
794    INTEGER, INTENT(IN) :: recvtype
795    INTEGER, INTENT(IN) :: comm
796    INTEGER, INTENT(OUT) :: request
797    INTEGER, INTENT(OUT) :: ierror
798 end subroutine pompi_ialltoallv_f
799 
800 subroutine pompi_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes, &
801                             recvbuf,recvcounts,rdispls,recvtypes,comm,ierror) &
802    BIND(C, name="pompi_alltoallw_f")
803    implicit none
804    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
805    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
806    INTEGER, INTENT(IN) :: sendtypes
807    INTEGER, INTENT(IN) :: recvtypes
808    INTEGER, INTENT(IN) :: comm
809    INTEGER, INTENT(OUT) :: ierror
810 end subroutine pompi_alltoallw_f
811 
812 subroutine pompi_ialltoallw_f(sendbuf,sendcounts,sdispls,sendtypes, &
813                             recvbuf,recvcounts,rdispls,recvtypes,comm,request,ierror) &
814    BIND(C, name="pompi_ialltoallw_f")
815    implicit none
816    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
817    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
818    INTEGER, INTENT(IN) :: sendtypes
819    INTEGER, INTENT(IN) :: recvtypes
820    INTEGER, INTENT(IN) :: comm
821    INTEGER, INTENT(OUT) :: request
822    INTEGER, INTENT(OUT) :: ierror
823 end subroutine pompi_ialltoallw_f
824 
825 subroutine pompi_barrier_f(comm,ierror) &
826    BIND(C, name="pompi_barrier_f")
827    implicit none
828    INTEGER, INTENT(IN) :: comm
829    INTEGER, INTENT(OUT) :: ierror
830 end subroutine pompi_barrier_f
831 
832 subroutine pompi_ibarrier_f(comm,request,ierror) &
833    BIND(C, name="pompi_ibarrier_f")
834    implicit none
835    INTEGER, INTENT(IN) :: comm
836    INTEGER, INTENT(OUT) :: request
837    INTEGER, INTENT(OUT) :: ierror
838 end subroutine pompi_ibarrier_f
839 
840 subroutine pompi_bcast_f(buffer,count,datatype,root,comm,ierror) &
841    BIND(C, name="pompi_bcast_f")
842    implicit none
843    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buffer
844    INTEGER, INTENT(IN) :: count, root
845    INTEGER, INTENT(IN) :: datatype
846    INTEGER, INTENT(IN) :: comm
847    INTEGER, INTENT(OUT) :: ierror
848 end subroutine pompi_bcast_f
849 
850 subroutine pompi_ibcast_f(buffer,count,datatype,root,comm,request,ierror) &
851    BIND(C, name="pompi_ibcast_f")
852    implicit none
853    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buffer
854    INTEGER, INTENT(IN) :: count, root
855    INTEGER, INTENT(IN) :: datatype
856    INTEGER, INTENT(IN) :: comm
857    INTEGER, INTENT(OUT) :: request
858    INTEGER, INTENT(OUT) :: ierror
859 end subroutine pompi_ibcast_f
860 
861 subroutine pompi_exscan_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
862    BIND(C, name="pompi_exscan_f")
863    implicit none
864    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
865    INTEGER, INTENT(IN) :: count
866    INTEGER, INTENT(IN) :: datatype
867    INTEGER, INTENT(IN) :: op
868    INTEGER, INTENT(IN) :: comm
869    INTEGER, INTENT(OUT) :: ierror
870 end subroutine pompi_exscan_f
871 
872 subroutine pompi_iexscan_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
873    BIND(C, name="pompi_iexscan_f")
874    implicit none
875    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
876    INTEGER, INTENT(IN) :: count
877    INTEGER, INTENT(IN) :: datatype
878    INTEGER, INTENT(IN) :: op
879    INTEGER, INTENT(IN) :: comm
880    INTEGER, INTENT(OUT) :: request
881    INTEGER, INTENT(OUT) :: ierror
882 end subroutine pompi_iexscan_f
883 
884 subroutine pompi_gather_f(sendbuf,sendcount,sendtype,recvbuf, &
885                          recvcount,recvtype,root,comm,ierror) &
886    BIND(C, name="pompi_gather_f")
887    implicit none
888    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
889    INTEGER, INTENT(IN) :: sendcount, recvcount, root
890    INTEGER, INTENT(IN) :: sendtype
891    INTEGER, INTENT(IN) :: recvtype
892    INTEGER, INTENT(IN) :: comm
893    INTEGER, INTENT(OUT) :: ierror
894 end subroutine pompi_gather_f
895 
896 subroutine pompi_igather_f(sendbuf,sendcount,sendtype,recvbuf, &
897                          recvcount,recvtype,root,comm,request,ierror) &
898    BIND(C, name="pompi_igather_f")
899    implicit none
900    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
901    INTEGER, INTENT(IN) :: sendcount, recvcount, root
902    INTEGER, INTENT(IN) :: sendtype
903    INTEGER, INTENT(IN) :: recvtype
904    INTEGER, INTENT(IN) :: comm
905    INTEGER, INTENT(OUT) :: request
906    INTEGER, INTENT(OUT) :: ierror
907 end subroutine pompi_igather_f
908 
909 subroutine pompi_gatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
910                           recvcounts,displs,recvtype,root,comm,ierror) &
911    BIND(C, name="pompi_gatherv_f")
912    implicit none
913    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
914    INTEGER, INTENT(IN) :: sendcount, root
915    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
916    INTEGER, INTENT(IN) :: sendtype
917    INTEGER, INTENT(IN) :: recvtype
918    INTEGER, INTENT(IN) :: comm
919    INTEGER, INTENT(OUT) :: ierror
920 end subroutine pompi_gatherv_f
921 
922 subroutine pompi_igatherv_f(sendbuf,sendcount,sendtype,recvbuf, &
923                           recvcounts,displs,recvtype,root,comm,request,ierror) &
924    BIND(C, name="pompi_igatherv_f")
925    implicit none
926    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
927    INTEGER, INTENT(IN) :: sendcount, root
928    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
929    INTEGER, INTENT(IN) :: sendtype
930    INTEGER, INTENT(IN) :: recvtype
931    INTEGER, INTENT(IN) :: comm
932    INTEGER, INTENT(OUT) :: request
933    INTEGER, INTENT(OUT) :: ierror
934 end subroutine pompi_igatherv_f
935 
936 subroutine pompi_op_free_f(op,ierror) &
937    BIND(C, name="pompi_op_free_f")
938    implicit none
939    INTEGER, INTENT(INOUT) :: op
940    INTEGER, INTENT(OUT) :: ierror
941 end subroutine pompi_op_free_f
942 
943 subroutine pompi_reduce_f(sendbuf,recvbuf,count,datatype,op,root,comm,ierror) &
944    BIND(C, name="pompi_reduce_f")
945    implicit none
946    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
947    INTEGER, INTENT(IN) :: count, root
948    INTEGER, INTENT(IN) :: datatype
949    INTEGER, INTENT(IN) :: op
950    INTEGER, INTENT(IN) :: comm
951    INTEGER, INTENT(OUT) :: ierror
952 end subroutine pompi_reduce_f
953 
954 subroutine pompi_ireduce_f(sendbuf,recvbuf,count,datatype,op,root,comm,request,ierror) &
955    BIND(C, name="pompi_ireduce_f")
956    implicit none
957    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
958    INTEGER, INTENT(IN) :: count, root
959    INTEGER, INTENT(IN) :: datatype
960    INTEGER, INTENT(IN) :: op
961    INTEGER, INTENT(IN) :: comm
962    INTEGER, INTENT(OUT) :: request
963    INTEGER, INTENT(OUT) :: ierror
964 end subroutine pompi_ireduce_f
965 
966 subroutine pompi_reduce_local_f(inbuf,inoutbuf,count,datatype,op,ierror) &
967    BIND(C, name="pompi_reduce_local_f")
968    implicit none
969    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: inbuf, inoutbuf
970    INTEGER, INTENT(IN) :: count
971    INTEGER, INTENT(IN) :: datatype
972    INTEGER, INTENT(IN) :: op
973    INTEGER, INTENT(OUT) :: ierror
974 end subroutine pompi_reduce_local_f
975 
976 subroutine pompi_reduce_scatter_f(sendbuf,recvbuf,recvcounts, &
977                                  datatype,op,comm,ierror) &
978    BIND(C, name="pompi_reduce_scatter_f")
979    implicit none
980    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
981    INTEGER, INTENT(IN) :: recvcounts(*)
982    INTEGER, INTENT(IN) :: datatype
983    INTEGER, INTENT(IN) :: op
984    INTEGER, INTENT(IN) :: comm
985    INTEGER, INTENT(OUT) :: ierror
986 end subroutine pompi_reduce_scatter_f
987 
988 subroutine pompi_ireduce_scatter_f(sendbuf,recvbuf,recvcounts, &
989                                  datatype,op,comm,request,ierror) &
990    BIND(C, name="pompi_ireduce_scatter_f")
991    implicit none
992    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
993    INTEGER, INTENT(IN) :: recvcounts(*)
994    INTEGER, INTENT(IN) :: datatype
995    INTEGER, INTENT(IN) :: op
996    INTEGER, INTENT(IN) :: comm
997    INTEGER, INTENT(OUT) :: request
998    INTEGER, INTENT(OUT) :: ierror
999 end subroutine pompi_ireduce_scatter_f
1000 
1001 subroutine pompi_reduce_scatter_block_f(sendbuf,recvbuf,recvcount, &
1002                                        datatype,op,comm,ierror) &
1003    BIND(C, name="pompi_reduce_scatter_block_f")
1004    implicit none
1005    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1006    INTEGER, INTENT(IN) :: recvcount
1007    INTEGER, INTENT(IN) :: datatype
1008    INTEGER, INTENT(IN) :: op
1009    INTEGER, INTENT(IN) :: comm
1010    INTEGER, INTENT(OUT) :: ierror
1011 end subroutine pompi_reduce_scatter_block_f
1012 
1013 subroutine pompi_ireduce_scatter_block_f(sendbuf,recvbuf,recvcount, &
1014                                        datatype,op,comm,request,ierror) &
1015    BIND(C, name="pompi_ireduce_scatter_block_f")
1016    implicit none
1017    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1018    INTEGER, INTENT(IN) :: recvcount
1019    INTEGER, INTENT(IN) :: datatype
1020    INTEGER, INTENT(IN) :: op
1021    INTEGER, INTENT(IN) :: comm
1022    INTEGER, INTENT(OUT) :: request
1023    INTEGER, INTENT(OUT) :: ierror
1024 end subroutine pompi_ireduce_scatter_block_f
1025 
1026 subroutine pompi_scan_f(sendbuf,recvbuf,count,datatype,op,comm,ierror) &
1027    BIND(C, name="pompi_scan_f")
1028    implicit none
1029    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1030    INTEGER, INTENT(IN) :: count
1031    INTEGER, INTENT(IN) :: datatype
1032    INTEGER, INTENT(IN) :: op
1033    INTEGER, INTENT(IN) :: comm
1034    INTEGER, INTENT(OUT) :: ierror
1035 end subroutine pompi_scan_f
1036 
1037 subroutine pompi_iscan_f(sendbuf,recvbuf,count,datatype,op,comm,request,ierror) &
1038    BIND(C, name="pompi_iscan_f")
1039    implicit none
1040    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1041    INTEGER, INTENT(IN) :: count
1042    INTEGER, INTENT(IN) :: datatype
1043    INTEGER, INTENT(IN) :: op
1044    INTEGER, INTENT(IN) :: comm
1045    INTEGER, INTENT(OUT) :: request
1046    INTEGER, INTENT(OUT) :: ierror
1047 end subroutine pompi_iscan_f
1048 
1049 subroutine pompi_scatter_f(sendbuf,sendcount,sendtype,recvbuf, &
1050                           recvcount,recvtype,root,comm,ierror) &
1051    BIND(C, name="pompi_scatter_f")
1052    implicit none
1053    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1054    INTEGER, INTENT(IN) :: sendcount, recvcount, root
1055    INTEGER, INTENT(IN) :: sendtype
1056    INTEGER, INTENT(IN) :: recvtype
1057    INTEGER, INTENT(IN) :: comm
1058    INTEGER, INTENT(OUT) :: ierror
1059 end subroutine pompi_scatter_f
1060 
1061 subroutine pompi_iscatter_f(sendbuf,sendcount,sendtype,recvbuf, &
1062                           recvcount,recvtype,root,comm,request,ierror) &
1063    BIND(C, name="pompi_iscatter_f")
1064    implicit none
1065    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1066    INTEGER, INTENT(IN) :: sendcount, recvcount, root
1067    INTEGER, INTENT(IN) :: sendtype
1068    INTEGER, INTENT(IN) :: recvtype
1069    INTEGER, INTENT(IN) :: comm
1070    INTEGER, INTENT(OUT) :: request
1071    INTEGER, INTENT(OUT) :: ierror
1072 end subroutine pompi_iscatter_f
1073 
1074 subroutine pompi_scatterv_f(sendbuf,sendcounts,displs,sendtype, &
1075                            recvbuf,recvcount,recvtype,root,comm,ierror) &
1076    BIND(C, name="pompi_scatterv_f")
1077    implicit none
1078    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1079    INTEGER, INTENT(IN) :: recvcount, root
1080    INTEGER, INTENT(IN) :: sendcounts(*), displs(*)
1081    INTEGER, INTENT(IN) :: sendtype
1082    INTEGER, INTENT(IN) :: recvtype
1083    INTEGER, INTENT(IN) :: comm
1084    INTEGER, INTENT(OUT) :: ierror
1085 end subroutine pompi_scatterv_f
1086 
1087 subroutine pompi_iscatterv_f(sendbuf,sendcounts,displs,sendtype, &
1088                            recvbuf,recvcount,recvtype,root,comm,request,ierror) &
1089    BIND(C, name="pompi_iscatterv_f")
1090    implicit none
1091    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf, recvbuf
1092    INTEGER, INTENT(IN) :: recvcount, root
1093    INTEGER, INTENT(IN) :: sendcounts(*), displs(*)
1094    INTEGER, INTENT(IN) :: sendtype
1095    INTEGER, INTENT(IN) :: recvtype
1096    INTEGER, INTENT(IN) :: comm
1097    INTEGER, INTENT(OUT) :: request
1098    INTEGER, INTENT(OUT) :: ierror
1099 end subroutine pompi_iscatterv_f
1100 
1101 subroutine pompi_comm_compare_f(comm1,comm2,result,ierror) &
1102    BIND(C, name="pompi_comm_compare_f")
1103    implicit none
1104    INTEGER, INTENT(IN) :: comm1
1105    INTEGER, INTENT(IN) :: comm2
1106    INTEGER, INTENT(OUT) :: result
1107    INTEGER, INTENT(OUT) :: ierror
1108 end subroutine pompi_comm_compare_f
1109 
1110 subroutine pompi_comm_create_f(comm,group,newcomm,ierror) &
1111    BIND(C, name="pompi_comm_create_f")
1112    implicit none
1113    INTEGER, INTENT(IN) :: comm
1114    INTEGER, INTENT(IN) :: group
1115    INTEGER, INTENT(OUT) :: newcomm
1116    INTEGER, INTENT(OUT) :: ierror
1117 end subroutine pompi_comm_create_f
1118 
1119 subroutine pompi_comm_create_keyval_f(comm_copy_attr_fn,comm_delete_attr_fn, &
1120                                      comm_keyval,extra_state,ierror) &
1121    BIND(C, name="pompi_comm_create_keyval_f")
1122    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1123    use, intrinsic :: iso_c_binding, only: c_funptr
1124    implicit none
1125    type(c_funptr), value :: comm_copy_attr_fn
1126    type(c_funptr), value :: comm_delete_attr_fn
1127    INTEGER, INTENT(OUT) :: comm_keyval
1128    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1129    INTEGER, INTENT(OUT) :: ierror
1130 end subroutine pompi_comm_create_keyval_f
1131 
1132 subroutine pompi_comm_delete_attr_f(comm,comm_keyval,ierror) &
1133    BIND(C, name="pompi_comm_delete_attr_f")
1134    implicit none
1135    INTEGER, INTENT(IN) :: comm
1136    INTEGER, INTENT(IN) :: comm_keyval
1137    INTEGER, INTENT(OUT) :: ierror
1138 end subroutine pompi_comm_delete_attr_f
1139 
1140 subroutine pompi_comm_dup_f(comm,newcomm,ierror) &
1141    BIND(C, name="pompi_comm_dup_f")
1142    implicit none
1143    INTEGER, INTENT(IN) :: comm
1144    INTEGER, INTENT(OUT) :: newcomm
1145    INTEGER, INTENT(OUT) :: ierror
1146 end subroutine pompi_comm_dup_f
1147 
1148 subroutine pompi_comm_free_f(comm,ierror) &
1149    BIND(C, name="pompi_comm_free_f")
1150    implicit none
1151    INTEGER, INTENT(INOUT) :: comm
1152    INTEGER, INTENT(OUT) :: ierror
1153 end subroutine pompi_comm_free_f
1154 
1155 subroutine pompi_comm_free_keyval_f(comm_keyval,ierror) &
1156    BIND(C, name="pompi_comm_free_keyval_f")
1157    implicit none
1158    INTEGER, INTENT(INOUT) :: comm_keyval
1159    INTEGER, INTENT(OUT) :: ierror
1160 end subroutine pompi_comm_free_keyval_f
1161 
1162 subroutine pompi_comm_get_name_f(comm,comm_name,resultlen,ierror,comm_name_len) &
1163    BIND(C, name="pompi_comm_get_name_f")
1164    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1165    implicit none
1166    INTEGER, INTENT(IN) :: comm
1167    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: comm_name
1168    INTEGER, INTENT(OUT) :: resultlen
1169    INTEGER, INTENT(OUT) :: ierror
1170    INTEGER, VALUE, INTENT(IN) :: comm_name_len
1171 end subroutine pompi_comm_get_name_f
1172 
1173 subroutine pompi_comm_group_f(comm,group,ierror) &
1174    BIND(C, name="pompi_comm_group_f")
1175    implicit none
1176    INTEGER, INTENT(IN) :: comm
1177    INTEGER, INTENT(OUT) :: group
1178    INTEGER, INTENT(OUT) :: ierror
1179 end subroutine pompi_comm_group_f
1180 
1181 subroutine pompi_comm_rank_f(comm,rank,ierror) &
1182    BIND(C, name="pompi_comm_rank_f")
1183    implicit none
1184    INTEGER, INTENT(IN) :: comm
1185    INTEGER, INTENT(OUT) :: rank
1186    INTEGER, INTENT(OUT) :: ierror
1187 end subroutine pompi_comm_rank_f
1188 
1189 subroutine pompi_comm_remote_group_f(comm,group,ierror) &
1190    BIND(C, name="pompi_comm_remote_group_f")
1191    implicit none
1192    INTEGER, INTENT(IN) :: comm
1193    INTEGER, INTENT(OUT) :: group
1194    INTEGER, INTENT(OUT) :: ierror
1195 end subroutine pompi_comm_remote_group_f
1196 
1197 subroutine pompi_comm_remote_size_f(comm,size,ierror) &
1198    BIND(C, name="pompi_comm_remote_size_f")
1199    implicit none
1200    INTEGER, INTENT(IN) :: comm
1201    INTEGER, INTENT(OUT) :: size
1202    INTEGER, INTENT(OUT) :: ierror
1203 end subroutine pompi_comm_remote_size_f
1204 
1205 subroutine pompi_comm_set_attr_f(comm,comm_keyval,attribute_val,ierror) &
1206    BIND(C, name="pompi_comm_set_attr_f")
1207    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1208    implicit none
1209    INTEGER, INTENT(IN) :: comm
1210    INTEGER, INTENT(IN) :: comm_keyval
1211    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1212    INTEGER, INTENT(OUT) :: ierror
1213 end subroutine pompi_comm_set_attr_f
1214 
1215 subroutine pompi_comm_set_name_f(comm,comm_name,ierror,comm_name_len) &
1216    BIND(C, name="pompi_comm_set_name_f")
1217    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1218    implicit none
1219    INTEGER, INTENT(IN) :: comm
1220    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: comm_name
1221    INTEGER, INTENT(OUT) :: ierror
1222    INTEGER, VALUE, INTENT(IN) :: comm_name_len
1223 end subroutine pompi_comm_set_name_f
1224 
1225 subroutine pompi_comm_size_f(comm,size,ierror) &
1226    BIND(C, name="pompi_comm_size_f")
1227    implicit none
1228    INTEGER, INTENT(IN) :: comm
1229    INTEGER, INTENT(OUT) :: size
1230    INTEGER, INTENT(OUT) :: ierror
1231 end subroutine pompi_comm_size_f
1232 
1233 subroutine pompi_comm_split_f(comm,color,key,newcomm,ierror) &
1234    BIND(C, name="pompi_comm_split_f")
1235    implicit none
1236    INTEGER, INTENT(IN) :: comm
1237    INTEGER, INTENT(IN) :: color, key
1238    INTEGER, INTENT(OUT) :: newcomm
1239    INTEGER, INTENT(OUT) :: ierror
1240 end subroutine pompi_comm_split_f
1241 
1242 subroutine pompi_group_compare_f(group1,group2,result,ierror) &
1243    BIND(C, name="pompi_group_compare_f")
1244    implicit none
1245    INTEGER, INTENT(IN) :: group1
1246    INTEGER, INTENT(IN) :: group2
1247    INTEGER, INTENT(OUT) :: result
1248    INTEGER, INTENT(OUT) :: ierror
1249 end subroutine pompi_group_compare_f
1250 
1251 subroutine pompi_group_difference_f(group1,group2,newgroup,ierror) &
1252    BIND(C, name="pompi_group_difference_f")
1253    implicit none
1254    INTEGER, INTENT(IN) :: group1
1255    INTEGER, INTENT(IN) :: group2
1256    INTEGER, INTENT(OUT) :: newgroup
1257    INTEGER, INTENT(OUT) :: ierror
1258 end subroutine pompi_group_difference_f
1259 
1260 subroutine pompi_group_excl_f(group,n,ranks,newgroup,ierror) &
1261    BIND(C, name="pompi_group_excl_f")
1262    implicit none
1263    INTEGER, INTENT(IN) :: group
1264    INTEGER, INTENT(IN) :: n
1265    INTEGER, INTENT(IN) :: ranks(*)
1266    INTEGER, INTENT(OUT) :: newgroup
1267    INTEGER, INTENT(OUT) :: ierror
1268 end subroutine pompi_group_excl_f
1269 
1270 subroutine pompi_group_free_f(group,ierror) &
1271    BIND(C, name="pompi_group_free_f")
1272    implicit none
1273    INTEGER, INTENT(INOUT) :: group
1274    INTEGER, INTENT(OUT) :: ierror
1275 end subroutine pompi_group_free_f
1276 
1277 subroutine pompi_group_incl_f(group,n,ranks,newgroup,ierror) &
1278    BIND(C, name="pompi_group_incl_f")
1279    implicit none
1280    INTEGER, INTENT(IN) :: n
1281    INTEGER, INTENT(IN) :: ranks(*)
1282    INTEGER, INTENT(IN) :: group
1283    INTEGER, INTENT(OUT) :: newgroup
1284    INTEGER, INTENT(OUT) :: ierror
1285 end subroutine pompi_group_incl_f
1286 
1287 subroutine pompi_group_intersection_f(group1,group2,newgroup,ierror) &
1288    BIND(C, name="pompi_group_intersection_f")
1289    implicit none
1290    INTEGER, INTENT(IN) :: group1
1291    INTEGER, INTENT(IN) :: group2
1292    INTEGER, INTENT(OUT) :: newgroup
1293    INTEGER, INTENT(OUT) :: ierror
1294 end subroutine pompi_group_intersection_f
1295 
1296 subroutine pompi_group_range_excl_f(group,n,ranges,newgroup,ierror) &
1297    BIND(C, name="pompi_group_range_excl_f")
1298    implicit none
1299    INTEGER, INTENT(IN) :: group
1300    INTEGER, INTENT(IN) :: n
1301    INTEGER, INTENT(IN) :: ranges(*)
1302    INTEGER, INTENT(OUT) :: newgroup
1303    INTEGER, INTENT(OUT) :: ierror
1304 end subroutine pompi_group_range_excl_f
1305 
1306 subroutine pompi_group_range_incl_f(group,n,ranges,newgroup,ierror) &
1307    BIND(C, name="pompi_group_range_incl_f")
1308    implicit none
1309    INTEGER, INTENT(IN) :: group
1310    INTEGER, INTENT(IN) :: n
1311    INTEGER, INTENT(IN) :: ranges(*)
1312    INTEGER, INTENT(OUT) :: newgroup
1313    INTEGER, INTENT(OUT) :: ierror
1314 end subroutine pompi_group_range_incl_f
1315 
1316 subroutine pompi_group_rank_f(group,rank,ierror) &
1317    BIND(C, name="pompi_group_rank_f")
1318    implicit none
1319    INTEGER, INTENT(IN) :: group
1320    INTEGER, INTENT(OUT) :: rank
1321    INTEGER, INTENT(OUT) :: ierror
1322 end subroutine pompi_group_rank_f
1323 
1324 subroutine pompi_group_size_f(group,size,ierror) &
1325    BIND(C, name="pompi_group_size_f")
1326    implicit none
1327    INTEGER, INTENT(IN) :: group
1328    INTEGER, INTENT(OUT) :: size
1329    INTEGER, INTENT(OUT) :: ierror
1330 end subroutine pompi_group_size_f
1331 
1332 subroutine pompi_group_translate_ranks_f(group1,n,ranks1,group2,ranks2,ierror) &
1333    BIND(C, name="pompi_group_translate_ranks_f")
1334    implicit none
1335    INTEGER, INTENT(IN) :: group1, group2
1336    INTEGER, INTENT(IN) :: n
1337    INTEGER, INTENT(IN) :: ranks1(*)
1338    INTEGER, INTENT(OUT) :: ranks2(*)
1339    INTEGER, INTENT(OUT) :: ierror
1340 end subroutine pompi_group_translate_ranks_f
1341 
1342 subroutine pompi_group_union_f(group1,group2,newgroup,ierror) &
1343    BIND(C, name="pompi_group_union_f")
1344    implicit none
1345    INTEGER, INTENT(IN) :: group1, group2
1346    INTEGER, INTENT(OUT) :: newgroup
1347    INTEGER, INTENT(OUT) :: ierror
1348 end subroutine pompi_group_union_f
1349 
1350 subroutine pompi_intercomm_create_f(local_comm,local_leader,peer_comm, &
1351                                    remote_leader,tag,newintercomm,ierror) &
1352    BIND(C, name="pompi_intercomm_create_f")
1353    implicit none
1354    INTEGER, INTENT(IN) :: local_comm, peer_comm
1355    INTEGER, INTENT(IN) :: local_leader, remote_leader, tag
1356    INTEGER, INTENT(OUT) :: newintercomm
1357    INTEGER, INTENT(OUT) :: ierror
1358 end subroutine pompi_intercomm_create_f
1359 
1360 subroutine pompi_type_create_keyval_f(type_copy_attr_fn,type_delete_attr_fn, &
1361                                      type_keyval,extra_state,ierror) &
1362    BIND(C, name="pompi_type_create_keyval_f")
1363    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1364    use, intrinsic :: iso_c_binding, only: c_funptr
1365    implicit none
1366    type(c_funptr), value :: type_copy_attr_fn
1367    type(c_funptr), value :: type_delete_attr_fn
1368    INTEGER, INTENT(OUT) :: type_keyval
1369    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1370    INTEGER, INTENT(OUT) :: ierror
1371 end subroutine pompi_type_create_keyval_f
1372 
1373 subroutine pompi_type_delete_attr_f(datatype,type_keyval,ierror) &
1374    BIND(C, name="pompi_type_delete_attr_f")
1375    implicit none
1376    INTEGER, INTENT(IN) :: datatype
1377    INTEGER, INTENT(IN) :: type_keyval
1378    INTEGER, INTENT(OUT) :: ierror
1379 end subroutine pompi_type_delete_attr_f
1380 
1381 subroutine pompi_type_free_keyval_f(type_keyval,ierror) &
1382    BIND(C, name="pompi_type_free_keyval_f")
1383    implicit none
1384    INTEGER, INTENT(INOUT) :: type_keyval
1385    INTEGER, INTENT(OUT) :: ierror
1386 end subroutine pompi_type_free_keyval_f
1387 
1388 subroutine pompi_type_get_name_f(datatype,type_name,resultlen,ierror,type_name_len) &
1389    BIND(C, name="pompi_type_get_name_f")
1390    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1391    implicit none
1392    INTEGER, INTENT(IN) :: datatype
1393    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: type_name
1394    INTEGER, INTENT(OUT) :: resultlen
1395    INTEGER, INTENT(OUT) :: ierror
1396    INTEGER, VALUE, INTENT(IN) :: type_name_len
1397 end subroutine pompi_type_get_name_f
1398 
1399 subroutine pompi_type_set_attr_f(datatype,type_keyval,attribute_val,ierror) &
1400    BIND(C, name="pompi_type_set_attr_f")
1401    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1402    implicit none
1403    INTEGER, INTENT(IN) :: datatype
1404    INTEGER, INTENT(IN) :: type_keyval
1405    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1406    INTEGER, INTENT(OUT) :: ierror
1407 end subroutine pompi_type_set_attr_f
1408 
1409 subroutine pompi_type_set_name_f(datatype,type_name,ierror,type_name_len) &
1410    BIND(C, name="pompi_type_set_name_f")
1411    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1412    implicit none
1413    INTEGER, INTENT(IN) :: datatype
1414    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: type_name
1415    INTEGER, INTENT(OUT) :: ierror
1416    INTEGER, VALUE, INTENT(IN) :: type_name_len
1417 end subroutine pompi_type_set_name_f
1418 
1419 subroutine pompi_win_allocate_f(size, disp_unit, info, comm, &
1420       baseptr, win, ierror) BIND(C, name="pompi_win_allocate_f")
1421   USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
1422   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1423   INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) ::  size
1424   INTEGER, INTENT(IN) ::  disp_unit
1425   INTEGER, INTENT(IN) ::  info
1426   INTEGER, INTENT(IN) ::  comm
1427   TYPE(C_PTR), INTENT(OUT) ::  baseptr
1428   INTEGER, INTENT(OUT) ::  win
1429   INTEGER, INTENT(OUT) ::  ierror
1430 end subroutine pompi_win_allocate_f
1431 
1432 subroutine pompi_win_allocate_shared_f(size, disp_unit, info, comm, &
1433       baseptr, win, ierror) BIND(C, name="pompi_win_allocate_shared_f")
1434   USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
1435   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1436   INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) ::  size
1437   INTEGER, INTENT(IN) ::  disp_unit
1438   INTEGER, INTENT(IN) ::  info
1439   INTEGER, INTENT(IN) ::  comm
1440   TYPE(C_PTR), INTENT(OUT) ::  baseptr
1441   INTEGER, INTENT(OUT) ::  win
1442   INTEGER, INTENT(OUT) ::  ierror
1443 end subroutine pompi_win_allocate_shared_f
1444 
1445 subroutine pompi_win_create_keyval_f(win_copy_attr_fn,win_delete_attr_fn, &
1446                                     win_keyval,extra_state,ierror) &
1447    BIND(C, name="pompi_win_create_keyval_f")
1448    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1449    use, intrinsic :: iso_c_binding, only: c_funptr
1450    implicit none
1451    type(c_funptr), value :: win_copy_attr_fn
1452    type(c_funptr), value :: win_delete_attr_fn
1453    INTEGER, INTENT(OUT) :: win_keyval
1454    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
1455    INTEGER, INTENT(OUT) :: ierror
1456 end subroutine pompi_win_create_keyval_f
1457 
1458 subroutine pompi_win_delete_attr_f(win,win_keyval,ierror) &
1459    BIND(C, name="pompi_win_delete_attr_f")
1460    implicit none
1461    INTEGER, INTENT(IN) :: win
1462    INTEGER, INTENT(IN) :: win_keyval
1463    INTEGER, INTENT(OUT) :: ierror
1464 end subroutine pompi_win_delete_attr_f
1465 
1466 subroutine pompi_win_free_keyval_f(win_keyval,ierror) &
1467    BIND(C, name="pompi_win_free_keyval_f")
1468    implicit none
1469    INTEGER, INTENT(INOUT) :: win_keyval
1470    INTEGER, INTENT(OUT) :: ierror
1471 end subroutine pompi_win_free_keyval_f
1472 
1473 subroutine pompi_win_get_name_f(win,win_name,resultlen,ierror,win_name_len) &
1474    BIND(C, name="pompi_win_get_name_f")
1475    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1476    implicit none
1477    INTEGER, INTENT(IN) :: win
1478    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: win_name
1479    INTEGER, INTENT(OUT) :: resultlen
1480    INTEGER, INTENT(OUT) :: ierror
1481    INTEGER, VALUE, INTENT(IN) :: win_name_len
1482 end subroutine pompi_win_get_name_f
1483 
1484 subroutine pompi_win_set_attr_f(win,win_keyval,attribute_val,ierror) &
1485    BIND(C, name="pompi_win_set_attr_f")
1486    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1487    implicit none
1488    INTEGER, INTENT(IN) :: win
1489    INTEGER, INTENT(IN) :: win_keyval
1490    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: attribute_val
1491    INTEGER, INTENT(OUT) :: ierror
1492 end subroutine pompi_win_set_attr_f
1493 
1494 subroutine pompi_win_set_name_f(win,win_name,ierror,win_name_len) &
1495    BIND(C, name="pompi_win_set_name_f")
1496    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1497    implicit none
1498    INTEGER, INTENT(IN) :: win
1499    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: win_name
1500    INTEGER, INTENT(OUT) :: ierror
1501    INTEGER, VALUE, INTENT(IN) :: win_name_len
1502 end subroutine pompi_win_set_name_f
1503 
1504 subroutine pompi_cartdim_get_f(comm,ndims,ierror) &
1505    BIND(C, name="pompi_cartdim_get_f")
1506    implicit none
1507    INTEGER, INTENT(IN) :: comm
1508    INTEGER, INTENT(OUT) :: ndims
1509    INTEGER, INTENT(OUT) :: ierror
1510 end subroutine pompi_cartdim_get_f
1511 
1512 subroutine pompi_cart_coords_f(comm,rank,maxdims,coords,ierror) &
1513    BIND(C, name="pompi_cart_coords_f")
1514    implicit none
1515    INTEGER, INTENT(IN) :: comm
1516    INTEGER, INTENT(IN) :: rank, maxdims
1517    INTEGER, INTENT(OUT) :: coords(maxdims)
1518    INTEGER, INTENT(OUT) :: ierror
1519 end subroutine pompi_cart_coords_f
1520 
1521 subroutine pompi_cart_rank_f(comm,coords,rank,ierror) &
1522    BIND(C, name="pompi_cart_rank_f")
1523    implicit none
1524    INTEGER, INTENT(IN) :: comm
1525    INTEGER, INTENT(IN) :: coords(*)
1526    INTEGER, INTENT(OUT) :: rank
1527    INTEGER, INTENT(OUT) :: ierror
1528 end subroutine pompi_cart_rank_f
1529 
1530 subroutine pompi_cart_shift_f(comm,direction,disp,rank_source,rank_dest,ierror) &
1531    BIND(C, name="pompi_cart_shift_f")
1532    implicit none
1533    INTEGER, INTENT(IN) :: comm
1534    INTEGER, INTENT(IN) :: direction, disp
1535    INTEGER, INTENT(OUT) :: rank_source, rank_dest
1536    INTEGER, INTENT(OUT) :: ierror
1537 end subroutine pompi_cart_shift_f
1538 
1539 subroutine pompi_dims_create_f(nnodes,ndims,dims,ierror) &
1540    BIND(C, name="pompi_dims_create_f")
1541    implicit none
1542    INTEGER, INTENT(IN) :: nnodes, ndims
1543    INTEGER, INTENT(INOUT) :: dims(*)
1544    INTEGER, INTENT(OUT) :: ierror
1545 end subroutine pompi_dims_create_f
1546 
1547 subroutine pompi_dist_graph_neighbors_f(comm,maxindegree,sources,sourceweights, &
1548                                        maxoutdegree,destinations,destweights,ierror) &
1549    BIND(C, name="pompi_dist_graph_neighbors_f")
1550    implicit none
1551    INTEGER, INTENT(IN) :: comm
1552    INTEGER, INTENT(IN) :: maxindegree, maxoutdegree
1553    INTEGER, INTENT(OUT) :: sources(maxindegree), destinations(maxoutdegree)
1554    INTEGER, INTENT(OUT) :: sourceweights(maxindegree), destweights(maxoutdegree)
1555    INTEGER, INTENT(OUT) :: ierror
1556 end subroutine pompi_dist_graph_neighbors_f
1557 
1558 subroutine pompi_graphdims_get_f(comm,nnodes,nedges,ierror) &
1559    BIND(C, name="pompi_graphdims_get_f")
1560    implicit none
1561    INTEGER, INTENT(IN) :: comm
1562    INTEGER, INTENT(OUT) :: nnodes, nedges
1563    INTEGER, INTENT(OUT) :: ierror
1564 end subroutine pompi_graphdims_get_f
1565 
1566 subroutine pompi_graph_get_f(comm,maxindex,maxedges,index,edges,ierror) &
1567    BIND(C, name="pompi_graph_get_f")
1568    implicit none
1569    INTEGER, INTENT(IN) :: comm
1570    INTEGER, INTENT(IN) :: maxindex, maxedges
1571    INTEGER, INTENT(OUT) :: index(*), edges(*)
1572    INTEGER, INTENT(OUT) :: ierror
1573 end subroutine pompi_graph_get_f
1574 
1575 subroutine pompi_graph_map_f(comm,nnodes,index,edges,newrank,ierror) &
1576    BIND(C, name="pompi_graph_map_f")
1577    implicit none
1578    INTEGER, INTENT(IN) :: comm
1579    INTEGER, INTENT(IN) :: nnodes
1580    INTEGER, INTENT(IN) :: index(*), edges(*)
1581    INTEGER, INTENT(OUT) :: newrank
1582    INTEGER, INTENT(OUT) :: ierror
1583 end subroutine pompi_graph_map_f
1584 
1585 subroutine pompi_graph_neighbors_f(comm,rank,maxneighbors,neighbors,ierror) &
1586    BIND(C, name="pompi_graph_neighbors_f")
1587    implicit none
1588    INTEGER, INTENT(IN) :: comm
1589    INTEGER, INTENT(IN) :: rank, maxneighbors
1590    INTEGER, INTENT(OUT) :: neighbors(*)
1591    INTEGER, INTENT(OUT) :: ierror
1592 end subroutine pompi_graph_neighbors_f
1593 
1594 subroutine pompi_graph_neighbors_count_f(comm,rank,nneighbors,ierror) &
1595    BIND(C, name="pompi_graph_neighbors_count_f")
1596    implicit none
1597    INTEGER, INTENT(IN) :: comm
1598    INTEGER, INTENT(IN) :: rank
1599    INTEGER, INTENT(OUT) :: nneighbors
1600    INTEGER, INTENT(OUT) :: ierror
1601 end subroutine pompi_graph_neighbors_count_f
1602 
1603 subroutine pompi_topo_test_f(comm,status,ierror) &
1604    BIND(C, name="pompi_topo_test_f")
1605    use :: mpi_f08_types, only : MPI_Status
1606    implicit none
1607    INTEGER, INTENT(IN) :: comm
1608    INTEGER, INTENT(OUT) :: status
1609    INTEGER, INTENT(OUT) :: ierror
1610 end subroutine pompi_topo_test_f
1611 
1612 !
1613 ! These functions are declared in mpi-f08-interface.h as BIND(C)
1614 !
1615 !function  MPI_Wtick_f() &
1616 !   BIND(C, name="pompi_wtick_f")
1617 !   implicit none
1618 !   DOUBLE PRECISION :: MPI_Wtick_f
1619 !end function  MPI_Wtick_f
1620 !
1621 !function  MPI_Wtime_f() &
1622 !   BIND(C, name="pompi_wtime_f")
1623 !   implicit none
1624 !   DOUBLE PRECISION :: MPI_Wtime_f
1625 !end function  MPI_Wtime_f
1626 
1627 function pompi_aint_add_f(base,diff) &
1628    BIND(C, name="pompi_aint_add_f")
1629    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1630    implicit none
1631    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: base
1632    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: diff
1633    INTEGER(MPI_ADDRESS_KIND) :: pompi_aint_add_f
1634 end function pompi_aint_add_f
1635 
1636 function pompi_aint_diff_f(addr1,addr2) &
1637    BIND(C, name="pompi_aint_diff_f")
1638    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1639    implicit none
1640    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: addr1
1641    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: addr2
1642    INTEGER(MPI_ADDRESS_KIND) :: pompi_aint_diff_f
1643 end function pompi_aint_diff_f
1644 
1645 subroutine pompi_abort_f(comm,errorcode,ierror) &
1646    BIND(C, name="pompi_abort_f")
1647    implicit none
1648    INTEGER, INTENT(IN) :: comm
1649    INTEGER, INTENT(IN) :: errorcode
1650    INTEGER, INTENT(OUT) :: ierror
1651 end subroutine pompi_abort_f
1652 
1653 subroutine pompi_add_error_class_f(errorclass,ierror) &
1654    BIND(C, name="pompi_add_error_class_f")
1655    implicit none
1656    INTEGER, INTENT(OUT) :: errorclass
1657    INTEGER, INTENT(OUT) :: ierror
1658 end subroutine pompi_add_error_class_f
1659 
1660 subroutine pompi_add_error_code_f(errorclass,errorcode,ierror) &
1661    BIND(C, name="pompi_add_error_code_f")
1662    implicit none
1663    INTEGER, INTENT(IN) :: errorclass
1664    INTEGER, INTENT(OUT) :: errorcode
1665    INTEGER, INTENT(OUT) :: ierror
1666 end subroutine pompi_add_error_code_f
1667 
1668 subroutine pompi_add_error_string_f(errorcode,string,ierror,str_len) &
1669    BIND(C, name="pompi_add_error_string_f")
1670    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1671    implicit none
1672    INTEGER, INTENT(IN) :: errorcode
1673    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: string
1674    INTEGER, INTENT(OUT) :: ierror
1675    INTEGER, VALUE, INTENT(IN) :: str_len
1676 end subroutine pompi_add_error_string_f
1677 
1678 subroutine pompi_alloc_mem_f(size,info,baseptr,ierror) &
1679    BIND(C, name="pompi_alloc_mem_f")
1680    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
1681    use, intrinsic :: ISO_C_BINDING, only : C_PTR
1682    implicit none
1683    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
1684    INTEGER, INTENT(IN) :: info
1685    TYPE(C_PTR), INTENT(OUT) :: baseptr
1686    INTEGER, INTENT(OUT) :: ierror
1687 end subroutine pompi_alloc_mem_f
1688 
1689 subroutine pompi_comm_call_errhandler_f(comm,errorcode,ierror) &
1690    BIND(C, name="pompi_comm_call_errhandler_f")
1691    implicit none
1692    INTEGER, INTENT(IN) :: comm
1693    INTEGER, INTENT(IN) :: errorcode
1694    INTEGER, INTENT(OUT) :: ierror
1695 end subroutine pompi_comm_call_errhandler_f
1696 
1697 subroutine pompi_comm_create_errhandler_f(comm_errhandler_fn,errhandler,ierror) &
1698    BIND(C, name="pompi_comm_create_errhandler_f")
1699    use, intrinsic :: iso_c_binding, only: c_funptr
1700    implicit none
1701    type(c_funptr), value :: comm_errhandler_fn
1702    INTEGER, INTENT(OUT) :: errhandler
1703    INTEGER, INTENT(OUT) :: ierror
1704 end subroutine pompi_comm_create_errhandler_f
1705 
1706 subroutine pompi_comm_get_errhandler_f(comm,errhandler,ierror) &
1707    BIND(C, name="pompi_comm_get_errhandler_f")
1708    implicit none
1709    INTEGER, INTENT(IN) :: comm
1710    INTEGER, INTENT(OUT) :: errhandler
1711    INTEGER, INTENT(OUT) :: ierror
1712 end subroutine pompi_comm_get_errhandler_f
1713 
1714 subroutine pompi_comm_set_errhandler_f(comm,errhandler,ierror) &
1715    BIND(C, name="pompi_comm_set_errhandler_f")
1716    implicit none
1717    INTEGER, INTENT(IN) :: comm
1718    INTEGER, INTENT(IN) :: errhandler
1719    INTEGER, INTENT(OUT) :: ierror
1720 end subroutine pompi_comm_set_errhandler_f
1721 
1722 subroutine pompi_errhandler_free_f(errhandler,ierror) &
1723    BIND(C, name="pompi_errhandler_free_f")
1724    implicit none
1725    INTEGER, INTENT(INOUT) :: errhandler
1726    INTEGER, INTENT(OUT) :: ierror
1727 end subroutine pompi_errhandler_free_f
1728 
1729 subroutine pompi_error_class_f(errorcode,errorclass,ierror) &
1730    BIND(C, name="pompi_error_class_f")
1731    implicit none
1732    INTEGER, INTENT(IN) :: errorcode
1733    INTEGER, INTENT(OUT) :: errorclass
1734    INTEGER, INTENT(OUT) :: ierror
1735 end subroutine pompi_error_class_f
1736 
1737 subroutine pompi_error_string_f(errorcode,string,resultlen,ierror,str_len) &
1738    BIND(C, name="pompi_error_string_f")
1739    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1740    implicit none
1741    INTEGER, INTENT(IN) :: errorcode
1742    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: string
1743    INTEGER, INTENT(OUT) :: resultlen
1744    INTEGER, INTENT(OUT) :: ierror
1745    INTEGER, VALUE, INTENT(IN) :: str_len
1746 end subroutine pompi_error_string_f
1747 
1748 subroutine pompi_file_call_errhandler_f(fh,errorcode,ierror) &
1749    BIND(C, name="pompi_file_call_errhandler_f")
1750    implicit none
1751    INTEGER, INTENT(IN) :: fh
1752    INTEGER, INTENT(IN) :: errorcode
1753    INTEGER, INTENT(OUT) :: ierror
1754 end subroutine pompi_file_call_errhandler_f
1755 
1756 subroutine pompi_file_create_errhandler_f(file_errhandler_fn,errhandler,ierror) &
1757    BIND(C, name="pompi_file_create_errhandler_f")
1758    use, intrinsic :: iso_c_binding, only: c_funptr
1759    implicit none
1760    type(c_funptr), value :: file_errhandler_fn
1761    INTEGER, INTENT(OUT) :: errhandler
1762    INTEGER, INTENT(OUT) :: ierror
1763 end subroutine pompi_file_create_errhandler_f
1764 
1765 subroutine pompi_file_get_errhandler_f(file,errhandler,ierror) &
1766    BIND(C, name="pompi_file_get_errhandler_f")
1767    implicit none
1768    INTEGER, INTENT(IN) :: file
1769    INTEGER, INTENT(OUT) :: errhandler
1770    INTEGER, INTENT(OUT) :: ierror
1771 end subroutine pompi_file_get_errhandler_f
1772 
1773 subroutine pompi_file_set_errhandler_f(file,errhandler,ierror) &
1774    BIND(C, name="pompi_file_set_errhandler_f")
1775    implicit none
1776    INTEGER, INTENT(IN) :: file
1777    INTEGER, INTENT(IN) :: errhandler
1778    INTEGER, INTENT(OUT) :: ierror
1779 end subroutine pompi_file_set_errhandler_f
1780 
1781 subroutine pompi_finalize_f(ierror) &
1782    BIND(C, name="pompi_finalize_f")
1783    implicit none
1784    INTEGER, INTENT(OUT) :: ierror
1785 end subroutine pompi_finalize_f
1786 
1787 subroutine pompi_free_mem_f(base,ierror) &
1788    BIND(C, name="pompi_free_mem_f")
1789    implicit none
1790    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
1791    INTEGER, INTENT(OUT) :: ierror
1792 end subroutine pompi_free_mem_f
1793 
1794 subroutine pompi_get_processor_name_f(name,resultlen,ierror,name_len) &
1795    BIND(C, name="pompi_get_processor_name_f")
1796    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1797    implicit none
1798    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: name
1799    INTEGER, INTENT(OUT) :: resultlen
1800    INTEGER, INTENT(OUT) :: ierror
1801    INTEGER, VALUE, INTENT(IN) :: name_len
1802 end subroutine pompi_get_processor_name_f
1803 
1804 subroutine pompi_get_version_f(version,subversion,ierror) &
1805    BIND(C, name="pompi_get_version_f")
1806    implicit none
1807    INTEGER, INTENT(OUT) :: version, subversion
1808    INTEGER, INTENT(OUT) :: ierror
1809 end subroutine pompi_get_version_f
1810 
1811 subroutine pompi_init_f(ierror) &
1812    BIND(C, name="pompi_init_f")
1813    implicit none
1814    INTEGER, INTENT(OUT) :: ierror
1815 end subroutine pompi_init_f
1816 
1817 subroutine pompi_win_call_errhandler_f(win,errorcode,ierror) &
1818    BIND(C, name="pompi_win_call_errhandler_f")
1819    implicit none
1820    INTEGER, INTENT(IN) :: win
1821    INTEGER, INTENT(IN) :: errorcode
1822    INTEGER, INTENT(OUT) :: ierror
1823 end subroutine pompi_win_call_errhandler_f
1824 
1825 subroutine pompi_win_create_errhandler_f(win_errhandler_fn,errhandler,ierror) &
1826    BIND(C, name="pompi_win_create_errhandler_f")
1827    use, intrinsic :: iso_c_binding, only: c_funptr
1828    implicit none
1829    type(c_funptr), value :: win_errhandler_fn
1830    INTEGER, INTENT(OUT) :: errhandler
1831    INTEGER, INTENT(OUT) :: ierror
1832 end subroutine pompi_win_create_errhandler_f
1833 
1834 subroutine pompi_win_get_errhandler_f(win,errhandler,ierror) &
1835    BIND(C, name="pompi_win_get_errhandler_f")
1836    implicit none
1837    INTEGER, INTENT(IN) :: win
1838    INTEGER, INTENT(OUT) :: errhandler
1839    INTEGER, INTENT(OUT) :: ierror
1840 end subroutine pompi_win_get_errhandler_f
1841 
1842 subroutine pompi_win_set_errhandler_f(win,errhandler,ierror) &
1843    BIND(C, name="pompi_win_set_errhandler_f")
1844    implicit none
1845    INTEGER, INTENT(IN) :: win
1846    INTEGER, INTENT(IN) :: errhandler
1847    INTEGER, INTENT(OUT) :: ierror
1848 end subroutine pompi_win_set_errhandler_f
1849 
1850 subroutine pompi_info_create_f(info,ierror) &
1851    BIND(C, name="pompi_info_create_f")
1852    implicit none
1853    INTEGER, INTENT(OUT) :: info
1854    INTEGER, INTENT(OUT) :: ierror
1855 end subroutine pompi_info_create_f
1856 
1857 subroutine pompi_info_delete_f(info,key,ierror,key_len) &
1858    BIND(C, name="pompi_info_delete_f")
1859    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1860    implicit none
1861    INTEGER, INTENT(IN) :: info
1862    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: key
1863    INTEGER, INTENT(OUT) :: ierror
1864    INTEGER, VALUE, INTENT(IN) :: key_len
1865 end subroutine pompi_info_delete_f
1866 
1867 subroutine pompi_info_dup_f(info,newinfo,ierror) &
1868    BIND(C, name="pompi_info_dup_f")
1869    implicit none
1870    INTEGER, INTENT(IN) :: info
1871    INTEGER, INTENT(OUT) :: newinfo
1872    INTEGER, INTENT(OUT) :: ierror
1873 end subroutine pompi_info_dup_f
1874 
1875 subroutine pompi_info_free_f(info,ierror) &
1876    BIND(C, name="pompi_info_free_f")
1877    implicit none
1878    INTEGER, INTENT(INOUT) :: info
1879    INTEGER, INTENT(OUT) :: ierror
1880 end subroutine pompi_info_free_f
1881 
1882 subroutine pompi_info_get_nkeys_f(info,nkeys,ierror) &
1883    BIND(C, name="pompi_info_get_nkeys_f")
1884    implicit none
1885    INTEGER, INTENT(IN) :: info
1886    INTEGER, INTENT(OUT) :: nkeys
1887    INTEGER, INTENT(OUT) :: ierror
1888 end subroutine pompi_info_get_nkeys_f
1889 
1890 subroutine pompi_info_get_nthkey_f(info,n,key,ierror,key_len) &
1891    BIND(C, name="pompi_info_get_nthkey_f")
1892    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1893    implicit none
1894    INTEGER, INTENT(IN) :: info
1895    INTEGER, INTENT(IN) :: n
1896    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: key
1897    INTEGER, INTENT(OUT) :: ierror
1898    INTEGER, VALUE, INTENT(IN) :: key_len
1899 end subroutine pompi_info_get_nthkey_f
1900 
1901 subroutine pompi_info_set_f(info,key,value,ierror,key_len,value_len) &
1902    BIND(C, name="pompi_info_set_f")
1903    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1904    implicit none
1905    INTEGER, INTENT(IN) :: info
1906    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: key, value
1907    INTEGER, INTENT(OUT) :: ierror
1908    INTEGER, VALUE, INTENT(IN) :: key_len, value_len
1909 end subroutine pompi_info_set_f
1910 
1911 subroutine pompi_close_port_f(port_name,ierror,port_name_len) &
1912    BIND(C, name="pompi_close_port_f")
1913    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1914    implicit none
1915    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
1916    INTEGER, INTENT(OUT) :: ierror
1917    INTEGER, VALUE, INTENT(IN) :: port_name_len
1918 end subroutine pompi_close_port_f
1919 
1920 subroutine pompi_comm_accept_f(port_name,info,root,comm,newcomm,ierror,port_name_len) &
1921    BIND(C, name="pompi_comm_accept_f")
1922    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1923    implicit none
1924    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
1925    INTEGER, INTENT(IN) :: info
1926    INTEGER, INTENT(IN) :: root
1927    INTEGER, INTENT(IN) :: comm
1928    INTEGER, INTENT(OUT) :: newcomm
1929    INTEGER, INTENT(OUT) :: ierror
1930    INTEGER, VALUE, INTENT(IN) :: port_name_len
1931 end subroutine pompi_comm_accept_f
1932 
1933 subroutine pompi_comm_connect_f(port_name,info,root,comm,newcomm,ierror,port_name_len) &
1934    BIND(C, name="pompi_comm_connect_f")
1935    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1936    implicit none
1937    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: port_name
1938    INTEGER, INTENT(IN) :: info
1939    INTEGER, INTENT(IN) :: root
1940    INTEGER, INTENT(IN) :: comm
1941    INTEGER, INTENT(OUT) :: newcomm
1942    INTEGER, INTENT(OUT) :: ierror
1943    INTEGER, VALUE, INTENT(IN) :: port_name_len
1944 end subroutine pompi_comm_connect_f
1945 
1946 subroutine pompi_comm_disconnect_f(comm,ierror) &
1947    BIND(C, name="pompi_comm_disconnect_f")
1948    implicit none
1949    INTEGER, INTENT(INOUT) :: comm
1950    INTEGER, INTENT(OUT) :: ierror
1951 end subroutine pompi_comm_disconnect_f
1952 
1953 subroutine pompi_comm_get_parent_f(parent,ierror) &
1954    BIND(C, name="pompi_comm_get_parent_f")
1955    implicit none
1956    INTEGER, INTENT(OUT) :: parent
1957    INTEGER, INTENT(OUT) :: ierror
1958 end subroutine pompi_comm_get_parent_f
1959 
1960 subroutine pompi_comm_join_f(fd,intercomm,ierror) &
1961    BIND(C, name="pompi_comm_join_f")
1962    implicit none
1963    INTEGER, INTENT(IN) :: fd
1964    INTEGER, INTENT(OUT) :: intercomm
1965    INTEGER, INTENT(OUT) :: ierror
1966 end subroutine pompi_comm_join_f
1967 
1968 subroutine pompi_comm_spawn_f(command,argv,maxprocs,info,root,comm, &
1969                              intercomm, array_of_errcodes,ierror,cmd_len,argv_len) &
1970    BIND(C, name="pompi_comm_spawn_f")
1971    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1972    implicit none
1973    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: command, argv
1974    INTEGER, INTENT(IN) :: maxprocs, root
1975    INTEGER, INTENT(IN) :: info
1976    INTEGER, INTENT(IN) :: comm
1977    INTEGER, INTENT(OUT) :: intercomm
1978    INTEGER, INTENT(OUT) :: array_of_errcodes(*)
1979    INTEGER, INTENT(OUT) :: ierror
1980    INTEGER, VALUE, INTENT(IN) :: cmd_len, argv_len
1981 end subroutine pompi_comm_spawn_f
1982 
1983 
1984 ! TODO - FIXME to use arrays of strings and pass strlen
1985 subroutine pompi_comm_spawn_multiple_f(count,array_of_commands, &
1986                                       array_of_argv, array_of_maxprocs,array_of_info,root, &
1987                                       comm,intercomm,array_of_errcodes,ierror, &
1988                                       cmd_len, argv_len) &
1989    BIND(C, name="pompi_comm_spawn_multiple_f")
1990    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
1991    implicit none
1992    INTEGER, INTENT(IN) :: count, root
1993    INTEGER, INTENT(IN) :: array_of_maxprocs(count)
1994    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: array_of_commands(*), array_of_argv(*)
1995    INTEGER, INTENT(IN) :: array_of_info(count)
1996    INTEGER, INTENT(IN) :: comm
1997    INTEGER, INTENT(OUT) :: intercomm
1998    INTEGER, INTENT(OUT) :: array_of_errcodes(*)
1999    INTEGER, INTENT(OUT) :: ierror
2000    INTEGER, INTENT(IN) :: cmd_len, argv_len
2001 end subroutine pompi_comm_spawn_multiple_f
2002 
2003 subroutine pompi_lookup_name_f(service_name,info,port_name,ierror, &
2004                               service_name_len,port_name_len) &
2005    BIND(C, name="pompi_lookup_name_f")
2006    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2007    implicit none
2008    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name
2009    INTEGER, INTENT(IN) :: info
2010    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: port_name
2011    INTEGER, INTENT(OUT) :: ierror
2012    INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2013 end subroutine pompi_lookup_name_f
2014 
2015 subroutine pompi_open_port_f(info,port_name,ierror,port_name_len) &
2016    BIND(C, name="pompi_open_port_f")
2017    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2018    implicit none
2019    INTEGER, INTENT(IN) :: info
2020    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: port_name
2021    INTEGER, INTENT(OUT) :: ierror
2022    INTEGER, VALUE, INTENT(IN) :: port_name_len
2023 end subroutine pompi_open_port_f
2024 
2025 subroutine pompi_publish_name_f(service_name,info,port_name,ierror, &
2026                                service_name_len,port_name_len) &
2027    BIND(C, name="pompi_publish_name_f")
2028    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2029    implicit none
2030    INTEGER, INTENT(IN) :: info
2031    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name, port_name
2032    INTEGER, INTENT(OUT) :: ierror
2033    INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2034 end subroutine pompi_publish_name_f
2035 
2036 subroutine pompi_unpublish_name_f(service_name,info,port_name, &
2037                                  ierror,service_name_len,port_name_len) &
2038    BIND(C, name="pompi_unpublish_name_f")
2039    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2040    implicit none
2041    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: service_name, port_name
2042    INTEGER, INTENT(IN) :: info
2043    INTEGER, INTENT(OUT) :: ierror
2044    INTEGER, VALUE, INTENT(IN) :: service_name_len, port_name_len
2045 end subroutine pompi_unpublish_name_f
2046 
2047 subroutine pompi_accumulate_f(origin_addr,origin_count,origin_datatype, &
2048                              target_rank,target_disp, &
2049                              target_count,target_datatype,op,win,ierror) &
2050    BIND(C, name="pompi_accumulate_f")
2051    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2052    implicit none
2053    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2054    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2055    INTEGER, INTENT(IN) :: origin_datatype
2056    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2057    INTEGER, INTENT(IN) :: target_datatype
2058    INTEGER, INTENT(IN) :: op
2059    INTEGER, INTENT(IN) :: win
2060    INTEGER, INTENT(OUT) :: ierror
2061 end subroutine pompi_accumulate_f
2062 
2063 subroutine pompi_raccumulate_f(origin_addr,origin_count,origin_datatype, &
2064                                target_rank,target_disp, &
2065                                target_count,target_datatype,op,win, &
2066                                request,ierror) &
2067    BIND(C, name="pompi_raccumulate_f")
2068    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2069    implicit none
2070    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2071    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2072    INTEGER, INTENT(IN) :: origin_datatype
2073    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2074    INTEGER, INTENT(IN) :: target_datatype
2075    INTEGER, INTENT(IN) :: op
2076    INTEGER, INTENT(IN) :: win
2077    INTEGER, INTENT(OUT) :: request
2078    INTEGER, INTENT(OUT) :: ierror
2079 end subroutine pompi_raccumulate_f
2080 
2081 subroutine pompi_get_f(origin_addr,origin_count,origin_datatype,target_rank, &
2082                       target_disp,target_count,target_datatype,win,ierror) &
2083    BIND(C, name="pompi_get_f")
2084    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2085    implicit none
2086    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2087    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2088    INTEGER, INTENT(IN) :: origin_datatype
2089    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2090    INTEGER, INTENT(IN) :: target_datatype
2091    INTEGER, INTENT(IN) :: win
2092    INTEGER, INTENT(OUT) :: ierror
2093 end subroutine pompi_get_f
2094 
2095 subroutine pompi_rget_f(origin_addr,origin_count,origin_datatype,target_rank, &
2096                         target_disp,target_count,target_datatype,win,request, &
2097                         ierror) &
2098    BIND(C, name="pompi_rget_f")
2099    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2100    implicit none
2101    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2102    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2103    INTEGER, INTENT(IN) :: origin_datatype
2104    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2105    INTEGER, INTENT(IN) :: target_datatype
2106    INTEGER, INTENT(IN) :: win
2107    INTEGER, INTENT(OUT) :: request
2108    INTEGER, INTENT(OUT) :: ierror
2109 end subroutine pompi_rget_f
2110 
2111 subroutine pompi_get_accumulate_f(origin_addr,origin_count,origin_datatype, &
2112                                   result_addr,result_count,result_datatype, &
2113                                   target_rank,target_disp, &
2114                                   target_count,target_datatype,op,win, &
2115                                   ierror) &
2116    BIND(C, name="pompi_get_accumulate_f")
2117    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2118    implicit none
2119    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2120    INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
2121    INTEGER, INTENT(IN) :: origin_datatype
2122    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2123    INTEGER, INTENT(IN) :: result_datatype
2124    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2125    INTEGER, INTENT(IN) :: target_datatype
2126    INTEGER, INTENT(IN) :: op
2127    INTEGER, INTENT(IN) :: win
2128    INTEGER, INTENT(OUT) :: ierror
2129 end subroutine pompi_get_accumulate_f
2130 
2131 subroutine pompi_rget_accumulate_f(origin_addr,origin_count,origin_datatype, &
2132                                    result_addr,result_count,result_datatype, &
2133                                    target_rank,target_disp, &
2134                                    target_count,target_datatype,op,win, &
2135                                    request,ierror) &
2136    BIND(C, name="pompi_rget_accumulate_f")
2137    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2138    implicit none
2139    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2140    INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
2141    INTEGER, INTENT(IN) :: origin_datatype
2142    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2143    INTEGER, INTENT(IN) :: result_datatype
2144    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2145    INTEGER, INTENT(IN) :: target_datatype
2146    INTEGER, INTENT(IN) :: op
2147    INTEGER, INTENT(IN) :: win
2148    INTEGER, INTENT(OUT) :: request
2149    INTEGER, INTENT(OUT) :: ierror
2150 end subroutine pompi_rget_accumulate_f
2151 
2152 subroutine pompi_put_f(origin_addr,origin_count,origin_datatype,target_rank, &
2153                       target_disp,target_count,target_datatype,win,ierror) &
2154    BIND(C, name="pompi_put_f")
2155    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2156    implicit none
2157    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2158    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2159    INTEGER, INTENT(IN) :: origin_datatype
2160    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2161    INTEGER, INTENT(IN) :: target_datatype
2162    INTEGER, INTENT(IN) :: win
2163    INTEGER, INTENT(OUT) :: ierror
2164 end subroutine pompi_put_f
2165 
2166 subroutine pompi_rput_f(origin_addr,origin_count,origin_datatype,target_rank, &
2167                        target_disp,target_count,target_datatype,win,request, &
2168                        ierror) &
2169    BIND(C, name="pompi_rput_f")
2170    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2171    implicit none
2172    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2173    INTEGER, INTENT(IN) :: origin_count, target_rank, target_count
2174    INTEGER, INTENT(IN) :: origin_datatype
2175    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2176    INTEGER, INTENT(IN) :: target_datatype
2177    INTEGER, INTENT(IN) :: win
2178    INTEGER, INTENT(OUT) :: request
2179    INTEGER, INTENT(OUT) :: ierror
2180 end subroutine pompi_rput_f
2181 
2182 subroutine pompi_win_complete_f(win,ierror) &
2183    BIND(C, name="pompi_win_complete_f")
2184    implicit none
2185    INTEGER, INTENT(IN) :: win
2186    INTEGER, INTENT(OUT) :: ierror
2187 end subroutine pompi_win_complete_f
2188 
2189 subroutine pompi_compare_and_swap_f(origin_addr,compare_addr,result_addr, &
2190                                     datatype,target_rank,target_disp, win, &
2191                                     ierror) &
2192    BIND(C, name="pompi_compare_and_swap_f")
2193    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2194    implicit none
2195    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr, compare_addr
2196    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2197    INTEGER, INTENT(IN) :: datatype
2198    INTEGER, INTENT(IN) :: target_rank
2199    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2200    INTEGER, INTENT(IN) :: win
2201    INTEGER, INTENT(OUT) :: ierror
2202 end subroutine pompi_compare_and_swap_f
2203 
2204 subroutine pompi_fetch_and_op_f(origin_addr,result_addr,datatype,target_rank, &
2205                                 target_disp,op,win,ierror) &
2206    BIND(C, name="pompi_fetch_and_op_f")
2207    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2208    implicit none
2209    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: origin_addr
2210    OMPI_FORTRAN_IGNORE_TKR_TYPE :: result_addr
2211    INTEGER, INTENT(IN) :: datatype
2212    INTEGER, INTENT(IN) :: target_rank
2213    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: target_disp
2214    INTEGER, INTENT(IN) :: op
2215    INTEGER, INTENT(IN) :: win
2216    INTEGER, INTENT(OUT) :: ierror
2217 end subroutine pompi_fetch_and_op_f
2218 
2219 subroutine pompi_win_create_f(base,size,disp_unit,info,comm,win,ierror) &
2220    BIND(C, name="pompi_win_create_f")
2221    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2222    implicit none
2223    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base
2224    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size
2225    INTEGER, INTENT(IN) :: disp_unit
2226    INTEGER, INTENT(IN) :: info
2227    INTEGER, INTENT(IN) :: comm
2228    INTEGER, INTENT(OUT) :: win
2229    INTEGER, INTENT(OUT) :: ierror
2230 end subroutine pompi_win_create_f
2231 
2232 subroutine pompi_win_flush_f(rank,win,ierror) &
2233    BIND(C, name="pompi_win_flush_f")
2234    implicit none
2235    INTEGER, INTENT(IN) :: rank
2236    INTEGER, INTENT(IN) :: win
2237    INTEGER, INTENT(OUT) :: ierror
2238 end subroutine pompi_win_flush_f
2239 
2240 subroutine pompi_win_flush_all_f(win,ierror) &
2241    BIND(C, name="pompi_win_flush_all_f")
2242    implicit none
2243    INTEGER, INTENT(IN) :: win
2244    INTEGER, INTENT(OUT) :: ierror
2245 end subroutine pompi_win_flush_all_f
2246 
2247 subroutine pompi_win_flush_local_f(rank,win,ierror) &
2248    BIND(C, name="pompi_win_flush_local_f")
2249    implicit none
2250    INTEGER, INTENT(IN) :: rank
2251    INTEGER, INTENT(IN) :: win
2252    INTEGER, INTENT(OUT) :: ierror
2253 end subroutine pompi_win_flush_local_f
2254 
2255 subroutine pompi_win_flush_local_all_f(win,ierror) &
2256    BIND(C, name="pompi_win_flush_local_all_f")
2257    implicit none
2258    INTEGER, INTENT(IN) :: win
2259    INTEGER, INTENT(OUT) :: ierror
2260 end subroutine pompi_win_flush_local_all_f
2261 
2262 subroutine pompi_win_fence_f(assert,win,ierror) &
2263    BIND(C, name="pompi_win_fence_f")
2264    implicit none
2265    INTEGER, INTENT(IN) :: assert
2266    INTEGER, INTENT(IN) :: win
2267    INTEGER, INTENT(OUT) :: ierror
2268 end subroutine pompi_win_fence_f
2269 
2270 subroutine pompi_win_free_f(win,ierror) &
2271    BIND(C, name="pompi_win_free_f")
2272    implicit none
2273    INTEGER, INTENT(INOUT) :: win
2274    INTEGER, INTENT(OUT) :: ierror
2275 end subroutine pompi_win_free_f
2276 
2277 subroutine pompi_win_get_group_f(win,group,ierror) &
2278    BIND(C, name="pompi_win_get_group_f")
2279    implicit none
2280    INTEGER, INTENT(IN) :: win
2281    INTEGER, INTENT(OUT) :: group
2282    INTEGER, INTENT(OUT) :: ierror
2283 end subroutine pompi_win_get_group_f
2284 
2285 subroutine pompi_win_lock_f(lock_type,rank,assert,win,ierror) &
2286    BIND(C, name="pompi_win_lock_f")
2287    implicit none
2288    INTEGER, INTENT(IN) :: lock_type, rank, assert
2289    INTEGER, INTENT(IN) :: win
2290    INTEGER, INTENT(OUT) :: ierror
2291 end subroutine pompi_win_lock_f
2292 
2293 subroutine pompi_win_lock_all_f(assert,win,ierror) &
2294    BIND(C, name="pompi_win_lock_all_f")
2295    implicit none
2296    INTEGER, INTENT(IN) :: assert
2297    INTEGER, INTENT(IN) :: win
2298    INTEGER, INTENT(OUT) :: ierror
2299 end subroutine pompi_win_lock_all_f
2300 
2301 subroutine pompi_win_post_f(group,assert,win,ierror) &
2302    BIND(C, name="pompi_win_post_f")
2303    implicit none
2304    INTEGER, INTENT(IN) :: group
2305    INTEGER, INTENT(IN) :: assert
2306    INTEGER, INTENT(IN) :: win
2307    INTEGER, INTENT(OUT) :: ierror
2308 end subroutine pompi_win_post_f
2309 
2310 subroutine pompi_win_shared_query_f(win, rank, size, disp_unit, baseptr,&
2311       ierror) BIND(C, name="pompi_win_shared_query_f")
2312   USE, INTRINSIC ::  ISO_C_BINDING, ONLY : C_PTR
2313   use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2314   INTEGER, INTENT(IN) ::  win
2315   INTEGER, INTENT(IN) ::  rank
2316   INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) ::  size
2317   INTEGER, INTENT(OUT) ::  disp_unit
2318   TYPE(C_PTR), INTENT(OUT) ::  baseptr
2319   INTEGER, INTENT(OUT) ::  ierror
2320 end subroutine pompi_win_shared_query_f
2321 
2322 subroutine pompi_win_start_f(group,assert,win,ierror) &
2323    BIND(C, name="pompi_win_start_f")
2324    implicit none
2325    INTEGER, INTENT(IN) :: group
2326    INTEGER, INTENT(IN) :: assert
2327    INTEGER, INTENT(IN) :: win
2328    INTEGER, INTENT(OUT) :: ierror
2329 end subroutine pompi_win_start_f
2330 
2331 subroutine pompi_win_sync_f(win,ierror) &
2332    BIND(C, name="pompi_win_sync_f")
2333    implicit none
2334    INTEGER, INTENT(IN) :: win
2335    INTEGER, INTENT(OUT) :: ierror
2336 end subroutine pompi_win_sync_f
2337 
2338 subroutine pompi_win_unlock_f(rank,win,ierror) &
2339    BIND(C, name="pompi_win_unlock_f")
2340    implicit none
2341    INTEGER, INTENT(IN) :: rank
2342    INTEGER, INTENT(IN) :: win
2343    INTEGER, INTENT(OUT) :: ierror
2344 end subroutine pompi_win_unlock_f
2345 
2346 subroutine pompi_win_unlock_all_f(win,ierror) &
2347    BIND(C, name="pompi_win_unlock_all_f")
2348    implicit none
2349    INTEGER, INTENT(IN) :: win
2350    INTEGER, INTENT(OUT) :: ierror
2351 end subroutine pompi_win_unlock_all_f
2352 
2353 subroutine pompi_win_wait_f(win,ierror) &
2354    BIND(C, name="pompi_win_wait_f")
2355    implicit none
2356    INTEGER, INTENT(IN) :: win
2357    INTEGER, INTENT(OUT) :: ierror
2358 end subroutine pompi_win_wait_f
2359 
2360 subroutine pompi_grequest_complete_f(request,ierror) &
2361    BIND(C, name="pompi_grequest_complete_f")
2362    implicit none
2363    INTEGER, INTENT(IN) :: request
2364    INTEGER, INTENT(OUT) :: ierror
2365 end subroutine pompi_grequest_complete_f
2366 
2367 subroutine pompi_grequest_start_f(query_fn,free_fn,cancel_fn, &
2368                                  extra_state,request,ierror) &
2369    BIND(C, name="pompi_grequest_start_f")
2370    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2371    use, intrinsic :: iso_c_binding, only: c_funptr
2372    implicit none
2373    type(c_funptr), value :: query_fn
2374    type(c_funptr), value :: free_fn
2375    type(c_funptr), value :: cancel_fn
2376    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
2377    INTEGER, INTENT(OUT) :: request
2378    INTEGER, INTENT(OUT) :: ierror
2379 end subroutine pompi_grequest_start_f
2380 
2381 subroutine pompi_init_thread_f(required,provided,ierror) &
2382    BIND(C, name="pompi_init_thread_f")
2383    implicit none
2384    INTEGER, INTENT(IN) :: required
2385    INTEGER, INTENT(OUT) :: provided
2386    INTEGER, INTENT(OUT) :: ierror
2387 end subroutine pompi_init_thread_f
2388 
2389 subroutine pompi_query_thread_f(provided,ierror) &
2390    BIND(C, name="pompi_query_thread_f")
2391    implicit none
2392    INTEGER, INTENT(OUT) :: provided
2393    INTEGER, INTENT(OUT) :: ierror
2394 end subroutine pompi_query_thread_f
2395 
2396 subroutine pompi_status_set_elements_f(status,datatype,count,ierror) &
2397    BIND(C, name="pompi_status_set_elements_f")
2398    use :: mpi_f08_types, only : MPI_Status
2399    implicit none
2400    TYPE(MPI_Status), INTENT(INOUT) :: status
2401    INTEGER, INTENT(IN) :: datatype
2402    INTEGER, INTENT(IN) :: count
2403    INTEGER, INTENT(OUT) :: ierror
2404 end subroutine pompi_status_set_elements_f
2405 
2406 subroutine pompi_file_close_f(fh,ierror) &
2407    BIND(C, name="pompi_file_close_f")
2408    implicit none
2409    INTEGER, INTENT(INOUT) :: fh
2410    INTEGER, INTENT(OUT) :: ierror
2411 end subroutine pompi_file_close_f
2412 
2413 subroutine pompi_file_delete_f(filename,info,ierror,filename_len) &
2414    BIND(C, name="pompi_file_delete_f")
2415    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2416    implicit none
2417    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: filename
2418    INTEGER, INTENT(IN) :: info
2419    INTEGER, INTENT(OUT) :: ierror
2420    INTEGER, VALUE, INTENT(IN) :: filename_len
2421 end subroutine pompi_file_delete_f
2422 
2423 subroutine pompi_file_get_amode_f(fh,amode,ierror) &
2424    BIND(C, name="pompi_file_get_amode_f")
2425    implicit none
2426    INTEGER, INTENT(IN) :: fh
2427    INTEGER, INTENT(OUT) :: amode
2428    INTEGER, INTENT(OUT) :: ierror
2429 end subroutine pompi_file_get_amode_f
2430 
2431 subroutine pompi_file_get_byte_offset_f(fh,offset,disp,ierror) &
2432    BIND(C, name="pompi_file_get_byte_offset_f")
2433    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2434    implicit none
2435    INTEGER, INTENT(IN) :: fh
2436    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2437    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: disp
2438    INTEGER, INTENT(OUT) :: ierror
2439 end subroutine pompi_file_get_byte_offset_f
2440 
2441 subroutine pompi_file_get_group_f(fh,group,ierror) &
2442    BIND(C, name="pompi_file_get_group_f")
2443    implicit none
2444    INTEGER, INTENT(IN) :: fh
2445    INTEGER, INTENT(OUT) :: group
2446    INTEGER, INTENT(OUT) :: ierror
2447 end subroutine pompi_file_get_group_f
2448 
2449 subroutine pompi_file_get_info_f(fh,info_used,ierror) &
2450    BIND(C, name="pompi_file_get_info_f")
2451    implicit none
2452    INTEGER, INTENT(IN) :: fh
2453    INTEGER, INTENT(OUT) :: info_used
2454    INTEGER, INTENT(OUT) :: ierror
2455 end subroutine pompi_file_get_info_f
2456 
2457 subroutine pompi_file_get_position_f(fh,offset,ierror) &
2458    BIND(C, name="pompi_file_get_position_f")
2459    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2460    implicit none
2461    INTEGER, INTENT(IN) :: fh
2462    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: offset
2463    INTEGER, INTENT(OUT) :: ierror
2464 end subroutine pompi_file_get_position_f
2465 
2466 subroutine pompi_file_get_position_shared_f(fh,offset,ierror) &
2467    BIND(C, name="pompi_file_get_position_shared_f")
2468    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2469    implicit none
2470    INTEGER, INTENT(IN) :: fh
2471    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: offset
2472    INTEGER, INTENT(OUT) :: ierror
2473 end subroutine pompi_file_get_position_shared_f
2474 
2475 subroutine pompi_file_get_size_f(fh,size,ierror) &
2476    BIND(C, name="pompi_file_get_size_f")
2477    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2478    implicit none
2479    INTEGER, INTENT(IN) :: fh
2480    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: size
2481    INTEGER, INTENT(OUT) :: ierror
2482 end subroutine pompi_file_get_size_f
2483 
2484 subroutine pompi_file_get_type_extent_f(fh,datatype,extent,ierror) &
2485    BIND(C, name="pompi_file_get_type_extent_f")
2486    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2487    implicit none
2488    INTEGER, INTENT(IN) :: fh
2489    INTEGER, INTENT(IN) :: datatype
2490    INTEGER(MPI_ADDRESS_KIND), INTENT(OUT) :: extent
2491    INTEGER, INTENT(OUT) :: ierror
2492 end subroutine pompi_file_get_type_extent_f
2493 
2494 subroutine pompi_file_get_view_f(fh,disp,etype,filetype,datarep,ierror,datarep_len) &
2495    BIND(C, name="pompi_file_get_view_f")
2496    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2497    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2498    implicit none
2499    INTEGER, INTENT(IN) :: fh
2500    INTEGER(MPI_OFFSET_KIND), INTENT(OUT) :: disp
2501    INTEGER, INTENT(OUT) :: etype
2502    INTEGER, INTENT(OUT) :: filetype
2503    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: datarep
2504    INTEGER, INTENT(OUT) :: ierror
2505    INTEGER, VALUE, INTENT(IN) :: datarep_len
2506 end subroutine pompi_file_get_view_f
2507 
2508 subroutine pompi_file_iread_f(fh,buf,count,datatype,request,ierror) &
2509    BIND(C, name="pompi_file_iread_f")
2510    implicit none
2511    INTEGER, INTENT(IN) :: fh
2512    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2513    INTEGER, INTENT(IN) :: count
2514    INTEGER, INTENT(IN) :: datatype
2515    INTEGER, INTENT(OUT) :: request
2516    INTEGER, INTENT(OUT) :: ierror
2517 end subroutine pompi_file_iread_f
2518 
2519 subroutine pompi_file_iread_at_f(fh,offset,buf,count,datatype,request,ierror) &
2520    BIND(C, name="pompi_file_iread_at_f")
2521    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2522    implicit none
2523    INTEGER, INTENT(IN) :: fh
2524    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2525    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2526    INTEGER, INTENT(IN) :: count
2527    INTEGER, INTENT(IN) :: datatype
2528    INTEGER, INTENT(OUT) :: request
2529    INTEGER, INTENT(OUT) :: ierror
2530 end subroutine pompi_file_iread_at_f
2531 
2532 subroutine pompi_file_iread_all_f(fh,buf,count,datatype,request,ierror) &
2533    BIND(C, name="pompi_file_iread_all_f")
2534    implicit none
2535    INTEGER, INTENT(IN) :: fh
2536    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2537    INTEGER, INTENT(IN) :: count
2538    INTEGER, INTENT(IN) :: datatype
2539    INTEGER, INTENT(OUT) :: request
2540    INTEGER, INTENT(OUT) :: ierror
2541 end subroutine pompi_file_iread_all_f
2542 
2543 subroutine pompi_file_iread_at_all_f(fh,offset,buf,count,datatype,request,ierror) &
2544    BIND(C, name="pompi_file_iread_at_all_f")
2545    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2546    implicit none
2547    INTEGER, INTENT(IN) :: fh
2548    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2549    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2550    INTEGER, INTENT(IN) :: count
2551    INTEGER, INTENT(IN) :: datatype
2552    INTEGER, INTENT(OUT) :: request
2553    INTEGER, INTENT(OUT) :: ierror
2554 end subroutine pompi_file_iread_at_all_f
2555 
2556 subroutine pompi_file_iread_shared_f(fh,buf,count,datatype,request,ierror) &
2557    BIND(C, name="pompi_file_iread_shared_f")
2558    implicit none
2559    INTEGER, INTENT(IN) :: fh
2560    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2561    INTEGER, INTENT(IN) :: count
2562    INTEGER, INTENT(IN) :: datatype
2563    INTEGER, INTENT(OUT) :: request
2564    INTEGER, INTENT(OUT) :: ierror
2565 end subroutine pompi_file_iread_shared_f
2566 
2567 subroutine pompi_file_iwrite_f(fh,buf,count,datatype,request,ierror) &
2568    BIND(C, name="pompi_file_iwrite_f")
2569    implicit none
2570    INTEGER, INTENT(IN) :: fh
2571    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2572    INTEGER, INTENT(IN) :: count
2573    INTEGER, INTENT(IN) :: datatype
2574    INTEGER, INTENT(OUT) :: request
2575    INTEGER, INTENT(OUT) :: ierror
2576 end subroutine pompi_file_iwrite_f
2577 
2578 subroutine pompi_file_iwrite_at_f(fh,offset,buf,count,datatype,request,ierror) &
2579    BIND(C, name="pompi_file_iwrite_at_f")
2580    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2581    implicit none
2582    INTEGER, INTENT(IN) :: fh
2583    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2584    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2585    INTEGER, INTENT(IN) :: count
2586    INTEGER, INTENT(IN) :: datatype
2587    INTEGER, INTENT(OUT) :: request
2588    INTEGER, INTENT(OUT) :: ierror
2589 end subroutine pompi_file_iwrite_at_f
2590 
2591 subroutine pompi_file_iwrite_all_f(fh,buf,count,datatype,request,ierror) &
2592    BIND(C, name="pompi_file_iwrite_all_f")
2593    implicit none
2594    INTEGER, INTENT(IN) :: fh
2595    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2596    INTEGER, INTENT(IN) :: count
2597    INTEGER, INTENT(IN) :: datatype
2598    INTEGER, INTENT(OUT) :: request
2599    INTEGER, INTENT(OUT) :: ierror
2600 end subroutine pompi_file_iwrite_all_f
2601 
2602 subroutine pompi_file_iwrite_at_all_f(fh,offset,buf,count,datatype,request,ierror) &
2603    BIND(C, name="pompi_file_iwrite_at_all_f")
2604    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2605    implicit none
2606    INTEGER, INTENT(IN) :: fh
2607    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2608    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2609    INTEGER, INTENT(IN) :: count
2610    INTEGER, INTENT(IN) :: datatype
2611    INTEGER, INTENT(OUT) :: request
2612    INTEGER, INTENT(OUT) :: ierror
2613 end subroutine pompi_file_iwrite_at_all_f
2614 
2615 subroutine pompi_file_iwrite_shared_f(fh,buf,count,datatype,request,ierror) &
2616    BIND(C, name="pompi_file_iwrite_shared_f")
2617    implicit none
2618    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2619    INTEGER, INTENT(IN) :: fh
2620    INTEGER, INTENT(IN) :: count
2621    INTEGER, INTENT(IN) :: datatype
2622    INTEGER, INTENT(OUT) :: request
2623    INTEGER, INTENT(OUT) :: ierror
2624 end subroutine pompi_file_iwrite_shared_f
2625 
2626 subroutine pompi_file_open_f(comm,filename,amode,info,fh,ierror,filename_len) &
2627    BIND(C, name="pompi_file_open_f")
2628    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2629    implicit none
2630    INTEGER, INTENT(IN) :: comm
2631    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: filename
2632    INTEGER, INTENT(IN) :: amode
2633    INTEGER, INTENT(IN) :: info
2634    INTEGER, INTENT(OUT) :: fh
2635    INTEGER, INTENT(OUT) :: ierror
2636    INTEGER, VALUE, INTENT(IN) :: filename_len
2637 end subroutine pompi_file_open_f
2638 
2639 subroutine pompi_file_preallocate_f(fh,size,ierror) &
2640    BIND(C, name="pompi_file_preallocate_f")
2641    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2642    implicit none
2643    INTEGER, INTENT(IN) :: fh
2644    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: size
2645    INTEGER, INTENT(OUT) :: ierror
2646 end subroutine pompi_file_preallocate_f
2647 
2648 subroutine pompi_file_read_f(fh,buf,count,datatype,status,ierror) &
2649    BIND(C, name="pompi_file_read_f")
2650    use :: mpi_f08_types, only : MPI_Status
2651    implicit none
2652    INTEGER, INTENT(IN) :: fh
2653    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2654    INTEGER, INTENT(IN) :: count
2655    INTEGER, INTENT(IN) :: datatype
2656    TYPE(MPI_Status), INTENT(OUT) :: status
2657    INTEGER, INTENT(OUT) :: ierror
2658 end subroutine pompi_file_read_f
2659 
2660 subroutine pompi_file_read_all_f(fh,buf,count,datatype,status,ierror) &
2661    BIND(C, name="pompi_file_read_all_f")
2662    use :: mpi_f08_types, only : MPI_Status
2663    implicit none
2664    INTEGER, INTENT(IN) :: fh
2665    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2666    INTEGER, INTENT(IN) :: count
2667    INTEGER, INTENT(IN) :: datatype
2668    TYPE(MPI_Status), INTENT(OUT) :: status
2669    INTEGER, INTENT(OUT) :: ierror
2670 end subroutine pompi_file_read_all_f
2671 
2672 subroutine pompi_file_read_all_begin_f(fh,buf,count,datatype,ierror) &
2673    BIND(C, name="pompi_file_read_all_begin_f")
2674    implicit none
2675    INTEGER, INTENT(IN) :: fh
2676    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2677    INTEGER, INTENT(IN) :: count
2678    INTEGER, INTENT(IN) :: datatype
2679    INTEGER, INTENT(OUT) :: ierror
2680 end subroutine pompi_file_read_all_begin_f
2681 
2682 subroutine pompi_file_read_all_end_f(fh,buf,status,ierror) &
2683    BIND(C, name="pompi_file_read_all_end_f")
2684    use :: mpi_f08_types, only : MPI_Status
2685    implicit none
2686    INTEGER, INTENT(IN) :: fh
2687    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2688    TYPE(MPI_Status), INTENT(OUT) :: status
2689    INTEGER, INTENT(OUT) :: ierror
2690 end subroutine pompi_file_read_all_end_f
2691 
2692 subroutine pompi_file_read_at_f(fh,offset,buf,count,datatype,status,ierror) &
2693    BIND(C, name="pompi_file_read_at_f")
2694    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2695    implicit none
2696    INTEGER, INTENT(IN) :: fh
2697    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2698    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2699    INTEGER, INTENT(IN) :: count
2700    INTEGER, INTENT(IN) :: datatype
2701    TYPE(MPI_Status), INTENT(OUT) :: status
2702    INTEGER, INTENT(OUT) :: ierror
2703 end subroutine pompi_file_read_at_f
2704 
2705 subroutine pompi_file_read_at_all_f(fh,offset,buf,count,datatype,status,ierror) &
2706    BIND(C, name="pompi_file_read_at_all_f")
2707    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2708    implicit none
2709    INTEGER, INTENT(IN) :: fh
2710    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2711    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2712    INTEGER, INTENT(IN) :: count
2713    INTEGER, INTENT(IN) :: datatype
2714    TYPE(MPI_Status), INTENT(OUT) :: status
2715    INTEGER, INTENT(OUT) :: ierror
2716 end subroutine pompi_file_read_at_all_f
2717 
2718 subroutine pompi_file_read_at_all_begin_f(fh,offset,buf,count,datatype,ierror) &
2719    BIND(C, name="pompi_file_read_at_all_begin_f")
2720    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2721    implicit none
2722    INTEGER, INTENT(IN) :: fh
2723    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2724    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2725    INTEGER, INTENT(IN) :: count
2726    INTEGER, INTENT(IN) :: datatype
2727    INTEGER, INTENT(OUT) :: ierror
2728 end subroutine pompi_file_read_at_all_begin_f
2729 
2730 subroutine pompi_file_read_at_all_end_f(fh,buf,status,ierror) &
2731    BIND(C, name="pompi_file_read_at_all_end_f")
2732    use :: mpi_f08_types, only : MPI_Status
2733    implicit none
2734    INTEGER, INTENT(IN) :: fh
2735    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2736    TYPE(MPI_Status), INTENT(OUT) :: status
2737    INTEGER, INTENT(OUT) :: ierror
2738 end subroutine pompi_file_read_at_all_end_f
2739 
2740 subroutine pompi_file_read_ordered_f(fh,buf,count,datatype,status,ierror) &
2741    BIND(C, name="pompi_file_read_ordered_f")
2742    use :: mpi_f08_types, only : MPI_Status
2743    implicit none
2744    INTEGER, INTENT(IN) :: fh
2745    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2746    INTEGER, INTENT(IN) :: count
2747    INTEGER, INTENT(IN) :: datatype
2748    TYPE(MPI_Status), INTENT(OUT) :: status
2749    INTEGER, INTENT(OUT) :: ierror
2750 end subroutine pompi_file_read_ordered_f
2751 
2752 subroutine pompi_file_read_ordered_begin_f(fh,buf,count,datatype,ierror) &
2753    BIND(C, name="pompi_file_read_ordered_begin_f")
2754    implicit none
2755    INTEGER, INTENT(IN) :: fh
2756    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2757    INTEGER, INTENT(IN) :: count
2758    INTEGER, INTENT(IN) :: datatype
2759    INTEGER, INTENT(OUT) :: ierror
2760 end subroutine pompi_file_read_ordered_begin_f
2761 
2762 subroutine pompi_file_read_ordered_end_f(fh,buf,status,ierror) &
2763    BIND(C, name="pompi_file_read_ordered_end_f")
2764    use :: mpi_f08_types, only : MPI_Status
2765    implicit none
2766    INTEGER, INTENT(IN) :: fh
2767    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2768    TYPE(MPI_Status), INTENT(OUT) :: status
2769    INTEGER, INTENT(OUT) :: ierror
2770 end subroutine pompi_file_read_ordered_end_f
2771 
2772 subroutine pompi_file_read_shared_f(fh,buf,count,datatype,status,ierror) &
2773    BIND(C, name="pompi_file_read_shared_f")
2774    use :: mpi_f08_types, only : MPI_Status
2775    implicit none
2776    INTEGER, INTENT(IN) :: fh
2777    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2778    INTEGER, INTENT(IN) :: count
2779    INTEGER, INTENT(IN) :: datatype
2780    TYPE(MPI_Status), INTENT(OUT) :: status
2781    INTEGER, INTENT(OUT) :: ierror
2782 end subroutine pompi_file_read_shared_f
2783 
2784 subroutine pompi_file_seek_f(fh,offset,whence,ierror) &
2785    BIND(C, name="pompi_file_seek_f")
2786    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2787    implicit none
2788    INTEGER, INTENT(IN) :: fh
2789    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2790    INTEGER, INTENT(IN) :: whence
2791    INTEGER, INTENT(OUT) :: ierror
2792 end subroutine pompi_file_seek_f
2793 
2794 subroutine pompi_file_seek_shared_f(fh,offset,whence,ierror) &
2795    BIND(C, name="pompi_file_seek_shared_f")
2796    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2797    implicit none
2798    INTEGER, INTENT(IN) :: fh
2799    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2800    INTEGER, INTENT(IN) :: whence
2801    INTEGER, INTENT(OUT) :: ierror
2802 end subroutine pompi_file_seek_shared_f
2803 
2804 subroutine pompi_file_set_info_f(fh,info,ierror) &
2805    BIND(C, name="pompi_file_set_info_f")
2806    implicit none
2807    INTEGER, INTENT(IN) :: fh
2808    INTEGER, INTENT(IN) :: info
2809    INTEGER, INTENT(OUT) :: ierror
2810 end subroutine pompi_file_set_info_f
2811 
2812 subroutine pompi_file_set_size_f(fh,size,ierror) &
2813    BIND(C, name="pompi_file_set_size_f")
2814    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2815    implicit none
2816    INTEGER, INTENT(IN) :: fh
2817    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: size
2818    INTEGER, INTENT(OUT) :: ierror
2819 end subroutine pompi_file_set_size_f
2820 
2821 subroutine pompi_file_set_view_f(fh,disp,etype,filetype,datarep,info,ierror,datarep_len) &
2822    BIND(C, name="pompi_file_set_view_f")
2823    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2824    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2825    implicit none
2826    INTEGER, INTENT(IN) :: fh
2827    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: disp
2828    INTEGER, INTENT(IN) :: etype
2829    INTEGER, INTENT(IN) :: filetype
2830    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
2831    INTEGER, INTENT(IN) :: info
2832    INTEGER, INTENT(OUT) :: ierror
2833    INTEGER, VALUE, INTENT(IN) :: datarep_len
2834 end subroutine pompi_file_set_view_f
2835 
2836 subroutine pompi_file_sync_f(fh,ierror) &
2837    BIND(C, name="pompi_file_sync_f")
2838    implicit none
2839    INTEGER, INTENT(IN) :: fh
2840    INTEGER, INTENT(OUT) :: ierror
2841 end subroutine pompi_file_sync_f
2842 
2843 subroutine pompi_file_write_f(fh,buf,count,datatype,status,ierror) &
2844    BIND(C, name="pompi_file_write_f")
2845    use :: mpi_f08_types, only : MPI_Status
2846    implicit none
2847    INTEGER, INTENT(IN) :: fh
2848    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2849    INTEGER, INTENT(IN) :: count
2850    INTEGER, INTENT(IN) :: datatype
2851    TYPE(MPI_Status), INTENT(OUT) :: status
2852    INTEGER, INTENT(OUT) :: ierror
2853 end subroutine pompi_file_write_f
2854 
2855 subroutine pompi_file_write_all_f(fh,buf,count,datatype,status,ierror) &
2856    BIND(C, name="pompi_file_write_all_f")
2857    use :: mpi_f08_types, only : MPI_Status
2858    implicit none
2859    INTEGER, INTENT(IN) :: fh
2860    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2861    INTEGER, INTENT(IN) :: count
2862    INTEGER, INTENT(IN) :: datatype
2863    TYPE(MPI_Status), INTENT(OUT) :: status
2864    INTEGER, INTENT(OUT) :: ierror
2865 end subroutine pompi_file_write_all_f
2866 
2867 subroutine pompi_file_write_all_begin_f(fh,buf,count,datatype,ierror) &
2868    BIND(C, name="pompi_file_write_all_begin_f")
2869    implicit none
2870    INTEGER, INTENT(IN) :: fh
2871    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2872    INTEGER, INTENT(IN) :: count
2873    INTEGER, INTENT(IN) :: datatype
2874    INTEGER, INTENT(OUT) :: ierror
2875 end subroutine pompi_file_write_all_begin_f
2876 
2877 subroutine pompi_file_write_all_end_f(fh,buf,status,ierror) &
2878    BIND(C, name="pompi_file_write_all_end_f")
2879    use :: mpi_f08_types, only : MPI_Status
2880    implicit none
2881    INTEGER, INTENT(IN) :: fh
2882    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2883    TYPE(MPI_Status), INTENT(OUT) :: status
2884    INTEGER, INTENT(OUT) :: ierror
2885 end subroutine pompi_file_write_all_end_f
2886 
2887 subroutine pompi_file_write_at_f(fh,offset,buf,count,datatype,status,ierror) &
2888    BIND(C, name="pompi_file_write_at_f")
2889    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2890    implicit none
2891    INTEGER, INTENT(IN) :: fh
2892    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2893    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2894    INTEGER, INTENT(IN) :: count
2895    INTEGER, INTENT(IN) :: datatype
2896    TYPE(MPI_Status), INTENT(OUT) :: status
2897    INTEGER, INTENT(OUT) :: ierror
2898 end subroutine pompi_file_write_at_f
2899 
2900 subroutine pompi_file_write_at_all_f(fh,offset,buf,count,datatype,status,ierror) &
2901    BIND(C, name="pompi_file_write_at_all_f")
2902    use :: mpi_f08_types, only : MPI_Status, MPI_OFFSET_KIND
2903    implicit none
2904    INTEGER, INTENT(IN) :: fh
2905    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2906    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2907    INTEGER, INTENT(IN) :: count
2908    INTEGER, INTENT(IN) :: datatype
2909    TYPE(MPI_Status), INTENT(OUT) :: status
2910    INTEGER, INTENT(OUT) :: ierror
2911 end subroutine pompi_file_write_at_all_f
2912 
2913 subroutine pompi_file_write_at_all_begin_f(fh,offset,buf,count,datatype,ierror) &
2914    BIND(C, name="pompi_file_write_at_all_begin_f")
2915    use :: mpi_f08_types, only : MPI_OFFSET_KIND
2916    implicit none
2917    INTEGER, INTENT(IN) :: fh
2918    INTEGER(MPI_OFFSET_KIND), INTENT(IN) :: offset
2919    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2920    INTEGER, INTENT(IN) :: count
2921    INTEGER, INTENT(IN) :: datatype
2922    INTEGER, INTENT(OUT) :: ierror
2923 end subroutine pompi_file_write_at_all_begin_f
2924 
2925 subroutine pompi_file_write_at_all_end_f(fh,buf,status,ierror) &
2926    BIND(C, name="pompi_file_write_at_all_end_f")
2927    use :: mpi_f08_types, only : MPI_Status
2928    implicit none
2929    INTEGER, INTENT(IN) :: fh
2930    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2931    TYPE(MPI_Status), INTENT(OUT) :: status
2932    INTEGER, INTENT(OUT) :: ierror
2933 end subroutine pompi_file_write_at_all_end_f
2934 
2935 subroutine pompi_file_write_ordered_f(fh,buf,count,datatype,status,ierror) &
2936    BIND(C, name="pompi_file_write_ordered_f")
2937    use :: mpi_f08_types, only : MPI_Status
2938    implicit none
2939    INTEGER, INTENT(IN) :: fh
2940    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2941    INTEGER, INTENT(IN) :: count
2942    INTEGER, INTENT(IN) :: datatype
2943    TYPE(MPI_Status), INTENT(OUT) :: status
2944    INTEGER, INTENT(OUT) :: ierror
2945 end subroutine pompi_file_write_ordered_f
2946 
2947 subroutine pompi_file_write_ordered_begin_f(fh,buf,count,datatype,ierror) &
2948    BIND(C, name="pompi_file_write_ordered_begin_f")
2949    implicit none
2950    INTEGER, INTENT(IN) :: fh
2951    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2952    INTEGER, INTENT(IN) :: count
2953    INTEGER, INTENT(IN) :: datatype
2954    INTEGER, INTENT(OUT) :: ierror
2955 end subroutine pompi_file_write_ordered_begin_f
2956 
2957 subroutine pompi_file_write_ordered_end_f(fh,buf,status,ierror) &
2958    BIND(C, name="pompi_file_write_ordered_end_f")
2959    use :: mpi_f08_types, only : MPI_Status
2960    implicit none
2961    INTEGER, INTENT(IN) :: fh
2962    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2963    TYPE(MPI_Status), INTENT(OUT) :: status
2964    INTEGER, INTENT(OUT) :: ierror
2965 end subroutine pompi_file_write_ordered_end_f
2966 
2967 subroutine pompi_file_write_shared_f(fh,buf,count,datatype,status,ierror) &
2968    BIND(C, name="pompi_file_write_shared_f")
2969    use :: mpi_f08_types, only : MPI_Status
2970    implicit none
2971    INTEGER, INTENT(IN) :: fh
2972    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: buf
2973    INTEGER, INTENT(IN) :: count
2974    INTEGER, INTENT(IN) :: datatype
2975    TYPE(MPI_Status), INTENT(OUT) :: status
2976    INTEGER, INTENT(OUT) :: ierror
2977 end subroutine pompi_file_write_shared_f
2978 
2979 subroutine pompi_register_datarep_f(datarep,read_conversion_fn, &
2980                                    write_conversion_fn,dtype_file_extent_fn, &
2981                                    extra_state,ierror,datarep_len) &
2982    BIND(C, name="pompi_register_datarep_f")
2983    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
2984    use :: mpi_f08_types, only : MPI_ADDRESS_KIND
2985    use, intrinsic :: iso_c_binding, only: c_funptr
2986    implicit none
2987    type(c_funptr), value :: read_conversion_fn
2988    type(c_funptr), value :: write_conversion_fn
2989    type(c_funptr), value :: dtype_file_extent_fn
2990    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: datarep
2991    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
2992    INTEGER, INTENT(OUT) :: ierror
2993    INTEGER, VALUE, INTENT(IN) :: datarep_len
2994 end subroutine pompi_register_datarep_f
2995 
2996 !
2997 ! MPI_Sizeof is generic for numeric types.  This ignore TKR interface
2998 ! is replaced by the specific generics.
2999 !
3000 !subroutine pompi_sizeof(x,size,ierror) &
3001 !   BIND(C, name="pompi_sizeof_f")
3002 !   implicit none
3003 !   OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: x
3004 !   INTEGER, INTENT(OUT) :: size
3005 !   INTEGER, INTENT(OUT) :: ierror
3006 !end subroutine pompi_sizeof
3007 
3008 subroutine pompi_type_create_f90_complex_f(p,r,newtype,ierror) &
3009    BIND(C, name="pompi_type_create_f90_complex_f")
3010    implicit none
3011    INTEGER, INTENT(IN) :: p, r
3012    INTEGER, INTENT(OUT) :: newtype
3013    INTEGER, INTENT(OUT) :: ierror
3014 end subroutine pompi_type_create_f90_complex_f
3015 
3016 subroutine pompi_type_create_f90_integer_f(r,newtype,ierror) &
3017    BIND(C, name="pompi_type_create_f90_integer_f")
3018    implicit none
3019    INTEGER, INTENT(IN) :: r
3020    INTEGER, INTENT(OUT) :: newtype
3021    INTEGER, INTENT(OUT) :: ierror
3022 end subroutine pompi_type_create_f90_integer_f
3023 
3024 subroutine pompi_type_create_f90_real_f(p,r,newtype,ierror) &
3025    BIND(C, name="pompi_type_create_f90_real_f")
3026    implicit none
3027    INTEGER, INTENT(IN) :: p, r
3028    INTEGER, INTENT(OUT) :: newtype
3029    INTEGER, INTENT(OUT) :: ierror
3030 end subroutine pompi_type_create_f90_real_f
3031 
3032 subroutine pompi_type_match_size_f(typeclass,size,datatype,ierror) &
3033    BIND(C, name="pompi_type_match_size_f")
3034    implicit none
3035    INTEGER, INTENT(IN) :: typeclass, size
3036    INTEGER, INTENT(OUT) :: datatype
3037    INTEGER, INTENT(OUT) :: ierror
3038 end subroutine pompi_type_match_size_f
3039 
3040 subroutine pompi_pcontrol_f(level) &
3041    BIND(C, name="pompi_pcontrol_f")
3042    implicit none
3043    INTEGER, INTENT(IN) :: level
3044 end subroutine pompi_pcontrol_f
3045 
3046 
3047 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3048 ! New routines to MPI-3
3049 !
3050 
3051 subroutine pompi_comm_split_type_f(comm,split_type,key,info,newcomm,ierror) &
3052    BIND(C, name="pompi_comm_split_type_f")
3053    implicit none
3054    INTEGER, INTENT(IN) :: comm
3055    INTEGER, INTENT(IN) :: split_type
3056    INTEGER, INTENT(IN) :: key
3057    INTEGER, INTENT(IN) :: info
3058    INTEGER, INTENT(OUT) :: newcomm
3059    INTEGER, INTENT(OUT) :: ierror
3060 end subroutine pompi_comm_split_type_f
3061 
3062 subroutine pompi_f_sync_reg_f(buf) &
3063    BIND(C, name="pompi_f_sync_reg_f")
3064    implicit none
3065    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
3066 end subroutine pompi_f_sync_reg_f
3067 
3068 subroutine pompi_get_library_version_f(name,resultlen,ierror,name_len) &
3069    BIND(C, name="pompi_get_library_version_f")
3070    use, intrinsic :: ISO_C_BINDING, only : C_CHAR
3071    implicit none
3072    CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: name
3073    INTEGER, INTENT(OUT) :: resultlen
3074    INTEGER, INTENT(OUT) :: ierror
3075    INTEGER, VALUE, INTENT(IN) :: name_len
3076 end subroutine pompi_get_library_version_f
3077 
3078 subroutine pompi_mprobe_f(source,tag,comm,message,status,ierror) &
3079    BIND(C, name="pompi_mprobe_f")
3080    use :: mpi_f08_types, only : MPI_Status
3081    implicit none
3082    INTEGER, INTENT(IN) :: source, tag
3083    INTEGER, INTENT(IN) :: comm
3084    INTEGER, INTENT(OUT) :: message
3085    TYPE(MPI_Status), INTENT(OUT) :: status
3086    INTEGER, INTENT(OUT) :: ierror
3087 end subroutine pompi_mprobe_f
3088 
3089 subroutine pompi_imrecv_f(buf,count,datatype,message,request,ierror) &
3090    BIND(C, name="pompi_imrecv_f")
3091    implicit none
3092    OMPI_FORTRAN_IGNORE_TKR_TYPE OMPI_ASYNCHRONOUS :: buf
3093    INTEGER, INTENT(IN) :: count
3094    INTEGER, INTENT(IN) :: datatype
3095    INTEGER, INTENT(INOUT) :: message
3096    INTEGER, INTENT(OUT) :: request
3097    INTEGER, INTENT(OUT) :: ierror
3098 end subroutine pompi_imrecv_f
3099 
3100 subroutine pompi_mrecv_f(buf,count,datatype,message,status,ierror) &
3101    BIND(C, name="pompi_mrecv_f")
3102    use :: mpi_f08_types, only : MPI_Status
3103    implicit none
3104    OMPI_FORTRAN_IGNORE_TKR_TYPE :: buf
3105    INTEGER, INTENT(IN) :: count
3106    INTEGER, INTENT(IN) :: datatype
3107    INTEGER, INTENT(INOUT) :: message
3108    TYPE(MPI_Status) :: status
3109    INTEGER, INTENT(OUT) :: ierror
3110 end subroutine pompi_mrecv_f
3111 
3112 subroutine pompi_neighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3113                              comm,ierror) &
3114                              BIND(C, name="pompi_neighbor_allgather_f")
3115    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3116    implicit none
3117    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3118    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3119    INTEGER, INTENT(IN) :: sendcount, recvcount
3120    INTEGER, INTENT(IN) :: sendtype, recvtype
3121    INTEGER, INTENT(IN) :: comm
3122    INTEGER, INTENT(OUT) :: ierror
3123 end subroutine pompi_neighbor_allgather_f
3124 
3125 subroutine pompi_ineighbor_allgather_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3126                              comm,request,ierror) &
3127                              BIND(C, name="pompi_ineighbor_allgather_f")
3128    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3129    implicit none
3130    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3131    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3132    INTEGER, INTENT(IN) :: sendcount, recvcount
3133    INTEGER, INTENT(IN) :: sendtype, recvtype
3134    INTEGER, INTENT(IN) :: comm
3135    INTEGER, INTENT(OUT) :: request
3136    INTEGER, INTENT(OUT) :: ierror
3137 end subroutine pompi_ineighbor_allgather_f
3138 
3139 subroutine pompi_neighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, &
3140                               recvtype,comm,ierror) &
3141                               BIND(C, name="pompi_neighbor_allgatherv_f")
3142    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3143    implicit none
3144    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3145    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3146    INTEGER, INTENT(IN) :: sendcount
3147    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
3148    INTEGER, INTENT(IN) :: sendtype, recvtype
3149    INTEGER, INTENT(IN) :: comm
3150    INTEGER, INTENT(OUT) :: ierror
3151 end subroutine pompi_neighbor_allgatherv_f
3152 
3153 subroutine pompi_ineighbor_allgatherv_f(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs, &
3154                               recvtype,comm,request,ierror) &
3155                               BIND(C, name="pompi_ineighbor_allgatherv_f")
3156    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3157    implicit none
3158    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3159    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3160    INTEGER, INTENT(IN) :: sendcount
3161    INTEGER, INTENT(IN) :: recvcounts(*), displs(*)
3162    INTEGER, INTENT(IN) :: sendtype, recvtype
3163    INTEGER, INTENT(IN) :: comm
3164    INTEGER, INTENT(OUT) :: request
3165    INTEGER, INTENT(OUT) :: ierror
3166 end subroutine pompi_ineighbor_allgatherv_f
3167 
3168 subroutine pompi_neighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3169                             comm,ierror) &
3170                             BIND(C, name="pompi_neighbor_alltoall_f")
3171    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3172    implicit none
3173    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3174    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3175    INTEGER, INTENT(IN) :: sendcount, recvcount
3176    INTEGER, INTENT(IN) :: sendtype, recvtype
3177    INTEGER, INTENT(IN) :: comm
3178    INTEGER, INTENT(OUT) :: ierror
3179 end subroutine pompi_neighbor_alltoall_f
3180 
3181 subroutine pompi_ineighbor_alltoall_f(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype, &
3182                             comm,request,ierror) &
3183                             BIND(C, name="pompi_ineighbor_alltoall_f")
3184    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3185    implicit none
3186    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3187    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3188    INTEGER, INTENT(IN) :: sendcount, recvcount
3189    INTEGER, INTENT(IN) :: sendtype, recvtype
3190    INTEGER, INTENT(IN) :: comm
3191    INTEGER, INTENT(OUT) :: request
3192    INTEGER, INTENT(OUT) :: ierror
3193 end subroutine pompi_ineighbor_alltoall_f
3194 
3195 subroutine pompi_neighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, &
3196                              rdispls,recvtype,comm,ierror) &
3197                              BIND(C, name="pompi_neighbor_alltoallv_f")
3198    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
3199    implicit none
3200    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3201    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3202    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
3203    INTEGER, INTENT(IN) :: sendtype, recvtype
3204    INTEGER, INTENT(IN) :: comm
3205    INTEGER, INTENT(OUT) :: ierror
3206 end subroutine pompi_neighbor_alltoallv_f
3207 
3208 subroutine pompi_ineighbor_alltoallv_f(sendbuf,sendcounts,sdispls,sendtype,recvbuf,recvcounts, &
3209                              rdispls,recvtype,comm,request,ierror) &
3210                              BIND(C, name="pompi_ineighbor_alltoallv_f")
3211    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request
3212    implicit none
3213    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3214    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3215    INTEGER, INTENT(IN) :: sendcounts(*), sdispls(*), recvcounts(*), rdispls(*)
3216    INTEGER, INTENT(IN) :: sendtype, recvtype
3217    INTEGER, INTENT(IN) :: comm
3218    INTEGER, INTENT(OUT) :: request
3219    INTEGER, INTENT(OUT) :: ierror
3220 end subroutine pompi_ineighbor_alltoallv_f
3221 
3222 subroutine pompi_neighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, &
3223                              rdispls,recvtypes,comm,ierror) &
3224                              BIND(C, name="pompi_neighbor_alltoallw_f")
3225    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_ADDRESS_KIND
3226    implicit none
3227    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3228    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3229    INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*)
3230    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*)
3231    INTEGER, INTENT(IN) :: sendtypes, recvtypes
3232    INTEGER, INTENT(IN) :: comm
3233    INTEGER, INTENT(OUT) :: ierror
3234 end subroutine pompi_neighbor_alltoallw_f
3235 
3236 subroutine pompi_ineighbor_alltoallw_f(sendbuf,sendcounts,sdispls,sendtypes,recvbuf,recvcounts, &
3237                              rdispls,recvtypes,comm,request,ierror) &
3238                              BIND(C, name="pompi_ineighbor_alltoallw_f")
3239    use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm, MPI_Request, MPI_ADDRESS_KIND
3240    implicit none
3241    OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: sendbuf
3242    OMPI_FORTRAN_IGNORE_TKR_TYPE :: recvbuf
3243    INTEGER, INTENT(IN) :: sendcounts(*), recvcounts(*)
3244    INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: sdispls(*), rdispls(*)
3245    INTEGER, INTENT(IN) :: sendtypes, recvtypes
3246    INTEGER, INTENT(IN) :: comm
3247    INTEGER, INTENT(OUT) :: request
3248    INTEGER, INTENT(OUT) :: ierror
3249 end subroutine pompi_ineighbor_alltoallw_f
3250 
3251 end interface
3252