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