2011-05-03 17 views
6

Según this, gfortran puede hacer conversión entera-lógica, pero estoy recibiendo este error:Como llegar gfortran hacer INTEGER - conversión LÓGICO

    if (.not.bDropped.and.(zz_unif01() .lt. (1 - (Test_Dru 
          1 
Error: Operand of .not. operator at (1) is INTEGER(4) 

Sé que sería mejor cambiar el código desde .not.bDropped hasta (bDropped.eq.0), pero eso no sería simple porque es código generado.

Probé varias banderas -std=xxx pero no hicieron ninguna diferencia.

+0

¡Bienvenido al mundo de la escritura fuerte! :) Ajusta tu generador de código. Es la única forma. – Wildcat

+0

@kemiisto: Grr ... Sí, eso es lo que tengo que hacer. –

Respuesta

1

La última línea de la página se ha vinculado a lecturas

 
However, there is no implicit conversion of INTEGER values in if-statements, [...]. 

supongo que tiene algo que ver con ello.

Editar: Esto no parece ser la verdad completa. Simplemente haciendo l1 = .not. 0 (cuando l1 es una variable lógica) da el mismo error que ha recibido. Entonces tampoco hay una conversión implícita en este caso.

+0

Gracias por el esfuerzo. –

+0

creo que sería suficiente usar == si quiere considerarlo como un booleano como: do while (eof (1) == 0) o algo así – pooria