2012-05-10 13 views
8

Czy jest możliwe, aby precyzja samej zmiennej była zmienną, która zostanie zdefiniowana w czasie wykonywania? Say, gdy próbuję skompilować:Fortran - ustawienie rodzaju/precyzji zmiennej w czasie wykonywania

 SUBROUTINE FOO(VARIABLE, PRECISION_VALUE) 

     IMPLICIT NONE 

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

     RETURN 
     END 

wyjście Kompilator:

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) 

Zresztą wokół niego? Rozumiem, że żadna arbitralna wartość nie może być użyta dla KIND, ale to nie jest moja sprawa w tym pytaniu.

+4

Być może http://stackoverflow.com/questions/2560182/fortran-determine-variable-type lub http://stackoverflow.com/questions/2257248/how-to-write-wrapper- for-allocate pomoże z co chcesz robić. –

Odpowiedz

11

Nie, nie jest to możliwe, należy podać typ, rodzaj i stopień. Można jednak zdefiniować ogólne interfejsy podprogramów z implementacjami dla wszystkich typów, które mają zostać przekazane do rutyny w czasie wykonywania.

Powiązane problemy