Если вы не хотите объявлять переменные, вы можете использовать следующую строку в начале ваших подпрограмм
implicit integer (i-n)
При этом все переменные, начинающиеся с букв в диапазоне (i-n), будут объявлены как целые числа.
Конечно, вы можете объявить вашу переменную отдельно в начале интересующей подпрограммы или поместить ее в модуль, чтобы сделать ее видимой для других частей кода с помощью оператора use
.
INTEGER :: IOCHK
Вам также следует убедиться, что статус IOCHK
проверяется только после оператора OPEN
файла, в противном случае все упражнение не имеет смысла, поскольку IOCHK еще не инициализирован. Значения, для которых переменные инициализируются по умолчанию, зависят от компилятора. Например
program main
write(*,'(A8,I5)') 'M = ' ,M
stop
end program
напечатает M = 0
с ifort
и gfortran
, но
program main
write(*,'(A8,ES20.5)') 'M = ' ,M
stop
end program
потерпит неудачу с gfortran
.
В общем, я думаю, что у вас не должно быть проблем, если IOCHK
явно не объявлено. В качестве примера рассмотрим следующий код
PROGRAM MAIN
OPEN(UNIT=4,STATUS='SCRATCH',ACCESS='DIRECT',RECL=2048,IOSTAT=IOCHK)
IF(IOCHK==0) write(*,'(A8,I5)') 'IOCHK = ' ,IOCHK
STOP
END PROGRAM
При компиляции с ifort
и gfortran
на экране будет напечатано IOCHK = 0
, что означает, что рабочий файл был успешно открыт.
Надеюсь, это поможет
Приветствия