コンパイラ指令の処理順序

コンパイラ指令は、様々な方法で指定することができます。コンパイラに処理される順番は、指定方法によって決まります。各方法で指定された指令は、コンパイラでそれぞれ左から右へと処理されます。 1 つの指令が複数回指定された場合は、コンパイラで使用されるのは、最後に設定された内容です。 指令は、次の場所を次の順序でコンパイラに検索されます。

  1. Project or file properties, set from within the IDE
  2. システム指令ファイル cobol.dir
  3. $COBDIR/etc/cobopt ファイルで cob のオプションに指定されている、システムのデフォルトの指令 (UNIX環境のみ)
  4. 環境変数、 COBOPT で cob のオプションに指定されている、ユーザのデフォルトの指令 (UNIX環境のみ)
  5. cob のコマンド行で cob のオプションに指定されたコンパイル時の指令 (UNIX環境のみ)
  6. 各プログラムのソースコードファイルの最初の $SET 文に指定されている、プログラム固有の指令

これらの方法で指定された指令は、コンパイラで上記の順に、各 COBOL ソースファイルに対してに処理されます。この処理順序から、コマンド行と cobol.dir で、同じ指令に異なる設定を行った場合は、コマンド行の設定内容が優先されることが解ります。たとえば、コマンド行で NOANS85 コンパイラ指令を指定した場合は、cobol.dir に指定されている ANS85 の設定が上書きされます。

ユーザ固有の指令ファイルを作成すると、コンパイラの動作を更にカスタマイズすることができます。指令ファイルは ASCII のテキストファイルで、これに定義された指令セットすべてが 1 度にコンパイラに渡されます。このユーザ固有の指令ファイルをコンパイラに渡すには、DIRECTIVES 指令、または USE 指令を使用します。上記に示したいずれかの方法で DIRECTIVES 指令または USE 指令を指定すると、指令ファイルの処理に優先順位をつけることができます。