[Ad-dev] [openAD] #290: DATA statement cannot partially initialize default initialized active typed variable

OpenAD trac at mcs.anl.gov
Fri Feb 14 15:13:35 CST 2014


#290: DATA statement cannot partially initialize default initialized active typed
variable
--------------------------+-------------------------------------------------
 Reporter:  utke          |       Owner:  utke
     Type:  defect        |      Status:  new 
 Priority:  major         |   Milestone:      
Component:  OpenADFortTk  |    Keywords:      
--------------------------+-------------------------------------------------
 To: J3                                                        11-201r1
 From: Van Snyder / Tobias Burnus
 Subject: Mixing default initialization with DATA initialization
 Date: 2011 June 28
 References: WG5/N1830


 ----------------------------------------------------------------------

 NUMBER: F08/0062
 TITLE: Mixing default initialization with DATA initialization
 KEYWORDS: DATA, default initialization, explicit initalization
 DEFECT TYPE: Clarification
 STATUS: J3 consideration in progress

 QUESTION:

 In the following program, one component has a default initialization
 and the other is initialized in a DATA statement. Is the program
 valid?

   module oad_active
     implicit none
     type active
       integer :: v
       integer :: d = 42
     end type
   end module

   module tots_c
     use oad_active
     implicit none
     type(active), save :: trlkold
     data trlkold%v /100/
   end module

   program foo
     use tots_c
     implicit none
     if (trlkold%d /=  42) stop 'ERROR d /= 42'
     if (trlkold%v /= 100) stop 'ERROR v /= 100'
   end program foo


 WG5/N1830 has [p104, 5.4.7, parag. 2]

   If a nonpointer object has default initialization, it shall not
   appear in a <data-stmt-object-list>.

 and [p89, 5.2.3, parag. 1]

   Explicit initialization alternatively may be specified in a DATA
   statement unless the variable is of a derived type for which default
   initialization is specified. [...] A variable, or part of a
   variable, shall not be explicitly initialized more than once in a
   program.

 and [p70, 4.5.4.6, parag. 6]

   Explicit initialization in a type declaration statement (5.2)
   overrides default initialization


 ANSWER:

 It was intended that the data statement not be conforming.

 5.4.7p2 was carefully worded to use "shall not appear" rather than
 "shall not be the <data-stmt-object>".

 The intention was that an object be initialized entirely in a type
 declaration statement, or that only those parts of it having default
 initialization be initialized.  It was considered to be a burden on
 processors to be required to initialize some parts of a structure
 using default initialization, and other parts of it explicitly.

 EDITS:

 None.

 SUBMITTED BY: Tobias Burnus

 HISTORY: 11-201    m195  Submitted
          11-201r1        Draft answer.

 ----------------------------------------------------------------------

-- 
Ticket URL: <https://trac.mcs.anl.gov/projects/openAD/ticket/290>
OpenAD <http://www.mcs.anl.gov/openad>
Bug tracking for OpenAD components


More information about the Ad-dev mailing list