PL/I coding considerations under CICS

CICS® imposes some coding restrictions on PL/I routines:
  • MTF routines — CICS does not support PL/I MTF applications.
  • Built-in subroutines — There are some restrictions on the use of PL/I's built-in subroutines:
    • You cannot use the PLISRTx interfaces, PLICKPT or PLICANC.
    • You can use PLIRETC and PLIRETV to communicate between user-written routines that are link-edited together, but not to communicate with CICS. See Managing return codes in Language Environment for details.
  • Debugging facilities — Support has been added to allow the CICS transaction to be debugged using the Debug Tool. To prepare your program to use the Debug Tool, you must compile with the TEST option. For more information on debugging under Language Environment, see z/OS Language Environment Debugging Guide. For more information on debugging CICS transactions using the Debug tool, go to .
  • Language I/O facilities — You can use only a subset of PL/I I/O facilities under CICS.
    • OPEN/CLOSE can be used, but only for the SYSPRINT file
    • You can use stream output only to the SYSPRINT file. For performance reasons, you should use stream output under CICS only when debugging your applications.
    Those PL/I I/O facilities that you cannot use under CICS are:
    • Record I/O statements
    • Stream input
    • DISPLAY statement
    • DELAY statement
    • STOP statement
    • WAIT statement
    • PL/I I/O-related conditions such as RECORD, TRANSMIT, ENDFILE, and KEY are not raised under CICS, because I/O is not performed using PL/I files (except SYSPRINT) and I/O statements. CICS file-handling facilities are used instead. If CICS detects an I/O condition during the processing of your commands, CICS deals with the condition in the way defined in the CICS information.