Rational Developer for System z
PL/I for Windows, Version 8.0, Programming Guide

Macro preprocessor

Suffixes that follow string constants are not replaced by the macro preprocessor--whether or not these are legal PL/I suffixes--unless you insert a delimiter between the ending quotation mark of the string and the first letter of the suffix.

OS PL/I V2R1 compiler introduced this change. As an example, consider:

    %DCL (GX, XX) CHAR;
    %GX='||FX';
    %XX='||ZZ';
    DATA = 'STRING'GX;
    DATA = 'STRING'XX;
    DATA = 'STRING' GX;
    DATA = 'STRING' XX;

Under OS PL/I V1, this produces the source:

    DATA = 'STRING'||FX;
    DATA = 'STRING'||ZZ;
    DATA = 'STRING' ||FX;
    DATA = 'STRING' ||ZZ;

However, under PL/I for MVS & VM and Enterprise PL/I for z/OS, it produces the source:

    DATA = 'STRING'GX;
    DATA = 'STRING'XX;
    DATA = 'STRING' ||FX;
    DATA = 'STRING' ||ZZ;
Rational Developer for System z
PL/I for Windows, Version 8.0, Programming Guide