! { dg-do compile } SUBROUTINE DO_BY_16(X, IAM, IPOINTS) REAL X(*) INTEGER IAM, IPOINTS END SUBROUTINE DO_BY_16 SUBROUTINE SUBA36(X, NPOINTS) INTEGER NPOINTS REAL X(NPOINTS) INTEGER IAM, IPOINTS EXTERNAL OMP_SET_DYNAMIC, OMP_SET_NUM_THREADS INTEGER OMP_GET_NUM_THREADS, OMP_GET_THREAD_NUM CALL OMP_SET_DYNAMIC(.FALSE.) CALL OMP_SET_NUM_THREADS(16) !$OMP PARALLEL SHARED(X,NPOINTS) PRIVATE(IAM, IPOINTS) IF (OMP_GET_NUM_THREADS() .NE. 16) THEN STOP ENDIF IAM = OMP_GET_THREAD_NUM() IPOINTS = NPOINTS/16 CALL DO_BY_16(X,IAM,IPOINTS) !$OMP END PARALLEL END SUBROUTINE SUBA36