- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, I saw the same thing. Clearly in the CHARACTER, PARAMETER case the type isn't coming along for the ride.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page