Я пытаюсь включить проверку ошибок в чистую процедуру, которую я пишу. Я бы хотел что-то вроде:
pure real function func1(output_unit,a)
implicit none
integer :: a, output_unit
if (a < 0) then
write(output_unit,*) 'Error in function func1: argument must be a nonnegative integer. It is ', a
else
func1 = a/3
endif
return
end function func1
Однако чистым функциям не разрешается иметь операторы ввода-вывода для внешних файлов, поэтому я попытался передать функции номер единицы, например output_unit = 6
, что является выходом по умолчанию. Гфортран до сих пор считает это незаконным. Это можно обойти? Можно ли сделать функцию производным типом (вместо внутреннего типа вещественным
здесь), который выводит строку в случае ошибки?