https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65144
--- Comment #3 from Zaak <zbeekman at gmail dot com> --- Similarly if I try to use a substring in an if statement: program test3 INTEGER,PARAMETER :: ucs4 = selected_char_kind("ISO_10646") CHARACTER(3,UCS4),PARAMETER :: unip=CHAR(INT(Z'5e74'),UCS4)//CHAR(INT(Z'6708'),ucs4)//CHAR(INT(Z'65e5'),ucs4) character(3,UCS4) :: uni uni = unip open(6, encoding="utf-8") print *, uni print *, uni(2:2) print *, unip print *, "'",unip(1:1),"'" if ( unip(2:2) == CHAR(INT(Z'6708'),ucs4)) print*, unip(2:2) ! This SHOULD be true end program test3 I get the following error: $ gfortran --version && gfortran ISO_10646.f90 GNU Fortran (Homebrew gcc 4.9.2_1) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc. GNU Fortran comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of GNU Fortran under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING ISO_10646.f90:11.7: if ( unip(2:2) == CHAR(INT(Z'6708'),ucs4)) print*, unip(2:2) ! This SHOULD be 1 Error: Operands of comparison operator '==' at (1) are CHARACTER(1)/CHARACTER(4)