2012-05-10 3 views
8

¿Es posible hacer que la precisión de una variable en sí misma sea una variable que se definirá en un tiempo de ejecución? decir que, si intento compilar:Fortran: ajuste tipo/precisión de una variable en tiempo de ejecución

 SUBROUTINE FOO(VARIABLE, PRECISION_VALUE) 

     IMPLICIT NONE 

     INTEGER(4) :: PRECISION_VALUE 
     INTEGER(PRECISION_VALUE) :: VARIABLE 

     RETURN 
     END 

la salida del compilador es:

error #6683: A kind type parameter must be a compile-time constant. [PRECISION_VALUE] 
      INTEGER(PRECISION_VALUE) :: VARIABLE 
    --------------^ 
    compilation aborted for trial.f (code 1) 

De todos modos alrededor de ella? Entiendo que no se puede usar ningún valor arbitrario para KIND, pero esa no es mi preocupación en esta pregunta.

+4

Quizás http://stackoverflow.com/questions/2560182/fortran-determine-variable-type o http://stackoverflow.com/questions/2257248/how-to-write-wrapper-for-allocate ayudarán con que quieres hacer. –

Respuesta

11

No, no es posible, tipo, tipo y rango deben ser conocidos. Sin embargo, puede definir interfaces genéricas de subrutinas con implementaciones para todos los tipos que espera pasar a una rutina en tiempo de ejecución.

Cuestiones relacionadas