付録 E. プリプロセッサー・プロバイダーの情報
メイン・ソース・ファイルとコピー・ファイルを新しいソース・メンバーにマージする RPG プリプロセッサーは、特殊ディレクティブ **FREE を含むコードに関連した、次のルールを守る必要があります。
プリプロセッサーは特殊ディレクティブ **END-FREE を使用して、メイン・ソース・ファイルとコピー・ファイルを単一のソース・ファイルにマージするプリプロセスされたソース・メンバー内で、完全自由コードの終わりを示すことができます。
- プリプロセッサーがコピー・ファイルを、プリプロセスされた出力にマージする場合、次のようになります。
- コピー・ファイルが完全自由形式モードで、/COPY ディレクティブまたは /INCLUDE ディレクティブを含むファイルが完全自由形式モードでなかった場合、プリプロセッサーは、プリプロセッサー出力の、コピー・ファイルの最後の部分に **END-FREE を挿入する必要があります。
- **FREE が挿入されるのはプリプロセッサー・コードが桁制限ソース・モードの時のみであり、**END-FREE が挿入されるのはプリプロセッサー・コードが完全自由形式ソース・モードの時のみであるならば、プリプロセッサーは、都合に応じて、追加の **FREE 行および **END-FREE 行を挿入することができます。
- コピー・ファイルが完全自由形式モードでなく、/COPY ディレクティブまたは /INCLUDE ディレクティブを含むファイルが完全自由形式モードだった場合、プリプロセッサーは、プリプロセッサー出力の、コピー・ファイルの最後の部分に **FREE を挿入する必要があります。
- **FREE または **END-FREE を含む、挿入された行の残りの部分はブランクでなければなりません。
- **FREE 特殊ディレクティブと **END-FREE 特殊ディレクティブは、出力ソース内で均衡を保っている必要があります。ただし、ソースが完全自由モードで終了している場合、ソースは **END-FREE で終了している必要はありません。
- 特殊ディレクティブは次の場合に受け入れられます。
- **FREE および **END-FREE は、ステートメント間にのみコーディング可能である。
- **FREE は、ソースが完全自由形式モードの場合指定できない。
- **END-FREE は、ソースが桁制限モードの場合指定できない。
- **FREE は、コピー・ファイルの 1 行目にのみ指定可能である。
- **END-FREE は、コピー・ファイルには指定できない。
- 特殊ディレクティブが受け入れられず、プリプロセッサーが前処理の続行を選択した場合、プリプロセッサーは、無効な特殊ディレクティブをプリプロセッサーの出力にコピーしてはならない。