<div dir="ltr">Hello, Fortran experts,<div>  I am a little puzzled by MPI-3.1 Chapter 2.5.4,</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>







All named constants, with the exceptions noted below for Fortran, can be used in</div><div>initialization expressions or assignments, but not necessarily in array declarations or as</div><div>labels in C switch or Fortran select/case statements. 







This implies named constants</div><div>to be link-time but not necessarily compile-time constants.</div></blockquote><div><br></div><div> Then in F08, should MPI_INTEGER be declared as a parameter variable?  If no, then I get an error when compiling this initialization expression with gfortran</div><div>          type(MPI_Datatype) :: dtype = MPI_INTEGER</div><div><br></div><div>    Error: Parameter 'mpi_integer' at (1) has not been declared or is a variable, which does not reduce to a constant expression<br></div><div><br></div><div>If yes, then of course I can use MPI_INTEGER in Fortran select/case.</div><div><br></div><div>Another question is what is the meaning of "link-time constants". I could not find in MPI. Does it mean I can use MPI_INTEGER after main before MPI_Init?</div><div><br><div><div class="gmail_signature"><div>Thank you!</div><div><br></div><div dir="ltr">--Junchao Zhang</div></div></div>
</div></div>