PP オプションでは、コンパイルの前にどのプリプロセッサーを (どのような 順序で) 呼び出すかを指定します。
.-NOPP---------------------------------------. | .-+---+------------------------. | | | '-,-' | | | V | | >>-+-PP--(----pp-name--+-----------------+-+--)-+-------------->< '-(--pp-string--)-'
プリプロセッサー・オプションは左から右へ処理されます。2 つのオプションが対立する場合は、最後の (右端の) オプションが 使用されます。例えば、オプション・ストリング 'CASE(ASIS) CASE(UPPER)' を 指定して MACRO プリプロセッサーを呼び出した場合は、 オプション CASE(UPPER) が使用されます。
同じプリプロセッサーを複数回指定でき、最大 31 のプリプロセッサー・ ステップを指定できます。
MACRO オプションまたは PP(MACRO) オプションを指定すると、どちらの 場合も、コンパイルの前にマクロ機能が呼び出されます。MACRO と PP(MACRO) を両方指定すると、マクロ機能は 2 回呼び出されます。
PP オプションを複数回指定した場合、コンパイラーはそれらを実質的に連結します。 したがって、PP(SQL) PP(CICS) を指定することは、PP(SQL CICS) を指定するのと同じことになります。 これは、PP(MACRO SQL('OPTIONS')) と PP(MACRO SQL('OPTIONS DATE(ISO)')) を指定すると、PP オプションは結果として PP(MACRO SQL('OPTIONS') MACRO SQL('OPTIONS DATE(ISO)')) になり、MACRO プリプロセッサーと SQL プリプロセッサーの両方が 2 回呼び出されることも意味します。 この指定を、前の SQL オプションを指定変更しようとして行う場合は、プリプロセッサー・オプションを PP オプションではなく PPSQL オプションを使用して指定した方がよい場合があります (つまり、PP(MACRO SQL) PPSQL('OPTIONS DATE(ISO)') を指定する)。
プリプロセッサーについて詳しくは、PL/I プリプロセッサー を参照してください。