https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67779
--- Comment #6 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- The problem is not limited to strings. If I add the following lines array(1)%value = 2 array(9)%value = 10 write( string_array(1)%value, '(a,i0)' ) "String = ", 2 write( string_array(9)%value, '(a,i0)' ) "String = ", 10 the initial values are 2 'String = 2 ' 9 'String = 9 ' 8 'String = 8 ' 7 'String = 7 ' 6 'String = 6 ' 5 'String = 5 ' 4 'String = 4 ' 3 'String = 3 ' 10 'String = 10 ' 1 'String = 1 ' and the "sorted" ones are 2 1 3 4 5 6 7 8 10 9 String = 2 String = 1 String = 10 String = 3 String = 4 String = 5 String = 6 String = 7 String = 8 String = 9