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

Differences in Assembler Support

Assembler programs that find the main parameter list

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 OS 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 recompile your OS PL/I program without OPTIONS(MAIN) or ensure the entry point receiving control is the real entry point of the PL/I program. 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.

Your Language Environment-conforming assembler main program must explicitly include the Language Environment-PL/I for MVS & VM signature CSECT, CEESG010, when calling an OS PL/I subroutine to ensure the Language Environment-PL/I-specific run-time environment is initialized. There are three ways Language Environment-conforming assembler can pass control to an OS PL/I subroutine:

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

The condition-handling behavior of the LINK from assembler is now clearly defined. For detailed information, see z/OS Language Environment Programming Guide.


Terms of use | Feedback

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