You can use directives to control the way the Compiler behaves: what output it produces, what code is compiled and how the compiled code behaves when it runs. For normal operation you need only a few directives. Most of the time, you use the default values.
Within the IDE, you can set Compiler directives at four levels within a project:
Directives set at this level apply to all programs in the current project.
Directives set at this level apply to programs built by the specific build configuration. Directives set here merge with or override those set in Project Settings.
Directives set here apply to all programs within that folder, and they merge with or override those set in the build configuration and project properties.
Directives set at this level apply to the particular program, and merge with or override those set in the folder properties, build configuration, and project properties.
You can override the process of merging directives from a higher level (project level being the highest, file level being the lowest) by removing all directives inherited from a higher level: on the COBOL properties page, enable configuration specific settings, and then select Override settings from a higher level (instead of merging). If this option is not selected, then the usual behavior of inheritance, as explained above, will continue.
Directives set at each of these levels are written to a .mfdirset file. You can apply these files to different levels of your project too; see Configuring directive sets for more information.
In addition, you can also set Compiler directives in a number of other ways, such as within the source code (using the $SET command), on the command line.
Within the IDE, when specifying directives, separate them with a space, and supply arguments either within brackets or quotation marks: for example charset"ascii" dialect(MF), and if you need more than one argument for a particular directive, separate them with a space: for example outdd(sysout 121 r e) or ACTUAL-PARAMS"MyInterface ClassA ClassB".