Information

This site will undergo a brief period of maintenance on Friday, 18 December at 12:30 AM Central/12:00 PM IST. During a 30 minute window, site availability may be intermittent.

Assembler LP usage considerations


This section describes how to efficiently use the Assembler language processor.

Language Processor DD Statements

The following table lists the DD statements for the Assembler language processor.

DDname

Purpose

CWPWRK (0-6)

LP work files

CWPPRMO

LP parameter input data set

CWPDDIO

Target source listing DDIO file

CWPPRTI

Compiler listing input to postprocessor

CWPPRTO

Compiler listing output from postprocessor

CWPLOAD

Option LOAD or OBJECT module input to postprocessor

CWPDECK

Option DECK module input to postprocessor

CWPERRM

LP Error Messages

CWPWBNV

Workbench navigation information

Success

Tip

CWPLOAD and CWPDECK correspond to the SYSLIN and SYSPUNCH compiler outputs. If you specify compiler option OBJECT, you should use CWPLOAD in your postprocessor JCL. If you specify compiler option DECK, you should use CWPDECK in your postprocessor JCL. Do not feed the SYSLIN output into CWPDECK or the SYSPUNCH output into CWPLOAD. The updated OBJECT contained in CWPLOAD and CWPDECK should be used in the program’s linkedit step. The preprocessor does not use CWPLOAD and CWPDECK.

Assembler Samples and Program Names

The following is a list of members in the CSS installation library that contain sample JCL for executing the Assembler language processor:

Member

Description

CXASMPRE

JCL for running the Assembler language preprocessor.

CXASM

JCL for running the Assembler language postprocessor.

CXLPASM

Sample Assembler language processor options

The following program names are used for the Assembler language processor:

Program Name

Description

CWPAMAIN

Assembler preprocessor

CWPADRVR

Assembler postprocessor

Using the zIIP processor

You can enhance the performance of the language processor by running selected portions of the language processor on a zIIP processor. Running the language processor on a zIIP processor can result in less billable CPU time used and significantly fewer I/O operations.

Enabling the language processor to run on a zIIP processor buffers much of the I/O operations to DASD into memory. This increases the amount of virtual storage used by the language processor. Therefore, if your system has a high paging rate, we recommend that you disable zIIP processing.

zIIP processing is enabled by default. You can use the ZIIP command to disable zIIP processing and control memory allocation. Alternatively, you can disable zIIP processing during language processor run by specifying a //CXZPIGNR DD DUMMY statement in your language processor JCL stream.

Creating an AMODE 64 application

To generate an AMODE 64 (64-bit) application with the related language features enabled, use the LP (64) compiler. For more information about creating a PL/I language AMODE 64 application, see the IBM Language Environment Programming Guide for 64-bit Virtual Addressing Mode and z/OS MVS Programming: Assembler Services Guide.

Other Usage Considerations

This section describes special considerations for using the Assembler language processor. For a list of Assembler language processor restrictions, see Assembler-LP-usage-restrictions.

Processing Listings with Errors

Unpredictable results may occur when you postprocess an assembly listing with serious errors. If you use the preprocessor, however, you can avoid these potential problems. The preprocessor, in conjunction with the CONDDDIO parameter, internally checks the return code from the assembler and does not write out a listing that contains errors. Using the preprocessor prevents unnecessary processing of an error-filled assembly listing by not calling the postprocessor. For information on the CONDDDIO parameter, refer to CONDDDIO (CONDD) Command.

Insufficient Primary Space Allocation

During preprocessing, you may receive a B37 abend on the CWPPRTI DD statement. This is due to insufficient space on the temporary volume used by MVS for the dynamically allocated data set. To correct this problem, first try resubmitting the job. If the problem persists, you can include your own CWPPRTI DD card in the preprocessor JCL. Be sure to allocate enough primary space to contain your assembly listing.

Error
Warning

If you use a postprocessed source listing with BMC AMI DevX Code Debug for TSO, you may experience some loss of functionality. If any statement-suppressing directive such as PRINT NOGEN or COPY SUPPRESS is used in postprocessed source, the Code Debug commands FIND, GEN, KEEP, and PEEK may not function properly.

Handling Suppressed Statements

The postprocessor will not support listings that contain suppressed statements. The preprocessor must be run if the listing contains suppressed statements. Suppressed statements include statements that are not generated in the assembly listing due to a PRINT OFF or a PRINT NOGEN for Assembler. If the postprocessor is run and it encounters any suppressed statements, you will receive the following message, and the postprocessor will stop immediately.

PADRVR151-S POSTPROCESSOR TERMINATED; PREPROCESSOR MUST BE USED DUE TO PRINT OFF/NOGEN

You should run the preprocessor if PRINT OFF or PRINT NOGEN is specified. You can bypass this restriction by using the PROCESSOR($ASUP) parameter. This parameter allows a listing with suppressed statements to be postprocessed. You should specify this parameter when you want to postprocess listings with suppressed statements that have been stored in machine-readable format. $ASUP should be used with caution since there may be problems postprocessing a listing containing suppressed statements and using this listing with your BMC AMI products. For more information on the PROCESSOR($ASUP) parameter, please refer to PROCESSOR (PROC) Command.

Updating the OBJECT Deck

The BMC AMI language preprocessor and postprocessor, when correctly coded as described in Language Processor DD Statements, will update the OBJECT deck by placing an IDR record in the END card containing the program name, the compile date/timestamp and a 1-byte code to indicate the release of the compiler.

The END card, which is linked into the load module, has historically been used by all products utilizing source support to find this data in one single location. The data is used for DDIO source matching to the executable load module. The END card is used by all supported languages. This data is required for Assembler language to do source member matching of the DDIO file to the executable load module.

If the program was assembled with the GOFF (Generalized Object File Format) option or the XOBJECT option, an additional record is used to store the IDR record located in a single TXT record (structured record data). This additional record contains:

  • 1-byte language release (BMC AMI internal code)
  • x’00’
  • 8-byte CSECT-Name
  • 6-byte compile time (hhmmss)
  • The rest contains x'00'.

To disable the updating of the OBJECT deck, pass the following parameters via the CWPPRMO DD statement in the language processor step:

  • PROC($NIDR) — Bypass the placement of the date and timestamp on the object module
  • PROC(IDENTNO) — Bypass the placement of an IDENTIFY record on the object module.

For more details on these override parameters, see IDENTYES or IDENTNO.


 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

BMC AMI Enterprise Common Components 17.02