I think there is an issue with the new Fortran 2003 Allocate on assignment for CHARACTER variables, when the array is defined by the result of the TRANSFER intrinsic.
Having never used TRANSFER before this evening it's definitely not a critical issue of me. Just experimenting after getting a little bit further into one of the (now old) text books by Metcalf and Reid.
program t
implicit none
character(len=1), allocatable :: info(:)
integer :: lengthData
real :: r = 5.0
real :: x = -999.0
!
! This works in FTN95
!
info=['A','B','C'] ! Allocate on assignment works in this case
print*, 'Info = ', info
deallocate(info)
print*
! Now use TRANSFER intrinsic
print*, 'Value of R is ', r ! 1. Print value of R
lengthData = size(transfer(r, info)) ! 2. Find size of required character array
allocate(info(lengthData)) ! 3. Allocate array
info = transfer(r, info) ! 4. Do transfer R to array
print*, 'Size of array ',size(info) ! 5. Print size of array
print*, 'Info string is ',info ! 6. Print array
x = transfer(info,r) ! 7. Do transfer array to X
print*, 'Value of X is ', x ! 8. Print value of X
deallocate(info)
print*
!
! This alternative fails in FTN95 where steps 2, 3 and 4 are done
! in a single line of code
!
x = -999.0
print*, 'Value of R is ', r ! 1. Print value of R
info = transfer(r,info) ! Access violation occurs here ###
print*, 'Size of array ',size(info) ! 5. Print size of array
print*, 'Info string is ',info ! 6. Print array
x = transfer(info,r) ! 7. Do transfer array to X
print*, 'Value of X is ', x ! 8. Print value of X
deallocate(info)
end program t