PP オプションでは、コンパイルの前にどのプリプロセッサーを (どのような 順序で) 呼び出すかを指定します。
.-NOPP---------------------------------------. | .-+---+------------------------. | | | '-,-' | | | V | | >>-+-PP--(----pp-name--+-----------------+-+--)-+-------------->< '-(--pp-string--)-'
デフォルト: NOPP
プリプロセッサー・オプションは、左から右に処理されます。 2 つのオプションが競合する場合、最後 (右端) のオプションが使用されます。 例えば、オプション・ストリング 'CASE(ASIS) CASE(UPPER)' を指定して MACRO プリプロセッサーが呼び出された場合、 オプション CASE(UPPER) が使用されます。
プリプロセッサーは、同じものを複数回指定できます。 さらに、最大で 31 個のプリプロセッサー・ステップを指定できます。
MACRO オプションまたは PP(MACRO) オプションを指定すると、どちらの 場合も、コンパイルの前にマクロ機能が呼び出されます。MACRO と PP(MACRO) を両方指定すると、マクロ機能は 2 回呼び出されます。
PP オプションを複数回指定する場合、コンパイラーはその 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)') のように指定します。
最高 31 つのプリプロセッサーを指定できます。
例:
以下の例では、PL/I マクロ機能、SQL プリプロセッサーを呼び出した後、再度、PL/I マクロ機能を呼び出します。
pp(macro('x') sql('dbname(sample)') macro)