https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105473
--- Comment #13 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- With John's multiple combinations test case I get the following results with the attached patch. All places where we gave an error before the patch, we give errors now plus new errors $ gfc multi.f90 $ ./a.out i= 1 input(i) = "2,5," with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 666.000000 ios= 5010 i= 2 input(i) = "2;5," with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 3 input(i) = "2 5," with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 4 input(i) = "2.5," with decimal=point x(:) = 2.50000000 5.00000000 ios= -1 with decimal=comma x(:) = 2.50000000 666.000000 ios= 5010 i= 5 input(i) = "2,5;" with decimal=point x(:) = 2.00000000 5.00000000 ios= 5010 with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 i= 6 input(i) = "2;5;" with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 7 input(i) = "2 5;" with decimal=point x(:) = 2.00000000 5.00000000 ios= 5010 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 8 input(i) = "2.5;" with decimal=point x(:) = 2.50000000 5.00000000 ios= 5010 with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 i= 9 input(i) = "2,5 " with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 i= 10 input(i) = "2;5 " with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 11 input(i) = "2 5 " with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 12 input(i) = "2.5 " with decimal=point x(:) = 2.50000000 5.00000000 ios= -1 with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 i= 13 input(i) = "2,5." with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 666.000000 ios= 5010 i= 14 input(i) = "2;5." with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 15 input(i) = "2 5." with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 16 input(i) = "2.5." with decimal=point x(:) = 2.00000000 5.00000000 ios= 5010 with decimal=comma x(:) = 2.00000000 666.000000 ios= 5010 [jerry@amdr pr105473]$ gfc multi.f90 [jerry@amdr pr105473]$ ./a.out i= 1 input(i) = "2,5," with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 666.000000 ios= 5010 Bad real number in item 1 of list input i= 2 input(i) = "2;5," with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 3 input(i) = "2 5," with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 4 input(i) = "2.5," with decimal=point x(:) = 2.50000000 5.00000000 ios= -1 End of file with decimal=comma x(:) = 2.50000000 666.000000 ios= 5010 Bad real number in item 1 of list input i= 5 input(i) = "2,5;" with decimal=point x(:) = 2.00000000 5.00000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 End of file i= 6 input(i) = "2;5;" with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 7 input(i) = "2 5;" with decimal=point x(:) = 2.00000000 5.00000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 8 input(i) = "2.5;" with decimal=point x(:) = 2.50000000 5.00000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 End of file i= 9 input(i) = "2,5 " with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 End of file i= 10 input(i) = "2;5 " with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 11 input(i) = "2 5 " with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 12 input(i) = "2.5 " with decimal=point x(:) = 2.50000000 5.00000000 ios= -1 End of file with decimal=comma x(:) = 2.50000000 666.000000 ios= -1 End of file i= 13 input(i) = "2,5." with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 666.000000 ios= 5010 Bad real number in item 1 of list input i= 14 input(i) = "2;5." with decimal=point x(:) = 2.00000000 666.000000 ios= 5010 Semicolon not allowed as separator with DECIMAL='point' with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 15 input(i) = "2 5." with decimal=point x(:) = 2.00000000 5.00000000 ios= 0 with decimal=comma x(:) = 2.00000000 5.00000000 ios= 0 i= 16 input(i) = "2.5." with decimal=point x(:) = 2.00000000 5.00000000 ios= 5010 Bad real number in item 1 of list input with decimal=comma x(:) = 2.00000000 666.000000 ios= 5010 Bad real number in item 1 of list input