Importing IMS PL/I data structures
IMS z/OS® Assets require specific considerations for PL/I data structures.
Restrictions
The following restrictions apply to IMS:
- IMS message segments cannot exceed 32,767 bytes each.
- The maximum size of an IMS message is 2GB.Note: Large IMS messages can impact performance and therefore may require tuning of IMS.
Supported data types
The following table describes which PL/I data description elements are supported. Unsupported PL/I data description elements are either omitted from the table, or marked "Not supported".
- The array has a fixed lower bound (LBOUND).
- The array is one-dimensional (does not itself define a table).
- If the array is a REFER, it is declared inside an UNALIGNED 01 structure that does not contain ALIGNED fields nor requires padding.
- If the array is a REFER, it conforms to one of the two patterns for REFER in Table 1 "PL/I data description elements for z/OS Assets" below.
PL/I type | Support |
---|---|
CHARACTER NON-VARYING:
|
Supported |
CHARACTER VARYING:
|
Supported |
|
Not supported |
|
Supported |
|
Supported |
|
Supported |
|
Supported |
|
Supported |
|
Supported |
|
Supported |
where
n <= 6 |
Supported |
where 6 <
n <= 16Values greater than 16 are not supported. |
Supported |
where n is
a multiple of 8. Other values are not supported. |
Supported |
Group fixed-length
array: where
n is a numeric constant indicating the number of occurrences. |
Supported |
Elementary fixed-length
array: where:
|
Supported |
Group REFER (variable-length)
array: where:
|
Supported |
Elementary REFER (variable-length)
array: where:
|
Supported |
- The default maximum characters for CHAR, WIDECHAR, and GRAPHIC fields supported by PL/I is
32,767. Fields that are longer than 32,767 characters will automatically be reduced to 32,767 when
imported. To increase the maximum, specify the STRING sub-option of the LIMITS compiler option
using a
*PROCESS
statement (see the Enterprise PL/I Programming Guide for more information) and re-import the source. - If the COMPLEX attribute is specified for a data item, it is ignored.
- If the PRECISION attribute is specified for a data item, it is ignored.
- Enterprise PL/I FLOAT IEEE is not supported.
- Enterprise PL/I algorithms that pad data items in order to align them on byte, fullword, or
doubleword boundaries are not implemented. One of the following two techniques can be used to
address this restriction:
- Modify the Enterprise PL/I application and specify the UNALIGNED keyword on each 01-level structure that represents the interface to the application. Ensure that you remove any ALIGNED keywords from members of the 01-level structures. Recompile and link the application.
- Insert padding items into structure in order to cause data items that require byte, fullword, or doubleword alignment to be aligned correctly. Refer to the Enterprise PL/I for z/OS documentation for more information on PL/I data item alignment characteristics.
Compiler options
*PROCESS
statements placed at the start of COBOL and PL/I programs specify
compiler options and limits, allowing source data to be interpreted differently.
For the IMS transaction z/OS Asset type, the IMSREMAP importer option is always passed to the compiler when generating walker/visitor metadata (DAI files).
The AGGREGATE
compiler option can be used to help indicate where padding is
expected in a data structure.
*PROCESS RULES(NOPADDING);
Preprocessors
Several preprocessors that are included with the z/OS Connect Designer are used when importing PL/I. These may be configured and invoked to provide alternative syntax, conditional compilation, and tolerating syntax for CICS and Db2 syntax.
For IMS z/OS Asset types,
PP(MACRO)
is the default preprocessor configuration.
*PROCESS
statement must be included at the top of PL/I source to override z/OS Connect Designer preprocessor
defaults.*PROCESS PP(INCLUDE(‘ID(-INC)’) MACRO(‘CASE(ASIS)’) CICS SQL);