mirror of
https://github.com/OpenMP/Examples.git
synced 2025-04-07 23:22:11 +01:00
42 lines
1.1 KiB
Fortran
42 lines
1.1 KiB
Fortran
! @@name: fort_sa_private.5f
|
|
! @@type: F-fixed
|
|
! @@compilable: maybe
|
|
! @@linkable: maybe
|
|
! @@expect: rt-error
|
|
SUBROUTINE SUB1(X)
|
|
DIMENSION X(10)
|
|
|
|
! This use of X does not conform to the
|
|
! specification. It would be legal Fortran 90,
|
|
! but the OpenMP private directive allows the
|
|
! compiler to break the sequence association that
|
|
! A had with the rest of the common block.
|
|
|
|
FORALL (I = 1:10) X(I) = I
|
|
END SUBROUTINE SUB1
|
|
|
|
PROGRAM PRIV_RESTRICT5
|
|
COMMON /BLOCK5/ A
|
|
|
|
DIMENSION B(10)
|
|
EQUIVALENCE (A,B(1))
|
|
|
|
! the common block has to be at least 10 words
|
|
A = 0
|
|
|
|
!$OMP PARALLEL PRIVATE(/BLOCK5/)
|
|
|
|
! Without the private clause,
|
|
! we would be passing a member of a sequence
|
|
! that is at least ten elements long.
|
|
! With the private clause, A may no longer be
|
|
! sequence-associated.
|
|
|
|
CALL SUB1(A)
|
|
!$OMP MASTER
|
|
PRINT *, A
|
|
!$OMP END MASTER
|
|
|
|
!$OMP END PARALLEL
|
|
END PROGRAM PRIV_RESTRICT5
|