Функция Фортрана: указатель как фактический аргумент и цель как формальный
Я пытаюсь расшифровать код Fortran. Он передает указатель на функцию в качестве фактического аргумента, а формальный аргумент вместо этого является целью. Он определяет и размещает указатель типа globalDATA в основной программе, затем вызывает функцию, передающую этот указатель:
module dataGLOBAL
type globalDATA
type (gl_1) , pointer :: gl1
type (gd_2) , pointer :: gd2
type (gdt_ok) , pointer :: gdtok
...
...
end type globalDATA
end module dataGLOBAL
Program main
....
....
use dataGLOBAL
...
type(globalDATA),pointer :: GD
allocate(GD)
returnvalue = INIT(GD)
....
....
end
Функция читает:
integer function INIT(GD) result(returnvalue)
....
....
use dataGLOBAL
type(globalDATA) , target :: GD
allocate (GD%gl1)
allocate (GD%gd2)
allocate (GD%gdtok)
....
....
end function INIT
Какой смысл делать это? И почему указатель в основной программе и отдельные компоненты целевой структуры должны быть выделены? Спасибо.