…..
enddo
Оператор Inquire ( оператор запроса )
Оператор предназначен для получения информации о характеристиках и текущем состоянии указанного устройства или внешнего файла.
В этом операторе можно получить либо информацию об устройстве, либо информацию о файле
Inquire ([unit=]<номер устройства>,
[,err=<метка>]
[,iostat=<целочисленная переменная>])
Или
Inquire(
[file=]<файл>,
[,err=<метка>]
[,iostat=<целочисленная переменная>]
[, exist=<логическая переменная>]
[,nextrec=<целочисленная переменная>]
Нельзя одновременно получать информацию и о файле и об устройстве.
Можно его использовать для проверки существования входного файла. Если файл входной и создается не программным путем, то можно проверять его наличие.
Параметр exist определяет существование указанного файла и принимает значение .true., если файл существует, и значение .false., если файла нет и он не может быть открыт. Тогда этот оператор должен размещаться до оператора open.
или
Inquire (file=]<файл>,
[,iostat=<целочисленная переменная>]
|
|
[, defaultfile=<спецификаторы>])
Последний вариант используется, если надо получить характеристики файла (возвращает значения атрибутов, с которыми файл был открыт.). Тогда он помещается после оператора open.
Если файл входной, то можно (желательно) написать процедуру проверки наличия файла (процедура control). Это надо сделать до оператора open.
subroutine control_1 (s)! проверка наличия файла
implicit none
character(*), intent(in)::s
logical f
inquire(file=s, exist= f)
if (f) then
print*, ‘ файл существует'
else
stop 'создайте файл'!конец работы, если нет файла
endif
End subroutine
или более универсальный вариант, который позволит открыть файл или для создания или для добавления:
Subroutine control_2 (s)
implicit none
character(*),intent(in)::s
logical f
inquire(file=s, exist=f)
if (f) then
print*, ‘ файл успешно открыт’
open(1, file=s)
else
print*, ‘ файл открыт для добавления’
open(1, file=s, access=’append’)
endif