В комментариях HighPerformanceMark, можно определить внутреннюю процедуру в разделе другой процедуры
SUBROUTINE test1(...)
! do some stuff
CALL test2(...)
CONTAINS
SUBROUTINE test2(...)
! do some stuff
END SUBROUTINE test2
END SUBROUTINE test1
Внутренняя процедура test2
получает доступ ко всем объектам, определенным в порядке, принимающей test1
по хоста содержит ассоциация. Он также получает доступ ко всем объектам, к которым имеет доступ test1
. Правила аналогичны правилам внутренних процедур в основной программе.
Внутренняя процедура не может принимать другую внутреннюю процедуру.
Указатели процедуры для внутренних процедур действительны только во время выполнения хост-процедуры и разрешены только в Fortran 2008 и последующих версиях. Это расширенная функция.
Этот узел ассоциации иногда может раздражать, вы должны быть бдительными, чтобы избежать ошибок, как:
SUBROUTINE test1(...)
integer :: i
do i = 1, n
CALL test2(...)
end do
CONTAINS
SUBROUTINE test2(...)
do i = 1, n
!i here is the same variable as i in test1!!
end do
END SUBROUTINE test2
END SUBROUTINE test1
Там будут функции в Fortran 2015, чтобы изменить поведение хозяина ассоциации.
Если вы хотите, чтобы слово Fortran было частью названия в каком-то определенном месте, продолжайте, но просто «Fortran:' не следует использовать. Теги не должны просто копироваться в заголовок. –
@agentp Если вы используете более крупную работу по перемотке, подумайте об использовании 'silverfrost-fortran', а не' silverfrost', похожего на [tag: intel-fortran] и [tag: nag-fortran]. –
@ Владимир согласился. есть ли способ отредактировать тег или сделать новый и переключить их? – agentp