https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67972
Bug ID: 67972
Summary: Substrings of arrays of unicode strings are of type
DEFAULT rather than ISO_10646
Product: gcc
Version: 5.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: alexandros.syrakos at outlook dot com
Target Milestone: ---
This seems related to bug 65141, but it is different so I submit it as a
separate bug. It appears that substrings of arrays of unicode strings are
always treated as of DEFAULT kind. The following code demonstrates this (I'm
using gfortran 5.2.0 on Kubuntu 14.04):
program test
use iso_fortran_env
implicit none
integer, parameter ::ucs4 = selected_char_kind( 'ISO_10646' )
character(kind=ucs4) :: a
character(kind=ucs4, len=8), dimension(2) :: page
a = ucs4_"U"
open (output_unit, encoding='UTF-8')
print "(a,i0)", "kind(page(1)(2:4)) is ", kind(page(1)(2:4))
page(1) = repeat(a,8)
print "(a,i0,2a)", "kind(page(1)) is ", kind(page(1)), "; page(1) is: ",
page(1)
page(1)(2:4) = a
print "(a,i0,2a)", "kind(page(1)) is ", kind(page(1)), "; page(1) is: ",
page(1)
end program test
The reason I used the variable "a" is to avoid assigning directly a constant to
the substring, something that would change the type to DEFAULT anyway,
according to bug 65141. The code demonstrates that page(1) treated as a whole
(as in page(1) = repeat(a,8)) causes no problems, but when a substring is
referenced (page(1)(2:4) = a), page(1) is made to contain garbage characters.
This makes arrays of unicode strings practically unusable.