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(...) )

If you want to compile a CICS and DB2 PL/I program named cicsdb2.pli, you would use the following command:

pli -l/usr/lpp/cics/include
-qsystem=CICS
-qpp=CICS=noedf:nodebug:nosource:noprint:MACRO
-o cicsdb2.ibmpli
-bl:/usr/lpp/cics/lib/cicsprIBMPLI.exp
-eplicics
-L/usr/lib/dce
-ldcelibc_r
-ldcepthreads
-ldb2
-lplishr_r
-lc_r
cicsdb2.pli

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.

You also need to consider options depending on the nature of your program and which CICS system is used for executing the program.

Table 6. Considerations for EXEC CICS support
If you are using ... Use compile-time option(s)...
CICS for Windows PP(CICS MACRO)
CICS Files containing native data DEFAULT (ASCII NATIVE IEEE) as appropriate
DB2/2 in native mode DEFAULT (ASCII NATIVE IEEE) as appropriate
CICS Files containing host S/390 data DEFAULT (EBCDIC NONNATIVE HEXADEC) as appropriate
DB2/2 in host S/390 mode DEFAULT (EBCDIC NONNATIVE HEXADEC) as appropriate
Table 7. Considerations for EXEC CICS support
If you are using ... Use compile-time option(s)...
CICS for Windows PP(CICS MACRO)
CICS Files containing native data DEFAULT (ASCII NATIVE IEEE) as appropriate
UDB in native mode DEFAULT (ASCII NATIVE IEEE) as appropriate

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.


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)