See:
http://groups.google.fr/group/comp.lang.fortran/browse_thread/thread/60c6758faf1762ad

Test case by Al Greynolds:

module bug
  character(*),dimension(3),parameter :: a=(/'a()  ','b(,) ','c(,,)'/)
  integer,dimension(3),parameter :: l=len_trim(a),i=index(a,'(')
end 


  integer,dimension(3),parameter :: l=len_trim(a),i=index(a,'(')
                                     1
Error: Extension: Evaluation of nonstandard initialization expression at (1)

Works with g95 -std=f95, NAG f95, ifort.


>From the standard (Craig Dedo):

    Constant expressions and initialization expressions are defined in section
7.1.6.1 of the Fortran 95 standard.  "An initialization expression is a
constant
expression in which the exponentiation operation is permitted only with an
integer power, and each primary is ... " in one of 9 categories of thingos. 
One
of these categories is:
    "(4) An elemental intrinsic function reference of type integer or character
where each argument is an initialization expression of type integer or
character;".

    The function INDEX is defined in section 13.14.47 and the function LEN_TRIM
is defined in section 13.14.55.  Both of these are in the class of elemental
functions.  Therefore, both should be allowed in initialization expressions.


-- 
           Summary: -std=f95 rejects len_trim() and index() in init
                    expressions
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34915

Reply via email to