Test which checks the omp critical directive by counting up a variable in a parallelized region within a critical section. 2.0 omp critical INTEGER FUNCTION omp_critical() IMPLICIT NONE INTEGER known_sum INTEGER i,j,myi,myj, sum COMMON /orphvars/ sum, myi, myj sum = 0 myi = 0 myj = 500 !$omp parallel !$omp sections !$omp section DO i = 0 , 499 !$omp critical sum = sum + myi myi = myi + 1 !$omp end critical END DO !$omp section DO j = 500 , 999 !$omp critical sum = sum + myj myj = myj + 1 !$omp end critical END DO !$omp end sections !$omp end parallel known_sum = 999*1000/2 IF ( known_sum .EQ. sum ) THEN = 1 ELSE WRITE (1,*) "Found sum was", sum, "instead", known_sum = 0 END IF END