Попробуйте сравнить разные типы в старом фортране - PullRequest
0 голосов
/ 18 июня 2020

Я использую gfortran 7 (Ubuntu) для компиляции старого кода fortran.

Я столкнулся с следующей ошибкой:

MYOLDCODE.f90:864:13:

         if  (star (i) .eq. ' '   .and.&
             1
Error: Operands of comparison operator â.eq.â at (1) are REAL(4)/CHARACTER(1)

Думаю, я пытаюсь сравнить реальный номер на пробел. Я не знаю, зачем это делал оригинальный кодировщик. Он умер в 90-х, поэтому я могу только спросить его, когда я go доберусь до того же места, где он сейчас, но тогда будет слишком поздно. Вот код:

DO I = 1,KJ

    ( some code )

    WRITE(impre,7100,IOSTAT=IERRO) I,STAR(I),A2(I),B2(I),A3(I),AMPL(I),&
        &CIA(I),SITU(I),A4(I),A5(I),CIF(I)
    if  (star (i) .eq. ' '   .and.& 
        &    ampl (i) .ne. 1.E20 .and.& 
        &    ampl (i) .ge. 0.5   .and.& 
        &    situ (i) .ne. 1.E20 )  then
            write (15,7777) a2(i), b2(i), a3(i), ampl(i), situ(i)
    end if
    7777    format (a3,a4,f11.7,f8.2,f8.2)
end do
7100 FORMAT (t25,I3,2X,A1,A3,A4,2X,F11.7,6(2X,F8.2) )

Как я могу сравнить star (i) .eq. ' '?

Я ничего не знаю о fortran, поэтому спросите, нужно ли вам больше кода / информации

...