Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner

Error with associate to character parameter

ifort does not compile the attached code, which I think is legal

program p
 implicit none
 character(len=*), parameter :: text = "message text"

 associate( msg => text )
 write(*,*) msg
 end associate
end program p

The error is

ifort test.f90 -o test
test.f90(6): error #6404: This name does not have a type, and must have an explicit type.   [MSG]
 write(*,*) msg
------------^
compilation aborted for test.f90 (code 1)

and happens for both versions:

Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0.0.098 Build 20160721

Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.2.181 Build 20160204


Marco

0 Kudos
3 Replies
Highlighted

Thanks for the nice test case

Thanks for the nice test case - escalated as issue DPD200414550. I note that if IMPLICIT NONE is not used, then MSG is implicitly typed and is some uninitialized value. It works ok for integer parameters and character variables.

Retired 12/31/2016
0 Kudos
Highlighted
Black Belt

Curiously, if IMPLICIT NONE

Curiously, if IMPLICIT NONE is removed, the program runs and prints

         109

which is the ASCII code for the first character of the message string!

I had thought that the associate name should be inheriting its type and other properties from the selector, and not be governed by implicit typing rules at all.

0 Kudos
Highlighted

Yes, I saw the same thing.

Yes, I saw the same thing. Clearly in the CHARACTER, PARAMETER case the type isn't coming along for the ride.

Retired 12/31/2016
0 Kudos