According OpenMP 2.5 specification we can't use OpenMP in pure procedures. Why so? I mean, what if I what use PURE procedures also for compiler-checking of purity of my code (not only for parallelization)?
Have you considered using conditional compilation?
When _OPENMP not defined compile the affected routines with PURE
When _OPENMP defined compile the affected routines without PURE
If you use the Fortran PreProcessor you could define a macro as follows
#ifdef _OPENMP#define TEST_PURE#else#define TEST_PURE pure#endif
Then use as
TEST_PURE function foo(a,b,c)...