複数の directives.mf ファイルを使用することで、すべてのファイルまたはファイル タイプに対する全般的な指令および 1 つ以上のファイル サブセットに対するより具体的な指令を使ってコンパイルできます。
この実行時、各コンパイラは、ディレクトリ階層にある directives.mf ファイルで定義された指令に基づいて指令のリストを作成します。まず、コンパイラは現在のディレクトリで @root とマークされた directives.mf ファイルを探します (詳細については、「directives.mf ファイルの作成」を参照してください)。そこで見つからない場合、コンパイラは親ディレクトリ内で検索を続け、ルート ファイルが見つかるまでディレクトリ階層を上に移動します。通常、ルート ファイルはソース コード階層の最上位にあります。これにより、コンパイル時に使用するサブディレクトリのセット、および追加の directives.mf ファイルにアクセスする順序が確立されます。現在のディレクトリまでの各サブディレクトリ内にある directives.mf ファイルで見つかった指令がリストに追加されていき、ルートの directives.mf ファイルで見つかった指令がリストに追加されます。同じ指令が複数の directives.mf ファイルに設定されていた場合は、最後に見つかった指令によって他のすべての設定がオーバーライドされます。
たとえば、COBOL アプリケーションが DB2 データベースへのアクセスと SQL Server データベースへのアクセスとで分かれている場合、次のようにソース ファイルをサブディレクトリに分割し、必要なデータベースごとにグループ化できます。
| サブディレクトリ | ファイル タイプ | 必要な指令 |
|---|---|---|
| c:\repos\cobol\db2 | COBOL accessing DB2 | DB2 |
| c:\repos\cobol\sql | COBOL accessing SQL Server | SQL |
c:\repos\cobol\db2 サブディレクトリに、DB2 指令を含む directives.mf を追加します。c:\repos\cobol\sql サブディレクトリに、SQL 指令を含む directives.mf を追加します。
DIALECT(MF) など、1 つの指令を両方のサブディレクトリ内のすべてのファイルに適用するには、DIALECT(MF) 指令を含む directives.mf ファイルをルートとしてマークして c:\repos\cobol ディレクトリに追加します。
db2 サブディレクトリと sql サブディレクトリの両方からコンパイラを実行します。DB2 コードは DB2 指令および DIALECT(MF) 指令を使用してコンパイルされ、SQL Server コードは SQL 指令および DIALECT(MF) 指令を使用してコンパイルされます。