I don't think GLBasic supports static types.
So, I think you need to declare an instance of the type before you call it's methods.
The type name itself can't be used to access the methods.
So, in theory, this should work:
LOCAL a AS P = a.Create(x, y)
But since 'a' isn't declared yet in 'a.Create(x, y)' it may not work either.
Maybe you could create a global 'static' instance for this kind of usage:
GLOBAL gP as P
...
LOCAL a AS P = gP.Create(x, y)