Preparing Enterprise PL/I Version 3.4 and earlier programs
Perform the following steps for compiling your Enterprise PL/I Version 3.4 and earlier programs:
- Create a library (PDSE is suggested unless PDS is required for your organization) for expanded source files. This library is only needed in test environments where debugging is performed. The library can be any RECFM / LRECL / BLKSIZE supported as input by the compiler.
- 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 or production.
- Create a corresponding LANGX library for each load library. Specify
LRECL=1562 or greater,RECFM=VB,BLKSIZE= lrecl+4 to 32k
. - Run a 2-stage compilation. The first stage preprocesses the program, so that ADFz products have
access to fully expanded source code with INCLUDEs and macros. The second stage compiles the
program.
- In the first compilation stage, in both test and production environments:
- Specify compiler options
MACRO,MDECK,NOCOMPILE,NOSYNTAX,INSOURCE
to expand INCLUDEs and macros. - Save the output, the expanded source file, in a permanent file in the expanded source file library and specify member name = program name. This file is the source information file for z/OS® Debugger. The output SYSPUNCH DD is the input SYSIN DD to the second compiler stage.
- Specify compiler options
- In the second compilation stage, for all programs, such as batch, CICS®, and IMS™:
- In test environments, specify compiler options
TEST(ALL), NOPT, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL)
.TEST(ALL)
andNOPT
are required by z/OS® Debugger. Debug hooks are inserted, which add some runtime overhead. Symbolic data that is required by z/OS® Debugger is also stored in the module, which can make it larger.The other options format the compiler listing as required for the IPVLANGX utility.
- In production environments, specify compiler options
NOTEST, AGGREGATE, ATTRIBUTES(FULL), NOBLKOFF, LIST, MAP, NEST, NONUMBER, OFFSET, OPTIONS, SOURCE, STMT, XREF(FULL))
.NOTEST
disables z/OS® Debugger, but provides the best performance. 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).The other options format the compiler listing as required for the IPVLANGX utility.
- In test environments, specify compiler options
- In the first compilation stage, in both test and production environments:
- Modify the SYSPRINT DD in the second compilation stage. This file is the compiler listing. Save
the compiler listing to either a permanent or temporary file. This file is the input to the IPVLANGX
utility. 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.
- Add a step after the compilation step to run the IPVLANGX utility. The IPVLANGX utility reads the compiler listing and generates a LANGX file, which is the source information file for Fault Analyzer for z/OS® and Application Performance Analyzer for z/OS®. Save the LANGX file in the LANGX file library, and specify a member name that is equal to the primary entry point name or CSECT name of your application program.
- 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.
- 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
- 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.