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

unable to assign value correctly

Jump to solution

Here is the code to reproduce the problem

program main
	implicit none
	integer :: to(1:2),from(1,2),i
	from(1,:)=[1,2]
	i=1
	to(i:2)=mod((from(1,1:2)),4)
	write(*,*)"from:",from
	write(*,*)"to:",to
end program

compiled with Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0.4.196 Build 20170411

the variable "to" should be equal to "from" but it doesn't. Seems only the first element of "to" is assigned.

0 Kudos

Accepted Solutions
Highlighted
Moderator
156 Views

This bug is fixed in PSXE 2020 Update2.


View solution in original post

0 Kudos
4 Replies
Highlighted
Valued Contributor III
184 Views
MOD would create an array with the same rank and shape as its arg. 
I made a test using and intermediate array (maybe the compiler creates a temp ) 
but that code (shown below) works.  I suspect either your code is 
nonconforming (but no error is given) or there is a compiler bug. 
Not sure which.


        implicit none
        integer :: to(1:2), from(1,2), i, to2(1,2)
        from(1,:)=[1,2]
        i=1
        to2(i,1:2) = mod(from(1,1:2),4)
        to(i:2) = to2(i,1:2)

 

0 Kudos
Highlighted
Black Belt Retired Employee
184 Views

Interesting. The key is the use of i in to(i:2). If that is replaced by to(1:2), it works. This is a compiler bug, still broken in 19.1. Please report it to Intel using the Online Service Center.

0 Kudos
Highlighted
Moderator
184 Views

I opened a bug report.  ID is CMPLRIL0-32400

 

0 Kudos
Highlighted
Moderator
157 Views

This bug is fixed in PSXE 2020 Update2.


View solution in original post

0 Kudos