PCML Restrictions

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.
    Note: This restriction does not apply when the PCML version is 7.0. For information on how to control the PCML version, see the section on the PGMINFO Control specification keyword in the IBM® Rational® Development Studio for i: ILE RPG Reference.
  • 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 pointer as a parameter, the PCML for that parameter might look like this:
<data name="PTR" type="   " length="16" usage="input" />
<!-- Error: unsupported data type -->