Rational Developer for System z
PL/I for Windows, Version 8.0, Programming Guide

Using PL/I in mixed-language applications

Matching data and linkages
What data is passed
How data is passed
Where data is passed
Maintaining your environment
Invoking non-PL/I routines from a PL/I MAIN
Invoking PL/I routines from a non-PL/I main
Using ON ANYCONDITION

Within the workstation environment, there are occasions when you want to develop mixed-language applications with PL/I being one of the languages involved. For example, an application could be constructed with the main program written in C and a dynamic link library (DLL) written in PL/I. Another possibility is an application using REXX which can load and call PL/I routines packaged in a PL/I DLL.

Perhaps you want to construct an application using software from an outside vendor. Using a vendor's prepackaged program, you can supply a user exit in the form of a DLL written in PL/I.

Creating mixed-language applications is generally challenging and you have to consider many factors that do not exist when coding in a single language. Typically, high level programming languages from different vendors (for example, C, C++, COBOL, and PL/I) require the use of specific run-time environments as implemented by the run-time libraries of the distinct languages. Areas in which these languages might not work well together include:

These inconsistencies in behavior can cause unexpected run-time behavior that can arise in some mixed-language program execution scenarios.

Rational Developer for System z
PL/I for Windows, Version 8.0, Programming Guide