If you set the RETURN-VALUE-DATA-TYPE attribute to a particular data type before executing INVOKE( ), the value returned is converted to that data type.
If RETURN-VALUE-DATA-TYPE is set to its default value or to the expected data type, when the dynamic invoke returns, the value returned by the user-defined function or attribute is not converted.
When invoking a Windows DLL routine or UNIX shared library routine, RETURN-VALUE-DLL-TYPE must be set before invoking the routine. If you do not, then any value returned by the DLL routine or the UNIX shared library routine will be ignored and RETURN-VALUE will be set to the Unknown value (?).