The routine takes no arguments, returns no value, and does not require any initialization. This is useful in certain rare situations where you have an external routine that can be called both from inside a parallel loop and also from outside a parallel loop, and the routine must do different things depending on whether or not it is being called in parallel. It does not affect any currently executing parallel regions. The implementation may ignore this hint depending on factors such as overall system load. By coding a few simple directives, the compiler splits the job into concurrently executing pieces, thereby decreasing the wallclock run time of the job.
Directives enable, disable, or modify a feature of the compiler.
Essentially, directives are command line options specified within the input file instead of on the command line. Unlike command line options, directives have no default setting. To invoke a directive, you must either toggle it on or set a desired value for its level.