PL/I Support

Open PL/I was designed to be, and still is, an ANSI standard PL/I compiler. Customers interested in migrating need to assume changes to existing PL/I applications may be required to remove any proprietary mainframe syntax and/or deal with differences in behavior in order to make programs portable.


  • PL/I can be compiled, linked and debugged in 32-bit and 64-bit mode on Windows

Macro Preprocessor

  • The Micro Focus PL/I Macro Preprocessor supports the majority of the IBM PP(MACRO) functions. The only support for PP(PLX) is for the deprecated KEYS option. There are no plans to further extend the existing support for PLX.


  • The internal representations of floating point constants on the Sun versions of Open PL/I are sometimes different from those on the IBM RS6000.
  • The compiler does not diagnose a mismatch between actual parameters and the parameter list in the entry declaration when the dimension attribute is used in the parameter list.
  • No diagnostic is generated when you pass an array argument to a non-array parameter.
  • The PUT FILE statement adds an extra character in front of the data being written into a file.
  • Prior to Enterprise Developer 2.2, if using the -cics, -ims, or -mvs options when compiling with mfplx on a little endian platform, the possibility for errors existed. Starting with Enterprise Developer 2.2,-cics, -ims, or -mvs options when compiling with mfplx automatically also uses -bigendian, thereby eliminating the possibility for these errors.

    Evaluate any applications built using a prior release to determine any impact on any data files being used.


  • The sample demo sessions in the back of the CodeWatch User's Guide may not match exactly with this version of CodeWatch.
  • CodeWatch is unable to evaluate an array in a based structure when the dimensions of the array are declared using the REFER option.
  • Problems may arise when evaluating expressions containing certain built-in functions, especially when given incorrect arguments (for example, wrong type or wrong number of).
  • EVALUATE of BASED and CONTROLLED arrays do not work when using CodeWatch.
  • When using CodeWatch, EVALUATE can not use the POSITION attribute.
  • On platforms where the WIDECHAR data type is supported, CodeWatch allows evaluation of WIDECHAR variables only. Evaluation of WIDECHAR expressions is currently not supported.

    For WIDECHAR variable evaluation, half byte-pairs outside the ASCII range display as a '.' character. Use the EVALUATE command with the /h option to display hexadecimal values for each byte-pair. For example:

    dcl wc wchar (16) init('003900370038'Wx);
    eval wc
    WC = .9.7.8. . . . . . . . . . . . .  {widechar (16)}
    eval /h wc
    WC = 00 39 00 37 00 38 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 (hex)  {widechar (16)}

Visual Studio PL/I Debugger

  • Expressions on variable watchpoints and line breakpoints support only single quotes, i.e., double quotes are not supported.
  • Current hit count of breakpoints while running is not supported.
  • The Autos panel (variables in the current procedure) is not active in this release.
  • Variables of the same name that exist in multiple PL/I procedures might cause issues with the variable watchpoint functionality. This is due to a limitation of Visual Studio being unable to determine the scope of the variable at the time the watchpoint is set.
  • Only the GreaterThanEqualTo mode of HitCondition is supported in this release.
  • When a ZERODIVIDE is triggered on a 32-bit Windows platform, the PLIDUMP shows an invalid stack frame.
  • Output actions on P/LI breakpoints are not supported.

IBM WebSphere MQ

A PL/I application doing a WebSphere MQ SIGNON can cause an invalid result from a PL/I exponentiation calculation if WebSphere MQ is using a locale other than C/Posix, or de_DE or derivative locale.


  • The level of floating support in Micro Focus PL/I matches that of z/OS systems that have the IEEE setting specified. Micro Focus PL/I does not support the default HEXADEC floating point.