would i be stating the obvious if i said:

subroutines just process and FUNCTIONS return values?

therefore change your routine name to:

Function GeomanCode(LatLonMsg As String) as ReturnValueType

so for example:

Function GeomanCode(LatLonMsg As String) as string
Function GeomanCode(LatLonMsg As String) as integer
Function GeomanCode(LatLonMsg As String) as long



and the data returned takes the format as specified.

DocZaf
{;->