コンパイラに原始ファイルの代わりにプリプロセッサから、原始プログラムを取らせる。
>>-.---.-.----.-PREPROCESS-.-"name".----------------..------..>< +-/-+ | +-P----------+ +-preproc-params-++-ENDP-+| +-NO-.-PREPROCESS-.---------------------------------+ +-P----------+
name | 使用するプリプロセッサ |
preproc-params | プリプロセッサに渡されるパラメーター |
省略値: | NOPREPROCESS |
段階: | 構文チェック |
$SET: | 最初のソース行に対して 不可 (NOPREPROCESSの場合) |
No (with NOPREPROCESS) |
本指令は、コンパイラに統合型プリプロセッサが使用されることを知らせる。
使用の詳細については、統合プリプロセッサインターフェイス「統合型プリプロセッサ」を参照のこと。
$SET文は、コンパイラとプリプロセッサの両方で処理される。さらに、PREPROCESS指令が$SET文の中で設定された場合は、$SET文全体の処理完了後に本指令は有効となる。$SET文が他の指令を含んでいる場合は、2回目にプリプロセッサがソースを解析した時に互換性を失う可能性がある。特に、SOURCEFORMAT指令を指定すると、コンパイラがソースを固定形式と解釈しているのに、プリプロセッサがソースを自由形式として処理する、またはその逆の現象が発生する場合がある。PREPROCESSコンパイラ指令を$SET文の中で指定した場合、$SET文にPREPROCESS指令のみを指定するようにしなければならない。他の指令を設定する場合には、PREPROCESS 指令を指定した $SET 文以降の行に別の $SET 文を使って指定する。
プリプロセッサに渡す指令は、ENDP COBOL 指令を使用して終了させることを推奨する。ENDPの後ろに置かれた指令は、COBOLコンパイラに渡される。ENDP 指令を指定しないと、コンパイラ指令が、COBOL コンパイラにではなく、プリプロセッサに渡され続ける可能性がある。
COBSQLプリプロセッサに指令を送っている場合は、COBSQLに渡す指令とプリプロセッサに渡す指令とを区別するためにEND-Cを用いること。以 下のコマンド ラインでは、END-Cの前に置かれた指令が COBSQLに渡され、END-CとENDPの間に置かれた指令がCOBSQLを経由してプロプロセッサに渡される。
preprocess(cobsql) csqltype=oracle end-c comp5=yes endp;
COBSQLに関する詳しい情報については、COBSQLを参照のこと。