Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, Migration Guide

Calling PL/I from assembler and Language Environment conforming assembler

With Language Environment, assembler programs that call a PL/I routine must follow the calling conventions defined by Language Environment. For example, Register 13 pointing to a save area, save areas properly back-chained, and the first word of the save area being zero. For detailed information, see the z/OS Language Environment Programming Guide.

If your PL/I main program is called by an assembler program and you want to convert your assembler program to use Language Environment-conforming assembler, you must either:

In either case, the called PL/I program is treated as a subroutine. Either of these programs run under the same Language Environment enclave where the assembler program is the main program and the called PL/I program is a subroutine.

There are three ways Language Environment-conforming assembler can pass control to an Enterprise PL/I subroutine:

  1. Branch to a statically linked PL/I subroutine.
  2. Use the Language Environment macro CEEFETCH to branch to a separately linked Enterprise PL/I subroutine.
  3. Use assembler instructions such as LOAD and BALR to a separately linked Enterprise PL/I subroutine.

If you recompile PL/I subroutines that use method 1 or 2 with Enterprise PL/I you don't need to include CEESG011 with your assembler program. If your assembler program uses instructions as described in method 3, you must always include CEESG011 with your assembler program, even if you recompile your PL/I subroutine with Enterprise PL/I.


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)