Using procedure or function pointers with DLLs
In run units that contain both DLLs and non-DLLs, use procedure- and function-pointer data items with care.
The SET procedure-pointer-1 TO
ENTRY entry-name statement, SET function-pointer-1 TO
ENTRY entry-name statement, and the CALL statement
have a call linkage type that associates with them. The call linkage
type is determined by the compiler options and the CALLINTERFACE directive
that are in effect on that statement. In a program that is compiled
with the DLL option, the default call linkage type
is DLL. Otherwise, the linkage type is non-DLL. This default can be
overridden by the CALLINTERFACE directive.
For a procedure-pointer or function-pointer data item
that is set by a SET statement with linkage type
non-DLL, it must not be used by a CALL statement
with linkage type DLL. For a SET statement with linkage type DLL
and the entry-name is an identifier, and if the NODYNAM option
is in effect, the entry-name identifier
value must refer to the entry-point name that is exported from a DLL
module. The DLL module name must match the name of the exported entry
point. In this case, note also that:
- The program-name that is contained in the identifier is interpreted
according to the setting of the
PGMNAME(COMPAT|LONGUPPER|LONGMIXED)compiler option of the program that contains theCALLstatement. - The program-name that is exported from the target DLL is interpreted
according to the setting of the
PGMNAMEoption used when compiling the target program. - The search for the target DLL in the z/OS® UNIX file system is case sensitive.
- If the target DLL is a
PDSE
member, the
DLL member name must have eight characters or less. For the purpose
of the search for the DLL as a
PDSE
member,
the name is automatically converted to uppercase.
Using CALL identifier with DLLs
Using procedure and function pointers
Compiling programs to create DLLs
Linking DLLs