Enterprise PL/I の V3R2 以降、LIMITS(EXTNAME(7)) がデフォルト となっています (以前は LIMITS(EXTNAME(100)) がデフォルトでした)。 このデフォルトは、新しいコンパイラーでのデフォルトを 旧版のコンパイラーの通常の仕様に合わせることにより、マイグレーションを容易にします。 旧版のコンパイラーでは、外部名は 7 文字に制限されており、 より多くの文字数に対応するオプションも存在しませんでした。
また、LIMITS(EXTNAME(n)) で n > 8 の場合は、 プリリンカーを使用するか、またはモジュールを PDSE に 格納する必要があることに注意してください。
さらに、LIMITS(EXTNAME(7)) を指定した場合 (およびすべての旧版の コンパイラーの場合)、8 文字の名前を EXTERNAL として宣言すると、 コンパイラーは最初の 4 文字と最後の 3 文字を使用して 7 文字の名前 を作成し、この名前をリンカーに渡します。 それに対し、LIMITS(EXTNAME(8)) を指定した場合には、完全な 8 文字の名前が リンカーに渡されるため、旧版のコンパイラーで生成したコードとの間で非互換性が 生じます。
例えば、名前 DEZEMBER を EXTERNAL として宣言すると、LIMITS(EXTNAME(7)) の 場合には、リンカーには DEZEBER という名前が渡されますが、LIMITS(EXTNAME(8)) の 場合には、DEZEMBER という名前が渡されます。
したがって、互換性を維持するために、LIMITS(EXTNAME(8)) は 使用せず、デフォルトの LIMITS(EXTNAME(7)) を 使用してください。
最後に、LIMITS(EXTNAME(7)) は PL/I 名にのみ適用されることに注意 してください。アセンブラーや COBOL のルーチンには、8 文字の名前を 指定できます (旧版コンパイラーの場合とまったく同じ)。