ошибка: невозможно изменить параметр ACTION в операторе OPEN - PullRequest
0 голосов
/ 31 марта 2020

У меня есть проблема в заголовке со следующим кодом Fortran 95:

Более или менее код состоит в вычислении точек, которые в операторе print*, выполняют интерполяцию. Я пытался поместить операторы open и close вне первого l oop. Когда я это делаю, я получаю эту ошибку:

At line 23 of file 7.f95 (Unit 1 "ejeY1.txt")
Traceback: not available, compile with -ftrace=frame or -ftrace=full
Fortran runtime error: End of file

Файл ejeY1.txt содержит эти данные

0.00 0.00
0.50 5.00
1.00 10.00
1.50 15.00
2.00 20.00
2.50 25.00

код, он ниже

program ej7
use mcf_interpoli
real,dimension(1:6)::x,y
real,dimension(1:5)::temporaly,xv
real,dimension(1:3)::array_y,array_x
real::xp,yp,err
integer::i,j,k



array_y=(/1.20,2.40,0.82/)
array_x=(/0.70,1.60,0.65/)

do i=1,size(array_y)
    open(unit=1,status="old",action="read",file="ejeY1.txt")
    open(unit=2,status="old",action="read",file="ejeY2.txt")
    open(unit=3,status="old",action="read",file="ejeY3.txt")
    open(unit=4,status="old",action="read",file="ejeY4.txt")
    open(unit=8,status="old",action="read",file="ejeY5.txt")
    open(unit=7,status="old",action="read",file="ejeX.txt")
    do k=1,4
        do j=1,6
            read(unit=k,fmt=*) x(j), y(j)
        end do
        call polint(x,y,size(x),array_y(i),yp,err)
        temporaly(k)=yp
    end do

    do k=1,6
        read(unit=8,fmt=*) x(k), y(k)
    end do
    call polint(x,y,size(x),array_y(i),yp,err)
    temporaly(5)=yp

    do j=1,5
        read(unit=7,fmt=*) xv(j)
    end do
    do j=1,size(array_x)
        call polint(xv,temporaly,size(xv),array_x(j),yp,err)
        if (array_y(i)==1.20 .and. array_x(j)==0.7) then
            print*,"El valor para (0.7,1.20) es: ", yp
        else if (array_y(i)==2.40 .and. array_x(j)==1.60) then
            print*,"El valor para (1.60,2.40) es: ",yp
        else if (array_y(i)==0.82 .and. array_x(j)==0.65) then
            print*, "El valor para (0.65,0.82) es: ",yp
        end if
    end do
    do j=1,4
        close(i)
    end do
    do j=7,8
        close(i)
    end do
end do



end program ej7



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...