Функция Фортрана: указатель как фактический аргумент и цель как формальный

Я пытаюсь расшифровать код 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

Какой смысл делать это? И почему указатель в основной программе и отдельные компоненты целевой структуры должны быть выделены? Спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос