Rational Developer for System z
PL/I for Windows, Version 8.0, Programming Guide

Programming and compilation considerations

When you are developing programs for execution under CICS,

If your CICS programs include files or use macros that contain EXEC CICS statements, you must also use either the MACRO compile-time option or the MACRO option of PP before the CICS option of the PP option as shown in the following example:

  pp (macro(...)  cics(...) macro(...) )

Make sure that INC is specified as an extension on the INCLUDE(EXT) compile-time option, see INCLUDE.

The IBM.SYSLIB or INCLUDE environment variable must specify the CICS include file directories, for example:

  set include=d:\cicsnnn\plihdr;

The PL/I declarations generated by the CICSMAP, the Basic Mapping Support (BMS) utility, are placed in the first directory specified in the INCLUDE environment variable. For more information, see Setting compile-time environment variables.

Output produced in one of the following ways is written to the CPLI transient data queue (TDQ):

Output produced by PLIDUMP is always written to the CPLD transient data queue.

The full workstation CICS API is supported for PL/I programs. Support is also provided for PL/I progams to use:

Other PL/I considerations that apply on S/390 CICS apply to CICS on the workstation also. The program behaves as though the STAE option is always in effect. The NOSTAE option is not supported.

If you are developing applications for eventual execution on S/390 CICS subsystems, you can check your PL/I programs for reentrancy violations with the DEFAULT(NONASSIGNABLE) compile-time option.

For compatibility with CICS/ESA, CICS/MVS, and CICS/VSE, make sure that the EXEC CICS commands are in upper case.

You can use PL/I FETCH and RELEASE under CICS.

A CICS program must not have more than one procedure that has OPTIONS(MAIN).

The EXEC CICS ADDRESS and other similar commands that return a pointer to a CICS control block (such as the TWA COMMAREA, and ACEE) might return a SYSNULL() pointer if the control block does not exist. (For example, '00000000'x not 'FF000000'x) Your programs must use the SYSNULL built-in function to test such pointers.

Each PL/I compilation unit processed by the CICS preprocessor generates the following:

  dcl IBMMCICS_ID char(n) static init('cics-id-and-version');

The name, version, and release level of the CICS system for which your program was compiled are indicated.

The CICS preprocessor requires the compiler option DEFAULT(ASCII NATIVE IEEE) be in effect.

You must have CICS installed before you can compile a program containing EXEC CICS statements. To find out how to install CICS on your workstation, refer to the installation instructions for that product.

Rational Developer for System z
PL/I for Windows, Version 8.0, Programming Guide