To: J3 11-199r1
From: R. Bader/M. Cohen
Subject: the CONTIGUOUS attribute
Date: 2011 June 29
Reference: N1830
----------------------------------------------------------------------
NUMBER: F08/0061
TITLE: Description of the CONTIGUOUS attribute misworded?
KEYWORDS: CONTIGUOUS
DEFECT TYPE: Erratum
STATUS: J3 consideration in progress
Consider the following code:
module mod_cont
contains
subroutine fcont(x)
real, contiguous :: x(:)
integer :: i
x = (/ (real(i),i=1,size(x)) /)
end subroutine fcont
end module mod_cont
program cont
use mod_cont
implicit none
real :: x(45)
call fcont(x(1::3))
end program
Is this program standard conforming?
5.3.7 paragraph 1 says:
"The CONTIGUOUS attribute specifies that an assumed-shape array can
only be argument associated with a contiguous effective argument, or
that an array pointer can only be pointer associated with a
contiguous target."
ANSWER:
Yes. The effect of the CONTIGUOUS attribute is misstated. An edit
is supplied to correct this.
EDITS for 10-007r1:
[93:7-8] In 5.3.7p1,
Change
"can only be argument associated with a contiguous effective
argument"
to
"is contiguous".
ADDITIONAL SUGGESTED EDIT FOR A FUTURE REVISION:
[93:30+] In 5.3.7 after Note 5.10, insert additional note
"NOTE 5.10a
If an actual argument is not simply contiguous and the
corresponding dummy argument is an assumed-shape array with the
CONTIGUOUS attribute, the processor might use copy-in/copy-out to
assure the contiguity of the dummy argument."
----------------------------------------------------------------------