DFT(LINKAGE(SYSTEM)) を指定すると、パラメーター・リストが、 旧版のコンパイラーで作成された場合と同じ方法で作成されます (最後の パラメーターのアドレスの高位ビットをオンにすることも含む)。
これは、C または JAVA で使用されるデフォルトのリンケージでは ありません。これらのデフォルトのリンケージは、新しいコンパイラーの デフォルトである DFT (LINKAGE(OPTLINK)) を指定することで得られます。 OPTLINK リンケージでは、最後のパラメーターはアドレスでない 可能性があり (例えば BYVALUE FIXED BIN(31) の場合)、アドレスで あった場合でも、高位ビットはオンには なりません。 さらに、OPTLINK リンケージでは、戻り値がある場合、この 戻り値はレジスター 15 に戻される場合があります。
SYSTEM リンケージは、OPTIONS(COBOL) または OPTIONS(ASM) ルーチン に対して想定されます。
1 つの PL/I ルーチンが別のルーチンを呼び出す場合には、それらのルーチンが一致している限り、 それらがどのリンケージを使用しているかは問題になりません。しかし、一部の非 PL/I ルーチン は、OPTIONS(ASM) として宣言されませんが、SYSTEM リンケージを使用します。 そこで、互換性とマイグレーションを最も簡単に実現するため には、DFT(LINKAGE(SYSTEM)) オプションを使用します。
ただし、SYSTEM リンケージをデフォルトにする場合は、 そのリンケージを使用するすべての関数 (例えば C ライブラリー関数 の fread) の宣言に、OPTIONS(LINKAGE(OPTLINK)) を追加する 必要があります。 例えば、fread は次のように宣言します。
dcl fread ext entry(...) options( linkage(optlink) );