マクロを使用して記述ファイル内のテキストを置換するのと同様に、次の構文を使用してマクロ内のテキストを置換します。
$(macroname: string1 = string2)
macroname 内で検出された string1 はすべて、string2 に置き換えられます。コロンと string1 の間のスペースは、string1 の一部と見なされます。string2 がヌル・ストリングの場合、検出された string1 はすべてマクロから削除されます。コロン (:) は macroname の直後に記述する必要があります。
マクロ内の string1 を string2 に置き換えても、その変更は永続的ではありません。次にそのマクロを置換を行わずに使用した場合、未変更の元のマクロになります。
例
SOURCES = one.pli two.pli three.pli
program.exe : $(SOURCES:.pli=.obj)
ilink $**;
上記の例では、SOURCES というマクロを定義しており、3 つの PL/I ソース・ファイルの名前が含まれています。このマクロを使用すると、ターゲット行/従属行では .pli 拡張子を .obj に置換します。そのため、NMAKE は次のコマンドを実行します。
ilink one.obj two.obj three.obj;
$** は、指定されたターゲットのすべての従属ファイルに変換される特殊なマクロです。