hmm ... i have a feeling i know you from somewhere
well anyways, right now Pro only support Global & Private data types - IE the types are either Globally used or Privately used (within a function)
however that said you can use the memory command to create a small block of memory which can then be passed into a function like variable with a pointer

its a tricky practise, and i've not achieved it sucessfully myself - but i'm sure it is possible
personally i'd love to see data types being setup more closely so we can pass them using Functions - it'd certainly help alot of my math functions.
i have found passing them into a DLL with a memory pointer generally helps too - cause it gives you a bit more freedom, but kinda defeats the point the the exercise of using DBpro lol
you know i've not tried yet, but perhaps you can setup a pointer to the Types?
perhaps
type ScreenVec2_t
x as dword
y as dword
endtype
type myType_t
a as string
b as byte
d as ScreenVec2_t
e as ScreenVec2_t
endtype
*Something as myType_t
function MyFunction( *Something )
`// private delcaration
local strResult as string
box Something.d.x,Something.d.y,Something.e.x,Something.e.y
center text something.e.x,something.d.x),(Something.e.y-Something.d.y),Something.a
Select Something.b
case (asc("K"<<24)+asc("O"<<16")+asc("B"<<8)+asc("M"))
strResult = "Ok"
endcase
case (asc("O"<<24)+asc("N"<<16")+asc("B"<<8)+asc("M"))
strResult = "No"
endcase
case (asc("S"<<24)+asc("Y"<<16")+asc("B"<<8)+asc("M"))
strResult = "Yes"
endcase
case (asc("L"<<24)+asc("C"<<16")+asc("B"<<8)+asc("M"))
strResult = "Cancel"
endcase
case (asc("T"<<24)+asc("Q"<<16")+asc("B"<<8)+asc("M"))
strResult = "Quit"
endcase
endselect
if strResult=0
HReturn=1
else
makeButton(something.d.x+(something.e.x-something.d.x/2),something.d.y+(something.e.y/2),strResult
endif
endfunction HReturn

something like that i'd imagine would be oki
Tsu'va Oni Ni Jyuuko Fiori Sei Tau!
One block follows the suit ... the whole suit of blocks is the path ... what have you found?