PL/I programming restrictions and requirements
Some restrictions and requirements apply to a PL/I program that is used as a CICS® application program.
Functions and statements that cannot be used
-
You cannot use the following multitasking built-in functions:
-
COMPLETION -
PRIORITY -
STATUS
-
-
You cannot use the following multitasking options:
-
EVENT -
PRIORITY -
TASK
-
-
You should not use the following PL/I statements:
-
CLOSE -
DELAY -
DELETE -
DISPLAY -
EXIT -
GET -
HALT -
LOCATE -
OPEN -
PUT -
READ -
REWRITE -
STOP -
WRITE -
UNLOCK
The FETCH and RELEASE statements are supported. EXEC CICS commands are provided for the storage and retrieval of data, and for communication with terminals. However, you can use CLOSE, PUT, and OPEN for SYSPRINT.
-
- You cannot use PL/I Sort/Merge.
- You cannot use static storage (except for read-only data).
Coding requirements
- If you declare a variable with the STATIC attribute and EXTERNAL attribute, you must also include the INITIAL attribute. If you do not, such a declaration generates a common CSECT that cannot be handled by CICS.
- Do not define variables or structures with variable names that are the same as variable names generated by the translator. These begin with DFH. Use care with the LIKE keyword to avoid implicitly generating such variable names.
- All PROCEDURE statements must be in uppercase, except for the PROCEDURE name, which can be in lowercase.
- The suboptions of the XOPTS option of the *PROCESS statement must be in uppercase.
- You cannot use the PL/I 48-character set option in EXEC CICS statements.
-
If a CICS command uses the SUBSTR built-in function in defining
a data value, it should include a LENGTH option to specify the data
length, unless the translator option NOLENGTH is specified. If it
does not, the translator generates a PL/I call including an
invocation
of the CSTG built-in function in the following form:
This call is rejected by the compiler.CSTG(SUBSTR(..,..,..))
64-bit addressing
64-bit addressing mode is not supported for PL/I programs.
64-bit residency
CICS does not support 64-bit residency mode (RMODE(64)) and treats any RMODE(64) programs as RMODE(31). That is, RMODE(64) programs are loaded into 31-bit (above-the-line) storage, not 64-bit (above-the-bar) storage.