The following are restrictions imposed by PCML regarding parameter and
return value types.
The following data types are not supported by PCML:
- Pointer
- Procedure Pointer
- 1-Byte Integer

- Return values and parameters passed by value can only be 4 byte integers
(10i 0).
- Varying-length arrays, and data structures containing varying-length subfields
are not supported.
- When a data structure is used as a parameter for a *ENTRY PLIST, or a
prototyped parameter is defined with LIKEDS, some PCML restrictions apply:
- The data structure may not have any overlapping subfields.
- The subfields must be coded in order; that is, the start position of each
subfield must follow the end position of the previous subfield.
- If there are gaps between the subfields, the generated PCML for the structure
will have subfields named "_unnamed_1", "_unnamed_2" etc, of type "char".
- RPG does not have the concept of output-only parameters. Any parameters
that do not have CONST or VALUE coded have a usage of "inputoutput". For inputoutput
parameters, the ProgramCallDocument class requires the input values for the
parameter to be set before the program can be called. If the parameter is
truly an output parameter, you should edit the PCML to change "inputoutput"
to "output".
The compile will fail if you generate PCML for a program or module that
violates one of the restrictions. The PCML will be generated, but it will
contain error messages as comments. For example, if you use a Date field as
a parameter, the PCML for that parameter might look like this:
<data name="DATE" type=" " length="10" usage="input" />
<!-- Error: unsupported data type -->