A CHARACTER expression indicating the name of the procedure, user-defined function, attribute, method, or shared library routine. The default is the Unknown value (?). In Windows, the expression cannot contain characters outside of the non-Unicode code page. See OpenEdge Development: Internationalizing Applications for more information about Unicode and code pages.
If char-expression is a procedure, the rules for finding the procedure are the same as those of the RUN statement, including the treatment of SUPER. However, the actual instance of the file, procedure name, or attribute is not determined until the dynamic invoke is executed.
If char-expression is a user-defined function, an attribute, or a method, the rules for finding the function or attribute are the same as those for finding a function or attribute invoked statically.
If char-expression is a shared library routine, at least the following attributes must be set:
CALL-NAME or ORDINAL
CALL-TYPE
LIBRARY
RETURN-VALUE-DLL-TYPE
If char-expression is a shared library routine and LIBRARY specifies a full path name, the AVM searches only that path for the shared library. Otherwise, the AVM first determines if the shared library is loaded in memory. If it is not loaded in memory, the AVM looks for the shared library in the current working directory. If the shared library cannot be found at this point:
On Windows the AVM uses the standard Windows search algorithm to find the DLL, the same algorithm used to find Windows executable (.exe) files
On UNIX the AVM continues searching for the shared library using the ABL PROPATH
Using the call object handle, there are two alternate methods for invoking a DLL routine—either by specifying the routine's name with the CALL-NAME attribute or by specifying the routine's position in the DLL with the ORDINAL attribute. You can specify an ORDINAL value or a CALL-NAME value, but not both. Specifying an ORDINAL value and setting CALL-NAME at the same time causes the AVM to raise error at run time.