Assembler LP operation
The Assembler language processor reads the assembly listing produced by the assembler and writes the listing to the DDIO file and SYSPRINT. The source listing can then be used to provide source support during a debugging or diagnostic session while using any of the following products:
- BMC AMI DevX Abend-AID
- BMC AMI DevX Code Debug for CICS
- BMC AMI DevX Code Debug for TSO
- BMC AMI Strobe
The Assembler language processor can be run as either a preprocessor or postprocessor. We recommend that you use the preprocessor. The postprocessor should only be used in situations where compiled source listings have been stored in machine-readable format.
Preprocessor
Some information about a program module is not always available from the compiler listing. The preprocessor, in addition to gathering information from the compiler listing, gathers information from SYSIN and SYSLIB. The preprocessor provides additional functionality for BMC AMI DevX Code Debug for CICS and BMC AMI DevX Code Debug for TSO.
Preprocessor Steps
- Determines the proper compiler options required to process the listing file.
- Automatically invokes the compiler or assembler to compile or assemble your source program.
- Writes the listing to the DDIO file and to SYSPRINT.
Preprocessor Benefits
- Better handling of compiler errors. By using the preprocessor, you can avoid the potential problems of processing a listing with compiler errors. The preprocessor, in conjunction with the CONDDDIO parameter, internally checks the return code from the compiler and doesn’t write a DDIO listing that contains errors. For example, if you set the CONDDDIO parameter to 8, the preprocessor will write the compiler listing to the DDIO file unless the compiler return code exceeds 8. The preprocessor can process the compiler errors more effectively than the postprocessor.
- Capturing of suppressed source code. When the following parameter is used, sections of source code can be suppressed from the compiler listing:
For Assembler | PRINT OFF or PRINT NOGEN |
The preprocessor captures this information from SYSIN and SYSLIB.
- Automated compiler options: The postprocessor requires that certain compiler options be specified in order to process all needed sections of the compiler listing. The preprocessor can automatically pass the required options to the compiler. For a list of the required compiler options, see Assembler-options.
- Simplified JCL: While the postprocessor requires that you add a step after the compile step, the preprocessor requires only those minor modifications be made to your existing compile step.
Dynamically Allocated Files
The following files are dynamically allocated by the BMC AMI preprocessor. The attributes can be overridden by specifying a DD in the JCL.
Files Dynamically Allocated by the Preprocessor
DDname | Attributes |
---|---|
CWPWRKn (0-6) | BLKSIZE=19000 SPACE(TRK,(100,80)) UNIT=SYSDA |
SORTWK01 | BLKSIZE=19000 SPACE(TRK,(100,80)) UNIT=SYSDA |
TEMPLIN | BLKSIZE=3200 SPACE(TRK,(200,100)) UNIT=SYSDA |
CWPERRM | SYSOUT=* |
SYSPRINT | SYSOUT=* |
SYSOUT | SYSOUT=* |
CWPPRTI | BLKSIZE=16093 SPACE(TRK,(100,200)) UNIT=SYSDA DISP=MOD |
CWPPDS2 | SPACE (TRK,(100,80,80)) UNIT=SYSDA |
CWPPRTO is dynamically allocated as a work file (for the preprocessor). SYSPRINT is where the listing goes.
Postprocessor
The postprocessor is executed as a single step — can be a separate job. It reads in the listing created from the compiler. Information is gathered from the source listing, XREF, data maps, and object code sections of the listing. This information is stored in a DDIO file member and is used by various BMC AMI products.
While the preprocessor is the preferred method of loading the compiled listing to the DDIO, there are situations that necessitate use of the postprocessor as a viable alternative. This is commonly found in production environments where the listings may be archived. Note that these are usually the default options at many shops.
If the programs contain suppressed source code, certain additional control statements must be added to the language processor.
Benefits of Postprocessing
- Exact match of compiled output listings with the executable load module. This is especially important in production environments where time is critical.
- Eliminates the risk of copybook or source code changes prior to recompiling the code since the listing reflects the code that is being executed.
- Significantly less time is needed to process source listings as opposed to recompiling the source code.
Where to go from here?
For detailed information on using Assembler language processor, see Using-the-Assembler-Language-Processor.