1!
2!  Copyright (C) 2013, Northwestern University and Argonne National Laboratory
3!  See COPYRIGHT notice in top-level directory.
4!
5! $Id: overloads.f90 2002 2015-02-12 07:34:35Z wkliao $
6!
7! This file is taken from netcdf_overloads.f90 with changes for PnetCDF use
8!
9!
10
11  ! Overloaded variable functions
12  interface nf90mpi_def_var
13    module procedure nf90mpi_def_var_Scalar, nf90mpi_def_var_oneDim, nf90mpi_def_var_ManyDims
14  end interface ! nf90mpi_def_var
15
16  ! Overloaded variable fill functions
17  interface nf90mpi_def_var_fill
18    module procedure nf90mpi_def_var_fill_text,                                            &
19                     nf90mpi_def_var_fill_OneByteInt,   nf90mpi_def_var_fill_TwoByteInt,   &
20                     nf90mpi_def_var_fill_FourByteInt,  nf90mpi_def_var_fill_EightByteInt, &
21                     nf90mpi_def_var_fill_FourByteReal, nf90mpi_def_var_fill_EightByteReal
22  end interface !nf90mpi_def_var_fill
23  interface nf90mpi_inq_var_fill
24    module procedure nf90mpi_inq_var_fill_text,                                            &
25                     nf90mpi_inq_var_fill_OneByteInt,   nf90mpi_inq_var_fill_TwoByteInt,   &
26                     nf90mpi_inq_var_fill_FourByteInt,  nf90mpi_inq_var_fill_EightByteInt, &
27                     nf90mpi_inq_var_fill_FourByteReal, nf90mpi_inq_var_fill_EightByteReal
28  end interface !nf90mpi_inq_var_fill
29
30  ! Overloaded attribute functions
31  interface nf90mpi_put_att
32    module procedure nf90mpi_put_att_text,                                               &
33                     nf90mpi_put_att_OneByteInt,       nf90mpi_put_att_TwoByteInt,       &
34                     nf90mpi_put_att_FourByteInt,      nf90mpi_put_att_EightByteInt,     &
35                     nf90mpi_put_att_FourByteReal,     nf90mpi_put_att_EightByteReal
36    module procedure nf90mpi_put_att_one_OneByteInt,   nf90mpi_put_att_one_TwoByteInt,   &
37                     nf90mpi_put_att_one_FourByteInt,  nf90mpi_put_att_one_EightByteInt, &
38                     nf90mpi_put_att_one_FourByteReal, nf90mpi_put_att_one_EightByteReal
39  end interface !nf90mpi_put_att
40  interface nf90mpi_get_att
41    module procedure nf90mpi_get_att_text,                                               &
42                     nf90mpi_get_att_OneByteInt,       nf90mpi_get_att_TwoByteInt,       &
43                     nf90mpi_get_att_FourByteInt,      nf90mpi_get_att_EightByteInt,     &
44                     nf90mpi_get_att_FourByteReal,     nf90mpi_get_att_EightByteReal
45    module procedure nf90mpi_get_att_one_OneByteInt,   nf90mpi_get_att_one_TwoByteInt,   &
46                     nf90mpi_get_att_one_FourByteInt,  nf90mpi_get_att_one_EightByteInt, &
47                     nf90mpi_get_att_one_FourByteReal, nf90mpi_get_att_one_EightByteReal
48  end interface ! nf90mpi_get_att
49
50  ! Overloaded variable functions
51  interface nf90mpi_put_var
52    module procedure nf90mpi_put_var_text,                                               &
53                     nf90mpi_put_var_OneByteInt,   nf90mpi_put_var_TwoByteInt,           &
54                     nf90mpi_put_var_FourByteInt,  nf90mpi_put_var_EightByteInt,         &
55                     nf90mpi_put_var_FourByteReal, nf90mpi_put_var_EightByteReal
56    module procedure nf90mpi_put_var_1D_text,                                            &
57                     nf90mpi_put_var_1D_OneByteInt,   nf90mpi_put_var_1D_TwoByteInt,     &
58                     nf90mpi_put_var_1D_FourByteInt,  nf90mpi_put_var_1D_EightByteInt,   &
59                     nf90mpi_put_var_1D_FourByteReal, nf90mpi_put_var_1D_EightByteReal
60    module procedure nf90mpi_put_var_2D_text,                                            &
61                     nf90mpi_put_var_2D_OneByteInt,   nf90mpi_put_var_2D_TwoByteInt,     &
62                     nf90mpi_put_var_2D_FourByteInt,  nf90mpi_put_var_2D_EightByteInt,   &
63                     nf90mpi_put_var_2D_FourByteReal, nf90mpi_put_var_2D_EightByteReal
64    module procedure nf90mpi_put_var_3D_text,                                            &
65                     nf90mpi_put_var_3D_OneByteInt,   nf90mpi_put_var_3D_TwoByteInt,     &
66                     nf90mpi_put_var_3D_FourByteInt,  nf90mpi_put_var_3D_EightByteInt,   &
67                     nf90mpi_put_var_3D_FourByteReal, nf90mpi_put_var_3D_EightByteReal
68    module procedure nf90mpi_put_var_4D_text,                                            &
69                     nf90mpi_put_var_4D_OneByteInt,   nf90mpi_put_var_4D_TwoByteInt,     &
70                     nf90mpi_put_var_4D_FourByteInt,  nf90mpi_put_var_4D_EightByteInt,   &
71                     nf90mpi_put_var_4D_FourByteReal, nf90mpi_put_var_4D_EightByteReal
72    module procedure nf90mpi_put_var_5D_text,                                            &
73                     nf90mpi_put_var_5D_OneByteInt,   nf90mpi_put_var_5D_TwoByteInt,     &
74                     nf90mpi_put_var_5D_FourByteInt,  nf90mpi_put_var_5D_EightByteInt,   &
75                     nf90mpi_put_var_5D_FourByteReal, nf90mpi_put_var_5D_EightByteReal
76    module procedure nf90mpi_put_var_6D_text,                                            &
77                     nf90mpi_put_var_6D_OneByteInt,   nf90mpi_put_var_6D_TwoByteInt,     &
78                     nf90mpi_put_var_6D_FourByteInt,  nf90mpi_put_var_6D_EightByteInt,   &
79                     nf90mpi_put_var_6D_FourByteReal, nf90mpi_put_var_6D_EightByteReal
80    module procedure nf90mpi_put_var_7D_text,                                            &
81                     nf90mpi_put_var_7D_OneByteInt,   nf90mpi_put_var_7D_TwoByteInt,     &
82                     nf90mpi_put_var_7D_FourByteInt,  nf90mpi_put_var_7D_EightByteInt,   &
83                     nf90mpi_put_var_7D_FourByteReal, nf90mpi_put_var_7D_EightByteReal
84  end interface ! nf90mpi_put_var
85
86  interface nf90mpi_get_var
87    module procedure nf90mpi_get_var_text,                                               &
88                     nf90mpi_get_var_OneByteInt,   nf90mpi_get_var_TwoByteInt,           &
89                     nf90mpi_get_var_FourByteInt,  nf90mpi_get_var_EightByteInt,         &
90                     nf90mpi_get_var_FourByteReal, nf90mpi_get_var_EightByteReal
91    module procedure nf90mpi_get_var_1D_text,                                            &
92                     nf90mpi_get_var_1D_OneByteInt,   nf90mpi_get_var_1D_TwoByteInt,     &
93                     nf90mpi_get_var_1D_FourByteInt,  nf90mpi_get_var_1D_EightByteInt,   &
94                     nf90mpi_get_var_1D_FourByteReal, nf90mpi_get_var_1D_EightByteReal
95    module procedure nf90mpi_get_var_2D_text,                                            &
96                     nf90mpi_get_var_2D_OneByteInt,   nf90mpi_get_var_2D_TwoByteInt,     &
97                     nf90mpi_get_var_2D_FourByteInt,  nf90mpi_get_var_2D_EightByteInt,   &
98                     nf90mpi_get_var_2D_FourByteReal, nf90mpi_get_var_2D_EightByteReal
99    module procedure nf90mpi_get_var_3D_text,                                            &
100                     nf90mpi_get_var_3D_OneByteInt,   nf90mpi_get_var_3D_TwoByteInt,     &
101                     nf90mpi_get_var_3D_FourByteInt,  nf90mpi_get_var_3D_EightByteInt,   &
102                     nf90mpi_get_var_3D_FourByteReal, nf90mpi_get_var_3D_EightByteReal
103    module procedure nf90mpi_get_var_4D_text,                                            &
104                     nf90mpi_get_var_4D_OneByteInt,   nf90mpi_get_var_4D_TwoByteInt,     &
105                     nf90mpi_get_var_4D_FourByteInt,  nf90mpi_get_var_4D_EightByteInt,   &
106                     nf90mpi_get_var_4D_FourByteReal, nf90mpi_get_var_4D_EightByteReal
107    module procedure nf90mpi_get_var_5D_text,                                            &
108                     nf90mpi_get_var_5D_OneByteInt,   nf90mpi_get_var_5D_TwoByteInt,     &
109                     nf90mpi_get_var_5D_FourByteInt,  nf90mpi_get_var_5D_EightByteInt,   &
110                     nf90mpi_get_var_5D_FourByteReal, nf90mpi_get_var_5D_EightByteReal
111    module procedure nf90mpi_get_var_6D_text,                                            &
112                     nf90mpi_get_var_6D_OneByteInt,   nf90mpi_get_var_6D_TwoByteInt,     &
113                     nf90mpi_get_var_6D_FourByteInt,  nf90mpi_get_var_6D_EightByteInt,   &
114                     nf90mpi_get_var_6D_FourByteReal, nf90mpi_get_var_6D_EightByteReal
115    module procedure nf90mpi_get_var_7D_text,                                            &
116                     nf90mpi_get_var_7D_OneByteInt,   nf90mpi_get_var_7D_TwoByteInt,     &
117                     nf90mpi_get_var_7D_FourByteInt,  nf90mpi_get_var_7D_EightByteInt,   &
118                     nf90mpi_get_var_7D_FourByteReal, nf90mpi_get_var_7D_EightByteReal
119  end interface ! nf90mpi_get_var
120
121  ! Overloaded variable functions varn
122  interface nf90mpi_put_varn
123    module procedure nf90mpi_put_varn_text,                                              &
124                     nf90mpi_put_varn_OneByteInt,   nf90mpi_put_varn_TwoByteInt,         &
125                     nf90mpi_put_varn_FourByteInt,  nf90mpi_put_varn_EightByteInt,       &
126                     nf90mpi_put_varn_FourByteReal, nf90mpi_put_varn_EightByteReal
127    module procedure nf90mpi_put_varn_1D_text,                                           &
128                     nf90mpi_put_varn_1D_OneByteInt,   nf90mpi_put_varn_1D_TwoByteInt,   &
129                     nf90mpi_put_varn_1D_FourByteInt,  nf90mpi_put_varn_1D_EightByteInt, &
130                     nf90mpi_put_varn_1D_FourByteReal, nf90mpi_put_varn_1D_EightByteReal
131    module procedure nf90mpi_put_varn_2D_text,                                           &
132                     nf90mpi_put_varn_2D_OneByteInt,   nf90mpi_put_varn_2D_TwoByteInt,   &
133                     nf90mpi_put_varn_2D_FourByteInt,  nf90mpi_put_varn_2D_EightByteInt, &
134                     nf90mpi_put_varn_2D_FourByteReal, nf90mpi_put_varn_2D_EightByteReal
135    module procedure nf90mpi_put_varn_3D_text,                                           &
136                     nf90mpi_put_varn_3D_OneByteInt,   nf90mpi_put_varn_3D_TwoByteInt,   &
137                     nf90mpi_put_varn_3D_FourByteInt,  nf90mpi_put_varn_3D_EightByteInt, &
138                     nf90mpi_put_varn_3D_FourByteReal, nf90mpi_put_varn_3D_EightByteReal
139    module procedure nf90mpi_put_varn_4D_text,                                           &
140                     nf90mpi_put_varn_4D_OneByteInt,   nf90mpi_put_varn_4D_TwoByteInt,   &
141                     nf90mpi_put_varn_4D_FourByteInt,  nf90mpi_put_varn_4D_EightByteInt, &
142                     nf90mpi_put_varn_4D_FourByteReal, nf90mpi_put_varn_4D_EightByteReal
143    module procedure nf90mpi_put_varn_5D_text,                                           &
144                     nf90mpi_put_varn_5D_OneByteInt,   nf90mpi_put_varn_5D_TwoByteInt,   &
145                     nf90mpi_put_varn_5D_FourByteInt,  nf90mpi_put_varn_5D_EightByteInt, &
146                     nf90mpi_put_varn_5D_FourByteReal, nf90mpi_put_varn_5D_EightByteReal
147    module procedure nf90mpi_put_varn_6D_text,                                           &
148                     nf90mpi_put_varn_6D_OneByteInt,   nf90mpi_put_varn_6D_TwoByteInt,   &
149                     nf90mpi_put_varn_6D_FourByteInt,  nf90mpi_put_varn_6D_EightByteInt, &
150                     nf90mpi_put_varn_6D_FourByteReal, nf90mpi_put_varn_6D_EightByteReal
151    module procedure nf90mpi_put_varn_7D_text,                                           &
152                     nf90mpi_put_varn_7D_OneByteInt,   nf90mpi_put_varn_7D_TwoByteInt,   &
153                     nf90mpi_put_varn_7D_FourByteInt,  nf90mpi_put_varn_7D_EightByteInt, &
154                     nf90mpi_put_varn_7D_FourByteReal, nf90mpi_put_varn_7D_EightByteReal
155  end interface ! nf90mpi_put_varn
156
157  interface nf90mpi_get_varn
158    module procedure nf90mpi_get_varn_text,                                              &
159                     nf90mpi_get_varn_OneByteInt,   nf90mpi_get_varn_TwoByteInt,         &
160                     nf90mpi_get_varn_FourByteInt,  nf90mpi_get_varn_EightByteInt,       &
161                     nf90mpi_get_varn_FourByteReal, nf90mpi_get_varn_EightByteReal
162    module procedure nf90mpi_get_varn_1D_text,                                           &
163                     nf90mpi_get_varn_1D_OneByteInt,   nf90mpi_get_varn_1D_TwoByteInt,   &
164                     nf90mpi_get_varn_1D_FourByteInt,  nf90mpi_get_varn_1D_EightByteInt, &
165                     nf90mpi_get_varn_1D_FourByteReal, nf90mpi_get_varn_1D_EightByteReal
166    module procedure nf90mpi_get_varn_2D_text,                                           &
167                     nf90mpi_get_varn_2D_OneByteInt,   nf90mpi_get_varn_2D_TwoByteInt,   &
168                     nf90mpi_get_varn_2D_FourByteInt,  nf90mpi_get_varn_2D_EightByteInt, &
169                     nf90mpi_get_varn_2D_FourByteReal, nf90mpi_get_varn_2D_EightByteReal
170    module procedure nf90mpi_get_varn_3D_text,                                           &
171                     nf90mpi_get_varn_3D_OneByteInt,   nf90mpi_get_varn_3D_TwoByteInt,   &
172                     nf90mpi_get_varn_3D_FourByteInt,  nf90mpi_get_varn_3D_EightByteInt, &
173                     nf90mpi_get_varn_3D_FourByteReal, nf90mpi_get_varn_3D_EightByteReal
174    module procedure nf90mpi_get_varn_4D_text,                                           &
175                     nf90mpi_get_varn_4D_OneByteInt,   nf90mpi_get_varn_4D_TwoByteInt,   &
176                     nf90mpi_get_varn_4D_FourByteInt,  nf90mpi_get_varn_4D_EightByteInt, &
177                     nf90mpi_get_varn_4D_FourByteReal, nf90mpi_get_varn_4D_EightByteReal
178    module procedure nf90mpi_get_varn_5D_text,                                           &
179                     nf90mpi_get_varn_5D_OneByteInt,   nf90mpi_get_varn_5D_TwoByteInt,   &
180                     nf90mpi_get_varn_5D_FourByteInt,  nf90mpi_get_varn_5D_EightByteInt, &
181                     nf90mpi_get_varn_5D_FourByteReal, nf90mpi_get_varn_5D_EightByteReal
182    module procedure nf90mpi_get_varn_6D_text,                                           &
183                     nf90mpi_get_varn_6D_OneByteInt,   nf90mpi_get_varn_6D_TwoByteInt,   &
184                     nf90mpi_get_varn_6D_FourByteInt,  nf90mpi_get_varn_6D_EightByteInt, &
185                     nf90mpi_get_varn_6D_FourByteReal, nf90mpi_get_varn_6D_EightByteReal
186    module procedure nf90mpi_get_varn_7D_text,                                           &
187                     nf90mpi_get_varn_7D_OneByteInt,   nf90mpi_get_varn_7D_TwoByteInt,   &
188                     nf90mpi_get_varn_7D_FourByteInt,  nf90mpi_get_varn_7D_EightByteInt, &
189                     nf90mpi_get_varn_7D_FourByteReal, nf90mpi_get_varn_7D_EightByteReal
190  end interface ! nf90mpi_get_varn
191
192  ! Overloaded variable functions vard
193  interface nf90mpi_put_vard
194    module procedure nf90mpi_put_vard_text,                                              &
195                     nf90mpi_put_vard_OneByteInt,   nf90mpi_put_vard_TwoByteInt,         &
196                     nf90mpi_put_vard_FourByteInt,  nf90mpi_put_vard_EightByteInt,       &
197                     nf90mpi_put_vard_FourByteReal, nf90mpi_put_vard_EightByteReal
198    module procedure nf90mpi_put_vard_1D_text,                                           &
199                     nf90mpi_put_vard_1D_OneByteInt,   nf90mpi_put_vard_1D_TwoByteInt,   &
200                     nf90mpi_put_vard_1D_FourByteInt,  nf90mpi_put_vard_1D_EightByteInt, &
201                     nf90mpi_put_vard_1D_FourByteReal, nf90mpi_put_vard_1D_EightByteReal
202    module procedure nf90mpi_put_vard_2D_text,                                           &
203                     nf90mpi_put_vard_2D_OneByteInt,   nf90mpi_put_vard_2D_TwoByteInt,   &
204                     nf90mpi_put_vard_2D_FourByteInt,  nf90mpi_put_vard_2D_EightByteInt, &
205                     nf90mpi_put_vard_2D_FourByteReal, nf90mpi_put_vard_2D_EightByteReal
206    module procedure nf90mpi_put_vard_3D_text,                                           &
207                     nf90mpi_put_vard_3D_OneByteInt,   nf90mpi_put_vard_3D_TwoByteInt,   &
208                     nf90mpi_put_vard_3D_FourByteInt,  nf90mpi_put_vard_3D_EightByteInt, &
209                     nf90mpi_put_vard_3D_FourByteReal, nf90mpi_put_vard_3D_EightByteReal
210    module procedure nf90mpi_put_vard_4D_text,                                           &
211                     nf90mpi_put_vard_4D_OneByteInt,   nf90mpi_put_vard_4D_TwoByteInt,   &
212                     nf90mpi_put_vard_4D_FourByteInt,  nf90mpi_put_vard_4D_EightByteInt, &
213                     nf90mpi_put_vard_4D_FourByteReal, nf90mpi_put_vard_4D_EightByteReal
214    module procedure nf90mpi_put_vard_5D_text,                                           &
215                     nf90mpi_put_vard_5D_OneByteInt,   nf90mpi_put_vard_5D_TwoByteInt,   &
216                     nf90mpi_put_vard_5D_FourByteInt,  nf90mpi_put_vard_5D_EightByteInt, &
217                     nf90mpi_put_vard_5D_FourByteReal, nf90mpi_put_vard_5D_EightByteReal
218    module procedure nf90mpi_put_vard_6D_text,                                           &
219                     nf90mpi_put_vard_6D_OneByteInt,   nf90mpi_put_vard_6D_TwoByteInt,   &
220                     nf90mpi_put_vard_6D_FourByteInt,  nf90mpi_put_vard_6D_EightByteInt, &
221                     nf90mpi_put_vard_6D_FourByteReal, nf90mpi_put_vard_6D_EightByteReal
222    module procedure nf90mpi_put_vard_7D_text,                                           &
223                     nf90mpi_put_vard_7D_OneByteInt,   nf90mpi_put_vard_7D_TwoByteInt,   &
224                     nf90mpi_put_vard_7D_FourByteInt,  nf90mpi_put_vard_7D_EightByteInt, &
225                     nf90mpi_put_vard_7D_FourByteReal, nf90mpi_put_vard_7D_EightByteReal
226  end interface ! nf90mpi_put_vard
227
228  interface nf90mpi_get_vard
229    module procedure nf90mpi_get_vard_text,                                              &
230                     nf90mpi_get_vard_OneByteInt,   nf90mpi_get_vard_TwoByteInt,         &
231                     nf90mpi_get_vard_FourByteInt,  nf90mpi_get_vard_EightByteInt,       &
232                     nf90mpi_get_vard_FourByteReal, nf90mpi_get_vard_EightByteReal
233    module procedure nf90mpi_get_vard_1D_text,                                           &
234                     nf90mpi_get_vard_1D_OneByteInt,   nf90mpi_get_vard_1D_TwoByteInt,   &
235                     nf90mpi_get_vard_1D_FourByteInt,  nf90mpi_get_vard_1D_EightByteInt, &
236                     nf90mpi_get_vard_1D_FourByteReal, nf90mpi_get_vard_1D_EightByteReal
237    module procedure nf90mpi_get_vard_2D_text,                                           &
238                     nf90mpi_get_vard_2D_OneByteInt,   nf90mpi_get_vard_2D_TwoByteInt,   &
239                     nf90mpi_get_vard_2D_FourByteInt,  nf90mpi_get_vard_2D_EightByteInt, &
240                     nf90mpi_get_vard_2D_FourByteReal, nf90mpi_get_vard_2D_EightByteReal
241    module procedure nf90mpi_get_vard_3D_text,                                           &
242                     nf90mpi_get_vard_3D_OneByteInt,   nf90mpi_get_vard_3D_TwoByteInt,   &
243                     nf90mpi_get_vard_3D_FourByteInt,  nf90mpi_get_vard_3D_EightByteInt, &
244                     nf90mpi_get_vard_3D_FourByteReal, nf90mpi_get_vard_3D_EightByteReal
245    module procedure nf90mpi_get_vard_4D_text,                                           &
246                     nf90mpi_get_vard_4D_OneByteInt,   nf90mpi_get_vard_4D_TwoByteInt,   &
247                     nf90mpi_get_vard_4D_FourByteInt,  nf90mpi_get_vard_4D_EightByteInt, &
248                     nf90mpi_get_vard_4D_FourByteReal, nf90mpi_get_vard_4D_EightByteReal
249    module procedure nf90mpi_get_vard_5D_text,                                           &
250                     nf90mpi_get_vard_5D_OneByteInt,   nf90mpi_get_vard_5D_TwoByteInt,   &
251                     nf90mpi_get_vard_5D_FourByteInt,  nf90mpi_get_vard_5D_EightByteInt, &
252                     nf90mpi_get_vard_5D_FourByteReal, nf90mpi_get_vard_5D_EightByteReal
253    module procedure nf90mpi_get_vard_6D_text,                                           &
254                     nf90mpi_get_vard_6D_OneByteInt,   nf90mpi_get_vard_6D_TwoByteInt,   &
255                     nf90mpi_get_vard_6D_FourByteInt,  nf90mpi_get_vard_6D_EightByteInt, &
256                     nf90mpi_get_vard_6D_FourByteReal, nf90mpi_get_vard_6D_EightByteReal
257    module procedure nf90mpi_get_vard_7D_text,                                           &
258                     nf90mpi_get_vard_7D_OneByteInt,   nf90mpi_get_vard_7D_TwoByteInt,   &
259                     nf90mpi_get_vard_7D_FourByteInt,  nf90mpi_get_vard_7D_EightByteInt, &
260                     nf90mpi_get_vard_7D_FourByteReal, nf90mpi_get_vard_7D_EightByteReal
261  end interface ! nf90mpi_get_vard
262
263  !
264  ! Collective APIs
265  !
266
267  ! Overloaded variable functions
268  interface nf90mpi_put_var_all
269    module procedure nf90mpi_put_var_text_all,                                                 &
270                     nf90mpi_put_var_OneByteInt_all,      nf90mpi_put_var_TwoByteInt_all,      &
271                     nf90mpi_put_var_FourByteInt_all,     nf90mpi_put_var_EightByteInt_all,    &
272                     nf90mpi_put_var_FourByteReal_all,    nf90mpi_put_var_EightByteReal_all
273    module procedure nf90mpi_put_var_1D_text_all,                                              &
274                     nf90mpi_put_var_1D_OneByteInt_all,   nf90mpi_put_var_1D_TwoByteInt_all,   &
275                     nf90mpi_put_var_1D_FourByteInt_all,  nf90mpi_put_var_1D_EightByteInt_all, &
276                     nf90mpi_put_var_1D_FourByteReal_all, nf90mpi_put_var_1D_EightByteReal_all
277    module procedure nf90mpi_put_var_2D_text_all,                                              &
278                     nf90mpi_put_var_2D_OneByteInt_all,   nf90mpi_put_var_2D_TwoByteInt_all,   &
279                     nf90mpi_put_var_2D_FourByteInt_all,  nf90mpi_put_var_2D_EightByteInt_all, &
280                     nf90mpi_put_var_2D_FourByteReal_all, nf90mpi_put_var_2D_EightByteReal_all
281    module procedure nf90mpi_put_var_3D_text_all,                                              &
282                     nf90mpi_put_var_3D_OneByteInt_all,   nf90mpi_put_var_3D_TwoByteInt_all,   &
283                     nf90mpi_put_var_3D_FourByteInt_all,  nf90mpi_put_var_3D_EightByteInt_all, &
284                     nf90mpi_put_var_3D_FourByteReal_all, nf90mpi_put_var_3D_EightByteReal_all
285    module procedure nf90mpi_put_var_4D_text_all,                                              &
286                     nf90mpi_put_var_4D_OneByteInt_all,   nf90mpi_put_var_4D_TwoByteInt_all,   &
287                     nf90mpi_put_var_4D_FourByteInt_all,  nf90mpi_put_var_4D_EightByteInt_all, &
288                     nf90mpi_put_var_4D_FourByteReal_all, nf90mpi_put_var_4D_EightByteReal_all
289    module procedure nf90mpi_put_var_5D_text_all,                                              &
290                     nf90mpi_put_var_5D_OneByteInt_all,   nf90mpi_put_var_5D_TwoByteInt_all,   &
291                     nf90mpi_put_var_5D_FourByteInt_all,  nf90mpi_put_var_5D_EightByteInt_all, &
292                     nf90mpi_put_var_5D_FourByteReal_all, nf90mpi_put_var_5D_EightByteReal_all
293    module procedure nf90mpi_put_var_6D_text_all,                                              &
294                     nf90mpi_put_var_6D_OneByteInt_all,   nf90mpi_put_var_6D_TwoByteInt_all,   &
295                     nf90mpi_put_var_6D_FourByteInt_all,  nf90mpi_put_var_6D_EightByteInt_all, &
296                     nf90mpi_put_var_6D_FourByteReal_all, nf90mpi_put_var_6D_EightByteReal_all
297    module procedure nf90mpi_put_var_7D_text_all,                                              &
298                     nf90mpi_put_var_7D_OneByteInt_all,   nf90mpi_put_var_7D_TwoByteInt_all,   &
299                     nf90mpi_put_var_7D_FourByteInt_all,  nf90mpi_put_var_7D_EightByteInt_all, &
300                     nf90mpi_put_var_7D_FourByteReal_all, nf90mpi_put_var_7D_EightByteReal_all
301  end interface ! nf90mpi_put_var_all
302
303  interface nf90mpi_get_var_all
304    module procedure nf90mpi_get_var_text_all,                                                 &
305                     nf90mpi_get_var_OneByteInt_all,      nf90mpi_get_var_TwoByteInt_all,      &
306                     nf90mpi_get_var_FourByteInt_all,     nf90mpi_get_var_EightByteInt_all,    &
307                     nf90mpi_get_var_FourByteReal_all,    nf90mpi_get_var_EightByteReal_all
308    module procedure nf90mpi_get_var_1D_text_all,                                              &
309                     nf90mpi_get_var_1D_OneByteInt_all,   nf90mpi_get_var_1D_TwoByteInt_all,   &
310                     nf90mpi_get_var_1D_FourByteInt_all,  nf90mpi_get_var_1D_EightByteInt_all, &
311                     nf90mpi_get_var_1D_FourByteReal_all, nf90mpi_get_var_1D_EightByteReal_all
312    module procedure nf90mpi_get_var_2D_text_all,                                              &
313                     nf90mpi_get_var_2D_OneByteInt_all,   nf90mpi_get_var_2D_TwoByteInt_all,   &
314                     nf90mpi_get_var_2D_FourByteInt_all,  nf90mpi_get_var_2D_EightByteInt_all, &
315                     nf90mpi_get_var_2D_FourByteReal_all, nf90mpi_get_var_2D_EightByteReal_all
316    module procedure nf90mpi_get_var_3D_text_all,                                              &
317                     nf90mpi_get_var_3D_OneByteInt_all,   nf90mpi_get_var_3D_TwoByteInt_all,   &
318                     nf90mpi_get_var_3D_FourByteInt_all,  nf90mpi_get_var_3D_EightByteInt_all, &
319                     nf90mpi_get_var_3D_FourByteReal_all, nf90mpi_get_var_3D_EightByteReal_all
320    module procedure nf90mpi_get_var_4D_text_all,                                              &
321                     nf90mpi_get_var_4D_OneByteInt_all,   nf90mpi_get_var_4D_TwoByteInt_all,   &
322                     nf90mpi_get_var_4D_FourByteInt_all,  nf90mpi_get_var_4D_EightByteInt_all, &
323                     nf90mpi_get_var_4D_FourByteReal_all, nf90mpi_get_var_4D_EightByteReal_all
324    module procedure nf90mpi_get_var_5D_text_all,                                              &
325                     nf90mpi_get_var_5D_OneByteInt_all,   nf90mpi_get_var_5D_TwoByteInt_all,   &
326                     nf90mpi_get_var_5D_FourByteInt_all,  nf90mpi_get_var_5D_EightByteInt_all, &
327                     nf90mpi_get_var_5D_FourByteReal_all, nf90mpi_get_var_5D_EightByteReal_all
328    module procedure nf90mpi_get_var_6D_text_all,                                              &
329                     nf90mpi_get_var_6D_OneByteInt_all,   nf90mpi_get_var_6D_TwoByteInt_all,   &
330                     nf90mpi_get_var_6D_FourByteInt_all,  nf90mpi_get_var_6D_EightByteInt_all, &
331                     nf90mpi_get_var_6D_FourByteReal_all, nf90mpi_get_var_6D_EightByteReal_all
332    module procedure nf90mpi_get_var_7D_text_all,                                              &
333                     nf90mpi_get_var_7D_OneByteInt_all,   nf90mpi_get_var_7D_TwoByteInt_all,   &
334                     nf90mpi_get_var_7D_FourByteInt_all,  nf90mpi_get_var_7D_EightByteInt_all, &
335                     nf90mpi_get_var_7D_FourByteReal_all, nf90mpi_get_var_7D_EightByteReal_all
336  end interface ! nf90mpi_get_var_all
337
338  ! Overloaded variable functions varn
339  interface nf90mpi_put_varn_all
340    module procedure nf90mpi_put_varn_text_all,                                                  &
341                     nf90mpi_put_varn_OneByteInt_all,   nf90mpi_put_varn_TwoByteInt_all,         &
342                     nf90mpi_put_varn_FourByteInt_all,  nf90mpi_put_varn_EightByteInt_all,       &
343                     nf90mpi_put_varn_FourByteReal_all, nf90mpi_put_varn_EightByteReal_all
344    module procedure nf90mpi_put_varn_1D_text_all,                                               &
345                     nf90mpi_put_varn_1D_OneByteInt_all,   nf90mpi_put_varn_1D_TwoByteInt_all,   &
346                     nf90mpi_put_varn_1D_FourByteInt_all,  nf90mpi_put_varn_1D_EightByteInt_all, &
347                     nf90mpi_put_varn_1D_FourByteReal_all, nf90mpi_put_varn_1D_EightByteReal_all
348    module procedure nf90mpi_put_varn_2D_text_all,                                               &
349                     nf90mpi_put_varn_2D_OneByteInt_all,   nf90mpi_put_varn_2D_TwoByteInt_all,   &
350                     nf90mpi_put_varn_2D_FourByteInt_all,  nf90mpi_put_varn_2D_EightByteInt_all, &
351                     nf90mpi_put_varn_2D_FourByteReal_all, nf90mpi_put_varn_2D_EightByteReal_all
352    module procedure nf90mpi_put_varn_3D_text_all,                                               &
353                     nf90mpi_put_varn_3D_OneByteInt_all,   nf90mpi_put_varn_3D_TwoByteInt_all,   &
354                     nf90mpi_put_varn_3D_FourByteInt_all,  nf90mpi_put_varn_3D_EightByteInt_all, &
355                     nf90mpi_put_varn_3D_FourByteReal_all, nf90mpi_put_varn_3D_EightByteReal_all
356    module procedure nf90mpi_put_varn_4D_text_all,                                               &
357                     nf90mpi_put_varn_4D_OneByteInt_all,   nf90mpi_put_varn_4D_TwoByteInt_all,   &
358                     nf90mpi_put_varn_4D_FourByteInt_all,  nf90mpi_put_varn_4D_EightByteInt_all, &
359                     nf90mpi_put_varn_4D_FourByteReal_all, nf90mpi_put_varn_4D_EightByteReal_all
360    module procedure nf90mpi_put_varn_5D_text_all,                                               &
361                     nf90mpi_put_varn_5D_OneByteInt_all,   nf90mpi_put_varn_5D_TwoByteInt_all,   &
362                     nf90mpi_put_varn_5D_FourByteInt_all,  nf90mpi_put_varn_5D_EightByteInt_all, &
363                     nf90mpi_put_varn_5D_FourByteReal_all, nf90mpi_put_varn_5D_EightByteReal_all
364    module procedure nf90mpi_put_varn_6D_text_all,                                               &
365                     nf90mpi_put_varn_6D_OneByteInt_all,   nf90mpi_put_varn_6D_TwoByteInt_all,   &
366                     nf90mpi_put_varn_6D_FourByteInt_all,  nf90mpi_put_varn_6D_EightByteInt_all, &
367                     nf90mpi_put_varn_6D_FourByteReal_all, nf90mpi_put_varn_6D_EightByteReal_all
368    module procedure nf90mpi_put_varn_7D_text_all,                                               &
369                     nf90mpi_put_varn_7D_OneByteInt_all,   nf90mpi_put_varn_7D_TwoByteInt_all,   &
370                     nf90mpi_put_varn_7D_FourByteInt_all,  nf90mpi_put_varn_7D_EightByteInt_all, &
371                     nf90mpi_put_varn_7D_FourByteReal_all, nf90mpi_put_varn_7D_EightByteReal_all
372  end interface ! nf90mpi_put_varn_all
373
374  interface nf90mpi_get_varn_all
375    module procedure nf90mpi_get_varn_text_all,                                                  &
376                     nf90mpi_get_varn_OneByteInt_all,   nf90mpi_get_varn_TwoByteInt_all,         &
377                     nf90mpi_get_varn_FourByteInt_all,  nf90mpi_get_varn_EightByteInt_all,       &
378                     nf90mpi_get_varn_FourByteReal_all, nf90mpi_get_varn_EightByteReal_all
379    module procedure nf90mpi_get_varn_1D_text_all,                                               &
380                     nf90mpi_get_varn_1D_OneByteInt_all,   nf90mpi_get_varn_1D_TwoByteInt_all,   &
381                     nf90mpi_get_varn_1D_FourByteInt_all,  nf90mpi_get_varn_1D_EightByteInt_all, &
382                     nf90mpi_get_varn_1D_FourByteReal_all, nf90mpi_get_varn_1D_EightByteReal_all
383    module procedure nf90mpi_get_varn_2D_text_all,                                               &
384                     nf90mpi_get_varn_2D_OneByteInt_all,   nf90mpi_get_varn_2D_TwoByteInt_all,   &
385                     nf90mpi_get_varn_2D_FourByteInt_all,  nf90mpi_get_varn_2D_EightByteInt_all, &
386                     nf90mpi_get_varn_2D_FourByteReal_all, nf90mpi_get_varn_2D_EightByteReal_all
387    module procedure nf90mpi_get_varn_3D_text_all,                                               &
388                     nf90mpi_get_varn_3D_OneByteInt_all,   nf90mpi_get_varn_3D_TwoByteInt_all,   &
389                     nf90mpi_get_varn_3D_FourByteInt_all,  nf90mpi_get_varn_3D_EightByteInt_all, &
390                     nf90mpi_get_varn_3D_FourByteReal_all, nf90mpi_get_varn_3D_EightByteReal_all
391    module procedure nf90mpi_get_varn_4D_text_all,                                               &
392                     nf90mpi_get_varn_4D_OneByteInt_all,   nf90mpi_get_varn_4D_TwoByteInt_all,   &
393                     nf90mpi_get_varn_4D_FourByteInt_all,  nf90mpi_get_varn_4D_EightByteInt_all, &
394                     nf90mpi_get_varn_4D_FourByteReal_all, nf90mpi_get_varn_4D_EightByteReal_all
395    module procedure nf90mpi_get_varn_5D_text_all,                                               &
396                     nf90mpi_get_varn_5D_OneByteInt_all,   nf90mpi_get_varn_5D_TwoByteInt_all,   &
397                     nf90mpi_get_varn_5D_FourByteInt_all,  nf90mpi_get_varn_5D_EightByteInt_all, &
398                     nf90mpi_get_varn_5D_FourByteReal_all, nf90mpi_get_varn_5D_EightByteReal_all
399    module procedure nf90mpi_get_varn_6D_text_all,                                               &
400                     nf90mpi_get_varn_6D_OneByteInt_all,   nf90mpi_get_varn_6D_TwoByteInt_all,   &
401                     nf90mpi_get_varn_6D_FourByteInt_all,  nf90mpi_get_varn_6D_EightByteInt_all, &
402                     nf90mpi_get_varn_6D_FourByteReal_all, nf90mpi_get_varn_6D_EightByteReal_all
403    module procedure nf90mpi_get_varn_7D_text_all,                                               &
404                     nf90mpi_get_varn_7D_OneByteInt_all,   nf90mpi_get_varn_7D_TwoByteInt_all,   &
405                     nf90mpi_get_varn_7D_FourByteInt_all,  nf90mpi_get_varn_7D_EightByteInt_all, &
406                     nf90mpi_get_varn_7D_FourByteReal_all, nf90mpi_get_varn_7D_EightByteReal_all
407  end interface ! nf90mpi_get_varn_all
408
409  ! Overloaded variable functions vard
410  ! Overloaded variable functions vard
411  interface nf90mpi_put_vard_all
412    module procedure nf90mpi_put_vard_text_all,                                                  &
413                     nf90mpi_put_vard_OneByteInt_all,      nf90mpi_put_vard_TwoByteInt_all,      &
414                     nf90mpi_put_vard_FourByteInt_all,     nf90mpi_put_vard_EightByteInt_all,    &
415                     nf90mpi_put_vard_FourByteReal_all,    nf90mpi_put_vard_EightByteReal_all
416    module procedure nf90mpi_put_vard_1D_text_all,                                               &
417                     nf90mpi_put_vard_1D_OneByteInt_all,   nf90mpi_put_vard_1D_TwoByteInt_all,   &
418                     nf90mpi_put_vard_1D_FourByteInt_all,  nf90mpi_put_vard_1D_EightByteInt_all, &
419                     nf90mpi_put_vard_1D_FourByteReal_all, nf90mpi_put_vard_1D_EightByteReal_all
420    module procedure nf90mpi_put_vard_2D_text_all,                                               &
421                     nf90mpi_put_vard_2D_OneByteInt_all,   nf90mpi_put_vard_2D_TwoByteInt_all,   &
422                     nf90mpi_put_vard_2D_FourByteInt_all,  nf90mpi_put_vard_2D_EightByteInt_all, &
423                     nf90mpi_put_vard_2D_FourByteReal_all, nf90mpi_put_vard_2D_EightByteReal_all
424    module procedure nf90mpi_put_vard_3D_text_all,                                               &
425                     nf90mpi_put_vard_3D_OneByteInt_all,   nf90mpi_put_vard_3D_TwoByteInt_all,   &
426                     nf90mpi_put_vard_3D_FourByteInt_all,  nf90mpi_put_vard_3D_EightByteInt_all, &
427                     nf90mpi_put_vard_3D_FourByteReal_all, nf90mpi_put_vard_3D_EightByteReal_all
428    module procedure nf90mpi_put_vard_4D_text_all,                                               &
429                     nf90mpi_put_vard_4D_OneByteInt_all,   nf90mpi_put_vard_4D_TwoByteInt_all,   &
430                     nf90mpi_put_vard_4D_FourByteInt_all,  nf90mpi_put_vard_4D_EightByteInt_all, &
431                     nf90mpi_put_vard_4D_FourByteReal_all, nf90mpi_put_vard_4D_EightByteReal_all
432    module procedure nf90mpi_put_vard_5D_text_all,                                               &
433                     nf90mpi_put_vard_5D_OneByteInt_all,   nf90mpi_put_vard_5D_TwoByteInt_all,   &
434                     nf90mpi_put_vard_5D_FourByteInt_all,  nf90mpi_put_vard_5D_EightByteInt_all, &
435                     nf90mpi_put_vard_5D_FourByteReal_all, nf90mpi_put_vard_5D_EightByteReal_all
436    module procedure nf90mpi_put_vard_6D_text_all,                                               &
437                     nf90mpi_put_vard_6D_OneByteInt_all,   nf90mpi_put_vard_6D_TwoByteInt_all,   &
438                     nf90mpi_put_vard_6D_FourByteInt_all,  nf90mpi_put_vard_6D_EightByteInt_all, &
439                     nf90mpi_put_vard_6D_FourByteReal_all, nf90mpi_put_vard_6D_EightByteReal_all
440    module procedure nf90mpi_put_vard_7D_text_all,                                               &
441                     nf90mpi_put_vard_7D_OneByteInt_all,   nf90mpi_put_vard_7D_TwoByteInt_all,   &
442                     nf90mpi_put_vard_7D_FourByteInt_all,  nf90mpi_put_vard_7D_EightByteInt_all, &
443                     nf90mpi_put_vard_7D_FourByteReal_all, nf90mpi_put_vard_7D_EightByteReal_all
444  end interface ! nf90mpi_put_vard_all
445
446  interface nf90mpi_get_vard_all
447    module procedure nf90mpi_get_vard_text_all,                                                  &
448                     nf90mpi_get_vard_OneByteInt_all,      nf90mpi_get_vard_TwoByteInt_all,      &
449                     nf90mpi_get_vard_FourByteInt_all,     nf90mpi_get_vard_EightByteInt_all,    &
450                     nf90mpi_get_vard_FourByteReal_all,    nf90mpi_get_vard_EightByteReal_all
451    module procedure nf90mpi_get_vard_1D_text_all,                                               &
452                     nf90mpi_get_vard_1D_OneByteInt_all,   nf90mpi_get_vard_1D_TwoByteInt_all,   &
453                     nf90mpi_get_vard_1D_FourByteInt_all,  nf90mpi_get_vard_1D_EightByteInt_all, &
454                     nf90mpi_get_vard_1D_FourByteReal_all, nf90mpi_get_vard_1D_EightByteReal_all
455    module procedure nf90mpi_get_vard_2D_text_all,                                               &
456                     nf90mpi_get_vard_2D_OneByteInt_all,   nf90mpi_get_vard_2D_TwoByteInt_all,   &
457                     nf90mpi_get_vard_2D_FourByteInt_all,  nf90mpi_get_vard_2D_EightByteInt_all, &
458                     nf90mpi_get_vard_2D_FourByteReal_all, nf90mpi_get_vard_2D_EightByteReal_all
459    module procedure nf90mpi_get_vard_3D_text_all,                                               &
460                     nf90mpi_get_vard_3D_OneByteInt_all,   nf90mpi_get_vard_3D_TwoByteInt_all,   &
461                     nf90mpi_get_vard_3D_FourByteInt_all,  nf90mpi_get_vard_3D_EightByteInt_all, &
462                     nf90mpi_get_vard_3D_FourByteReal_all, nf90mpi_get_vard_3D_EightByteReal_all
463    module procedure nf90mpi_get_vard_4D_text_all,                                               &
464                     nf90mpi_get_vard_4D_OneByteInt_all,   nf90mpi_get_vard_4D_TwoByteInt_all,   &
465                     nf90mpi_get_vard_4D_FourByteInt_all,  nf90mpi_get_vard_4D_EightByteInt_all, &
466                     nf90mpi_get_vard_4D_FourByteReal_all, nf90mpi_get_vard_4D_EightByteReal_all
467    module procedure nf90mpi_get_vard_5D_text_all,                                               &
468                     nf90mpi_get_vard_5D_OneByteInt_all,   nf90mpi_get_vard_5D_TwoByteInt_all,   &
469                     nf90mpi_get_vard_5D_FourByteInt_all,  nf90mpi_get_vard_5D_EightByteInt_all, &
470                     nf90mpi_get_vard_5D_FourByteReal_all, nf90mpi_get_vard_5D_EightByteReal_all
471    module procedure nf90mpi_get_vard_6D_text_all,                                               &
472                     nf90mpi_get_vard_6D_OneByteInt_all,   nf90mpi_get_vard_6D_TwoByteInt_all,   &
473                     nf90mpi_get_vard_6D_FourByteInt_all,  nf90mpi_get_vard_6D_EightByteInt_all, &
474                     nf90mpi_get_vard_6D_FourByteReal_all, nf90mpi_get_vard_6D_EightByteReal_all
475    module procedure nf90mpi_get_vard_7D_text_all,                                               &
476                     nf90mpi_get_vard_7D_OneByteInt_all,   nf90mpi_get_vard_7D_TwoByteInt_all,   &
477                     nf90mpi_get_vard_7D_FourByteInt_all,  nf90mpi_get_vard_7D_EightByteInt_all, &
478                     nf90mpi_get_vard_7D_FourByteReal_all, nf90mpi_get_vard_7D_EightByteReal_all
479  end interface ! nf90mpi_get_vard_all
480
481  !
482  ! Nonblocking APIs
483  !
484  interface nf90mpi_iput_var
485    module procedure nf90mpi_iput_var_text,                                              &
486                     nf90mpi_iput_var_OneByteInt,   nf90mpi_iput_var_TwoByteInt,         &
487                     nf90mpi_iput_var_FourByteInt,  nf90mpi_iput_var_EightByteInt,       &
488                     nf90mpi_iput_var_FourByteReal, nf90mpi_iput_var_EightByteReal
489    module procedure nf90mpi_iput_var_1D_text,                                           &
490                     nf90mpi_iput_var_1D_OneByteInt,   nf90mpi_iput_var_1D_TwoByteInt,   &
491                     nf90mpi_iput_var_1D_FourByteInt,  nf90mpi_iput_var_1D_EightByteInt, &
492                     nf90mpi_iput_var_1D_FourByteReal, nf90mpi_iput_var_1D_EightByteReal
493    module procedure nf90mpi_iput_var_2D_text,                                           &
494                     nf90mpi_iput_var_2D_OneByteInt,   nf90mpi_iput_var_2D_TwoByteInt,   &
495                     nf90mpi_iput_var_2D_FourByteInt,  nf90mpi_iput_var_2D_EightByteInt, &
496                     nf90mpi_iput_var_2D_FourByteReal, nf90mpi_iput_var_2D_EightByteReal
497    module procedure nf90mpi_iput_var_3D_text,                                           &
498                     nf90mpi_iput_var_3D_OneByteInt,   nf90mpi_iput_var_3D_TwoByteInt,   &
499                     nf90mpi_iput_var_3D_FourByteInt,  nf90mpi_iput_var_3D_EightByteInt, &
500                     nf90mpi_iput_var_3D_FourByteReal, nf90mpi_iput_var_3D_EightByteReal
501    module procedure nf90mpi_iput_var_4D_text,                                           &
502                     nf90mpi_iput_var_4D_OneByteInt,   nf90mpi_iput_var_4D_TwoByteInt,   &
503                     nf90mpi_iput_var_4D_FourByteInt,  nf90mpi_iput_var_4D_EightByteInt, &
504                     nf90mpi_iput_var_4D_FourByteReal, nf90mpi_iput_var_4D_EightByteReal
505    module procedure nf90mpi_iput_var_5D_text,                                           &
506                     nf90mpi_iput_var_5D_OneByteInt,   nf90mpi_iput_var_5D_TwoByteInt,   &
507                     nf90mpi_iput_var_5D_FourByteInt,  nf90mpi_iput_var_5D_EightByteInt, &
508                     nf90mpi_iput_var_5D_FourByteReal, nf90mpi_iput_var_5D_EightByteReal
509    module procedure nf90mpi_iput_var_6D_text,                                           &
510                     nf90mpi_iput_var_6D_OneByteInt,   nf90mpi_iput_var_6D_TwoByteInt,   &
511                     nf90mpi_iput_var_6D_FourByteInt,  nf90mpi_iput_var_6D_EightByteInt, &
512                     nf90mpi_iput_var_6D_FourByteReal, nf90mpi_iput_var_6D_EightByteReal
513    module procedure nf90mpi_iput_var_7D_text,                                           &
514                     nf90mpi_iput_var_7D_OneByteInt,   nf90mpi_iput_var_7D_TwoByteInt,   &
515                     nf90mpi_iput_var_7D_FourByteInt,  nf90mpi_iput_var_7D_EightByteInt, &
516                     nf90mpi_iput_var_7D_FourByteReal, nf90mpi_iput_var_7D_EightByteReal
517  end interface ! nf90mpi_iput_var
518
519  interface nf90mpi_iget_var
520    module procedure nf90mpi_iget_var_text,                                              &
521                     nf90mpi_iget_var_OneByteInt,   nf90mpi_iget_var_TwoByteInt,         &
522                     nf90mpi_iget_var_FourByteInt,  nf90mpi_iget_var_EightByteInt,       &
523                     nf90mpi_iget_var_FourByteReal, nf90mpi_iget_var_EightByteReal
524    module procedure nf90mpi_iget_var_1D_text,                                           &
525                     nf90mpi_iget_var_1D_OneByteInt,   nf90mpi_iget_var_1D_TwoByteInt,   &
526                     nf90mpi_iget_var_1D_FourByteInt,  nf90mpi_iget_var_1D_EightByteInt, &
527                     nf90mpi_iget_var_1D_FourByteReal, nf90mpi_iget_var_1D_EightByteReal
528    module procedure nf90mpi_iget_var_2D_text,                                           &
529                     nf90mpi_iget_var_2D_OneByteInt,   nf90mpi_iget_var_2D_TwoByteInt,   &
530                     nf90mpi_iget_var_2D_FourByteInt,  nf90mpi_iget_var_2D_EightByteInt, &
531                     nf90mpi_iget_var_2D_FourByteReal, nf90mpi_iget_var_2D_EightByteReal
532    module procedure nf90mpi_iget_var_3D_text,                                           &
533                     nf90mpi_iget_var_3D_OneByteInt,   nf90mpi_iget_var_3D_TwoByteInt,   &
534                     nf90mpi_iget_var_3D_FourByteInt,  nf90mpi_iget_var_3D_EightByteInt, &
535                     nf90mpi_iget_var_3D_FourByteReal, nf90mpi_iget_var_3D_EightByteReal
536    module procedure nf90mpi_iget_var_4D_text,                                           &
537                     nf90mpi_iget_var_4D_OneByteInt,   nf90mpi_iget_var_4D_TwoByteInt,   &
538                     nf90mpi_iget_var_4D_FourByteInt,  nf90mpi_iget_var_4D_EightByteInt, &
539                     nf90mpi_iget_var_4D_FourByteReal, nf90mpi_iget_var_4D_EightByteReal
540    module procedure nf90mpi_iget_var_5D_text,                                           &
541                     nf90mpi_iget_var_5D_OneByteInt,   nf90mpi_iget_var_5D_TwoByteInt,   &
542                     nf90mpi_iget_var_5D_FourByteInt,  nf90mpi_iget_var_5D_EightByteInt, &
543                     nf90mpi_iget_var_5D_FourByteReal, nf90mpi_iget_var_5D_EightByteReal
544    module procedure nf90mpi_iget_var_6D_text,                                           &
545                     nf90mpi_iget_var_6D_OneByteInt,   nf90mpi_iget_var_6D_TwoByteInt,   &
546                     nf90mpi_iget_var_6D_FourByteInt,  nf90mpi_iget_var_6D_EightByteInt, &
547                     nf90mpi_iget_var_6D_FourByteReal, nf90mpi_iget_var_6D_EightByteReal
548    module procedure nf90mpi_iget_var_7D_text,                                           &
549                     nf90mpi_iget_var_7D_OneByteInt,   nf90mpi_iget_var_7D_TwoByteInt,   &
550                     nf90mpi_iget_var_7D_FourByteInt,  nf90mpi_iget_var_7D_EightByteInt, &
551                     nf90mpi_iget_var_7D_FourByteReal, nf90mpi_iget_var_7D_EightByteReal
552  end interface ! nf90mpi_iget_var
553
554  interface nf90mpi_iput_varn
555    module procedure nf90mpi_iput_varn_text,                                               &
556                     nf90mpi_iput_varn_OneByteInt,   nf90mpi_iput_varn_TwoByteInt,         &
557                     nf90mpi_iput_varn_FourByteInt,  nf90mpi_iput_varn_EightByteInt,       &
558                     nf90mpi_iput_varn_FourByteReal, nf90mpi_iput_varn_EightByteReal
559    module procedure nf90mpi_iput_varn_1D_text,                                            &
560                     nf90mpi_iput_varn_1D_OneByteInt,   nf90mpi_iput_varn_1D_TwoByteInt,   &
561                     nf90mpi_iput_varn_1D_FourByteInt,  nf90mpi_iput_varn_1D_EightByteInt, &
562                     nf90mpi_iput_varn_1D_FourByteReal, nf90mpi_iput_varn_1D_EightByteReal
563    module procedure nf90mpi_iput_varn_2D_text,                                            &
564                     nf90mpi_iput_varn_2D_OneByteInt,   nf90mpi_iput_varn_2D_TwoByteInt,   &
565                     nf90mpi_iput_varn_2D_FourByteInt,  nf90mpi_iput_varn_2D_EightByteInt, &
566                     nf90mpi_iput_varn_2D_FourByteReal, nf90mpi_iput_varn_2D_EightByteReal
567    module procedure nf90mpi_iput_varn_3D_text,                                            &
568                     nf90mpi_iput_varn_3D_OneByteInt,   nf90mpi_iput_varn_3D_TwoByteInt,   &
569                     nf90mpi_iput_varn_3D_FourByteInt,  nf90mpi_iput_varn_3D_EightByteInt, &
570                     nf90mpi_iput_varn_3D_FourByteReal, nf90mpi_iput_varn_3D_EightByteReal
571    module procedure nf90mpi_iput_varn_4D_text,                                            &
572                     nf90mpi_iput_varn_4D_OneByteInt,   nf90mpi_iput_varn_4D_TwoByteInt,   &
573                     nf90mpi_iput_varn_4D_FourByteInt,  nf90mpi_iput_varn_4D_EightByteInt, &
574                     nf90mpi_iput_varn_4D_FourByteReal, nf90mpi_iput_varn_4D_EightByteReal
575    module procedure nf90mpi_iput_varn_5D_text,                                            &
576                     nf90mpi_iput_varn_5D_OneByteInt,   nf90mpi_iput_varn_5D_TwoByteInt,   &
577                     nf90mpi_iput_varn_5D_FourByteInt,  nf90mpi_iput_varn_5D_EightByteInt, &
578                     nf90mpi_iput_varn_5D_FourByteReal, nf90mpi_iput_varn_5D_EightByteReal
579    module procedure nf90mpi_iput_varn_6D_text,                                            &
580                     nf90mpi_iput_varn_6D_OneByteInt,   nf90mpi_iput_varn_6D_TwoByteInt,   &
581                     nf90mpi_iput_varn_6D_FourByteInt,  nf90mpi_iput_varn_6D_EightByteInt, &
582                     nf90mpi_iput_varn_6D_FourByteReal, nf90mpi_iput_varn_6D_EightByteReal
583    module procedure nf90mpi_iput_varn_7D_text,                                            &
584                     nf90mpi_iput_varn_7D_OneByteInt,   nf90mpi_iput_varn_7D_TwoByteInt,   &
585                     nf90mpi_iput_varn_7D_FourByteInt,  nf90mpi_iput_varn_7D_EightByteInt, &
586                     nf90mpi_iput_varn_7D_FourByteReal, nf90mpi_iput_varn_7D_EightByteReal
587  end interface ! nf90mpi_iput_varn
588
589  interface nf90mpi_iget_varn
590    module procedure nf90mpi_iget_varn_text,                                               &
591                     nf90mpi_iget_varn_OneByteInt,   nf90mpi_iget_varn_TwoByteInt,         &
592                     nf90mpi_iget_varn_FourByteInt,  nf90mpi_iget_varn_EightByteInt,       &
593                     nf90mpi_iget_varn_FourByteReal, nf90mpi_iget_varn_EightByteReal
594    module procedure nf90mpi_iget_varn_1D_text,                                            &
595                     nf90mpi_iget_varn_1D_OneByteInt,   nf90mpi_iget_varn_1D_TwoByteInt,   &
596                     nf90mpi_iget_varn_1D_FourByteInt,  nf90mpi_iget_varn_1D_EightByteInt, &
597                     nf90mpi_iget_varn_1D_FourByteReal, nf90mpi_iget_varn_1D_EightByteReal
598    module procedure nf90mpi_iget_varn_2D_text,                                            &
599                     nf90mpi_iget_varn_2D_OneByteInt,   nf90mpi_iget_varn_2D_TwoByteInt,   &
600                     nf90mpi_iget_varn_2D_FourByteInt,  nf90mpi_iget_varn_2D_EightByteInt, &
601                     nf90mpi_iget_varn_2D_FourByteReal, nf90mpi_iget_varn_2D_EightByteReal
602    module procedure nf90mpi_iget_varn_3D_text,                                            &
603                     nf90mpi_iget_varn_3D_OneByteInt,   nf90mpi_iget_varn_3D_TwoByteInt,   &
604                     nf90mpi_iget_varn_3D_FourByteInt,  nf90mpi_iget_varn_3D_EightByteInt, &
605                     nf90mpi_iget_varn_3D_FourByteReal, nf90mpi_iget_varn_3D_EightByteReal
606    module procedure nf90mpi_iget_varn_4D_text,                                            &
607                     nf90mpi_iget_varn_4D_OneByteInt,   nf90mpi_iget_varn_4D_TwoByteInt,   &
608                     nf90mpi_iget_varn_4D_FourByteInt,  nf90mpi_iget_varn_4D_EightByteInt, &
609                     nf90mpi_iget_varn_4D_FourByteReal, nf90mpi_iget_varn_4D_EightByteReal
610    module procedure nf90mpi_iget_varn_5D_text,                                            &
611                     nf90mpi_iget_varn_5D_OneByteInt,   nf90mpi_iget_varn_5D_TwoByteInt,   &
612                     nf90mpi_iget_varn_5D_FourByteInt,  nf90mpi_iget_varn_5D_EightByteInt, &
613                     nf90mpi_iget_varn_5D_FourByteReal, nf90mpi_iget_varn_5D_EightByteReal
614    module procedure nf90mpi_iget_varn_6D_text,                                            &
615                     nf90mpi_iget_varn_6D_OneByteInt,   nf90mpi_iget_varn_6D_TwoByteInt,   &
616                     nf90mpi_iget_varn_6D_FourByteInt,  nf90mpi_iget_varn_6D_EightByteInt, &
617                     nf90mpi_iget_varn_6D_FourByteReal, nf90mpi_iget_varn_6D_EightByteReal
618    module procedure nf90mpi_iget_varn_7D_text,                                            &
619                     nf90mpi_iget_varn_7D_OneByteInt,   nf90mpi_iget_varn_7D_TwoByteInt,   &
620                     nf90mpi_iget_varn_7D_FourByteInt,  nf90mpi_iget_varn_7D_EightByteInt, &
621                     nf90mpi_iget_varn_7D_FourByteReal, nf90mpi_iget_varn_7D_EightByteReal
622  end interface ! nf90mpi_iget_varn
623
624  interface nf90mpi_bput_var
625    module procedure nf90mpi_bput_var_text,                                              &
626                     nf90mpi_bput_var_OneByteInt,   nf90mpi_bput_var_TwoByteInt,         &
627                     nf90mpi_bput_var_FourByteInt,  nf90mpi_bput_var_EightByteInt,       &
628                     nf90mpi_bput_var_FourByteReal, nf90mpi_bput_var_EightByteReal
629    module procedure nf90mpi_bput_var_1D_text,                                           &
630                     nf90mpi_bput_var_1D_OneByteInt,   nf90mpi_bput_var_1D_TwoByteInt,   &
631                     nf90mpi_bput_var_1D_FourByteInt,  nf90mpi_bput_var_1D_EightByteInt, &
632                     nf90mpi_bput_var_1D_FourByteReal, nf90mpi_bput_var_1D_EightByteReal
633    module procedure nf90mpi_bput_var_2D_text,                                           &
634                     nf90mpi_bput_var_2D_OneByteInt,   nf90mpi_bput_var_2D_TwoByteInt,   &
635                     nf90mpi_bput_var_2D_FourByteInt,  nf90mpi_bput_var_2D_EightByteInt, &
636                     nf90mpi_bput_var_2D_FourByteReal, nf90mpi_bput_var_2D_EightByteReal
637    module procedure nf90mpi_bput_var_3D_text,                                           &
638                     nf90mpi_bput_var_3D_OneByteInt,   nf90mpi_bput_var_3D_TwoByteInt,   &
639                     nf90mpi_bput_var_3D_FourByteInt,  nf90mpi_bput_var_3D_EightByteInt, &
640                     nf90mpi_bput_var_3D_FourByteReal, nf90mpi_bput_var_3D_EightByteReal
641    module procedure nf90mpi_bput_var_4D_text,                                           &
642                     nf90mpi_bput_var_4D_OneByteInt,   nf90mpi_bput_var_4D_TwoByteInt,   &
643                     nf90mpi_bput_var_4D_FourByteInt,  nf90mpi_bput_var_4D_EightByteInt, &
644                     nf90mpi_bput_var_4D_FourByteReal, nf90mpi_bput_var_4D_EightByteReal
645    module procedure nf90mpi_bput_var_5D_text,                                           &
646                     nf90mpi_bput_var_5D_OneByteInt,   nf90mpi_bput_var_5D_TwoByteInt,   &
647                     nf90mpi_bput_var_5D_FourByteInt,  nf90mpi_bput_var_5D_EightByteInt, &
648                     nf90mpi_bput_var_5D_FourByteReal, nf90mpi_bput_var_5D_EightByteReal
649    module procedure nf90mpi_bput_var_6D_text,                                           &
650                     nf90mpi_bput_var_6D_OneByteInt,   nf90mpi_bput_var_6D_TwoByteInt,   &
651                     nf90mpi_bput_var_6D_FourByteInt,  nf90mpi_bput_var_6D_EightByteInt, &
652                     nf90mpi_bput_var_6D_FourByteReal, nf90mpi_bput_var_6D_EightByteReal
653    module procedure nf90mpi_bput_var_7D_text,                                           &
654                     nf90mpi_bput_var_7D_OneByteInt,   nf90mpi_bput_var_7D_TwoByteInt,   &
655                     nf90mpi_bput_var_7D_FourByteInt,  nf90mpi_bput_var_7D_EightByteInt, &
656                     nf90mpi_bput_var_7D_FourByteReal, nf90mpi_bput_var_7D_EightByteReal
657  end interface ! nf90mpi_bput_var
658
659  interface nf90mpi_bput_varn
660    module procedure nf90mpi_bput_varn_text,                                               &
661                     nf90mpi_bput_varn_OneByteInt,   nf90mpi_bput_varn_TwoByteInt,         &
662                     nf90mpi_bput_varn_FourByteInt,  nf90mpi_bput_varn_EightByteInt,       &
663                     nf90mpi_bput_varn_FourByteReal, nf90mpi_bput_varn_EightByteReal
664    module procedure nf90mpi_bput_varn_1D_text,                                            &
665                     nf90mpi_bput_varn_1D_OneByteInt,   nf90mpi_bput_varn_1D_TwoByteInt,   &
666                     nf90mpi_bput_varn_1D_FourByteInt,  nf90mpi_bput_varn_1D_EightByteInt, &
667                     nf90mpi_bput_varn_1D_FourByteReal, nf90mpi_bput_varn_1D_EightByteReal
668    module procedure nf90mpi_bput_varn_2D_text,                                            &
669                     nf90mpi_bput_varn_2D_OneByteInt,   nf90mpi_bput_varn_2D_TwoByteInt,   &
670                     nf90mpi_bput_varn_2D_FourByteInt,  nf90mpi_bput_varn_2D_EightByteInt, &
671                     nf90mpi_bput_varn_2D_FourByteReal, nf90mpi_bput_varn_2D_EightByteReal
672    module procedure nf90mpi_bput_varn_3D_text,                                            &
673                     nf90mpi_bput_varn_3D_OneByteInt,   nf90mpi_bput_varn_3D_TwoByteInt,   &
674                     nf90mpi_bput_varn_3D_FourByteInt,  nf90mpi_bput_varn_3D_EightByteInt, &
675                     nf90mpi_bput_varn_3D_FourByteReal, nf90mpi_bput_varn_3D_EightByteReal
676    module procedure nf90mpi_bput_varn_4D_text,                                            &
677                     nf90mpi_bput_varn_4D_OneByteInt,   nf90mpi_bput_varn_4D_TwoByteInt,   &
678                     nf90mpi_bput_varn_4D_FourByteInt,  nf90mpi_bput_varn_4D_EightByteInt, &
679                     nf90mpi_bput_varn_4D_FourByteReal, nf90mpi_bput_varn_4D_EightByteReal
680    module procedure nf90mpi_bput_varn_5D_text,                                            &
681                     nf90mpi_bput_varn_5D_OneByteInt,   nf90mpi_bput_varn_5D_TwoByteInt,   &
682                     nf90mpi_bput_varn_5D_FourByteInt,  nf90mpi_bput_varn_5D_EightByteInt, &
683                     nf90mpi_bput_varn_5D_FourByteReal, nf90mpi_bput_varn_5D_EightByteReal
684    module procedure nf90mpi_bput_varn_6D_text,                                            &
685                     nf90mpi_bput_varn_6D_OneByteInt,   nf90mpi_bput_varn_6D_TwoByteInt,   &
686                     nf90mpi_bput_varn_6D_FourByteInt,  nf90mpi_bput_varn_6D_EightByteInt, &
687                     nf90mpi_bput_varn_6D_FourByteReal, nf90mpi_bput_varn_6D_EightByteReal
688    module procedure nf90mpi_bput_varn_7D_text,                                            &
689                     nf90mpi_bput_varn_7D_OneByteInt,   nf90mpi_bput_varn_7D_TwoByteInt,   &
690                     nf90mpi_bput_varn_7D_FourByteInt,  nf90mpi_bput_varn_7D_EightByteInt, &
691                     nf90mpi_bput_varn_7D_FourByteReal, nf90mpi_bput_varn_7D_EightByteReal
692  end interface ! nf90mpi_bput_varn
693
694