Это можно сделать как минимум, двумя способами.
Первый способ заключается в выделении памяти под структуру и ее инициализацию. Code
Structure StrName
bla.s
blabla.f
EndStructure
Procedure.i ProcedureName(argument1.f)
*Struct.StrName=AllocateMemory(SizeOf(StrName))
If *Struct
InitializeStructure(*Struct, StrName)
*Struct\bla = "Текст"
*Struct\blabla = argument1
EndIf
ProcedureReturn *Struct
EndProcedure
*MyStruct.StrName = ProcedureName(0.25)
If *MyStruct
Debug *MyStruct\bla
Debug *MyStruct\blabla
ClearStructure(*MyStruct, StrName)
FreeMemory(*MyStruct)
EndIf
Когда структура больше не нужна, ее нужно очистить функцией ClearStructure() и освободить память, занимаемую структурой, функцией FreeMemory().
Второй способ заключается не в возврате указателя структуры, а его передаче в процедуру.
Code
Structure StrName
bla.s
blabla.f
EndStructure
Procedure.i ProcedureName(argument1.f, *Struct.StrName)
*Struct\bla = "Текст"
*Struct\blabla = argument1
EndProcedure
MyStruct.StrName
ProcedureName(0.25, @MyStruct)
Debug MyStruct\bla
Debug MyStruct\blabla