Я не понимаю поведение встроенной функции present () с pgf90 7.2.Я написал программу из 20 строк, чтобы проверить это, но результаты все еще не имеют смысла для меня.Наблюдайте:
subroutine testopt(one,two,three,four,five)
implicit none
integer, intent(in) :: one,two
integer, intent(out) :: three
integer, intent(in), optional :: four
integer, intent(out), optional :: five
three = one + two
print *,"present check: ",present(four),present(five)
if (present(four) .and. present(five)) then
five = four*four
end if
end subroutine testopt
, если я: вызываю testopt (1,2, (любая переменная)) из моей основной программы, он печатает: «присутствует проверка: TF».Однако, если я: вызываю testopt (1,2, (любая переменная)) из подпрограммы, она печатает: «present check: TT».Я ожидал увидеть «текущую проверку: FF» в любом случае, потому что я вызываю подпрограмму только с 3 необязательными аргументами и ни с одним из необязательных.Я не могу понять, почему он так себя ведет, и это вызывает серьезную ошибку в программе, над которой я работаю.Я ценю любое понимание.Спасибо.