Preparing PL/I for MVS and VM programs and OS PL/I programs

Perform the following steps to compile your PL/I for MVS and VM programs and OS PL/I programs:

  1. Create a library (PDSE is suggested unless PDS is required for your organization) for compiler listing files. This library is only needed in test environments where debugging is performed. Specify LRECL=125 minimum,RECFM=VBA,BLKSIZE= lrecl+4 to 32k.
  2. Allocate libraries (PDSE is suggested unless PDS is required for your organization) for LANGX files. Allocate one or more LANGX libraries for each environment, such as test and production.
  3. Create a corresponding LANGX library for each load library. Specify LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k.
  4. For all programs, such as batch, CICS®, and IMS:
    • In test environments, specify compiler options TEST(ALL), NOPT, AGGREGATE, ATTRIBUTES(FULL), ESD, LIST, MAP, NEST, OPTIONS, SOURCE, STMT, XREF(FULL).

      TEST(ALL) and NOOPT are required by z/OS® Debugger. TEST adds debug hooks, which add some runtime overhead. Symbolic data that is required by z/OS® Debugger is stored in the module, which can make it larger.

      The other options format the compiler listing as required by z/OS® Debugger and by the IPVLANGX utility.

    • In production environments, specify compiler options NOTEST, AGGREGATE, ATTRIBUTES(FULL), ESD, LIST, MAP, NEST, OPTIONS, SOURCE, STMT, XREF(FULL).

      NOTEST disables z/OS® Debugger, but provides the best performance.

      The other options format the compiler listing as required for the IPVLANGX utility.

      This produces a production-ready module that can be used with Fault Analyzer for z/OS® and Application Performance Analyzer for z/OS® but not z/OS® Debugger.

  5. Modify the SYSPRINT DD in the compiler step. This parameter is the compiler listing. Save this to a permanent file. The compiler listing is the input to the IPVLANGX utility and is the source information file for z/OS® Debugger.
    Note: This compiler typically renames CSECTs according to an internal compiler algorithm. Therefore, it is not recommended to store PL/I compiler listings or side files using CSECT names as they might not be found by Application Performance Analyzer for z/OS® or Fault Analyzer for z/OS®. Instead, use the primary entry point name.
  6. Add a step after the compiler step to run the IPVLANGX utility. This utility reads the compiler listing and saves a LANGX file. This file is the source information file for Fault Analyzer for z/OS® and Application Performance Analyzer for z/OS®. Save it in the LANGX file library and specify a member name that is equal to the primary entry point name of your application program.
  7. Modify the promotion process to promote LANGX files. When a load module is promoted, for example, from test to production, promote the corresponding LANGX file or files. A promotion can be a recompile, copy, or move. Perform the same steps with the LANGX file that you perform with the module during promotion.
  8. Optionally, include a z/OS® Debugger Language Environment® exit module into the load module during the linkage editor step. This approach is one way to enable z/OS® Debugger panel 6 in ISPF, a simple panel-driven method to start the debugger automatically when a program runs, without JCL changes, based on the program name and user ID. Use module EQADBCXT for batch programs (including IMS batch), EQADICXT for IMS/TM programs and EQADDCXT for DB2® stored procedures. Do not include the exit module for CICS® programs.

    You can also use module EQAD3CXT for batch programs, IMS/TM, IMS BTS programs, and DB2® type MAIN stored procedures

  9. For CICS® applications only, if the z/OS® Debugger DTCN transaction is used to start z/OS® Debugger, link edit the z/OS® Debugger CICS® startup exit module EQADCCXT into the application load module to enable z/OS® Debugger in CICS®. This link edit is not needed if using the CADP transaction instead of DTCN.