J3/14-163 To: J3 From: Van Snyder Subject: Interp concerning coarrays and ultimate components Date: 2014 May 30 ---------------------------------------------------------------------- NUMBER: TBD TITLE: ultimate components and coarrays KEYWORD: ultimate components, coarrays DEFECT TYPE: Erratum STATUS: J3 consideration in progress QUESTIONS: 1. Is the declaration of V permitted: type :: one real :: C[*] end type one type :: two type(one), allocatable :: A end type two type(two), pointer :: V(:) 2. Is the declaration of X permitted: type :: three real :: C end type three type :: four type(three) :: A[*] end type four type(four) :: X 3. Is the declaration of ARG permitted: type(two), value :: ARG 4. Is the allocation of V permitted: allocate ( two :: V ) 5. Is the allocation of V permitted: type(two) :: W allocate ( V, source=W ) 6. Is the definition of FIVE permitted: type :: five type(two), allocatable :: F end type five ANSWERS: 1. Although V%A%C is a coarray, it is not an ultimate component of V. Therefore the declaration of V is permitted, i.e., V is permitted to have the POINTER attribute. It was intended that the declaration of V not be permitted: C525 An entity whose type has a coarray ultimate component shall be a nonpointer nonallocatable scalar, shall not be a coarray, and shall not be a function result. Edits are provided to correct this mistake. 2. Although X%C is a coarray, it is not an ultimate component of X. Therefore the declaration of X is permitted, i.e., X is not required to be a dummy argument or have the ALLOCATABLE or SAVE attribute. It was intended that the declaration of X not be permitted: C526 A coarray or an object with a coarray ultimate component shall be a dummy argument or have the ALLOCATABLE or SAVE attribute. Edits are provided to correct this mistake. 3. Although ARG%A%C is a coarray, it is not an ultimate component of A. Therefore the declaration of ARG is permitted, i.e., ARG is permitted to have the VALUE attribute. It was intended that the declaration of ARG not be permitted: C557 An entity with the VALUE attribute shall be a dummy data object that ... does not have a coarray ultimate component. Edits are provided to correct this mistake. 4. Although V%A%C is a coarray, it is not an ultimate component of V. Therefore allocation of V is permitted. It was intended that allocation of V not be permitted: C640 (R626) shall not specify a type that has a coarray ultimate component. Edits are provided to correct this mistake. 5. Although W%A%C is a coarray, it is not an ultimate component of W. Therefore allocation of V is permitted. It was intended that allocation of V not be permitted: C643 (R630) The declared type of shall not have a coarray ultimate component. Edits are provided to correct this mistake. 6. Although the component F of type FIVE is allocatable, the C component of the A component is not an ultimate component. Therefore, the definition of type FIVE is permitted. It was intended that definition of type FIVE not be permitted: C444 A data component whose type has a coarray ultimate component shall be a nonpointer nonallocatable scalar and shall not be a coarray. Edits are provided to correct this mistake. EDITS: After definition 1.3.33.2 "parent component", introduce a definition "1.3.33.2a potential subobject component a nonpointer component, or a potential subobject component of a nonpointer component" In constraint C444 in subclause 4.5.4.1, replace "ultimate component" with "potential subobject component". In constraint C525 in subclause 5.3.6.1, replace "ultimate component" with "potential subobject component". In constraint C526 in subclause 5.3.6.1, replace "ultimate component" with "potential subobject component". In constraint C557 in subclause 5.3.18, replace "ultimate component" with "potential subobject component". In constraint C640 in subclause 6.7.2.2, replace "ultimate component" with "potential subobject component". In constraint C643 in subclause 6.7.2.2, replace "ultimate component" with "potential subobject component". SUBMITTED BY: Van Snyder HISTORY: m204 13-xxx F08/xxxx Submitted ----------------------------------------------------------------------