I confirmed your results.
The /check response looks wrong to me, although is it ?
ARRAY = scalar function or
ARRAY = elemental function ( if this is possible ?)
What would an ELEMENTAL FUNCTION do with an array argument ?
I used the following in PLATO with different options and got the different response for x1 = RANDOM@()
program test
implicit none
real(kind=2) random@
real(kind=2) x1(1:2), y1(1:2), z1(1:2)
integer i
!
x1 = 0.d0
x1 = RANDOM@()
do i = 1,size(y1)
y1(i) = RANDOM@()
end do
call random_number (z1)
write(*,*) x1
write(*,*) y1
write(*,*) z1
end program test
I then tried another test on your code
program test
implicit none
integer*4, parameter :: n=2 ! try 2 or 3
real(kind=2) random@
real(kind=2) x1(1:n)
x1 = 0.d0
x1 = RANDOM@()
write(*,*) x1
end program test
n=2 reproduces your experience, but n=3 produces the same value for all of x1 for all compile options; /check, /debug or none (release).
What is the correct result now ?