https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65541
--- Comment #4 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- This fixes it: Index: io/write.c =================================================================== --- io/write.c (revision 221571) +++ io/write.c (working copy) @@ -1704,10 +1704,11 @@ size_t clen; index_type elem_ctr; size_t obj_name_len; - void * p ; + void * p; char cup; char * obj_name; char * ext_name; + char * q; size_t ext_name_len; char rep_buff[NML_DIGITS]; namelist_info * cmp; @@ -1745,6 +1746,8 @@ for (dim_i = len; dim_i < clen; dim_i++) { cup = toupper ((int) obj->var_name[dim_i]); + if (cup == '+') + cup = '%'; write_character (dtp, &cup, 1, 1, NODELIM); } write_character (dtp, "=", 1, 1, NODELIM); @@ -1894,6 +1897,9 @@ } ext_name[tot_len] = '\0'; + for (q = ext_name; *q; q++) + if (*q == '+') + *q = '%'; /* Now obj_name. */