Using CALL identifier with DLLs

In a COBOL program that has been compiled with the DLL option, you can use CALL identifier and CALL literal statements to make calls to DLLs. However, there are a few additional considerations for the CALL identifier case.

About this task

For the content of the identifier or for the literal, use the name of either of the following programs:

  • A nested program in the same compilation unit that is eligible to be called from the program that contains the CALL identifier statement.
  • A program in a separately bound DLL module. The target program-name must be exported from the DLL, and the DLL module name must match the exported name of the target program.

In the nonnested case, the runtime environment interprets the program-name in the identifier according to the setting of the PGMNAME compiler option of the program that contains the CALL statement, and interprets the program-name that is exported from the target DLL according to the setting of the PGMNAME option used when the target program was compiled.

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 be eight characters or less. For the purpose of the search for the DLL as a PDSE member, the run time automatically converts the name to uppercase.

If the runtime environment cannot resolve the CALL statement in either of these cases, control is transferred to the ON EXCEPTION or ON OVERFLOW phrase of the CALL statement. If the CALL statement does not specify one of these phrases in this situation, Language Environment® raises a severity-3 condition.

Related references  
DLL  
PGMNAME  
CALL statement (Enterprise COBOL for z/OS Language Reference)  
Search order for DLLs in the z/OS UNIX file system