Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Error with associate to character parameter

MR
Beginner
335 Views

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
Steven_L_Intel1
Employee
335 Views

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.

0 Kudos
mecej4
Honored Contributor III
335 Views

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
Steven_L_Intel1
Employee
335 Views

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

0 Kudos
Reply