[J3] sequence type equality

Bill Long longb at cray.com
Wed Oct 14 16:27:17 EDT 2020



> On Oct 14, 2020, at 3:07 PM, Robert Corbett via J3 <j3 at mailman.j3-fortran.org> wrote:
> 
> Vipul and Malcolm questioned whether variables that
> have sequence types that differ only in that
> components have different default initializations
> should be considered to have the same type.  The
> program given below cannot answer that question,
> but it can test whether a compiler does consider
> them the same or different.  If the program compiles
> without reporting any type mismatches, it does not
> take differing default initializations into account
> when determining whether variables of sequence type
> have the same type.
> 
> I do not currently have access to a compiler, so
> please excuse any errors in the program.
> 
> Robert Corbett
> 
> ------------------------------------------------------------
> 
>       MODULE TYPE0
>         TYPE T
>           SEQUENCE
>           INTEGER :: I
>         END TYPE T
>       END
> 
>       MODULE TYPE1
>         TYPE T
>           SEQUENCE
>           INTEGER :: I
>         END TYPE T
>       END
> 
>       MODULE TYPE2
>         TYPE T
>           SEQUENCE
>           INTEGER :: I = 2
>         END TYPE T
>       END
> 
>       MODULE TYPE3
>         TYPE T
>           SEQUENCE
>           INTEGER :: I = 3
>         END TYPE T
>       END
> 
>       PROGRAM MAIN
>         USE TYPE0, T0 => T
>         USE TYPE1, T1 => T
>         USE TYPE2, T2 => T
>         USE TYPE3, T3 => T
>         TYPE(T0) V0
>         TYPE(T1) V1
>         TYPE(T2) V2
>         TYPE(T3) V3
>         V0%I = 0
>         V1%I = 1
>         V0 = v1
>         PRINT *, V0%I
>         V0 = V2
>         PRINT, *, V0%I
>         V2 = V3
>         PRINT *, V2%I
>       END

Summary:

Typo in original source.  Fixed.

All the trials OK except Intel who complained at compile time.

Relevance:  Since the advent of modules 3 decades ago, I’ve never se use of, or relevance of SEQUENCE types. 

Mystery: Why is SEQUENCE not in the Obsolescent list?  

> ftn test.f90

        PRINT, *, V0%I
             ^         
ftn-1725 crayftn: ERROR MAIN, File = test.f90, Line = 43, Column = 14 
  Unexpected syntax while parsing the PRINT statement : "operand" was expected but found ",".
               ^       
> emacs test.f90
> ftn test.f90
> ./a.out
 1
 2
 3
> module swap PrgEnv-cray PrgEnv-intel
> ifort test.f90
test.f90(40): error #6197: An assignment of different structure types is invalid.   [V1]
        V0 = v1
-------------^
test.f90(42): error #6197: An assignment of different structure types is invalid.   [V2]
        V0 = V2
-------------^
test.f90(44): error #6197: An assignment of different structure types is invalid.   [V3]
        V2 = V3
-------------^
compilation aborted for test.f90 (code 1)
> module swap PrgEnv-intel PrgEnv-gnu
> gfortran test.f90
> ./a.out
           1
           2
           3
> module swap PrgEnv-gnu PrgEnv-pgi
> pgf90 test.f90
> ./a.out
            1
            2
            3
> 

> 
Cheers,
Bill

> 

Bill Long                                                                       longb at hpe.com
Engineer/Master , Fortran Technical Support &   voice:  651-605-9024
Bioinformatics Software Development                      fax:  651-605-9143
Hewlett Packard Enterprise/ 2131 Lindau Lane/  Suite 1000/  Bloomington, MN  55425






More information about the J3 mailing list