IPVLANGO Automatic Binary Optimizer LANGX file update utility

The Automatic Binary Optimizer for z/OS® (ABO) product optimizes COBOL object code. See the IBM Automatic Binary Optimizer for z/OS User's Guide for the eligible compilers.

ABO optimization results in code changes that render any existing compiler listing or side file unusable with the optimized program. The IPVLANGO utility creates LANGX file members that can be used to provide source-level debugging of the optimized program with ADFz products such as Fault Analyzer, z/OS® Debugger, and APA. New LANGX file members can be created from compiler listings, SYSDEBUG side files (COBOL V4 or earlier), or existing LANGX files.

The sample job step in Sample job step to create an 'optimized' LANGX side file takes the listing transforms file from a previous ABO step and merges it with one or more LANGX file members to create 'optimized' LANGX members. (Refer to ABO documentation for the complete optimization JCL, which this sample job step can be appended to.) If the listing transforms file is a PDS(E), it must specify a member name. In Sample job step to create an 'optimized' LANGX side file, the input is a LANGX data set (DD:IPVLANGX); alternatively, it could be a compiler listing (DD:IPVLCOB) or a SYSDEBUG data set (DD:IPVSYSDB).

As ABO can process multiple programs in a single invocation, the listing transforms file has a PROC section for each optimized program. To accommodate this, compiler listing, SYSDEBUG, and LANGX data set DDs should specify a PDS(E) data set without a member name. The input PDS(E) should contain a member for each PROC in the listing transforms file. Likewise, the output LANGX PDS(E) contains a member for each PROC in the listing transforms file.

The IPVLANGO utility uses the following DDs:

LISTING
The (input) ABO listing transforms file that was written in the ABO step to SYSPRINT. This can be a sequential data set, a PDS(E) member, or a concatenation.
IPVLANGX | IPVLCOB | IPVSYSDB
The original (input) side file that represents one or more unoptimized programs. This must be a PDS(E) that contains a member for each program. Multiple data sets can be provided by specifying a concatenation. Do not specify a member name. Use one of these DDs depending on the input side file format.
IPVLANGO
The new (output) LANGX side file that represents one or more optimized programs. This must be a VB PDS(E) with LRECL>=1562 and must not be the same data set as the one specified for IPVLANGX. A member is written for each PROC in the listing transforms file. Do not specify a member name. Note that this data set cannot subsequently be used as input to the IPVLANGO utility.
SYSPRINT
A log of procedures processed and any problems encountered. IPVLANGO returns 0 if there are no problems.
Figure 1. Sample job step to create an 'optimized' LANGX side file
//LANGO EXEC PGM=IPVLANGO                                      
//LISTING DD DISP=SHR,DSN=*.OPT.SYSPRINT   <--- Input ABO transforms file                               
//IPVLANGX DD DISP=SHR,DSN=JERRYBL.BINOPT.LANGX              
//IPVLANGO DD DISP=SHR,DSN=JERRYBL.BINOPT.LANGX.ABO